diff options
author | Martin Stockhammer <martin_s@apache.org> | 2020-06-28 10:00:07 +0200 |
---|---|---|
committer | Martin Stockhammer <martin_s@apache.org> | 2020-06-28 10:00:07 +0200 |
commit | 5d058d7f4d93254291e456d2f8cb722159d053aa (patch) | |
tree | 1c186ed76ee3159d063b03561bd5727ab98da402 /archiva-modules/plugins | |
parent | 5a35e01601336a462858f4a2af98f5b55de7a8d6 (diff) | |
download | archiva-5d058d7f4d93254291e456d2f8cb722159d053aa.tar.gz archiva-5d058d7f4d93254291e456d2f8cb722159d053aa.zip |
Moving metadata store providers to metadata folder
Diffstat (limited to 'archiva-modules/plugins')
43 files changed, 0 insertions, 19282 deletions
diff --git a/archiva-modules/plugins/metadata-store-cassandra/pom.xml b/archiva-modules/plugins/metadata-store-cassandra/pom.xml deleted file mode 100644 index 07e066b26..000000000 --- a/archiva-modules/plugins/metadata-store-cassandra/pom.xml +++ /dev/null @@ -1,323 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ Licensed to the Apache Software Foundation (ASF) under one - ~ or more contributor license agreements. See the NOTICE file - ~ distributed with this work for additional information - ~ regarding copyright ownership. The ASF licenses this file - ~ to you under the Apache License, Version 2.0 (the - ~ "License"); you may not use this file except in compliance - ~ with the License. You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, - ~ software distributed under the License is distributed on an - ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - ~ KIND, either express or implied. See the License for the - ~ specific language governing permissions and limitations - ~ under the License. - --> - -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <artifactId>plugins</artifactId> - <groupId>org.apache.archiva</groupId> - <version>3.0.0-SNAPSHOT</version> - </parent> - <artifactId>metadata-store-cassandra</artifactId> - <name>Archiva Core Plugins :: Cassandra Storage for Metadata</name> - - <properties> - <site.staging.base>${project.parent.parent.basedir}</site.staging.base> - <cassandraVersion>3.11.2</cassandraVersion> - </properties> - - <dependencies> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-lang3</artifactId> - </dependency> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>metadata-repository-api</artifactId> - </dependency> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>metadata-repository-api</artifactId> - <classifier>tests</classifier> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>archiva-common</artifactId> - </dependency> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>archiva-configuration</artifactId> - </dependency> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>archiva-policies</artifactId> - </dependency> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>archiva-xml-tools</artifactId> - </dependency> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>archiva-repository-api</artifactId> - </dependency> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>archiva-checksum</artifactId> - </dependency> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>metadata-model</artifactId> - </dependency> - - - <dependency> - <groupId>javax.annotation</groupId> - <artifactId>javax.annotation-api</artifactId> - </dependency> - <dependency> - <groupId>javax.inject</groupId> - <artifactId>javax.inject</artifactId> - </dependency> - - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-beans</artifactId> - </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-context</artifactId> - </dependency> - - <dependency> - <groupId>org.modelmapper</groupId> - <artifactId>modelmapper</artifactId> - </dependency> - - <dependency> - <groupId>org.apache.cassandra</groupId> - <artifactId>cassandra-all</artifactId> - <version>${cassandraVersion}</version> - <exclusions> - <exclusion> - <groupId>log4j</groupId> - <artifactId>log4j</artifactId> - </exclusion> - <exclusion> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-log4j12</artifactId> - </exclusion> - <exclusion> - <groupId>org.slf4j</groupId> - <artifactId>jcl-over-slf4j</artifactId> - </exclusion> - <exclusion> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-core</artifactId> - </exclusion> - <exclusion> - <groupId>org.mortbay.jetty</groupId> - <artifactId>jetty</artifactId> - </exclusion> - <exclusion> - <groupId>javax.servlet</groupId> - <artifactId>servlet-api</artifactId> - </exclusion> - <exclusion> - <groupId>org.slf4j</groupId> - <artifactId>log4j-over-slf4j</artifactId> - </exclusion> - <exclusion> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-classic</artifactId> - </exclusion> - <exclusion> - <groupId>org.jboss.logging</groupId> - <artifactId>jboss-logging</artifactId> - </exclusion> - </exclusions> - </dependency> - - <dependency> - <groupId>org.hectorclient</groupId> - <artifactId>hector-core</artifactId> - <version>1.1-4</version> - <exclusions> - <exclusion> - <groupId>javax.servlet</groupId> - <artifactId>servlet-api</artifactId> - </exclusion> - <exclusion> - <groupId>com.ecyrd.speed4j</groupId> - <artifactId>speed4j</artifactId> - </exclusion> - <exclusion> - <groupId>com.yammer.metrics</groupId> - <artifactId>metrics-core</artifactId> - </exclusion> - <exclusion> - <groupId>org.slf4j</groupId> - <artifactId>log4j-over-slf4j</artifactId> - </exclusion> - </exclusions> - </dependency> - - <dependency> - <groupId>org.apache.cassandra</groupId> - <artifactId>cassandra-thrift</artifactId> - <version>3.11.2</version> - <exclusions> - <exclusion> - <groupId>javax.servlet</groupId> - <artifactId>servlet-api</artifactId> - </exclusion> - </exclusions> - </dependency> - - <!-- Is a dependency of cassandra -> hibernate-validator and replaced by new version --> - <dependency> - <groupId>org.jboss.logging</groupId> - <artifactId>jboss-logging</artifactId> - </dependency> - - - <!-- TEST Scope --> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>archiva-test-utils</artifactId> - <version>${project.version}</version> - <scope>test</scope> - <exclusions> - <exclusion> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-simple</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.easymock</groupId> - <artifactId>easymock</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-test</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>generic-metadata-support</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-slf4j-impl</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-1.2-api</artifactId> - <version>${log4j.version}</version> - <scope>test</scope> - </dependency> - - - </dependencies> - <build> - <testResources> - <testResource> - <directory>src/test/filtered-resources</directory> - <filtering>true</filtering> - </testResource> - </testResources> - <plugins> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>build-helper-maven-plugin</artifactId> - <executions> - <execution> - <id>reserve-ports</id> - <phase>process-test-resources</phase> - <goals> - <goal>reserve-network-port</goal> - </goals> - <configuration> - <portNames> - <portName>cassandraPort</portName> - <portName>cassandra.storagePort</portName> - <portName>cassandra.stopPort</portName> - <portName>cassandra.jmxPort</portName> - </portNames> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>cassandra-maven-plugin</artifactId> - <version>2.0.0-1</version> - <executions> - <execution> - <id>start-cassandra</id> - <phase>process-test-classes</phase> - <goals> - <goal>start</goal> - </goals> - <configuration> - <rpcPort>${cassandraPort}</rpcPort> - <storagePort>${cassandra.storagePort}</storagePort> - <stopPort>${cassandra.stopPort}</stopPort> - <jmxPort>${cassandra.jmxPort}</jmxPort> - <addMainClasspath>false</addMainClasspath> - <addTestClasspath>false</addTestClasspath> - <startWaitSeconds>500</startWaitSeconds> - </configuration> - </execution> - <execution> - <id>stop-cassandra</id> - <phase>test</phase> - <goals> - <goal>stop</goal> - </goals> - </execution> - </executions> - <dependencies> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-simple</artifactId> - <version>${slf4j.version}</version> - </dependency> - </dependencies> - </plugin> - </plugins> - <pluginManagement> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - <configuration> - <systemPropertyVariables> - <cassandra.port>${cassandraPort}</cassandra.port> - <archiva.repositorySessionFactory.id>cassandra</archiva.repositorySessionFactory.id> - <appserver.base>${project.build.directory}/appserver-base</appserver.base> - </systemPropertyVariables> - <trimStackTrace>false</trimStackTrace> - </configuration> - </plugin> - </plugins> - </pluginManagement> - </build> - -</project> diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraArchivaManager.java b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraArchivaManager.java deleted file mode 100644 index 41ac95a24..000000000 --- a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraArchivaManager.java +++ /dev/null @@ -1,61 +0,0 @@ -package org.apache.archiva.metadata.repository.cassandra; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import me.prettyprint.hector.api.Cluster; -import me.prettyprint.hector.api.Keyspace; - -/** - * @author Olivier Lamy - * @since 2.0.0 - */ -public interface CassandraArchivaManager -{ - void start(); - - void shutdown(); - - boolean started(); - - Keyspace getKeyspace(); - - Cluster getCluster(); - - String getRepositoryFamilyName(); - - String getNamespaceFamilyName(); - - String getProjectFamilyName(); - - String getProjectVersionMetadataFamilyName(); - - String getArtifactMetadataFamilyName(); - - String getMetadataFacetFamilyName(); - - String getMailingListFamilyName(); - - String getLicenseFamilyName(); - - String getDependencyFamilyName(); - - String getChecksumFamilyName(); - -} diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java deleted file mode 100644 index bc8d7da66..000000000 --- a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java +++ /dev/null @@ -1,2506 +0,0 @@ -package org.apache.archiva.metadata.repository.cassandra; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import me.prettyprint.cassandra.serializers.LongSerializer; -import me.prettyprint.cassandra.serializers.StringSerializer; -import me.prettyprint.cassandra.service.template.ColumnFamilyResult; -import me.prettyprint.cassandra.service.template.ColumnFamilyTemplate; -import me.prettyprint.cassandra.service.template.ColumnFamilyUpdater; -import me.prettyprint.cassandra.service.template.ThriftColumnFamilyTemplate; -import me.prettyprint.hector.api.Keyspace; -import me.prettyprint.hector.api.beans.ColumnSlice; -import me.prettyprint.hector.api.beans.OrderedRows; -import me.prettyprint.hector.api.beans.Row; -import me.prettyprint.hector.api.exceptions.HInvalidRequestException; -import me.prettyprint.hector.api.factory.HFactory; -import me.prettyprint.hector.api.mutation.MutationResult; -import me.prettyprint.hector.api.mutation.Mutator; -import me.prettyprint.hector.api.query.QueryResult; -import me.prettyprint.hector.api.query.RangeSlicesQuery; -import org.apache.archiva.checksum.ChecksumAlgorithm; -import org.apache.archiva.metadata.QueryParameter; -import org.apache.archiva.metadata.model.ArtifactMetadata; -import org.apache.archiva.metadata.model.CiManagement; -import org.apache.archiva.metadata.model.Dependency; -import org.apache.archiva.metadata.model.FacetedMetadata; -import org.apache.archiva.metadata.model.IssueManagement; -import org.apache.archiva.metadata.model.License; -import org.apache.archiva.metadata.model.MailingList; -import org.apache.archiva.metadata.model.MetadataFacet; -import org.apache.archiva.metadata.model.MetadataFacetFactory; -import org.apache.archiva.metadata.model.Organization; -import org.apache.archiva.metadata.model.ProjectMetadata; -import org.apache.archiva.metadata.model.ProjectVersionMetadata; -import org.apache.archiva.metadata.model.ProjectVersionReference; -import org.apache.archiva.metadata.model.Scm; -import org.apache.archiva.metadata.repository.AbstractMetadataRepository; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.MetadataRepositoryException; -import org.apache.archiva.metadata.repository.MetadataResolutionException; -import org.apache.archiva.metadata.repository.MetadataService; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.metadata.repository.cassandra.model.ArtifactMetadataModel; -import org.apache.archiva.metadata.repository.cassandra.model.MetadataFacetModel; -import org.apache.archiva.metadata.repository.cassandra.model.Namespace; -import org.apache.archiva.metadata.repository.cassandra.model.Project; -import org.apache.archiva.metadata.repository.cassandra.model.ProjectVersionMetadataModel; -import org.apache.archiva.metadata.repository.cassandra.model.Repository; -import org.apache.commons.lang3.StringUtils; -import org.modelmapper.ModelMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.time.Instant; -import java.time.ZonedDateTime; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.Spliterator; -import java.util.UUID; -import java.util.function.BiFunction; -import java.util.function.Consumer; -import java.util.stream.Collectors; -import java.util.stream.Stream; -import java.util.stream.StreamSupport; - -import static org.apache.archiva.metadata.model.ModelInfo.STORAGE_TZ; -import static org.apache.archiva.metadata.repository.cassandra.CassandraUtils.*; -import static org.apache.archiva.metadata.repository.cassandra.model.ColumnNames.*; - -/** - * @author Olivier Lamy - * @since 2.0.0 - */ -public class CassandraMetadataRepository - extends AbstractMetadataRepository implements MetadataRepository -{ - - private static final String ARTIFACT_METADATA_MODEL_KEY = "artifactMetadataModel.key"; - private Logger logger = LoggerFactory.getLogger( getClass() ); - - private final CassandraArchivaManager cassandraArchivaManager; - - private final ColumnFamilyTemplate<String, String> projectVersionMetadataTemplate; - - private final ColumnFamilyTemplate<String, String> projectTemplate; - - private final ColumnFamilyTemplate<String, String> artifactMetadataTemplate; - - private final ColumnFamilyTemplate<String, String> metadataFacetTemplate; - - private final ColumnFamilyTemplate<String, String> mailingListTemplate; - - private final ColumnFamilyTemplate<String, String> licenseTemplate; - - private final ColumnFamilyTemplate<String, String> dependencyTemplate; - - private final ColumnFamilyTemplate<String, String> checksumTemplate; - - private final Keyspace keyspace; - - private final StringSerializer ss = StringSerializer.get(); - - public CassandraMetadataRepository( MetadataService metadataService, - CassandraArchivaManager cassandraArchivaManager ) - { - super( metadataService ); - this.cassandraArchivaManager = cassandraArchivaManager; - this.keyspace = cassandraArchivaManager.getKeyspace(); - - this.projectVersionMetadataTemplate = - new ThriftColumnFamilyTemplate<>( cassandraArchivaManager.getKeyspace(), // - cassandraArchivaManager.getProjectVersionMetadataFamilyName(), // - StringSerializer.get(), // - StringSerializer.get() ); - - this.projectTemplate = new ThriftColumnFamilyTemplate<>( cassandraArchivaManager.getKeyspace(), // - cassandraArchivaManager.getProjectFamilyName(), // - // - StringSerializer.get(), // - StringSerializer.get() ); - - this.artifactMetadataTemplate = new ThriftColumnFamilyTemplate<>( cassandraArchivaManager.getKeyspace(), // - cassandraArchivaManager.getArtifactMetadataFamilyName(), - StringSerializer.get(), // - StringSerializer.get() ); - - this.metadataFacetTemplate = new ThriftColumnFamilyTemplate<>( cassandraArchivaManager.getKeyspace(), // - cassandraArchivaManager.getMetadataFacetFamilyName(), - // - StringSerializer.get(), // - StringSerializer.get() ); - - this.mailingListTemplate = new ThriftColumnFamilyTemplate<>( cassandraArchivaManager.getKeyspace(), // - cassandraArchivaManager.getMailingListFamilyName(), - // - StringSerializer.get(), // - StringSerializer.get() ); - - this.licenseTemplate = new ThriftColumnFamilyTemplate<>( cassandraArchivaManager.getKeyspace(), // - cassandraArchivaManager.getLicenseFamilyName(), - // - StringSerializer.get(), // - StringSerializer.get() ); - - this.dependencyTemplate = new ThriftColumnFamilyTemplate<>( cassandraArchivaManager.getKeyspace(), // - cassandraArchivaManager.getDependencyFamilyName(), - // - StringSerializer.get(), // - StringSerializer.get() ); - - this.checksumTemplate = new ThriftColumnFamilyTemplate<>( cassandraArchivaManager.getKeyspace(), // - cassandraArchivaManager.getChecksumFamilyName(), - // - StringSerializer.get(), // - StringSerializer.get() ); - } - - - /** - * if the repository doesn't exist it will be created - * - * @param repositoryId - * @return - */ - public Repository getOrCreateRepository( String repositoryId ) - throws MetadataRepositoryException - { - String cf = cassandraArchivaManager.getRepositoryFamilyName(); - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, StringSerializer.get(), StringSerializer.get(), - StringSerializer.get() ) // - .setColumnFamily( cf ) // - .setColumnNames( REPOSITORY_NAME.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // - .execute(); - - if ( result.get().getCount() < 1 ) - { - // we need to create the repository - Repository repository = new Repository( repositoryId ); - - try - { - MutationResult mutationResult = HFactory.createMutator( keyspace, StringSerializer.get() ) // - .addInsertion( repositoryId, cf, - CassandraUtils.column( REPOSITORY_NAME.toString(), repository.getName() ) ) // - .execute(); - logger.debug( "time to insert repository: {}", mutationResult.getExecutionTimeMicro() ); - return repository; - } - catch ( HInvalidRequestException e ) - { - logger.error( e.getMessage(), e ); - throw new MetadataRepositoryException( e.getMessage(), e ); - } - - } - - return new Repository( - result.get().getList().get( 0 ).getColumnSlice().getColumnByName( REPOSITORY_NAME.toString() ).getValue() ); - } - - - protected Repository getRepository( String repositoryId ) - throws MetadataRepositoryException - { - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, StringSerializer.get(), StringSerializer.get(), - StringSerializer.get() ) // - .setColumnFamily( cassandraArchivaManager.getRepositoryFamilyName() ) // - .setColumnNames( REPOSITORY_NAME.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // - .execute(); - return ( result.get().getCount() > 0 ) ? new Repository( repositoryId ) : null; - } - - @Override - public void updateNamespace( RepositorySession session, String repositoryId, String namespaceId ) - throws MetadataRepositoryException - { - updateOrAddNamespace( repositoryId, namespaceId ); - } - - private Namespace updateOrAddNamespace( String repositoryId, String namespaceId ) - throws MetadataRepositoryException - { - try - { - Repository repository = getOrCreateRepository( repositoryId ); - - String key = - new Namespace.KeyBuilder().withNamespace( namespaceId ).withRepositoryId( repositoryId ).build(); - - Namespace namespace = getNamespace( repositoryId, namespaceId ); - if ( namespace == null ) - { - String cf = cassandraArchivaManager.getNamespaceFamilyName(); - namespace = new Namespace( namespaceId, repository ); - HFactory.createMutator( keyspace, StringSerializer.get() ) - // values - .addInsertion( key, cf, CassandraUtils.column( NAME.toString(), namespace.getName() ) ) // - .addInsertion( key, cf, CassandraUtils.column( REPOSITORY_NAME.toString(), repository.getName() ) ) // - .execute(); - } - - return namespace; - } - catch ( HInvalidRequestException e ) - { - logger.error( e.getMessage(), e ); - throw new MetadataRepositoryException( e.getMessage(), e ); - } - } - - protected Namespace getNamespace( String repositoryId, String namespaceId ) - { - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getNamespaceFamilyName() ) // - .setColumnNames( REPOSITORY_NAME.toString(), NAME.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // - .addEqualsExpression( NAME.toString(), namespaceId ) // - .execute(); - if ( result.get().getCount() > 0 ) - { - ColumnSlice<String, String> columnSlice = result.get().getList().get( 0 ).getColumnSlice(); - return new Namespace( getStringValue( columnSlice, NAME.toString() ), // - new Repository( getStringValue( columnSlice, REPOSITORY_NAME.toString() ) ) ); - - } - return null; - } - - - @Override - public void removeNamespace( RepositorySession session, String repositoryId, String namespaceId ) - throws MetadataRepositoryException - { - - try - { - String key = new Namespace.KeyBuilder() // - .withNamespace( namespaceId ) // - .withRepositoryId( repositoryId ) // - .build(); - - HFactory.createMutator( cassandraArchivaManager.getKeyspace(), new StringSerializer() ) // - .addDeletion( key, cassandraArchivaManager.getNamespaceFamilyName() ) // - .execute(); - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getProjectFamilyName() ) // - .setColumnNames( REPOSITORY_NAME.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // - .addEqualsExpression( NAMESPACE_ID.toString(), namespaceId ) // - .execute(); - - for ( Row<String, String, String> row : result.get() ) - { - this.projectTemplate.deleteRow( row.getKey() ); - } - - result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getProjectVersionMetadataFamilyName() ) // - .setColumnNames( REPOSITORY_NAME.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // - .addEqualsExpression( NAMESPACE_ID.toString(), namespaceId ) // - .execute(); - - for ( Row<String, String, String> row : result.get() ) - { - this.projectVersionMetadataTemplate.deleteRow( row.getKey() ); - removeMailingList( row.getKey() ); - } - - result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getArtifactMetadataFamilyName() ) // - .setColumnNames( REPOSITORY_NAME.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // - .addEqualsExpression( NAMESPACE_ID.toString(), namespaceId ) // - .execute(); - - for ( Row<String, String, String> row : result.get() ) - { - this.artifactMetadataTemplate.deleteRow( row.getKey() ); - } - - result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getMetadataFacetFamilyName() ) // - .setColumnNames( REPOSITORY_NAME.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // - .addEqualsExpression( NAMESPACE_ID.toString(), namespaceId ) // - .execute(); - - for ( Row<String, String, String> row : result.get() ) - { - this.metadataFacetTemplate.deleteRow( row.getKey() ); - } - - } - catch ( HInvalidRequestException e ) - { - logger.error( e.getMessage(), e ); - throw new MetadataRepositoryException( e.getMessage(), e ); - } - } - - - @Override - public void removeRepository( RepositorySession session, final String repositoryId ) - throws MetadataRepositoryException - { - - // TODO use cql queries to delete all - List<String> namespacesKey = new ArrayList<>(); - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getNamespaceFamilyName() ) // - .setColumnNames( REPOSITORY_NAME.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // - .execute(); - - for ( Row<String, String, String> row : result.get().getList() ) - { - namespacesKey.add( row.getKey() ); - } - - HFactory.createMutator( cassandraArchivaManager.getKeyspace(), ss ) // - .addDeletion( namespacesKey, cassandraArchivaManager.getNamespaceFamilyName() ) // - .execute(); - - //delete repositoryId - HFactory.createMutator( cassandraArchivaManager.getKeyspace(), ss ) // - .addDeletion( repositoryId, cassandraArchivaManager.getRepositoryFamilyName() ) // - .execute(); - - result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getProjectFamilyName() ) // - .setColumnNames( REPOSITORY_NAME.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // - .execute(); - - for ( Row<String, String, String> row : result.get() ) - { - this.projectTemplate.deleteRow( row.getKey() ); - } - - result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getProjectVersionMetadataFamilyName() ) // - .setColumnNames( REPOSITORY_NAME.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // - .execute(); - - for ( Row<String, String, String> row : result.get() ) - { - this.projectVersionMetadataTemplate.deleteRow( row.getKey() ); - removeMailingList( row.getKey() ); - } - - result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getArtifactMetadataFamilyName() ) // - .setColumnNames( REPOSITORY_NAME.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // - .execute(); - - for ( Row<String, String, String> row : result.get() ) - { - this.artifactMetadataTemplate.deleteRow( row.getKey() ); - } - - result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getMetadataFacetFamilyName() ) // - .setColumnNames( REPOSITORY_NAME.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // - .execute(); - - for ( Row<String, String, String> row : result.get() ) - { - this.metadataFacetTemplate.deleteRow( row.getKey() ); - } - - - } - - // FIXME this one need peformance improvement maybe a cache? - @Override - public List<String> getRootNamespaces( RepositorySession session, final String repoId ) - throws MetadataResolutionException - { - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getNamespaceFamilyName() ) // - .setColumnNames( NAME.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repoId ) // - .execute(); - - Set<String> namespaces = new HashSet<>( result.get( ).getCount( ) ); - - for ( Row<String, String, String> row : result.get() ) - { - namespaces.add( StringUtils.substringBefore( getStringValue( row.getColumnSlice(), NAME.toString() ), "." ) ); - } - - return new ArrayList<>( namespaces ); - } - - // FIXME this one need peformance improvement maybe a cache? - @Override - public List<String> getChildNamespaces( RepositorySession session, final String repoId, final String namespaceId ) - throws MetadataResolutionException - { - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getNamespaceFamilyName() ) // - .setColumnNames( NAME.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repoId ) // - .execute(); - - List<String> namespaces = new ArrayList<>( result.get().getCount() ); - - for ( Row<String, String, String> row : result.get() ) - { - String currentNamespace = getStringValue( row.getColumnSlice(), NAME.toString() ); - if ( StringUtils.startsWith( currentNamespace, namespaceId ) // - && ( StringUtils.length( currentNamespace ) > StringUtils.length( namespaceId ) ) ) - { - // store after namespaceId '.' but before next '.' - // call org namespace org.apache.maven.shared -> stored apache - - String calledNamespace = StringUtils.endsWith( namespaceId, "." ) ? namespaceId : namespaceId + "."; - String storedNamespace = StringUtils.substringAfter( currentNamespace, calledNamespace ); - - storedNamespace = StringUtils.substringBefore( storedNamespace, "." ); - - namespaces.add( storedNamespace ); - } - } - - return namespaces; - - } - - // only use for testing purpose - protected List<String> getNamespaces( final String repoId ) - throws MetadataResolutionException - { - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getNamespaceFamilyName() ) // - .setColumnNames( NAME.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repoId ) // - .execute(); - - List<String> namespaces = new ArrayList<>( result.get().getCount() ); - - for ( Row<String, String, String> row : result.get() ) - { - namespaces.add( getStringValue( row.getColumnSlice(), NAME.toString() ) ); - } - - return namespaces; - } - - - @Override - public void updateProject( RepositorySession session, String repositoryId, ProjectMetadata projectMetadata ) - throws MetadataRepositoryException - { - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getProjectFamilyName() ) // - .setColumnNames( PROJECT_ID.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // - .addEqualsExpression( NAMESPACE_ID.toString(), projectMetadata.getNamespace() ) // - .addEqualsExpression( PROJECT_ID.toString(), projectMetadata.getId() ) // - .execute(); - - // project exists ? if yes return nothing to update here - if ( result.get( ).getCount( ) <= 0 ) - { - Namespace namespace = updateOrAddNamespace( repositoryId, projectMetadata.getNamespace() ); - - String key = - new Project.KeyBuilder().withProjectId( projectMetadata.getId() ).withNamespace( namespace ).build(); - - String cf = cassandraArchivaManager.getProjectFamilyName(); - projectTemplate.createMutator() - // values - .addInsertion( key, cf, CassandraUtils.column( PROJECT_ID.toString(), projectMetadata.getId() ) ) // - .addInsertion( key, cf, CassandraUtils.column( REPOSITORY_NAME.toString(), repositoryId ) ) // - .addInsertion( key, cf, CassandraUtils.column( NAMESPACE_ID.toString(), projectMetadata.getNamespace() ) )// - .execute(); - } - } - - @Override - public List<String> getProjects( RepositorySession session, final String repoId, final String namespace ) - throws MetadataResolutionException - { - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getProjectFamilyName() ) // - .setColumnNames( PROJECT_ID.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repoId ) // - .addEqualsExpression( NAMESPACE_ID.toString(), namespace ) // - .execute(); - - final Set<String> projects = new HashSet<>( result.get( ).getCount( ) ); - - for ( Row<String, String, String> row : result.get() ) - { - projects.add( getStringValue( row.getColumnSlice(), PROJECT_ID.toString() ) ); - } - - return new ArrayList<>( projects ); - } - - @Override - public void removeProject( RepositorySession session, final String repositoryId, final String namespaceId, final String projectId ) - throws MetadataRepositoryException - { - - String key = new Project.KeyBuilder() // - .withProjectId( projectId ) // - .withNamespace( new Namespace( namespaceId, new Repository( repositoryId ) ) ) // - .build(); - - this.projectTemplate.deleteRow( key ); - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getProjectVersionMetadataFamilyName() ) // - .setColumnNames( ID.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // - .addEqualsExpression( NAMESPACE_ID.toString(), namespaceId ) // - .addEqualsExpression( PROJECT_ID.toString(), projectId ) // - .execute(); - - for ( Row<String, String, String> row : result.get() ) - { - this.projectVersionMetadataTemplate.deleteRow( row.getKey() ); - removeMailingList( row.getKey() ); - } - - result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getArtifactMetadataFamilyName() ) // - .setColumnNames( PROJECT_ID.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // - .addEqualsExpression( NAMESPACE_ID.toString(), namespaceId ) // - .addEqualsExpression( PROJECT_ID.toString(), projectId ) // - .execute(); - - for ( Row<String, String, String> row : result.get() ) - { - this.artifactMetadataTemplate.deleteRow( row.getKey() ); - } - } - - @Override - public List<String> getProjectVersions( RepositorySession session, final String repoId, final String namespace, final String projectId ) - throws MetadataResolutionException - { - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getProjectVersionMetadataFamilyName() ) // - .setColumnNames( PROJECT_VERSION.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repoId ) // - .addEqualsExpression( NAMESPACE_ID.toString(), namespace ) // - .addEqualsExpression( PROJECT_ID.toString(), projectId ) // - .execute(); - - int count = result.get().getCount(); - - if ( count < 1 ) - { - return Collections.emptyList(); - } - - Set<String> versions = new HashSet<>( count ); - - for ( Row<String, String, String> orderedRows : result.get() ) - { - versions.add( getStringValue( orderedRows.getColumnSlice(), PROJECT_VERSION.toString() ) ); - } - - return new ArrayList<>( versions ); - - } - - @Override - public ProjectMetadata getProject( RepositorySession session, final String repoId, final String namespace, final String id ) - throws MetadataResolutionException - { - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getProjectFamilyName() ) // - .setColumnNames( PROJECT_ID.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repoId ) // - .addEqualsExpression( NAMESPACE_ID.toString(), namespace ) // - .addEqualsExpression( PROJECT_ID.toString(), id ) // - .execute(); - - int count = result.get().getCount(); - - if ( count < 1 ) - { - return null; - } - - ProjectMetadata projectMetadata = new ProjectMetadata(); - projectMetadata.setId( id ); - projectMetadata.setNamespace( namespace ); - - logger.debug( "getProject repoId: {}, namespace: {}, projectId: {} -> {}", repoId, namespace, id, - projectMetadata ); - - return projectMetadata; - } - - protected ProjectVersionMetadataModel mapProjectVersionMetadataModel( ColumnSlice<String, String> columnSlice ) - { - ProjectVersionMetadataModel projectVersionMetadataModel = new ProjectVersionMetadataModel(); - projectVersionMetadataModel.setId( getStringValue( columnSlice, ID.toString() ) ); - projectVersionMetadataModel.setDescription( getStringValue( columnSlice, DESCRIPTION.toString() ) ); - projectVersionMetadataModel.setName( getStringValue( columnSlice, NAME.toString() ) ); - Namespace namespace = new Namespace( getStringValue( columnSlice, NAMESPACE_ID.toString() ), // - new Repository( getStringValue( columnSlice, REPOSITORY_NAME.toString() ) ) ); - projectVersionMetadataModel.setNamespace( namespace ); - projectVersionMetadataModel.setIncomplete( - Boolean.parseBoolean( getStringValue( columnSlice, "incomplete" ) ) ); - projectVersionMetadataModel.setProjectId( getStringValue( columnSlice, PROJECT_ID.toString() ) ); - projectVersionMetadataModel.setUrl( getStringValue( columnSlice, URL.toString() ) ); - return projectVersionMetadataModel; - } - - - @Override - public void updateProjectVersion( RepositorySession session, String repositoryId, String namespaceId, String projectId, - ProjectVersionMetadata versionMetadata ) - throws MetadataRepositoryException - { - try - { - Namespace namespace = getNamespace( repositoryId, namespaceId ); - - if ( namespace == null ) - { - updateOrAddNamespace( repositoryId, namespaceId ); - } - - if ( getProject( session, repositoryId, namespaceId, projectId ) == null ) - { - ProjectMetadata projectMetadata = new ProjectMetadata(); - projectMetadata.setNamespace( namespaceId ); - projectMetadata.setId( projectId ); - updateProject( session, repositoryId, projectMetadata ); - } - - } - catch ( MetadataResolutionException e ) - { - throw new MetadataRepositoryException( e.getMessage(), e ); - } - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getProjectVersionMetadataFamilyName() ) // - .setColumnNames( PROJECT_VERSION.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // - .addEqualsExpression( NAMESPACE_ID.toString(), namespaceId ) // - .addEqualsExpression( PROJECT_ID.toString(), projectId ) // - .addEqualsExpression( PROJECT_VERSION.toString(), versionMetadata.getId() ) // - .execute(); - - ProjectVersionMetadataModel projectVersionMetadataModel; - boolean creation = true; - if ( result.get().getCount() > 0 ) - { - projectVersionMetadataModel = - mapProjectVersionMetadataModel( result.get().getList().get( 0 ).getColumnSlice() ); - creation = false; - } - else - { - projectVersionMetadataModel = getModelMapper().map( versionMetadata, ProjectVersionMetadataModel.class ); - } - - projectVersionMetadataModel.setProjectId( projectId ); - projectVersionMetadataModel.setNamespace( new Namespace( namespaceId, new Repository( repositoryId ) ) ); - - projectVersionMetadataModel.setCiManagement( versionMetadata.getCiManagement() ); - projectVersionMetadataModel.setIssueManagement( versionMetadata.getIssueManagement() ); - projectVersionMetadataModel.setOrganization( versionMetadata.getOrganization() ); - projectVersionMetadataModel.setScm( versionMetadata.getScm() ); - - projectVersionMetadataModel.setMailingLists( versionMetadata.getMailingLists() ); - projectVersionMetadataModel.setDependencies( versionMetadata.getDependencies() ); - projectVersionMetadataModel.setLicenses( versionMetadata.getLicenses() ); - - // we don't test of repository and namespace really exist ! - String key = new ProjectVersionMetadataModel.KeyBuilder() // - .withRepository( repositoryId ) // - .withNamespace( namespaceId ) // - .withProjectId( projectId ) // - .withProjectVersion( versionMetadata.getVersion() ) // - .withId( versionMetadata.getId() ) // - .build(); - - // FIXME nested objects to store!!! - if ( creation ) - { - String cf = cassandraArchivaManager.getProjectVersionMetadataFamilyName(); - Mutator<String> mutator = projectVersionMetadataTemplate.createMutator() - // values - .addInsertion( key, cf, column( PROJECT_ID.toString(), projectId ) ) // - .addInsertion( key, cf, column( REPOSITORY_NAME.toString(), repositoryId ) ) // - .addInsertion( key, cf, column( NAMESPACE_ID.toString(), namespaceId ) )// - .addInsertion( key, cf, column( PROJECT_VERSION.toString(), versionMetadata.getVersion() ) ); // - - addInsertion( mutator, key, cf, DESCRIPTION.toString(), versionMetadata.getDescription() ); - - addInsertion( mutator, key, cf, NAME.toString(), versionMetadata.getName() ); - - addInsertion( mutator, key, cf, "incomplete", Boolean.toString( versionMetadata.isIncomplete() ) ); - - addInsertion( mutator, key, cf, URL.toString(), versionMetadata.getUrl() ); - { - CiManagement ci = versionMetadata.getCiManagement(); - if ( ci != null ) - { - addInsertion( mutator, key, cf, "ciManagement.system", ci.getSystem() ); - addInsertion( mutator, key, cf, "ciManagement.url", ci.getUrl() ); - } - } - - { - IssueManagement issueManagement = versionMetadata.getIssueManagement(); - - if ( issueManagement != null ) - { - addInsertion( mutator, key, cf, "issueManagement.system", issueManagement.getSystem() ); - addInsertion( mutator, key, cf, "issueManagement.url", issueManagement.getUrl() ); - } - } - - { - Organization organization = versionMetadata.getOrganization(); - if ( organization != null ) - { - addInsertion( mutator, key, cf, "organization.name", organization.getName() ); - addInsertion( mutator, key, cf, "organization.url", organization.getUrl() ); - } - } - - { - Scm scm = versionMetadata.getScm(); - if ( scm != null ) - { - addInsertion( mutator, key, cf, "scm.url", scm.getUrl() ); - addInsertion( mutator, key, cf, "scm.connection", scm.getConnection() ); - addInsertion( mutator, key, cf, "scm.developerConnection", scm.getDeveloperConnection() ); - } - } - - recordMailingList( key, versionMetadata.getMailingLists() ); - - recordLicenses( key, versionMetadata.getLicenses() ); - - recordDependencies( key, versionMetadata.getDependencies(), repositoryId ); - - mutator.execute(); - } - else - { - ColumnFamilyUpdater<String, String> updater = projectVersionMetadataTemplate.createUpdater( key ); - addUpdateStringValue( updater, PROJECT_ID.toString(), projectId ); - addUpdateStringValue( updater, REPOSITORY_NAME.toString(), repositoryId ); - addUpdateStringValue( updater, NAMESPACE_ID.toString(), namespaceId ); - addUpdateStringValue( updater, PROJECT_VERSION.toString(), versionMetadata.getVersion() ); - addUpdateStringValue( updater, DESCRIPTION.toString(), versionMetadata.getDescription() ); - - addUpdateStringValue( updater, NAME.toString(), versionMetadata.getName() ); - - updater.setString( "incomplete", Boolean.toString( versionMetadata.isIncomplete() ) ); - addUpdateStringValue( updater, URL.toString(), versionMetadata.getUrl() ); - - { - CiManagement ci = versionMetadata.getCiManagement(); - if ( ci != null ) - { - addUpdateStringValue( updater, "ciManagement.system", ci.getSystem() ); - addUpdateStringValue( updater, "ciManagement.url", ci.getUrl() ); - } - } - { - IssueManagement issueManagement = versionMetadata.getIssueManagement(); - if ( issueManagement != null ) - { - addUpdateStringValue( updater, "issueManagement.system", issueManagement.getSystem() ); - addUpdateStringValue( updater, "issueManagement.url", issueManagement.getUrl() ); - } - } - { - Organization organization = versionMetadata.getOrganization(); - if ( organization != null ) - { - addUpdateStringValue( updater, "organization.name", organization.getName() ); - addUpdateStringValue( updater, "organization.url", organization.getUrl() ); - } - } - { - Scm scm = versionMetadata.getScm(); - if ( scm != null ) - { - addUpdateStringValue( updater, "scm.url", scm.getUrl() ); - addUpdateStringValue( updater, "scm.connection", scm.getConnection() ); - addUpdateStringValue( updater, "scm.developerConnection", scm.getDeveloperConnection() ); - } - } - - // update is a delete record - removeMailingList( key ); - recordMailingList( key, versionMetadata.getMailingLists() ); - - removeLicenses( key ); - recordLicenses( key, versionMetadata.getLicenses() ); - - removeDependencies( key ); - recordDependencies( key, versionMetadata.getDependencies(), repositoryId ); - - projectVersionMetadataTemplate.update( updater ); - - } - - ArtifactMetadataModel artifactMetadataModel = new ArtifactMetadataModel(); - artifactMetadataModel.setRepositoryId( repositoryId ); - artifactMetadataModel.setNamespace( namespaceId ); - artifactMetadataModel.setProject( projectId ); - artifactMetadataModel.setProjectVersion( versionMetadata.getVersion() ); - artifactMetadataModel.setVersion( versionMetadata.getVersion() ); - updateFacets( versionMetadata, artifactMetadataModel ); - - } - - - @Override - public ProjectVersionMetadata getProjectVersion( RepositorySession session, final String repoId, final String namespace, - final String projectId, final String projectVersion ) - throws MetadataResolutionException - { - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getProjectVersionMetadataFamilyName() ) // - .setColumnNames( PROJECT_VERSION.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repoId ) // - .addEqualsExpression( NAMESPACE_ID.toString(), namespace ) // - .addEqualsExpression( PROJECT_ID.toString(), projectId ) // - .addEqualsExpression( PROJECT_VERSION.toString(), projectVersion ) // - .execute(); - - if ( result.get().getCount() < 1 ) - { - return null; - } - - String key = result.get().iterator().next().getKey(); - - ColumnFamilyResult<String, String> columnFamilyResult = this.projectVersionMetadataTemplate.queryColumns( key ); - - if ( !columnFamilyResult.hasResults() ) - { - return null; - } - - ProjectVersionMetadata projectVersionMetadata = new ProjectVersionMetadata(); - projectVersionMetadata.setId( columnFamilyResult.getString( PROJECT_VERSION.toString() ) ); - projectVersionMetadata.setDescription( columnFamilyResult.getString( DESCRIPTION.toString() ) ); - projectVersionMetadata.setName( columnFamilyResult.getString( NAME.toString() ) ); - - projectVersionMetadata.setIncomplete( Boolean.parseBoolean( columnFamilyResult.getString( "incomplete" ) ) ); - - projectVersionMetadata.setUrl( columnFamilyResult.getString( URL.toString() ) ); - { - String ciUrl = columnFamilyResult.getString( "ciManagement.url" ); - String ciSystem = columnFamilyResult.getString( "ciManagement.system" ); - - if ( StringUtils.isNotEmpty( ciSystem ) || StringUtils.isNotEmpty( ciUrl ) ) - { - projectVersionMetadata.setCiManagement( new CiManagement( ciSystem, ciUrl ) ); - } - } - { - String issueUrl = columnFamilyResult.getString( "issueManagement.url" ); - String issueSystem = columnFamilyResult.getString( "issueManagement.system" ); - if ( StringUtils.isNotEmpty( issueSystem ) || StringUtils.isNotEmpty( issueUrl ) ) - { - projectVersionMetadata.setIssueManagement( new IssueManagement( issueSystem, issueUrl ) ); - } - } - { - String organizationUrl = columnFamilyResult.getString( "organization.url" ); - String organizationName = columnFamilyResult.getString( "organization.name" ); - if ( StringUtils.isNotEmpty( organizationUrl ) || StringUtils.isNotEmpty( organizationName ) ) - { - projectVersionMetadata.setOrganization( new Organization( organizationName, organizationUrl ) ); - } - } - { - String devConn = columnFamilyResult.getString( "scm.developerConnection" ); - String conn = columnFamilyResult.getString( "scm.connection" ); - String url = columnFamilyResult.getString( "scm.url" ); - if ( StringUtils.isNotEmpty( devConn ) || StringUtils.isNotEmpty( conn ) || StringUtils.isNotEmpty( url ) ) - { - projectVersionMetadata.setScm( new Scm( conn, devConn, url ) ); - } - } - projectVersionMetadata.setMailingLists( getMailingLists( key ) ); - projectVersionMetadata.setLicenses( getLicenses( key ) ); - projectVersionMetadata.setDependencies( getDependencies( key ) ); - // facets - - result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getMetadataFacetFamilyName() ) // - .setColumnNames( FACET_ID.toString(), KEY.toString(), VALUE.toString(), NAME.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repoId ) // - .addEqualsExpression( NAMESPACE_ID.toString(), namespace ) // - .addEqualsExpression( PROJECT_ID.toString(), projectId ) // - .addEqualsExpression( PROJECT_VERSION.toString(), projectVersion ) // - .execute(); - - Map<String, Map<String, String>> metadataFacetsPerFacetIds = new HashMap<>(); - - for ( Row<String, String, String> row : result.get() ) - { - ColumnSlice<String, String> columnSlice = row.getColumnSlice(); - String facetId = getStringValue( columnSlice, FACET_ID.toString() ); - Map<String, String> metaValues = metadataFacetsPerFacetIds.computeIfAbsent( facetId, k -> new HashMap<>( ) ); - metaValues.put( getStringValue( columnSlice, KEY.toString() ), getStringValue( columnSlice, VALUE.toString() ) ); - } - - if ( !metadataFacetsPerFacetIds.isEmpty() ) - { - for ( Map.Entry<String, Map<String, String>> entry : metadataFacetsPerFacetIds.entrySet() ) - { - MetadataFacetFactory<?> metadataFacetFactory = getFacetFactory( entry.getKey() ); - if ( metadataFacetFactory != null ) - { - MetadataFacet metadataFacet = metadataFacetFactory.createMetadataFacet(); - metadataFacet.fromProperties( entry.getValue() ); - projectVersionMetadata.addFacet( metadataFacet ); - } - } - } - - return projectVersionMetadata; - } - - protected void recordChecksums( String repositoryId, String artifactMetadataKey, Map<String, String> checksums) - { - if ( checksums == null || checksums.isEmpty() ) - { - return; - } - Mutator<String> checksumMutator = this.checksumTemplate.createMutator(); - for ( Map.Entry<String, String> entry : checksums.entrySet()) - { - // we don't care about the key as the real used one with the projectVersionMetadata - String keyChecksums = UUID.randomUUID().toString(); - String cfChecksums = cassandraArchivaManager.getChecksumFamilyName(); - - addInsertion( checksumMutator, keyChecksums, cfChecksums, ARTIFACT_METADATA_MODEL_KEY, - artifactMetadataKey ); - addInsertion( checksumMutator, keyChecksums, cfChecksums, CHECKSUM_ALG.toString(), entry.getKey()); - addInsertion( checksumMutator, keyChecksums, cfChecksums, CHECKSUM_VALUE.toString(), - entry.getValue() ); - addInsertion(checksumMutator, keyChecksums, cfChecksums, REPOSITORY_NAME.toString(), repositoryId); - - } - checksumMutator.execute(); - } - - protected void removeChecksums( String artifactMetadataKey ) - { - - QueryResult<OrderedRows<String, String, String>> result = - HFactory.createRangeSlicesQuery( cassandraArchivaManager.getKeyspace(), ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getChecksumFamilyName() ) // - .setColumnNames( CHECKSUM_ALG.toString() ) // - .setRowCount( Integer.MAX_VALUE ) // - .addEqualsExpression(ARTIFACT_METADATA_MODEL_KEY, artifactMetadataKey ) // - .execute(); - - if ( result.get().getCount() < 1 ) - { - return; - } - - for ( Row<String, String, String> row : result.get() ) - { - this.checksumTemplate.deleteRow( row.getKey() ); - } - - } - - protected Map<String, String> getChecksums( String artifactMetadataKey ) - { - Map<String, String> checksums = new HashMap<>(); - - QueryResult<OrderedRows<String, String, String>> result = - HFactory.createRangeSlicesQuery( cassandraArchivaManager.getKeyspace(), ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getChecksumFamilyName() ) // - .setColumnNames( ARTIFACT_METADATA_MODEL_KEY, REPOSITORY_NAME.toString(), - CHECKSUM_ALG.toString(), CHECKSUM_VALUE.toString() ) // - .setRowCount( Integer.MAX_VALUE ) // - .addEqualsExpression(ARTIFACT_METADATA_MODEL_KEY, artifactMetadataKey) // - .execute(); - for ( Row<String, String, String> row : result.get() ) - { - ColumnFamilyResult<String, String> columnFamilyResult = - this.checksumTemplate.queryColumns( row.getKey() ); - - checksums.put(columnFamilyResult.getString(CHECKSUM_ALG.toString()), - columnFamilyResult.getString(CHECKSUM_VALUE.toString())); - } - - return checksums; - } - - protected void recordMailingList( String projectVersionMetadataKey, List<MailingList> mailingLists ) - { - if ( mailingLists == null || mailingLists.isEmpty() ) - { - return; - } - Mutator<String> mailingMutator = this.mailingListTemplate.createMutator(); - for ( MailingList mailingList : mailingLists ) - { - // we don't care about the key as the real used one with the projectVersionMetadata - String keyMailingList = UUID.randomUUID().toString(); - String cfMailingList = cassandraArchivaManager.getMailingListFamilyName(); - - addInsertion( mailingMutator, keyMailingList, cfMailingList, "projectVersionMetadataModel.key", - projectVersionMetadataKey ); - addInsertion( mailingMutator, keyMailingList, cfMailingList, NAME.toString(), mailingList.getName() ); - addInsertion( mailingMutator, keyMailingList, cfMailingList, "mainArchiveUrl", - mailingList.getMainArchiveUrl() ); - addInsertion( mailingMutator, keyMailingList, cfMailingList, "postAddress", mailingList.getPostAddress() ); - addInsertion( mailingMutator, keyMailingList, cfMailingList, "subscribeAddress", - mailingList.getSubscribeAddress() ); - addInsertion( mailingMutator, keyMailingList, cfMailingList, "unsubscribeAddress", - mailingList.getUnsubscribeAddress() ); - int idx = 0; - for ( String otherArchive : mailingList.getOtherArchives() ) - { - addInsertion( mailingMutator, keyMailingList, cfMailingList, "otherArchive." + idx, otherArchive ); - idx++; - } - - } - mailingMutator.execute(); - } - - protected void removeMailingList( String projectVersionMetadataKey ) - { - - QueryResult<OrderedRows<String, String, String>> result = - HFactory.createRangeSlicesQuery( cassandraArchivaManager.getKeyspace(), ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getMailingListFamilyName() ) // - .setColumnNames( NAME.toString() ) // - .setRowCount( Integer.MAX_VALUE ) // - .addEqualsExpression( "projectVersionMetadataModel.key", projectVersionMetadataKey ) // - .execute(); - - if ( result.get().getCount() < 1 ) - { - return; - } - - for ( Row<String, String, String> row : result.get() ) - { - this.mailingListTemplate.deleteRow( row.getKey() ); - } - - } - - protected List<MailingList> getMailingLists( String projectVersionMetadataKey ) - { - List<MailingList> mailingLists = new ArrayList<>(); - - QueryResult<OrderedRows<String, String, String>> result = - HFactory.createRangeSlicesQuery( cassandraArchivaManager.getKeyspace(), ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getMailingListFamilyName() ) // - .setColumnNames( NAME.toString() ) // - .setRowCount( Integer.MAX_VALUE ) // - .addEqualsExpression( "projectVersionMetadataModel.key", projectVersionMetadataKey ) // - .execute(); - for ( Row<String, String, String> row : result.get() ) - { - ColumnFamilyResult<String, String> columnFamilyResult = - this.mailingListTemplate.queryColumns( row.getKey() ); - - MailingList mailingList = new MailingList(); - mailingList.setName( columnFamilyResult.getString( NAME.toString() ) ); - mailingList.setMainArchiveUrl( columnFamilyResult.getString( "mainArchiveUrl" ) ); - mailingList.setPostAddress( columnFamilyResult.getString( "postAddress" ) ); - mailingList.setSubscribeAddress( columnFamilyResult.getString( "subscribeAddress" ) ); - mailingList.setUnsubscribeAddress( columnFamilyResult.getString( "unsubscribeAddress" ) ); - - List<String> otherArchives = new ArrayList<>(); - - for ( String columnName : columnFamilyResult.getColumnNames() ) - { - if ( StringUtils.startsWith( columnName, "otherArchive." ) ) - { - otherArchives.add( columnFamilyResult.getString( columnName ) ); - } - } - - mailingList.setOtherArchives( otherArchives ); - mailingLists.add( mailingList ); - } - - return mailingLists; - } - - protected void recordLicenses( String projectVersionMetadataKey, List<License> licenses ) - { - - if ( licenses == null || licenses.isEmpty() ) - { - return; - } - Mutator<String> licenseMutator = this.licenseTemplate.createMutator(); - - for ( License license : licenses ) - { - // we don't care about the key as the real used one with the projectVersionMetadata - String keyLicense = UUID.randomUUID().toString(); - String cfLicense = cassandraArchivaManager.getLicenseFamilyName(); - - addInsertion( licenseMutator, keyLicense, cfLicense, "projectVersionMetadataModel.key", - projectVersionMetadataKey ); - - addInsertion( licenseMutator, keyLicense, cfLicense, NAME.toString(), license.getName() ); - - addInsertion( licenseMutator, keyLicense, cfLicense, URL.toString(), license.getUrl() ); - - } - licenseMutator.execute(); - } - - protected void removeLicenses( String projectVersionMetadataKey ) - { - - QueryResult<OrderedRows<String, String, String>> result = - HFactory.createRangeSlicesQuery( cassandraArchivaManager.getKeyspace(), ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getLicenseFamilyName() ) // - .setColumnNames( NAME.toString() ) // - .setRowCount( Integer.MAX_VALUE ) // - .addEqualsExpression( "projectVersionMetadataModel.key", projectVersionMetadataKey ) // - .execute(); - for ( Row<String, String, String> row : result.get() ) - { - this.licenseTemplate.deleteRow( row.getKey() ); - } - } - - protected List<License> getLicenses( String projectVersionMetadataKey ) - { - List<License> licenses = new ArrayList<>(); - - QueryResult<OrderedRows<String, String, String>> result = - HFactory.createRangeSlicesQuery( cassandraArchivaManager.getKeyspace(), ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getLicenseFamilyName() ) // - .setColumnNames( "projectVersionMetadataModel.key" ) // - .setRowCount( Integer.MAX_VALUE ) // - .addEqualsExpression( "projectVersionMetadataModel.key", projectVersionMetadataKey ) // - .execute(); - - for ( Row<String, String, String> row : result.get() ) - { - ColumnFamilyResult<String, String> columnFamilyResult = this.licenseTemplate.queryColumns( row.getKey() ); - - licenses.add( - new License( columnFamilyResult.getString( NAME.toString() ), columnFamilyResult.getString( URL.toString() ) ) ); - } - - return licenses; - } - - - protected void recordDependencies( String projectVersionMetadataKey, List<Dependency> dependencies, - String repositoryId ) - { - - if ( dependencies == null || dependencies.isEmpty() ) - { - return; - } - Mutator<String> dependencyMutator = this.dependencyTemplate.createMutator(); - - for ( Dependency dependency : dependencies ) - { - // we don't care about the key as the real used one with the projectVersionMetadata - String keyDependency = UUID.randomUUID().toString(); - String cfDependency = cassandraArchivaManager.getDependencyFamilyName(); - - addInsertion( dependencyMutator, keyDependency, cfDependency, "projectVersionMetadataModel.key", - projectVersionMetadataKey ); - - addInsertion( dependencyMutator, keyDependency, cfDependency, REPOSITORY_NAME.toString(), repositoryId ); - - addInsertion( dependencyMutator, keyDependency, cfDependency, "classifier", dependency.getClassifier() ); - - addInsertion( dependencyMutator, keyDependency, cfDependency, "optional", - Boolean.toString( dependency.isOptional() ) ); - - addInsertion( dependencyMutator, keyDependency, cfDependency, "scope", dependency.getScope() ); - - addInsertion( dependencyMutator, keyDependency, cfDependency, "systemPath", dependency.getSystemPath() ); - - addInsertion( dependencyMutator, keyDependency, cfDependency, "type", dependency.getType() ); - - addInsertion( dependencyMutator, keyDependency, cfDependency, ARTIFACT_ID.toString(), dependency.getArtifactId() ); - - addInsertion( dependencyMutator, keyDependency, cfDependency, GROUP_ID.toString(), dependency.getNamespace() ); - - addInsertion( dependencyMutator, keyDependency, cfDependency, VERSION.toString(), dependency.getVersion() ); - - } - dependencyMutator.execute(); - } - - protected void removeDependencies( String projectVersionMetadataKey ) - { - - QueryResult<OrderedRows<String, String, String>> result = - HFactory.createRangeSlicesQuery( cassandraArchivaManager.getKeyspace(), ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getDependencyFamilyName() ) // - .setColumnNames( GROUP_ID.toString() ) // - .setRowCount( Integer.MAX_VALUE ) // - .addEqualsExpression( "projectVersionMetadataModel.key", projectVersionMetadataKey ) // - .execute(); - for ( Row<String, String, String> row : result.get() ) - { - this.dependencyTemplate.deleteRow( row.getKey() ); - } - } - - protected List<Dependency> getDependencies( String projectVersionMetadataKey ) - { - List<Dependency> dependencies = new ArrayList<>(); - - QueryResult<OrderedRows<String, String, String>> result = - HFactory.createRangeSlicesQuery( cassandraArchivaManager.getKeyspace(), ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getDependencyFamilyName() ) // - .setColumnNames( "projectVersionMetadataModel.key" ) // - .setRowCount( Integer.MAX_VALUE ) // - .addEqualsExpression( "projectVersionMetadataModel.key", projectVersionMetadataKey ) // - .execute(); - - for ( Row<String, String, String> row : result.get() ) - { - ColumnFamilyResult<String, String> columnFamilyResult = - this.dependencyTemplate.queryColumns( row.getKey() ); - - Dependency dependency = new Dependency(); - dependency.setClassifier( columnFamilyResult.getString( "classifier" ) ); - - dependency.setOptional( Boolean.parseBoolean( columnFamilyResult.getString( "optional" ) ) ); - - dependency.setScope( columnFamilyResult.getString( "scope" ) ); - - dependency.setSystemPath( columnFamilyResult.getString( "systemPath" ) ); - - dependency.setType( columnFamilyResult.getString( "type" ) ); - - dependency.setArtifactId( columnFamilyResult.getString( ARTIFACT_ID.toString() ) ); - - dependency.setNamespace( columnFamilyResult.getString( GROUP_ID.toString() ) ); - - dependency.setVersion( columnFamilyResult.getString( VERSION.toString() ) ); - - dependencies.add( dependency ); - } - - return dependencies; - } - - private Map<String, String> mapChecksums(Map<ChecksumAlgorithm,String> checksums) { - return checksums.entrySet().stream().collect(Collectors.toMap( - e -> e.getKey().name(), Map.Entry::getValue - )); - } - - private Map<ChecksumAlgorithm, String> mapChecksumsReverse(Map<String,String> checksums) { - return checksums.entrySet().stream().collect(Collectors.toMap( - e -> ChecksumAlgorithm.valueOf(e.getKey()), Map.Entry::getValue - )); - } - - @Override - public void updateArtifact( RepositorySession session, String repositoryId, String namespaceId, String projectId, String projectVersion, - ArtifactMetadata artifactMeta ) - throws MetadataRepositoryException - { - - Namespace namespace = getNamespace( repositoryId, namespaceId ); - if ( namespace == null ) - { - namespace = updateOrAddNamespace( repositoryId, namespaceId ); - } - - ProjectMetadata projectMetadata = new ProjectMetadata(); - projectMetadata.setId( projectId ); - projectMetadata.setNamespace( namespaceId ); - updateProject( session, repositoryId, projectMetadata ); - - String key = new ArtifactMetadataModel.KeyBuilder().withNamespace( namespace ).withProject( projectId ).withId( - artifactMeta.getId() ).withProjectVersion( projectVersion ).build(); - - // exists? - - boolean exists = this.artifactMetadataTemplate.isColumnsExist( key ); - - if ( exists ) - { - // updater - ColumnFamilyUpdater<String, String> updater = this.artifactMetadataTemplate.createUpdater( key ); - updater.setLong( FILE_LAST_MODIFIED.toString(), artifactMeta.getFileLastModified().toInstant().toEpochMilli()); - updater.setLong( WHEN_GATHERED.toString(), artifactMeta.getWhenGathered().toInstant().toEpochMilli() ); - updater.setLong( SIZE.toString(), artifactMeta.getSize() ); - addUpdateStringValue( updater, VERSION.toString(), artifactMeta.getVersion() ); - removeChecksums(key); - recordChecksums(repositoryId, key, mapChecksums(artifactMeta.getChecksums())); - this.artifactMetadataTemplate.update( updater ); - } - else - { - String cf = this.cassandraArchivaManager.getArtifactMetadataFamilyName(); - // create - this.artifactMetadataTemplate.createMutator() // - .addInsertion( key, cf, column( ID.toString(), artifactMeta.getId() ) )// - .addInsertion( key, cf, column( REPOSITORY_NAME.toString(), repositoryId ) ) // - .addInsertion( key, cf, column( NAMESPACE_ID.toString(), namespaceId ) ) // - .addInsertion( key, cf, column( PROJECT.toString(), artifactMeta.getProject() ) ) // - .addInsertion( key, cf, column( PROJECT_VERSION.toString(), projectVersion ) ) // - .addInsertion( key, cf, column( VERSION.toString(), artifactMeta.getVersion() ) ) // - .addInsertion( key, cf, column( FILE_LAST_MODIFIED.toString(), artifactMeta.getFileLastModified().toInstant().toEpochMilli() ) ) // - .addInsertion( key, cf, column( SIZE.toString(), artifactMeta.getSize() ) ) // - .addInsertion( key, cf, column( WHEN_GATHERED.toString(), artifactMeta.getWhenGathered().toInstant().toEpochMilli() ) )// - .execute(); - recordChecksums(repositoryId, key, mapChecksums(artifactMeta.getChecksums())); - } - - key = new ProjectVersionMetadataModel.KeyBuilder() // - .withRepository( repositoryId ) // - .withNamespace( namespace ) // - .withProjectId( projectId ) // - .withProjectVersion( projectVersion ) // - .withId( artifactMeta.getId() ) // - .build(); - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getProjectVersionMetadataFamilyName() ) // - .setColumnNames( VERSION.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // - .addEqualsExpression( NAMESPACE_ID.toString(), namespaceId ) // - .addEqualsExpression( PROJECT_ID.toString(), projectId ) // - .addEqualsExpression( PROJECT_VERSION.toString(), projectVersion ) // - .addEqualsExpression( VERSION.toString(), artifactMeta.getVersion() ) // - .execute(); - - exists = result.get().getCount() > 0; - - if ( !exists ) - { - String cf = this.cassandraArchivaManager.getProjectVersionMetadataFamilyName(); - - projectVersionMetadataTemplate.createMutator() // - .addInsertion( key, cf, column( NAMESPACE_ID.toString(), namespace.getName() ) ) // - .addInsertion( key, cf, column( REPOSITORY_NAME.toString(), repositoryId ) ) // - .addInsertion( key, cf, column( PROJECT_VERSION.toString(), projectVersion ) ) // - .addInsertion( key, cf, column( PROJECT_ID.toString(), projectId ) ) // - .addInsertion( key, cf, column( VERSION.toString(), artifactMeta.getVersion() ) ) // - .execute(); - - } - - ArtifactMetadataModel artifactMetadataModel = new ArtifactMetadataModel(); - - artifactMetadataModel.setRepositoryId( repositoryId ); - artifactMetadataModel.setNamespace( namespaceId ); - artifactMetadataModel.setProject( projectId ); - artifactMetadataModel.setProjectVersion( projectVersion ); - artifactMetadataModel.setVersion( artifactMeta.getVersion() ); - artifactMetadataModel.setFileLastModified( artifactMeta.getFileLastModified() == null - ? ZonedDateTime.now().toInstant().toEpochMilli() - : artifactMeta.getFileLastModified().toInstant().toEpochMilli() ); - artifactMetadataModel.setChecksums(mapChecksums(artifactMeta.getChecksums())); - - // now facets - updateFacets( artifactMeta, artifactMetadataModel ); - - } - - @Override - public List<String> getArtifactVersions( RepositorySession session, final String repoId, final String namespace, final String projectId, - final String projectVersion ) - throws MetadataResolutionException - { - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getProjectVersionMetadataFamilyName() ) // - .setColumnNames( VERSION.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repoId ) // - .addEqualsExpression( NAMESPACE_ID.toString(), namespace ) // - .addEqualsExpression( PROJECT_ID.toString(), projectId ) // - .addEqualsExpression( PROJECT_VERSION.toString(), projectVersion ) // - .execute(); - - final Set<String> versions = new HashSet<>(); - - for ( Row<String, String, String> row : result.get() ) - { - versions.add( getStringValue( row.getColumnSlice(), VERSION.toString() ) ); - } - - return new ArrayList<>( versions ); - - } - - /* - * iterate over available facets to remove/add from the artifactMetadata - * - * @param facetedMetadata - * @param artifactMetadataModel only use for the key - */ - private void updateFacets( final FacetedMetadata facetedMetadata, - final ArtifactMetadataModel artifactMetadataModel ) - { - - String cf = cassandraArchivaManager.getMetadataFacetFamilyName(); - - for ( final String facetId : getSupportedFacets() ) - { - MetadataFacet metadataFacet = facetedMetadata.getFacet( facetId ); - if ( metadataFacet == null ) - { - continue; - } - // clean first - - QueryResult<OrderedRows<String, String, String>> result = - HFactory.createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cf ) // - .setColumnNames( REPOSITORY_NAME.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), artifactMetadataModel.getRepositoryId() ) // - .addEqualsExpression( NAMESPACE_ID.toString(), artifactMetadataModel.getNamespace() ) // - .addEqualsExpression( PROJECT_ID.toString(), artifactMetadataModel.getProject() ) // - .addEqualsExpression( PROJECT_VERSION.toString(), artifactMetadataModel.getProjectVersion() ) // - .addEqualsExpression( FACET_ID.toString(), facetId ) // - .execute(); - - for ( Row<String, String, String> row : result.get().getList() ) - { - this.metadataFacetTemplate.deleteRow( row.getKey() ); - } - - Map<String, String> properties = metadataFacet.toProperties(); - - for ( Map.Entry<String, String> entry : properties.entrySet() ) - { - String key = new MetadataFacetModel.KeyBuilder().withKey( entry.getKey() ).withArtifactMetadataModel( - artifactMetadataModel ).withFacetId( facetId ).withName( metadataFacet.getName() ).build(); - Mutator<String> mutator = metadataFacetTemplate.createMutator() // - .addInsertion( key, cf, column( REPOSITORY_NAME.toString(), artifactMetadataModel.getRepositoryId() ) ) // - .addInsertion( key, cf, column( NAMESPACE_ID.toString(), artifactMetadataModel.getNamespace() ) ) // - .addInsertion( key, cf, column( PROJECT_ID.toString(), artifactMetadataModel.getProject() ) ) // - .addInsertion( key, cf, column( PROJECT_VERSION.toString(), artifactMetadataModel.getProjectVersion() ) ) // - .addInsertion( key, cf, column( FACET_ID.toString(), facetId ) ) // - .addInsertion( key, cf, column( KEY.toString(), entry.getKey() ) ) // - .addInsertion( key, cf, column( VALUE.toString(), entry.getValue() ) ); - - if ( metadataFacet.getName() != null ) - { - mutator.addInsertion( key, cf, column( NAME.toString(), metadataFacet.getName() ) ); - } - - mutator.execute(); - } - } - } - - - @Override - public List<String> getMetadataFacets( RepositorySession session, final String repositoryId, final String facetId ) - throws MetadataRepositoryException - { - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getMetadataFacetFamilyName() ) // - .setColumnNames( NAME.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // - .addEqualsExpression( FACET_ID.toString(), facetId ) // - .execute(); - - final List<String> facets = new ArrayList<>(); - - for ( Row<String, String, String> row : result.get() ) - { - facets.add( getStringValue( row.getColumnSlice(), NAME.toString() ) ); - } - return facets; - } - - private <T> Spliterator<T> createResultSpliterator( QueryResult<OrderedRows<String, String, String>> result, BiFunction<Row<String, String, String>, T, T> converter) throws MetadataRepositoryException - { - final int size = result.get().getCount(); - final Iterator<Row<String, String, String>> it = result.get( ).iterator( ); - - return new Spliterator<T>( ) - { - private T lastItem = null; - - @Override - public boolean tryAdvance( Consumer<? super T> action ) - { - if (size>=1) - { - if(it.hasNext()) - { - while ( it.hasNext( ) ) - { - Row<String, String, String> row = it.next( ); - T item = converter.apply( row, lastItem ); - if ( item != null && lastItem !=null && item != lastItem ) - { - action.accept( lastItem ); - lastItem = item; - return true; - } - lastItem = item; - } - action.accept( lastItem ); - return true; - } else { - return false; - } - } - return false; - } - - @Override - public Spliterator<T> trySplit( ) - { - return null; - } - - @Override - public long estimateSize( ) - { - return size; - } - - @Override - public int characteristics( ) - { - return ORDERED+NONNULL+SIZED; - } - }; - } - - - /** - * Implementation is not very performant, because sorting is part of the stream. I do not know how to specify the sort - * in the query. - * - * @param <T> - * @param session - * @param repositoryId - * @param facetClazz - * @param queryParameter - * @return - * @throws MetadataRepositoryException - */ - @Override - public <T extends MetadataFacet> Stream<T> getMetadataFacetStream(RepositorySession session, String repositoryId, Class<T> facetClazz, QueryParameter queryParameter) throws MetadataRepositoryException - { - final MetadataFacetFactory<T> metadataFacetFactory = getFacetFactory( facetClazz ); - final String facetId = metadataFacetFactory.getFacetId( ); - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getMetadataFacetFamilyName( ) ) // - .setColumnNames( NAME.toString( ), KEY.toString( ), VALUE.toString( ) ) // - .addEqualsExpression( REPOSITORY_NAME.toString( ), repositoryId ) // - .addEqualsExpression( FACET_ID.toString( ), facetId ) // - .setRange( null, null, false, Integer.MAX_VALUE ) - .setRowCount( Integer.MAX_VALUE ) - .execute( ); - - - - return StreamSupport.stream( createResultSpliterator( result, ( Row<String, String, String> row, T lastItem)-> { - ColumnSlice<String, String> columnSlice = row.getColumnSlice(); - String name = getStringValue( columnSlice, NAME.toString( ) ); - T updateItem; - if (lastItem!=null && lastItem.getName().equals(name)) - { - updateItem = lastItem; - } else - { - updateItem = metadataFacetFactory.createMetadataFacet( repositoryId, name ); - } - String key = getStringValue( columnSlice, KEY.toString() ); - if (StringUtils.isNotEmpty( key )) - { - Map<String, String> map = new HashMap<>( ); - map.put( key , getStringValue( columnSlice, VALUE.toString( ) ) ); - updateItem.fromProperties( map ); - } - return updateItem; - - }), false ).sorted( (f1, f2) -> f1.getName()!=null ? f1.getName().compareTo( f2.getName() ) : 1 ).skip( queryParameter.getOffset()).limit( queryParameter.getLimit()); - } - - @Override - public boolean hasMetadataFacet( RepositorySession session, String repositoryId, String facetId ) - throws MetadataRepositoryException - { - return !getMetadataFacets( session, repositoryId, facetId ).isEmpty(); - } - - @Override - public <T extends MetadataFacet> T getMetadataFacet( RepositorySession session, final String repositoryId, final Class<T> facetClazz, final String name ) - throws MetadataRepositoryException - { - final MetadataFacetFactory<T> metadataFacetFactory = getFacetFactory( facetClazz ); - if (metadataFacetFactory==null) { - return null; - } - final String facetId = metadataFacetFactory.getFacetId( ); - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getMetadataFacetFamilyName() ) // - .setColumnNames( KEY.toString(), VALUE.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // - .addEqualsExpression( FACET_ID.toString(), facetId ) // - .addEqualsExpression( NAME.toString(), name ) // - .execute(); - - T metadataFacet = metadataFacetFactory.createMetadataFacet( repositoryId, name ); - int size = result.get().getCount(); - if ( size < 1 ) - { - return null; - } - Map<String, String> map = new HashMap<>( size ); - for ( Row<String, String, String> row : result.get() ) - { - ColumnSlice<String, String> columnSlice = row.getColumnSlice(); - map.put( getStringValue( columnSlice, KEY.toString() ), getStringValue( columnSlice, VALUE.toString() ) ); - } - metadataFacet.fromProperties( map ); - return metadataFacet; - } - - @Override - public MetadataFacet getMetadataFacet( RepositorySession session, String repositoryId, String facetId, String name ) throws MetadataRepositoryException - { - return getMetadataFacet( session, repositoryId, getFactoryClassForId( facetId ), name ); - } - - @Override - public void addMetadataFacet( RepositorySession session, String repositoryId, MetadataFacet metadataFacet ) - throws MetadataRepositoryException - { - - if ( metadataFacet == null ) - { - return; - } - - if ( metadataFacet.toProperties().isEmpty() ) - { - String key = new MetadataFacetModel.KeyBuilder().withRepositoryId( repositoryId ).withFacetId( - metadataFacet.getFacetId() ).withName( metadataFacet.getName() ).build(); - - boolean exists = this.metadataFacetTemplate.isColumnsExist( key ); - - if ( exists ) - { - ColumnFamilyUpdater<String, String> updater = this.metadataFacetTemplate.createUpdater( key ); - addUpdateStringValue( updater, FACET_ID.toString(), metadataFacet.getFacetId() ); - addUpdateStringValue( updater, NAME.toString(), metadataFacet.getName() ); - this.metadataFacetTemplate.update( updater ); - } - else - { - String cf = this.cassandraArchivaManager.getMetadataFacetFamilyName(); - this.metadataFacetTemplate.createMutator() // - .addInsertion( key, cf, column( REPOSITORY_NAME.toString(), repositoryId ) ) // - .addInsertion( key, cf, column( FACET_ID.toString(), metadataFacet.getFacetId() ) ) // - .addInsertion( key, cf, column( NAME.toString(), metadataFacet.getName() ) ) // - .execute(); - } - - } - else - { - for ( Map.Entry<String, String> entry : metadataFacet.toProperties().entrySet() ) - { - String key = new MetadataFacetModel.KeyBuilder().withRepositoryId( repositoryId ).withFacetId( - metadataFacet.getFacetId() ).withName( metadataFacet.getName() ).withKey( entry.getKey() ).build(); - - boolean exists = this.metadataFacetTemplate.isColumnsExist( key ); - if ( !exists ) - { - String cf = this.cassandraArchivaManager.getMetadataFacetFamilyName(); - this.metadataFacetTemplate.createMutator() // - .addInsertion( key, cf, column( REPOSITORY_NAME.toString(), repositoryId ) ) // - .addInsertion( key, cf, column( FACET_ID.toString(), metadataFacet.getFacetId() ) ) // - .addInsertion( key, cf, column( NAME.toString(), metadataFacet.getName() ) ) // - .addInsertion( key, cf, column( KEY.toString(), entry.getKey() ) ) // - .addInsertion( key, cf, column( VALUE.toString(), entry.getValue() ) ) // - .execute(); - } - else - { - ColumnFamilyUpdater<String, String> updater = this.metadataFacetTemplate.createUpdater( key ); - addUpdateStringValue( updater, VALUE.toString(), entry.getValue() ); - this.metadataFacetTemplate.update( updater ); - } - } - } - } - - @Override - public void removeMetadataFacets( RepositorySession session, final String repositoryId, final String facetId ) - throws MetadataRepositoryException - { - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getMetadataFacetFamilyName() ) // - .setColumnNames( KEY.toString(), VALUE.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // - .addEqualsExpression( FACET_ID.toString(), facetId ) // - .execute(); - - for ( Row<String, String, String> row : result.get() ) - { - this.metadataFacetTemplate.deleteRow( row.getKey() ); - } - - } - - @Override - public void removeMetadataFacet( RepositorySession session, final String repositoryId, final String facetId, final String name ) - throws MetadataRepositoryException - { - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getMetadataFacetFamilyName() ) // - .setColumnNames( KEY.toString(), VALUE.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // - .addEqualsExpression( FACET_ID.toString(), facetId ) // - .addEqualsExpression( NAME.toString(), name ) // - .execute(); - - for ( Row<String, String, String> row : result.get() ) - { - this.metadataFacetTemplate.deleteRow( row.getKey() ); - } - } - - @Override - public List<ArtifactMetadata> getArtifactsByDateRange( RepositorySession session, final String repositoryId, final ZonedDateTime startTime, - final ZonedDateTime endTime, QueryParameter queryParameter ) - throws MetadataRepositoryException - { - - LongSerializer ls = LongSerializer.get(); - RangeSlicesQuery<String, String, Long> query = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ls ) // - .setColumnFamily( cassandraArchivaManager.getArtifactMetadataFamilyName() ) // - .setColumnNames( ArtifactMetadataModel.COLUMNS ); // - - - if ( startTime != null ) - { - query = query.addGteExpression( WHEN_GATHERED.toString(), startTime.toInstant().toEpochMilli() ); - } - if ( endTime != null ) - { - query = query.addLteExpression( WHEN_GATHERED.toString(), endTime.toInstant().toEpochMilli() ); - } - QueryResult<OrderedRows<String, String, Long>> result = query.execute(); - - List<ArtifactMetadata> artifactMetadatas = new ArrayList<>( result.get().getCount() ); - Iterator<Row<String, String, Long>> keyIter = result.get().iterator(); - if (keyIter.hasNext()) { - String key = keyIter.next().getKey(); - for (Row<String, String, Long> row : result.get()) { - ColumnSlice<String, Long> columnSlice = row.getColumnSlice(); - String repositoryName = getAsStringValue(columnSlice, REPOSITORY_NAME.toString()); - if (StringUtils.equals(repositoryName, repositoryId)) { - - artifactMetadatas.add(mapArtifactMetadataLongColumnSlice(key, columnSlice)); - } - } - } - - return artifactMetadatas; - } - - /** - * For documentation see {@link MetadataRepository#getArtifactByDateRangeStream(RepositorySession, String, ZonedDateTime, ZonedDateTime, QueryParameter)} - * - * This implementation orders the stream. It does not order the query in the backend. - * - * @param session The repository session - * @param repositoryId The repository id - * @param startTime The start time, can be <code>null</code> - * @param endTime The end time, can be <code>null</code> - * @param queryParameter Additional parameters for the query that affect ordering and number of returned results. - * @return - * @throws MetadataRepositoryException - * @see MetadataRepository#getArtifactByDateRangeStream - */ - @Override - public Stream<ArtifactMetadata> getArtifactByDateRangeStream( RepositorySession session, String repositoryId, ZonedDateTime startTime, ZonedDateTime endTime, QueryParameter queryParameter) throws MetadataRepositoryException - { - Comparator<ArtifactMetadata> comp = getArtifactMetadataComparator(queryParameter, "whenGathered"); - return getArtifactsByDateRange(session, repositoryId, startTime, endTime, queryParameter).stream().sorted(comp).skip(queryParameter.getOffset()).limit(queryParameter.getLimit()); - } - - - protected ArtifactMetadata mapArtifactMetadataLongColumnSlice( String key, ColumnSlice<String, Long> columnSlice ) - { - ArtifactMetadata artifactMetadata = new ArtifactMetadata(); - artifactMetadata.setNamespace( getAsStringValue( columnSlice, NAMESPACE_ID.toString() ) ); - artifactMetadata.setSize( getLongValue( columnSlice, SIZE.toString() ) ); - artifactMetadata.setId( getAsStringValue( columnSlice, ID.toString() ) ); - artifactMetadata.setFileLastModified( getLongValue( columnSlice, FILE_LAST_MODIFIED.toString() ) ); - artifactMetadata.setMd5( getAsStringValue( columnSlice, MD5.toString() ) ); - artifactMetadata.setProject( getAsStringValue( columnSlice, PROJECT.toString() ) ); - artifactMetadata.setProjectVersion( getAsStringValue( columnSlice, PROJECT_VERSION.toString() ) ); - artifactMetadata.setRepositoryId( getAsStringValue( columnSlice, REPOSITORY_NAME.toString() ) ); - artifactMetadata.setSha1( getAsStringValue( columnSlice, SHA1.toString() ) ); - artifactMetadata.setVersion( getAsStringValue( columnSlice, VERSION.toString() ) ); - Long whenGathered = getLongValue( columnSlice, WHEN_GATHERED.toString() ); - if ( whenGathered != null ) - { - artifactMetadata.setWhenGathered(ZonedDateTime.ofInstant(Instant.ofEpochMilli(whenGathered), STORAGE_TZ)); - } - artifactMetadata.setChecksums(mapChecksumsReverse(getChecksums(key))); - return artifactMetadata; - } - - protected ArtifactMetadata mapArtifactMetadataStringColumnSlice( String key, ColumnSlice<String, String> columnSlice ) - { - ArtifactMetadata artifactMetadata = new ArtifactMetadata(); - artifactMetadata.setNamespace( getStringValue( columnSlice, NAMESPACE_ID.toString() ) ); - artifactMetadata.setSize( getAsLongValue( columnSlice, SIZE.toString() ) ); - artifactMetadata.setId( getStringValue( columnSlice, ID.toString() ) ); - artifactMetadata.setFileLastModified( getAsLongValue( columnSlice, FILE_LAST_MODIFIED.toString() ) ); - artifactMetadata.setMd5( getStringValue( columnSlice, MD5.toString() ) ); - artifactMetadata.setProject( getStringValue( columnSlice, PROJECT.toString() ) ); - artifactMetadata.setProjectVersion( getStringValue( columnSlice, PROJECT_VERSION.toString() ) ); - artifactMetadata.setRepositoryId( getStringValue( columnSlice, REPOSITORY_NAME.toString() ) ); - artifactMetadata.setSha1( getStringValue( columnSlice, SHA1.toString() ) ); - artifactMetadata.setVersion( getStringValue( columnSlice, VERSION.toString() ) ); - Long whenGathered = getAsLongValue( columnSlice, WHEN_GATHERED.toString() ); - if ( whenGathered != null ) - { - artifactMetadata.setWhenGathered(ZonedDateTime.ofInstant(Instant.ofEpochMilli(whenGathered), STORAGE_TZ)); - } - artifactMetadata.setChecksums(mapChecksumsReverse(getChecksums(key))); - return artifactMetadata; - } - - @Override - public List<ArtifactMetadata> getArtifactsByChecksum(RepositorySession session, final String repositoryId, final String checksum ) - throws MetadataRepositoryException - { - - // cql cannot run or in queries so running twice the query - Map<String, ArtifactMetadata> artifactMetadataMap = new HashMap<>(); - - RangeSlicesQuery<String, String, String> query = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getChecksumFamilyName()) // - .setColumnNames(ARTIFACT_METADATA_MODEL_KEY); // - - query = query.addEqualsExpression( CHECKSUM_VALUE.toString(), checksum ) - .addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ); - - QueryResult<OrderedRows<String, String, String>> result = query.execute(); - - List<String> artifactKeys = new ArrayList<>(); - for ( Row<String, String, String> row : result.get() ) - { - ColumnSlice<String, String> columnSlice = row.getColumnSlice(); - - artifactKeys.add(columnSlice.getColumnByName(ARTIFACT_METADATA_MODEL_KEY).getValue()); - - } - - for (String key : artifactKeys) { - query = HFactory // - .createRangeSlicesQuery(keyspace, ss, ss, ss) // - .setColumnFamily(cassandraArchivaManager.getArtifactMetadataFamilyName()) // - .setColumnNames(NAMESPACE_ID.toString(), SIZE.toString(), ID.toString(), FILE_LAST_MODIFIED.toString(), MD5.toString(), PROJECT.toString(), PROJECT_VERSION.toString(), - REPOSITORY_NAME.toString(), VERSION.toString(), WHEN_GATHERED.toString(), SHA1.toString()) - .setKeys(key, key); - result = query.execute(); - - for (Row<String, String, String> row : result.get()) { - ColumnSlice<String, String> columnSlice = row.getColumnSlice(); - - artifactMetadataMap.put(row.getKey(), mapArtifactMetadataStringColumnSlice(key, columnSlice)); - } - } - - return new ArrayList<>(artifactMetadataMap.values()); - } - - /** - * Project version and artifact level metadata are stored in the same place, no distinctions in Cassandra - * implementation, just calls {@link MetadataRepository#getArtifactsByAttribute(RepositorySession, String, String, String)} - */ - @Override - public List<ArtifactMetadata> getArtifactsByProjectVersionFacet( RepositorySession session, String key, String value, String repositoryId ) - throws MetadataRepositoryException - { - return this.getArtifactsByAttribute( session, key, value, repositoryId ); - } - - @Override - public List<ArtifactMetadata> getArtifactsByAttribute( RepositorySession session, String key, String value, String repositoryId ) - throws MetadataRepositoryException - { - RangeSlicesQuery<String, String, String> query = - HFactory.createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getMetadataFacetFamilyName() ) // - .setColumnNames( MetadataFacetModel.COLUMNS ) // - .addEqualsExpression( VALUE.toString(), value ); - - if ( key != null ) - { - query.addEqualsExpression( KEY.toString(), key ); // - } - if ( repositoryId != null ) - { - query.addEqualsExpression( "repositoryName", repositoryId ); - } - - QueryResult<OrderedRows<String, String, String>> metadataFacetResult = query.execute(); - if ( metadataFacetResult.get() == null || metadataFacetResult.get().getCount() < 1 ) - { - return Collections.emptyList(); - } - - List<ArtifactMetadata> artifactMetadatas = new LinkedList<>( ); - - // TODO doing multiple queries, there should be a way to get all the artifactMetadatas for any number of - // projects - for ( Row<String, String, String> row : metadataFacetResult.get() ) - { - QueryResult<OrderedRows<String, String, String>> artifactMetadataResult = - HFactory.createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getArtifactMetadataFamilyName() ) // - .setColumnNames( ArtifactMetadataModel.COLUMNS ) // - .setRowCount( Integer.MAX_VALUE ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), - getStringValue( row.getColumnSlice(), REPOSITORY_NAME ) ) // - .addEqualsExpression( NAMESPACE_ID.toString(), getStringValue( row.getColumnSlice(), NAMESPACE_ID ) ) // - .addEqualsExpression( PROJECT.toString(), getStringValue( row.getColumnSlice(), PROJECT_ID ) ) // - .addEqualsExpression( PROJECT_VERSION.toString(), - getStringValue( row.getColumnSlice(), PROJECT_VERSION ) ) // - .execute(); - - if ( artifactMetadataResult.get() == null || artifactMetadataResult.get().getCount() < 1 ) - { - return Collections.emptyList(); - } - - for ( Row<String, String, String> artifactMetadataRow : artifactMetadataResult.get() ) - { - String artifactKey = artifactMetadataRow.getKey(); - artifactMetadatas.add( mapArtifactMetadataStringColumnSlice( artifactKey, artifactMetadataRow.getColumnSlice() ) ); - } - } - - return mapArtifactFacetToArtifact( metadataFacetResult, artifactMetadatas ); - } - - @Override - public List<ArtifactMetadata> getArtifactsByProjectVersionAttribute( RepositorySession session, String key, String value, String repositoryId ) - throws MetadataRepositoryException - { - QueryResult<OrderedRows<String, String, String>> result = - HFactory.createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getProjectVersionMetadataFamilyName() ) // - .setColumnNames( PROJECT_ID.toString(), REPOSITORY_NAME.toString(), NAMESPACE_ID.toString(), - PROJECT_VERSION.toString() ) // - .addEqualsExpression( key, value ) // - .execute(); - - int count = result.get().getCount(); - - if ( count < 1 ) - { - return Collections.emptyList(); - } - - List<ArtifactMetadata> artifacts = new LinkedList<>( ); - - for ( Row<String, String, String> row : result.get() ) - { - // TODO doing multiple queries, there should be a way to get all the artifactMetadatas for any number of - // projects - try - { - artifacts.addAll( getArtifacts( session, - getStringValue( row.getColumnSlice(), REPOSITORY_NAME ), - getStringValue( row.getColumnSlice(), NAMESPACE_ID ), - getStringValue( row.getColumnSlice(), PROJECT_ID ), getStringValue( row.getColumnSlice(), PROJECT_VERSION ) ) ); - } - catch ( MetadataResolutionException e ) - { - // never raised - throw new IllegalStateException( e ); - } - } - return artifacts; - } - - @Override - public void removeArtifact( RepositorySession session, final String repositoryId, final String namespace, final String project, - final String version, final String id ) - throws MetadataRepositoryException - { - logger.debug( "removeTimestampedArtifact repositoryId: '{}', namespace: '{}', project: '{}', version: '{}', id: '{}'", - repositoryId, namespace, project, version, id ); - String key = - new ArtifactMetadataModel.KeyBuilder().withRepositoryId( repositoryId ).withNamespace( namespace ).withId( - id ).withProjectVersion( version ).withProject( project ).build(); - - this.artifactMetadataTemplate.deleteRow( key ); - - key = new ProjectVersionMetadataModel.KeyBuilder() // - .withRepository( repositoryId ) // - .withNamespace( namespace ) // - .withProjectId( project ) // - .withProjectVersion( version ) // - .withId( id ) // - .build(); - - this.projectVersionMetadataTemplate.deleteRow( key ); - } - - @Override - public void removeTimestampedArtifact( RepositorySession session, ArtifactMetadata artifactMetadata, String baseVersion ) - throws MetadataRepositoryException - { - logger.debug( "removeTimestampedArtifact repositoryId: '{}', namespace: '{}', project: '{}', version: '{}', id: '{}'", - artifactMetadata.getRepositoryId(), artifactMetadata.getNamespace(), - artifactMetadata.getProject(), baseVersion, artifactMetadata.getId() ); - String key = - new ArtifactMetadataModel.KeyBuilder().withRepositoryId( artifactMetadata.getRepositoryId() ).withNamespace( - artifactMetadata.getNamespace() ).withId( artifactMetadata.getId() ).withProjectVersion( - baseVersion ).withProject( artifactMetadata.getProject() ).build(); - - this.artifactMetadataTemplate.deleteRow( key ); - - } - - @Override - public void removeFacetFromArtifact( RepositorySession session, final String repositoryId, final String namespace, final String project, - final String version, final MetadataFacet metadataFacet ) - throws MetadataRepositoryException - { - - RangeSlicesQuery<String, String, String> query = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getArtifactMetadataFamilyName() ) // - .setColumnNames( NAMESPACE_ID.toString() ); // - - query = query.addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ) // - .addEqualsExpression( NAMESPACE_ID.toString(), namespace ) // - .addEqualsExpression( PROJECT.toString(), project ) // - .addEqualsExpression( VERSION.toString(), version ); - - QueryResult<OrderedRows<String, String, String>> result = query.execute(); - - for ( Row<String, String, String> row : result.get() ) - { - this.artifactMetadataTemplate.deleteRow( row.getKey() ); - } - } - - - @Override - public List<ArtifactMetadata> getArtifacts( RepositorySession session, final String repositoryId ) - throws MetadataRepositoryException - { - - RangeSlicesQuery<String, String, String> query = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getArtifactMetadataFamilyName() ) // - .setColumnNames( ArtifactMetadataModel.COLUMNS ); // - - query = query.addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ); - - QueryResult<OrderedRows<String, String, String>> result = query.execute(); - - - - List<ArtifactMetadata> artifactMetadatas = new ArrayList<>( result.get().getCount() ); - - for ( Row<String, String, String> row : result.get() ) - { - String key = row.getKey(); - ColumnSlice<String, String> columnSlice = row.getColumnSlice(); - artifactMetadatas.add( mapArtifactMetadataStringColumnSlice( key, columnSlice ) ); - - } - - return artifactMetadatas; - } - - - @Override - public List<ProjectVersionReference> getProjectReferences( RepositorySession session, String repoId, String namespace, String projectId, - String projectVersion ) - throws MetadataResolutionException - { - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getDependencyFamilyName() ) // - .setColumnNames( "projectVersionMetadataModel.key" ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repoId ) // - .addEqualsExpression( GROUP_ID.toString(), namespace ) // - .addEqualsExpression( ARTIFACT_ID.toString(), projectId ) // - .addEqualsExpression( VERSION.toString(), projectVersion ) // - .execute(); - - List<String> dependenciesIds = new ArrayList<>( result.get().getCount() ); - - for ( Row<String, String, String> row : result.get().getList() ) - { - dependenciesIds.add( getStringValue( row.getColumnSlice(), "projectVersionMetadataModel.key" ) ); - } - - List<ProjectVersionReference> references = new ArrayList<>( result.get().getCount() ); - - for ( String key : dependenciesIds ) - { - ColumnFamilyResult<String, String> columnFamilyResult = - this.projectVersionMetadataTemplate.queryColumns( key ); - references.add( new ProjectVersionReference( ProjectVersionReference.ReferenceType.DEPENDENCY, // - columnFamilyResult.getString( PROJECT_ID.toString() ), // - columnFamilyResult.getString( NAMESPACE_ID.toString() ), // - columnFamilyResult.getString( PROJECT_VERSION.toString() ) ) ); - } - - return references; - } - - @Override - public void removeProjectVersion( RepositorySession session, final String repoId, final String namespace, final String projectId, - final String projectVersion ) - throws MetadataRepositoryException - { - - QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getProjectVersionMetadataFamilyName() ) // - .setColumnNames( VERSION.toString() ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repoId ) // - .addEqualsExpression( NAMESPACE_ID.toString(), namespace ) // - .addEqualsExpression( PROJECT_ID.toString(), projectId ) // - .addEqualsExpression( PROJECT_VERSION.toString(), projectVersion ) // - .execute(); - - for ( Row<String, String, String> row : result.get().getList() ) - { - this.projectVersionMetadataTemplate.deleteRow( row.getKey() ); - removeMailingList( row.getKey() ); - removeLicenses( row.getKey() ); - removeDependencies( row.getKey() ); - } - - RangeSlicesQuery<String, String, String> query = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getArtifactMetadataFamilyName() ) // - .setColumnNames( NAMESPACE_ID.toString() ); // - - query = query.addEqualsExpression( REPOSITORY_NAME.toString(), repoId ) // - .addEqualsExpression( NAMESPACE_ID.toString(), namespace ) // - .addEqualsExpression( PROJECT.toString(), projectId ) // - .addEqualsExpression( PROJECT_VERSION.toString(), projectVersion ); - - result = query.execute(); - - for ( Row<String, String, String> row : result.get() ) - { - this.artifactMetadataTemplate.deleteRow( row.getKey() ); - - } - } - - @Override - public List<ArtifactMetadata> getArtifacts( RepositorySession session, final String repoId, final String namespace, - final String projectId, final String projectVersion ) - throws MetadataResolutionException - { - - QueryResult<OrderedRows<String, String, String>> result = - HFactory.createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getArtifactMetadataFamilyName() ) // - .setColumnNames( ArtifactMetadataModel.COLUMNS )// - .setRowCount( Integer.MAX_VALUE ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repoId ) // - .addEqualsExpression( NAMESPACE_ID.toString(), namespace ) // - .addEqualsExpression( PROJECT.toString(), projectId ) // - .addEqualsExpression( PROJECT_VERSION.toString(), projectVersion ) // - .execute(); - - if ( result.get() == null || result.get().getCount() < 1 ) - { - return Collections.emptyList(); - } - - List<ArtifactMetadata> artifactMetadatas = new ArrayList<>( result.get().getCount() ); - - for ( Row<String, String, String> row : result.get() ) - { - String key = row.getKey(); - artifactMetadatas.add( mapArtifactMetadataStringColumnSlice( key, row.getColumnSlice() ) ); - } - - result = HFactory.createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getMetadataFacetFamilyName() ) // - .setColumnNames( MetadataFacetModel.COLUMNS ) // - .setRowCount( Integer.MAX_VALUE ) // - .addEqualsExpression( REPOSITORY_NAME.toString(), repoId ) // - .addEqualsExpression( NAMESPACE_ID.toString(), namespace ) // - .addEqualsExpression( PROJECT_ID.toString(), projectId ) // - .addEqualsExpression( PROJECT_VERSION.toString(), projectVersion ) // - .execute(); - - return mapArtifactFacetToArtifact(result, artifactMetadatas); - } - - /** - * Attach metadata to each of the ArtifactMetadata objects - */ - private List<ArtifactMetadata> mapArtifactFacetToArtifact( QueryResult<OrderedRows<String, String, String>> result, List<ArtifactMetadata> artifactMetadatas) { - if ( result.get() == null || result.get().getCount() < 1 ) - { - return artifactMetadatas; - } - - final List<MetadataFacetModel> metadataFacetModels = new ArrayList<>( result.get().getCount() ); - - for ( Row<String, String, String> row : result.get() ) - { - ColumnSlice<String, String> columnSlice = row.getColumnSlice(); - MetadataFacetModel metadataFacetModel = new MetadataFacetModel(); - metadataFacetModel.setFacetId( getStringValue( columnSlice, FACET_ID.toString() ) ); - metadataFacetModel.setName( getStringValue( columnSlice, NAME.toString() ) ); - metadataFacetModel.setValue( getStringValue( columnSlice, VALUE.toString() ) ); - metadataFacetModel.setKey( getStringValue( columnSlice, KEY.toString() ) ); - metadataFacetModel.setProjectVersion( getStringValue( columnSlice, PROJECT_VERSION.toString() ) ); - metadataFacetModels.add( metadataFacetModel ); - } - - // rebuild MetadataFacet for artifacts - - for ( final ArtifactMetadata artifactMetadata : artifactMetadatas ) - { - Iterator<MetadataFacetModel> iterator = metadataFacetModels.stream( ).filter( metadataFacetModel -> { - if ( metadataFacetModel != null ) - { - return StringUtils.equals( artifactMetadata.getVersion( ), - metadataFacetModel.getProjectVersion( ) ); - } - return false; - - } ).iterator( ); - Map<String, List<MetadataFacetModel>> metadataFacetValuesPerFacetId = new HashMap<>(); - while ( iterator.hasNext() ) - { - MetadataFacetModel metadataFacetModel = iterator.next(); - List<MetadataFacetModel> values = metadataFacetValuesPerFacetId.get( metadataFacetModel.getName() ); - if ( values == null ) - { - values = new ArrayList<>(); - metadataFacetValuesPerFacetId.put( metadataFacetModel.getFacetId(), values ); - } - values.add( metadataFacetModel ); - - } - - for ( Map.Entry<String, List<MetadataFacetModel>> entry : metadataFacetValuesPerFacetId.entrySet() ) - { - MetadataFacetFactory<?> metadataFacetFactory = getFacetFactory( entry.getKey() ); - if ( metadataFacetFactory != null ) - { - List<MetadataFacetModel> facetModels = entry.getValue(); - if ( !facetModels.isEmpty() ) - { - MetadataFacet metadataFacet = metadataFacetFactory.createMetadataFacet(); - Map<String, String> props = new HashMap<>( facetModels.size() ); - for ( MetadataFacetModel metadataFacetModel : facetModels ) - { - props.put( metadataFacetModel.getKey(), metadataFacetModel.getValue() ); - } - metadataFacet.fromProperties( props ); - artifactMetadata.addFacet( metadataFacet ); - } - } - } - } - - return artifactMetadatas; - } - - @Override - public void close() - throws MetadataRepositoryException - { - logger.trace( "close" ); - } - - - private static class ModelMapperHolder - { - private static ModelMapper MODEL_MAPPER = new ModelMapper(); - } - - protected ModelMapper getModelMapper() - { - return ModelMapperHolder.MODEL_MAPPER; - } - - /** - * This implementation just calls getArtifactsByAttribute( null, text, repositoryId ). We can't search artifacts by - * any property. - */ - @Override - public List<ArtifactMetadata> searchArtifacts( final RepositorySession session, final String repositoryId, - final String text, final boolean exact ) - throws MetadataRepositoryException - { - return this.getArtifactsByAttribute( session, null, text, repositoryId ); - } - - /** - * The exact parameter is ignored as we can't do non exact searches in Cassandra - */ - @Override - public List<ArtifactMetadata> searchArtifacts( final RepositorySession session, final String repositoryId, - final String key, final String text, final boolean exact ) - throws MetadataRepositoryException - { - // TODO optimize - List<ArtifactMetadata> artifacts = new LinkedList<>( ); - artifacts.addAll( this.getArtifactsByAttribute( session, key, text, repositoryId ) ); - artifacts.addAll( this.getArtifactsByProjectVersionAttribute( session, key, text, repositoryId ) ); - return artifacts; - } - - @Override - public Stream<ArtifactMetadata> getArtifactStream( final RepositorySession session, final String repositoryId, - final QueryParameter queryParameter ) throws MetadataResolutionException - { - RangeSlicesQuery<String, String, String> query = HFactory // - .createRangeSlicesQuery( keyspace, ss, ss, ss ) // - .setColumnFamily( cassandraArchivaManager.getArtifactMetadataFamilyName( ) ) // - .setColumnNames( ArtifactMetadataModel.COLUMNS ); // - - query = query.addEqualsExpression( REPOSITORY_NAME.toString(), repositoryId ); - - QueryResult<OrderedRows<String, String, String>> result = query.execute(); - - try - { - return StreamSupport.stream( createResultSpliterator( result, ( Row<String, String, String> row, ArtifactMetadata last ) -> - mapArtifactMetadataStringColumnSlice( row.getKey( ), row.getColumnSlice( ) ) ), false ) - .skip( queryParameter.getOffset( ) ).limit( queryParameter.getLimit( ) ); - } - catch ( MetadataRepositoryException e ) - { - throw new MetadataResolutionException( e.getMessage( ), e ); - } - } - - @Override - public Stream<ArtifactMetadata> getArtifactStream( final RepositorySession session, final String repoId, - final String namespace, final String projectId, final String projectVersion, - final QueryParameter queryParameter ) throws MetadataResolutionException - { - // Currently we have to align the facets with the artifacts, which means querying artifacts, querying facets and combining them. - // I so no stream friendly way to do this, so we just use the collection based method and return the stream. - // TODO: Maybe we can query the facets for each artifact separately, but not sure, if this affects performance significantly - // We need some data to verify this. - return getArtifacts( session, repoId, namespace, projectId, projectVersion ).stream( ).skip( queryParameter.getOffset( ) ).limit( queryParameter.getLimit( ) ); - } -} diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraRepositorySessionFactory.java b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraRepositorySessionFactory.java deleted file mode 100644 index 2f3077b3c..000000000 --- a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraRepositorySessionFactory.java +++ /dev/null @@ -1,78 +0,0 @@ -package org.apache.archiva.metadata.repository.cassandra; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.metadata.repository.AbstractRepositorySessionFactory; -import org.apache.archiva.metadata.repository.MetadataRepositoryException; -import org.apache.archiva.metadata.repository.MetadataResolver; -import org.apache.archiva.metadata.repository.MetadataService; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.metadata.repository.RepositorySessionFactory; -import org.springframework.context.ApplicationContext; -import org.springframework.stereotype.Service; - -import javax.inject.Inject; -import javax.inject.Named; - -/** - * @author Olivier Lamy - * @since 2.0.0 - */ -@Service("repositorySessionFactory#cassandra") -public class CassandraRepositorySessionFactory extends AbstractRepositorySessionFactory - implements RepositorySessionFactory -{ - - @Inject - @Named(value = "archivaConfiguration#default") - private ArchivaConfiguration configuration; - - @Inject - private MetadataResolver metadataResolver; - - @Inject - private ApplicationContext applicationContext; - - @Inject - private CassandraArchivaManager cassandraArchivaManager; - - @Inject - private MetadataService metadataService; - - public void initialize() - { - } - - @Override - protected void shutdown() { - cassandraArchivaManager.shutdown(); - } - - - @Override - public RepositorySession createSession() throws MetadataRepositoryException - { - CassandraMetadataRepository metadataRepository = - new CassandraMetadataRepository( metadataService, cassandraArchivaManager ); - return new RepositorySession( metadataRepository, metadataResolver ); - } - -} diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraUtils.java b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraUtils.java deleted file mode 100644 index f041a4396..000000000 --- a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraUtils.java +++ /dev/null @@ -1,162 +0,0 @@ -package org.apache.archiva.metadata.repository.cassandra; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import me.prettyprint.cassandra.serializers.LongSerializer; -import me.prettyprint.cassandra.serializers.SerializerTypeInferer; -import me.prettyprint.cassandra.serializers.StringSerializer; -import me.prettyprint.cassandra.service.template.ColumnFamilyUpdater; -import me.prettyprint.hector.api.Serializer; -import me.prettyprint.hector.api.beans.ColumnSlice; -import me.prettyprint.hector.api.beans.HColumn; -import me.prettyprint.hector.api.factory.HFactory; -import me.prettyprint.hector.api.mutation.Mutator; -import org.apache.archiva.metadata.repository.cassandra.model.ColumnNames; -import org.apache.commons.lang3.StringUtils; - -/** - * @author Olivier Lamy - * @since 2.0.0 - */ -public class CassandraUtils -{ - - private static final String EMPTY_VALUE = ""; - - public static final String SEPARATOR = "->"; - - public static String generateKey( final String... bases ) - { - final StringBuilder builder = new StringBuilder(); - if ( bases == null || bases.length == 0 ) - { - return builder.toString(); - } - - for ( final String s : bases ) - { - if ( s != null ) - { - builder.append( s ); - } - else - { - builder.append( EMPTY_VALUE ); - } - builder.append( SEPARATOR ); - } - if ( builder.length() > 0 ) - { - builder.setLength( builder.length() - SEPARATOR.length() ); - } - return builder.toString(); - } - - public static <A, B> HColumn<A, B> column( final A name, final B value ) - { - - return HFactory.createColumn( name, // - value, // - SerializerTypeInferer.getSerializer( name ), // - SerializerTypeInferer.getSerializer( value ) ); - } - - public static String getStringValue( ColumnSlice<String, String> columnSlice, ColumnNames columnName ) - { - return getStringValue( columnSlice, columnName.toString() ); - } - - public static String getStringValue( ColumnSlice<String, String> columnSlice, String columnName ) - { - if ( StringUtils.isEmpty( columnName ) ) - { - return null; - } - - HColumn<String, String> hColumn = columnSlice.getColumnByName( columnName ); - return hColumn == null ? null : hColumn.getValue(); - } - - public static Long getLongValue( ColumnSlice<String, Long> columnSlice, String columnName ) - { - if ( StringUtils.isEmpty( columnName ) ) - { - return null; - } - - HColumn<String, Long> hColumn = columnSlice.getColumnByName( columnName ); - return hColumn == null ? null : hColumn.getValue(); - } - - public static <T> String getAsStringValue( ColumnSlice<String, T> columnSlice, String columnName ) - { - StringSerializer ss = StringSerializer.get(); - if ( StringUtils.isEmpty( columnName ) ) - { - return null; - } - - HColumn<String, T> hColumn = columnSlice.getColumnByName( columnName ); - return hColumn == null ? null : ss.fromByteBuffer( hColumn.getValueBytes() ); - } - - public static Long getAsLongValue( ColumnSlice<String, String> columnSlice, String columnName ) - { - LongSerializer ls = LongSerializer.get(); - if ( StringUtils.isEmpty( columnName ) ) - { - return null; - } - - HColumn<String, String> hColumn = columnSlice.getColumnByName( columnName ); - return hColumn == null ? null : ls.fromByteBuffer( hColumn.getValueBytes() ); - } - - public static void addInsertion( Mutator<String> mutator, String key, String columnFamily, String columnName, - String value ) - { - if ( value != null ) - { - mutator.addInsertion( key, columnFamily, column( columnName, value ) ); - } - } - - /** - * null check on the value to prevent {@link java.lang.IllegalArgumentException} - * @param updater - * @param columnName - * @param value - */ - public static void addUpdateStringValue(ColumnFamilyUpdater<String,String> updater, String columnName, String value ) - { - if (value == null) - { - return; - } - updater.setString( columnName, value ); - - } - - private CassandraUtils() - { - // no-op - } - -} diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/DefaultCassandraArchivaManager.java b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/DefaultCassandraArchivaManager.java deleted file mode 100644 index 65a5901f7..000000000 --- a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/DefaultCassandraArchivaManager.java +++ /dev/null @@ -1,606 +0,0 @@ -package org.apache.archiva.metadata.repository.cassandra; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import me.prettyprint.cassandra.model.BasicColumnDefinition; -import me.prettyprint.cassandra.model.ConfigurableConsistencyLevel; -import me.prettyprint.cassandra.serializers.StringSerializer; -import me.prettyprint.cassandra.service.CassandraHostConfigurator; -import me.prettyprint.cassandra.service.ThriftKsDef; -import me.prettyprint.hector.api.Cluster; -import me.prettyprint.hector.api.HConsistencyLevel; -import me.prettyprint.hector.api.Keyspace; -import me.prettyprint.hector.api.ddl.ColumnFamilyDefinition; -import me.prettyprint.hector.api.ddl.ColumnIndexType; -import me.prettyprint.hector.api.ddl.ComparatorType; -import me.prettyprint.hector.api.factory.HFactory; -import org.apache.archiva.metadata.repository.RepositorySessionFactoryBean; -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.ApplicationContext; -import org.springframework.stereotype.Service; - -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; -import javax.inject.Inject; -import java.util.ArrayList; -import java.util.List; - -import static org.apache.archiva.metadata.repository.cassandra.model.ColumnNames.*; - -/** - * FIXME make all configuration not hardcoded :-) - * - * @author Olivier Lamy - * @since 2.0.0 - */ -@Service("archivaEntityManagerFactory#cassandra") -public class DefaultCassandraArchivaManager - implements CassandraArchivaManager -{ - - private Logger logger = LoggerFactory.getLogger( getClass() ); - - @Inject - private ApplicationContext applicationContext; - - private static final String CLUSTER_NAME = "archiva"; - - private static final String KEYSPACE_NAME = "ArchivaKeySpace"; - - private boolean started; - - private Cluster cluster; - - private Keyspace keyspace; - - // configurable??? - private String repositoryFamilyName = "repository"; - - private String namespaceFamilyName = "namespace"; - - private String projectFamilyName = PROJECT.toString(); - - private String projectVersionMetadataFamilyName = "projectversionmetadata"; - - private String artifactMetadataFamilyName = "artifactmetadata"; - - private String metadataFacetFamilyName = "metadatafacet"; - - private String mailingListFamilyName = "mailinglist"; - - private String licenseFamilyName = "license"; - - private String dependencyFamilyName = "dependency"; - - private String checksumFamilyName = "checksum"; - - @Value("${cassandra.host}") - private String cassandraHost; - - @Value("${cassandra.port}") - private String cassandraPort; - - @Value("${cassandra.maxActive}") - private int maxActive; - - @Value("${cassandra.readConsistencyLevel}") - private String readConsistencyLevel; - - @Value("${cassandra.writeConsistencyLevel}") - private String writeConsistencyLevel; - - @Value("${cassandra.replicationFactor}") - private int replicationFactor; - - @Value("${cassandra.keyspace.name}") - private String keyspaceName; - - @Value("${cassandra.cluster.name}") - private String clusterName; - - @Inject - private RepositorySessionFactoryBean repositorySessionFactoryBean; - - @PostConstruct - public void initialize() - { - // skip initialisation if not cassandra - if ( !StringUtils.equals( repositorySessionFactoryBean.getId(), "cassandra" ) ) - { - return; - } - final CassandraHostConfigurator configurator = - new CassandraHostConfigurator( cassandraHost + ":" + cassandraPort ); - configurator.setMaxActive( maxActive ); - //configurator.setCassandraThriftSocketTimeout( ); - - cluster = HFactory.getOrCreateCluster( clusterName, configurator ); - - final ConfigurableConsistencyLevel consistencyLevelPolicy = new ConfigurableConsistencyLevel(); - consistencyLevelPolicy.setDefaultReadConsistencyLevel( HConsistencyLevel.valueOf( readConsistencyLevel ) ); - consistencyLevelPolicy.setDefaultWriteConsistencyLevel( HConsistencyLevel.valueOf( writeConsistencyLevel ) ); - keyspace = HFactory.createKeyspace( keyspaceName, cluster, consistencyLevelPolicy ); - - List<ColumnFamilyDefinition> cfds = new ArrayList<>(); - - // namespace table - { - - final ColumnFamilyDefinition namespace = - HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), // - getNamespaceFamilyName(), // - ComparatorType.UTF8TYPE ); - cfds.add( namespace ); - - // creating indexes for cql query - - BasicColumnDefinition nameColumn = new BasicColumnDefinition(); - nameColumn.setName( StringSerializer.get().toByteBuffer( NAME.toString() ) ); - nameColumn.setIndexName( NAME.toString() ); - nameColumn.setIndexType( ColumnIndexType.KEYS ); - nameColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - namespace.addColumnDefinition( nameColumn ); - - BasicColumnDefinition repositoryIdColumn = new BasicColumnDefinition(); - repositoryIdColumn.setName( StringSerializer.get().toByteBuffer( REPOSITORY_NAME.toString() ) ); - repositoryIdColumn.setIndexName( REPOSITORY_NAME.toString() ); - repositoryIdColumn.setIndexType( ColumnIndexType.KEYS ); - repositoryIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - namespace.addColumnDefinition( repositoryIdColumn ); - } - - // repository table - { - final ColumnFamilyDefinition repository = - HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), // - getRepositoryFamilyName(), // - ComparatorType.UTF8TYPE ); - - cfds.add( repository ); - - BasicColumnDefinition nameColumn = new BasicColumnDefinition(); - nameColumn.setName( StringSerializer.get().toByteBuffer( REPOSITORY_NAME.toString() ) ); - nameColumn.setIndexName( REPOSITORY_NAME.toString() ); - nameColumn.setIndexType( ColumnIndexType.KEYS ); - nameColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - repository.addColumnDefinition( nameColumn ); - } - - // project table - { - - final ColumnFamilyDefinition project = HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), // - getProjectFamilyName(), // - ComparatorType.UTF8TYPE ); - cfds.add( project ); - - // creating indexes for cql query - - BasicColumnDefinition projectIdColumn = new BasicColumnDefinition(); - projectIdColumn.setName( StringSerializer.get().toByteBuffer( PROJECT_ID.toString() ) ); - projectIdColumn.setIndexName( PROJECT_ID.toString() ); - projectIdColumn.setIndexType( ColumnIndexType.KEYS ); - projectIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - project.addColumnDefinition( projectIdColumn ); - - BasicColumnDefinition repositoryIdColumn = new BasicColumnDefinition(); - repositoryIdColumn.setName( StringSerializer.get().toByteBuffer( REPOSITORY_NAME.toString() ) ); - repositoryIdColumn.setIndexName( REPOSITORY_NAME.toString() ); - repositoryIdColumn.setIndexType( ColumnIndexType.KEYS ); - repositoryIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - project.addColumnDefinition( repositoryIdColumn ); - - BasicColumnDefinition namespaceIdColumn = new BasicColumnDefinition(); - namespaceIdColumn.setName( StringSerializer.get().toByteBuffer( NAMESPACE_ID.toString() ) ); - namespaceIdColumn.setIndexName( NAMESPACE_ID.toString() ); - namespaceIdColumn.setIndexType( ColumnIndexType.KEYS ); - namespaceIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - project.addColumnDefinition( namespaceIdColumn ); - } - - //projectversionmetadatamodel - { - - final ColumnFamilyDefinition projectVersionMetadataModel = - HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), // - getProjectVersionMetadataFamilyName(), // - ComparatorType.UTF8TYPE ); - cfds.add( projectVersionMetadataModel ); - - // creating indexes for cql query - - BasicColumnDefinition namespaceIdColumn = new BasicColumnDefinition(); - namespaceIdColumn.setName( StringSerializer.get().toByteBuffer( NAMESPACE_ID.toString() ) ); - namespaceIdColumn.setIndexName( NAMESPACE_ID.toString() ); - namespaceIdColumn.setIndexType( ColumnIndexType.KEYS ); - namespaceIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - projectVersionMetadataModel.addColumnDefinition( namespaceIdColumn ); - - BasicColumnDefinition repositoryNameColumn = new BasicColumnDefinition(); - repositoryNameColumn.setName( StringSerializer.get().toByteBuffer( REPOSITORY_NAME.toString() ) ); - repositoryNameColumn.setIndexName( REPOSITORY_NAME.toString() ); - repositoryNameColumn.setIndexType( ColumnIndexType.KEYS ); - repositoryNameColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - projectVersionMetadataModel.addColumnDefinition( repositoryNameColumn ); - - BasicColumnDefinition idColumn = new BasicColumnDefinition(); - idColumn.setName( StringSerializer.get().toByteBuffer( ID.toString() ) ); - idColumn.setIndexName( ID.toString() ); - idColumn.setIndexType( ColumnIndexType.KEYS ); - idColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - projectVersionMetadataModel.addColumnDefinition( idColumn ); - - BasicColumnDefinition projectIdColumn = new BasicColumnDefinition(); - projectIdColumn.setName( StringSerializer.get().toByteBuffer( PROJECT_ID.toString() ) ); - projectIdColumn.setIndexName( PROJECT_ID.toString() ); - projectIdColumn.setIndexType( ColumnIndexType.KEYS ); - projectIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - projectVersionMetadataModel.addColumnDefinition( projectIdColumn ); - - } - - // artifactmetadatamodel table - { - - final ColumnFamilyDefinition artifactMetadataModel = - HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), // - getArtifactMetadataFamilyName(), // - ComparatorType.UTF8TYPE ); - cfds.add( artifactMetadataModel ); - - // creating indexes for cql query - - BasicColumnDefinition idColumn = new BasicColumnDefinition(); - idColumn.setName( StringSerializer.get().toByteBuffer( ID.toString() ) ); - idColumn.setIndexName( ID.toString() ); - idColumn.setIndexType( ColumnIndexType.KEYS ); - idColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - artifactMetadataModel.addColumnDefinition( idColumn ); - - BasicColumnDefinition repositoryNameColumn = new BasicColumnDefinition(); - repositoryNameColumn.setName( StringSerializer.get().toByteBuffer( REPOSITORY_NAME.toString() ) ); - repositoryNameColumn.setIndexName( REPOSITORY_NAME.toString() ); - repositoryNameColumn.setIndexType( ColumnIndexType.KEYS ); - repositoryNameColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - artifactMetadataModel.addColumnDefinition( repositoryNameColumn ); - - BasicColumnDefinition namespaceIdColumn = new BasicColumnDefinition(); - namespaceIdColumn.setName( StringSerializer.get().toByteBuffer( NAMESPACE_ID.toString() ) ); - namespaceIdColumn.setIndexName( NAMESPACE_ID.toString() ); - namespaceIdColumn.setIndexType( ColumnIndexType.KEYS ); - namespaceIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - artifactMetadataModel.addColumnDefinition( namespaceIdColumn ); - - BasicColumnDefinition projectColumn = new BasicColumnDefinition(); - projectColumn.setName( StringSerializer.get().toByteBuffer( PROJECT.toString() ) ); - projectColumn.setIndexName( PROJECT.toString() ); - projectColumn.setIndexType( ColumnIndexType.KEYS ); - projectColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - artifactMetadataModel.addColumnDefinition( projectColumn ); - - BasicColumnDefinition projectVersionColumn = new BasicColumnDefinition(); - projectVersionColumn.setName( StringSerializer.get().toByteBuffer( PROJECT_VERSION.toString() ) ); - projectVersionColumn.setIndexName( PROJECT_VERSION.toString() ); - projectVersionColumn.setIndexType( ColumnIndexType.KEYS ); - projectVersionColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - artifactMetadataModel.addColumnDefinition( projectVersionColumn ); - - BasicColumnDefinition versionColumn = new BasicColumnDefinition(); - versionColumn.setName( StringSerializer.get().toByteBuffer( VERSION.toString() ) ); - versionColumn.setIndexName( VERSION.toString() ); - versionColumn.setIndexType( ColumnIndexType.KEYS ); - versionColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - artifactMetadataModel.addColumnDefinition( versionColumn ); - - BasicColumnDefinition whenGatheredColumn = new BasicColumnDefinition(); - whenGatheredColumn.setName( StringSerializer.get().toByteBuffer( WHEN_GATHERED.toString() ) ); - whenGatheredColumn.setIndexName( WHEN_GATHERED.toString() ); - whenGatheredColumn.setIndexType( ColumnIndexType.KEYS ); - whenGatheredColumn.setValidationClass( ComparatorType.LONGTYPE.getClassName() ); - artifactMetadataModel.addColumnDefinition( whenGatheredColumn ); - - BasicColumnDefinition sha1Column = new BasicColumnDefinition(); - sha1Column.setName( StringSerializer.get().toByteBuffer( SHA1.toString() ) ); - sha1Column.setIndexName( SHA1.toString() ); - sha1Column.setIndexType( ColumnIndexType.KEYS ); - sha1Column.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - artifactMetadataModel.addColumnDefinition( sha1Column ); - - BasicColumnDefinition md5Column = new BasicColumnDefinition(); - md5Column.setName( StringSerializer.get().toByteBuffer( MD5.toString() ) ); - md5Column.setIndexName( MD5.toString() ); - md5Column.setIndexType( ColumnIndexType.KEYS ); - md5Column.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - artifactMetadataModel.addColumnDefinition( md5Column ); - - - } - - // metadatafacetmodel table - { - final ColumnFamilyDefinition metadataFacetModel = - HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), // - getMetadataFacetFamilyName(), // - ComparatorType.UTF8TYPE ); - cfds.add( metadataFacetModel ); - - // creating indexes for cql query - - BasicColumnDefinition facetIdColumn = new BasicColumnDefinition(); - facetIdColumn.setName( StringSerializer.get().toByteBuffer( FACET_ID.toString() ) ); - facetIdColumn.setIndexName( FACET_ID.toString() ); - facetIdColumn.setIndexType( ColumnIndexType.KEYS ); - facetIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - metadataFacetModel.addColumnDefinition( facetIdColumn ); - - BasicColumnDefinition repositoryNameColumn = new BasicColumnDefinition(); - repositoryNameColumn.setName( StringSerializer.get().toByteBuffer( REPOSITORY_NAME.toString() ) ); - repositoryNameColumn.setIndexName( REPOSITORY_NAME.toString() ); - repositoryNameColumn.setIndexType( ColumnIndexType.KEYS ); - repositoryNameColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - metadataFacetModel.addColumnDefinition( repositoryNameColumn ); - - BasicColumnDefinition nameColumn = new BasicColumnDefinition(); - nameColumn.setName( StringSerializer.get().toByteBuffer( NAME.toString() ) ); - nameColumn.setIndexName( NAME.toString() ); - nameColumn.setIndexType( ColumnIndexType.KEYS ); - nameColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - metadataFacetModel.addColumnDefinition( nameColumn ); - - BasicColumnDefinition namespaceColumn = new BasicColumnDefinition(); - namespaceColumn.setName( StringSerializer.get().toByteBuffer( NAMESPACE_ID.toString() ) ); - namespaceColumn.setIndexName( NAMESPACE_ID.toString() ); - namespaceColumn.setIndexType( ColumnIndexType.KEYS ); - namespaceColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - metadataFacetModel.addColumnDefinition( namespaceColumn ); - - BasicColumnDefinition projectIdColumn = new BasicColumnDefinition(); - projectIdColumn.setName( StringSerializer.get().toByteBuffer( PROJECT_ID.toString() ) ); - projectIdColumn.setIndexName( PROJECT_ID.toString() ); - projectIdColumn.setIndexType( ColumnIndexType.KEYS ); - projectIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - metadataFacetModel.addColumnDefinition( projectIdColumn ); - - BasicColumnDefinition projectVersionColumn = new BasicColumnDefinition(); - projectVersionColumn.setName( StringSerializer.get().toByteBuffer( PROJECT_VERSION.toString() ) ); - projectVersionColumn.setIndexName( PROJECT_VERSION.toString() ); - projectVersionColumn.setIndexType( ColumnIndexType.KEYS ); - projectVersionColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - metadataFacetModel.addColumnDefinition( projectVersionColumn ); - - } - - // Checksum table - { - final ColumnFamilyDefinition checksumCf = - HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), // - getChecksumFamilyName(), // - ComparatorType.UTF8TYPE ); - - BasicColumnDefinition artifactMetatadaModel_key = new BasicColumnDefinition(); - artifactMetatadaModel_key.setName( StringSerializer.get().toByteBuffer( "artifactMetadataModel.key" ) ); - artifactMetatadaModel_key.setIndexName( "artifactMetadataModel_key" ); - artifactMetatadaModel_key.setIndexType( ColumnIndexType.KEYS ); - artifactMetatadaModel_key.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - checksumCf.addColumnDefinition( artifactMetatadaModel_key ); - - - BasicColumnDefinition checksumAlgorithmColumn = new BasicColumnDefinition(); - checksumAlgorithmColumn.setName( StringSerializer.get().toByteBuffer( CHECKSUM_ALG.toString() ) ); - checksumAlgorithmColumn.setIndexName( CHECKSUM_ALG.toString() ); - checksumAlgorithmColumn.setIndexType( ColumnIndexType.KEYS ); - checksumAlgorithmColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - checksumCf.addColumnDefinition( checksumAlgorithmColumn ); - - BasicColumnDefinition checksumValueColumn = new BasicColumnDefinition(); - checksumValueColumn.setName( StringSerializer.get().toByteBuffer( CHECKSUM_VALUE.toString() ) ); - checksumValueColumn.setIndexName( CHECKSUM_VALUE.toString() ); - checksumValueColumn.setIndexType( ColumnIndexType.KEYS ); - checksumValueColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - checksumCf.addColumnDefinition( checksumValueColumn ); - - BasicColumnDefinition repositoryNameColumn = new BasicColumnDefinition(); - repositoryNameColumn.setName( StringSerializer.get().toByteBuffer( REPOSITORY_NAME.toString() ) ); - repositoryNameColumn.setIndexName( REPOSITORY_NAME.toString() ); - repositoryNameColumn.setIndexType( ColumnIndexType.KEYS ); - repositoryNameColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - checksumCf.addColumnDefinition( repositoryNameColumn ); - - - cfds.add( checksumCf ); - - // creating indexes for cql query - - } - - // mailinglist table - { - final ColumnFamilyDefinition mailingListCf = - HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), // - getMailingListFamilyName(), // - ComparatorType.UTF8TYPE ); - - BasicColumnDefinition projectVersionMetadataModel_key = new BasicColumnDefinition(); - projectVersionMetadataModel_key.setName( StringSerializer.get().toByteBuffer( "projectVersionMetadataModel.key" ) ); - projectVersionMetadataModel_key.setIndexName( "projectVersionMetadataModel_key" ); - projectVersionMetadataModel_key.setIndexType( ColumnIndexType.KEYS ); - projectVersionMetadataModel_key.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - mailingListCf.addColumnDefinition( projectVersionMetadataModel_key ); - - cfds.add( mailingListCf ); - - // creating indexes for cql query - - } - - // license table - { - final ColumnFamilyDefinition licenseCf = - HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), // - getLicenseFamilyName(), // - ComparatorType.UTF8TYPE ); - - BasicColumnDefinition projectVersionMetadataModel_key = new BasicColumnDefinition(); - projectVersionMetadataModel_key.setName( StringSerializer.get().toByteBuffer( "projectVersionMetadataModel.key" ) ); - projectVersionMetadataModel_key.setIndexName( "projectVersionMetadataModel_key" ); - projectVersionMetadataModel_key.setIndexType( ColumnIndexType.KEYS ); - projectVersionMetadataModel_key.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - licenseCf.addColumnDefinition( projectVersionMetadataModel_key ); - - cfds.add( licenseCf ); - - // creating indexes for cql query - - } - - // dependency table - { - final ColumnFamilyDefinition dependencyCf = - HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), // - getDependencyFamilyName(), // - ComparatorType.UTF8TYPE ); - cfds.add( dependencyCf ); - - // creating indexes for cql query - - BasicColumnDefinition groupIdColumn = new BasicColumnDefinition(); - groupIdColumn.setName( StringSerializer.get().toByteBuffer( GROUP_ID.toString() ) ); - groupIdColumn.setIndexName( "groupIdIdx" ); - groupIdColumn.setIndexType( ColumnIndexType.KEYS ); - groupIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - dependencyCf.addColumnDefinition( groupIdColumn ); - - BasicColumnDefinition projectVersionMetadataModel_key = new BasicColumnDefinition(); - projectVersionMetadataModel_key.setName( StringSerializer.get().toByteBuffer( "projectVersionMetadataModel.key" ) ); - projectVersionMetadataModel_key.setIndexName( "projectVersionMetadataModel_key" ); - projectVersionMetadataModel_key.setIndexType( ColumnIndexType.KEYS ); - projectVersionMetadataModel_key.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); - dependencyCf.addColumnDefinition( projectVersionMetadataModel_key ); - - } - - // TODO take care of update new table!! - { // ensure keyspace exists, here if the keyspace doesn't exist we suppose nothing exist - if ( cluster.describeKeyspace( keyspaceName ) == null ) - { - logger.info( "Creating Archiva Cassandra '{}' keyspace.", keyspaceName ); - cluster.addKeyspace( HFactory.createKeyspaceDefinition( keyspaceName, // - ThriftKsDef.DEF_STRATEGY_CLASS, // - replicationFactor, // - cfds ) - ); - } - } - - } - - @Override - public void start() - { - } - - @PreDestroy - @Override - public void shutdown() - { - } - - - @Override - public boolean started() - { - return started; - } - - - @Override - public Keyspace getKeyspace() - { - return keyspace; - } - - @Override - public Cluster getCluster() - { - return cluster; - } - - @Override - public String getRepositoryFamilyName() - { - return repositoryFamilyName; - } - - @Override - public String getNamespaceFamilyName() - { - return namespaceFamilyName; - } - - @Override - public String getProjectFamilyName() - { - return projectFamilyName; - } - - @Override - public String getProjectVersionMetadataFamilyName() - { - return projectVersionMetadataFamilyName; - } - - @Override - public String getArtifactMetadataFamilyName() - { - return artifactMetadataFamilyName; - } - - @Override - public String getMetadataFacetFamilyName() - { - return metadataFacetFamilyName; - } - - @Override - public String getMailingListFamilyName() - { - return mailingListFamilyName; - } - - @Override - public String getLicenseFamilyName() - { - return licenseFamilyName; - } - - @Override - public String getDependencyFamilyName() - { - return dependencyFamilyName; - } - - @Override - public String getChecksumFamilyName() { - return checksumFamilyName; - } -} diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ArtifactMetadataModel.java b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ArtifactMetadataModel.java deleted file mode 100644 index 64ba9a37e..000000000 --- a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ArtifactMetadataModel.java +++ /dev/null @@ -1,308 +0,0 @@ -package org.apache.archiva.metadata.repository.cassandra.model; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import org.apache.archiva.metadata.repository.cassandra.CassandraUtils; - -import java.io.Serializable; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -import static org.apache.archiva.metadata.repository.cassandra.model.ColumnNames.*; - -/** - * Cassandra storage model for {@link org.apache.archiva.metadata.model.ArtifactMetadata} - * - * @author Olivier Lamy - * @since 2.0.0 - */ -public class ArtifactMetadataModel - implements Serializable -{ - - public final static String[] COLUMNS = new String[] { ID.toString(), REPOSITORY_NAME.toString(), - NAMESPACE_ID.toString(), PROJECT.toString(), PROJECT_VERSION.toString(), VERSION.toString(), - FILE_LAST_MODIFIED.toString(), SIZE.toString(), MD5.toString(), SHA1.toString(), WHEN_GATHERED.toString() }; - - private String id; - - private String repositoryId; - - private String namespace; - - private String project; - - private String projectVersion; - - private String version; - - private long fileLastModified; - - private long size; - - private String md5; - - private String sha1; - - private long whenGathered; - - private Map<String, String> checksums = new HashMap<>(); - - public ArtifactMetadataModel() - { - // no op - } - - public ArtifactMetadataModel( String id, String repositoryId, String namespace, String project, - String projectVersion, String version, Date fileLastModified, long size, String md5, - String sha1, Date whenGathered ) - { - this.id = id; - this.repositoryId = repositoryId; - this.namespace = namespace; - this.project = project; - this.projectVersion = projectVersion; - this.version = version; - this.fileLastModified = ( fileLastModified != null ? fileLastModified.getTime() : 0 ); - this.size = size; - this.md5 = md5; - this.sha1 = sha1; - this.whenGathered = whenGathered != null ? whenGathered.getTime() : new Date().getTime(); - } - - - public String getId() - { - return id; - } - - public void setId( String id ) - { - this.id = id; - } - - public String getRepositoryId() - { - return repositoryId; - } - - public void setRepositoryId( String repositoryId ) - { - this.repositoryId = repositoryId; - } - - public String getNamespace() - { - return namespace; - } - - public void setNamespace( String namespace ) - { - this.namespace = namespace; - } - - public String getProject() - { - return project; - } - - public void setProject( String project ) - { - this.project = project; - } - - public String getProjectVersion() - { - return projectVersion; - } - - public void setProjectVersion( String projectVersion ) - { - this.projectVersion = projectVersion; - } - - public String getVersion() - { - return version; - } - - public void setVersion( String version ) - { - this.version = version; - } - - public long getFileLastModified() - { - return fileLastModified; - } - - public void setFileLastModified( long fileLastModified ) - { - this.fileLastModified = fileLastModified; - } - - public long getSize() - { - return size; - } - - public void setSize( long size ) - { - this.size = size; - } - - public String getMd5() - { - return md5; - } - - public void setMd5( String md5 ) - { - this.md5 = md5; - } - - public String getSha1() - { - return sha1; - } - - public void setSha1( String sha1 ) - { - this.sha1 = sha1; - } - - public Date getWhenGathered() - { - return new Date( whenGathered ); - } - - public void setWhenGathered( long whenGathered ) - { - this.whenGathered = whenGathered; - } - - public void setChecksum(String type, String value) { - this.checksums.put(type, value); - } - - public String getChecksum(String type) { - return this.checksums.get(type); - } - - public void setChecksums(Map<String,String> checksums) { - this.checksums = checksums; - } - - public Map<String,String> getChecksums() { - return this.checksums; - } - - - @Override - public String toString() - { - final StringBuilder sb = new StringBuilder( "ArtifactMetadataModel{" ); - sb.append( ", id='" ).append( id ).append( '\'' ); - sb.append( ", repositoryId='" ).append( repositoryId ).append( '\'' ); - sb.append( ", namespace='" ).append( namespace ).append( '\'' ); - sb.append( ", project='" ).append( project ).append( '\'' ); - sb.append( ", projectVersion='" ).append( projectVersion ).append( '\'' ); - sb.append( ", version='" ).append( version ).append( '\'' ); - sb.append( ", fileLastModified=" ).append( fileLastModified ); - sb.append( ", size=" ).append( size ); - sb.append( ", md5='" ).append( md5 ).append( '\'' ); - sb.append( ", sha1='" ).append( sha1 ).append( '\'' ); - sb.append( ", whenGathered=" ).append( whenGathered ); - sb.append( '}' ); - return sb.toString(); - } - - public static class KeyBuilder - { - - private String project; - - private String id; - - private String namespaceId; - - private String repositoryId; - - private String projectVersion; - - public KeyBuilder() - { - - } - - public KeyBuilder withId( String id ) - { - this.id = id; - return this; - } - - - public KeyBuilder withNamespace( Namespace namespace ) - { - this.namespaceId = namespace.getName(); - this.repositoryId = namespace.getRepository().getName(); - return this; - } - - public KeyBuilder withNamespace( String namespaceId ) - { - this.namespaceId = namespaceId; - return this; - } - - public KeyBuilder withProject( String project ) - { - this.project = project; - return this; - } - - public KeyBuilder withProjectVersion( String projectVersion ) - { - this.projectVersion = projectVersion; - return this; - } - - public KeyBuilder withRepositoryId( String repositoryId ) - { - this.repositoryId = repositoryId; - return this; - } - - public String build() - { - //repositoryId + namespaceId + project + projectVersion + id - // FIXME add some controls - - String str = - CassandraUtils.generateKey( this.repositoryId, this.namespaceId, this.project, this.projectVersion, - this.id ); - - //return Long.toString( str.hashCode() ); - return str; - } - } - -} diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ColumnNames.java b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ColumnNames.java deleted file mode 100644 index 8ea2f389f..000000000 --- a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ColumnNames.java +++ /dev/null @@ -1,65 +0,0 @@ -package org.apache.archiva.metadata.repository.cassandra.model; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/** - * Cassandra column names - * - * @author carlos@apache.org - */ -public enum ColumnNames -{ - FACET_ID( "facetId" ), - REPOSITORY_NAME( "repositoryName" ), - NAME( "name" ), - NAMESPACE_ID( "namespaceId" ), - PROJECT_ID( "projectId" ), - PROJECT_VERSION( "projectVersion" ), - KEY( "facetKey" ), - VALUE( "value" ), - ID( "id" ), - SIZE( "size" ), - MD5( "md5" ), - SHA1( "sha1" ), - PROJECT( "project" ), - FILE_LAST_MODIFIED( "fileLastModified" ), - VERSION( "version" ), - GROUP_ID( "groupId" ), - ARTIFACT_ID( "artifactId" ), - DESCRIPTION( "description" ), - URL( "url" ), - WHEN_GATHERED( "whenGathered" ), - CHECKSUM_ALG("checksumAlgorithm"), - CHECKSUM_VALUE("checksumValue"); - - private final String name; - - private ColumnNames( String name ) - { - this.name = name; - } - - @Override - public String toString() - { - return name; - } - -} diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/MetadataFacetModel.java b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/MetadataFacetModel.java deleted file mode 100644 index 36b75aafb..000000000 --- a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/MetadataFacetModel.java +++ /dev/null @@ -1,194 +0,0 @@ -package org.apache.archiva.metadata.repository.cassandra.model; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import org.apache.archiva.metadata.repository.cassandra.CassandraUtils; - -import static org.apache.archiva.metadata.repository.cassandra.model.ColumnNames.*; - -/** - * Cassandra storage model for {@link org.apache.archiva.metadata.model.MetadataFacet} - * - * @author Olivier Lamy - * @since 2.0.0 - */ -public class MetadataFacetModel -{ - public static final String[] COLUMNS = new String[] { FACET_ID.toString(), KEY.toString(), VALUE.toString(), - REPOSITORY_NAME.toString(), NAMESPACE_ID.toString(), PROJECT_ID.toString(), PROJECT_VERSION.toString() }; - - private String facetId; - - private String key; - - private String name; - - private String value; - - private String projectVersion; - - public MetadataFacetModel() - { - // no op - } - - public MetadataFacetModel( String facetId, String key, String value, String name, String projectVersion ) - { - this.key = key; - this.value = value; - this.name = name; - this.facetId = facetId; - this.projectVersion = projectVersion; - } - - public String getFacetId() - { - return facetId; - } - - public void setFacetId( String facetId ) - { - this.facetId = facetId; - } - - - public String getName() - { - return name; - } - - public void setName( String name ) - { - this.name = name; - } - - public String getKey() - { - return key; - } - - public void setKey( String key ) - { - this.key = key; - } - - public String getValue() - { - return value; - } - - public void setValue( String value ) - { - this.value = value; - } - - public String getProjectVersion() - { - return projectVersion; - } - - public void setProjectVersion( String projectVersion ) - { - this.projectVersion = projectVersion; - } - - @Override - public String toString() - { - final StringBuilder sb = new StringBuilder( "MetadataFacetModel{" ); - sb.append( ", key='" ).append( key ).append( '\'' ); - sb.append( ", value='" ).append( value ).append( '\'' ); - sb.append( '}' ); - return sb.toString(); - } - - public static class KeyBuilder - { - - private ArtifactMetadataModel artifactMetadataModel; - - private String key; - - private String name; - - private String facetId; - - private String repositoryId; - - public KeyBuilder() - { - - } - - public KeyBuilder withArtifactMetadataModel( ArtifactMetadataModel artifactMetadataModel ) - { - this.artifactMetadataModel = artifactMetadataModel; - return this; - } - - public KeyBuilder withKey( String key ) - { - this.key = key; - return this; - } - - public KeyBuilder withName( String name ) - { - this.name = name; - return this; - } - - public KeyBuilder withFacetId( String facetId ) - { - this.facetId = facetId; - return this; - } - - public KeyBuilder withRepositoryId( String repositoryId ) - { - this.repositoryId = repositoryId; - return this; - } - - public String build() - { - // FIXME add some controls - // getArtifactMetadataModelId can have no namespace, no project and no projectid for statistics - // only repositoryId with artifactMetadataModel - String str = CassandraUtils.generateKey( this.artifactMetadataModel == null - ? this.repositoryId - : new ArtifactMetadataModel.KeyBuilder().withNamespace( - this.artifactMetadataModel.getNamespace() ) // - .withProject( this.artifactMetadataModel.getProject() ) // - .withProjectVersion( - this.artifactMetadataModel.getProjectVersion() ) // - .withRepositoryId( - this.artifactMetadataModel.getRepositoryId() ) // - .withId( this.artifactMetadataModel.getId() ) // - .build(), // - this.facetId, // - this.name, // - this.key - ); - - return str; - } - } -} diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/Namespace.java b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/Namespace.java deleted file mode 100644 index 390e7e90f..000000000 --- a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/Namespace.java +++ /dev/null @@ -1,153 +0,0 @@ -package org.apache.archiva.metadata.repository.cassandra.model; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import org.apache.archiva.metadata.repository.cassandra.CassandraUtils; - -import java.io.Serializable; - - -/** - * @author Olivier Lamy - * @since 2.0.0 - */ -public class Namespace - implements Serializable -{ - - private String name; - - private String repositoryName; - - public Namespace() - { - // no op - } - - - public Namespace( String id, Repository repository ) - { - this.name = id; - this.repositoryName = repository.getName(); - } - - - public String getName() - { - return name; - } - - public void setName( String name ) - { - this.name = name; - } - - public Repository getRepository() - { - return new Repository( this.repositoryName ); - } - - public void setRepository( Repository repository ) - { - this.repositoryName = repository.getName(); - } - - @Override - public boolean equals( Object o ) - { - if ( this == o ) - { - return true; - } - if ( o == null || getClass() != o.getClass() ) - { - return false; - } - - Namespace namespace = (Namespace) o; - - if ( !name.equals( namespace.name ) ) - { - return false; - } - if ( !repositoryName.equals( namespace.repositoryName ) ) - { - return false; - } - - return true; - } - - @Override - public int hashCode() - { - int result = name.hashCode(); - result = 31 * result + repositoryName.hashCode(); - return result; - } - - @Override - public String toString() - { - final StringBuilder sb = new StringBuilder( "Namespace{" ); - sb.append( ", name='" ).append( name ).append( '\'' ); - sb.append( ", repository='" ).append( repositoryName ).append( '\'' ); - sb.append( '}' ); - return sb.toString(); - } - - public static class KeyBuilder - { - - private String namespace; - - private String repositoryId; - - public KeyBuilder() - { - - } - - public KeyBuilder withNamespace( Namespace namespace ) - { - this.namespace = namespace.getName(); - this.repositoryId = namespace.getRepository().getName(); - return this; - } - - public KeyBuilder withNamespace( String namespace ) - { - this.namespace = namespace; - return this; - } - - public KeyBuilder withRepositoryId( String repositoryId ) - { - this.repositoryId = repositoryId; - return this; - } - - public String build() - { - // FIXME add some controls - return CassandraUtils.generateKey( this.repositoryId, this.namespace ); - } - } -} diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/Project.java b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/Project.java deleted file mode 100644 index 656e9099f..000000000 --- a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/Project.java +++ /dev/null @@ -1,66 +0,0 @@ -package org.apache.archiva.metadata.repository.cassandra.model; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import org.apache.archiva.metadata.repository.cassandra.CassandraUtils; - -import java.io.Serializable; - -/** - * @author Olivier Lamy - * @since 2.0.0 - */ -public class Project - implements Serializable -{ - - public static class KeyBuilder - { - - private Namespace namespace; - - private String projectId; - - public KeyBuilder() - { - // no op - } - - public KeyBuilder withNamespace( Namespace namespace ) - { - this.namespace = namespace; - return this; - } - - public KeyBuilder withProjectId( String projectId ) - { - this.projectId = projectId; - return this; - } - - - public String build() - { - // FIXME add some controls - return CassandraUtils.generateKey( new Namespace.KeyBuilder().withNamespace( this.namespace ).build(), - this.projectId ); - } - } -} diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ProjectVersionMetadataModel.java b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ProjectVersionMetadataModel.java deleted file mode 100644 index 5b508b12b..000000000 --- a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ProjectVersionMetadataModel.java +++ /dev/null @@ -1,292 +0,0 @@ -package org.apache.archiva.metadata.repository.cassandra.model; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import org.apache.archiva.metadata.model.CiManagement; -import org.apache.archiva.metadata.model.Dependency; -import org.apache.archiva.metadata.model.IssueManagement; -import org.apache.archiva.metadata.model.License; -import org.apache.archiva.metadata.model.MailingList; -import org.apache.archiva.metadata.model.Organization; -import org.apache.archiva.metadata.model.Scm; -import org.apache.archiva.metadata.repository.cassandra.CassandraUtils; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author Olivier Lamy - * @since 2.0.0 - */ -public class ProjectVersionMetadataModel -{ - private Namespace namespace; - - private String id; - - private String projectId; - - private String url; - - private String name; - - private String description; - - private Organization organization; - - private IssueManagement issueManagement; - - private Scm scm; - - private CiManagement ciManagement; - - private List<License> licenses = new ArrayList<>(); - - private List<MailingList> mailingLists = new ArrayList<>(); - - private List<Dependency> dependencies = new ArrayList<>(); - - private boolean incomplete; - - public String getProjectId() - { - return projectId; - } - - public void setProjectId( String projectId ) - { - this.projectId = projectId; - } - - // FIXME must be renamed getVersion !!! - public String getId() - { - return id; - } - - public void setId( String id ) - { - this.id = id; - } - - public String getUrl() - { - return url; - } - - public void setUrl( String url ) - { - this.url = url; - } - - public String getName() - { - return name; - } - - public void setName( String name ) - { - this.name = name; - } - - public String getDescription() - { - return description; - } - - public void setDescription( String description ) - { - this.description = description; - } - - public Organization getOrganization() - { - return organization; - } - - public void setOrganization( Organization organization ) - { - this.organization = organization; - } - - public IssueManagement getIssueManagement() - { - return issueManagement; - } - - public void setIssueManagement( IssueManagement issueManagement ) - { - this.issueManagement = issueManagement; - } - - public Scm getScm() - { - return scm; - } - - public void setScm( Scm scm ) - { - this.scm = scm; - } - - public CiManagement getCiManagement() - { - return ciManagement; - } - - public void setCiManagement( CiManagement ciManagement ) - { - this.ciManagement = ciManagement; - } - - public boolean isIncomplete() - { - return incomplete; - } - - public void setIncomplete( boolean incomplete ) - { - this.incomplete = incomplete; - } - - public Namespace getNamespace() - { - return namespace; - } - - public void setNamespace( Namespace namespace ) - { - this.namespace = namespace; - } - - public List<License> getLicenses() - { - return licenses; - } - - public void setLicenses( List<License> licenses ) - { - this.licenses = licenses; - } - - public List<MailingList> getMailingLists() - { - return mailingLists; - } - - public void setMailingLists( List<MailingList> mailingLists ) - { - this.mailingLists = mailingLists; - } - - public List<Dependency> getDependencies() - { - return dependencies; - } - - public void setDependencies( List<Dependency> dependencies ) - { - this.dependencies = dependencies; - } - - - @Override - public String toString() - { - final StringBuilder sb = new StringBuilder( "ProjectVersionMetadataModel{" ); - sb.append( ", namespace=" ).append( namespace ); - sb.append( ", id='" ).append( id ).append( '\'' ); - sb.append( ", projectId='" ).append( projectId ).append( '\'' ); - sb.append( ", url='" ).append( url ).append( '\'' ); - sb.append( ", name='" ).append( name ).append( '\'' ); - sb.append( ", description='" ).append( description ).append( '\'' ); - sb.append( ", organization=" ).append( organization ); - sb.append( ", issueManagement=" ).append( issueManagement ); - sb.append( ", scm=" ).append( scm ); - sb.append( ", ciManagement=" ).append( ciManagement ); - sb.append( ", incomplete=" ).append( incomplete ); - sb.append( '}' ); - return sb.toString(); - } - - - public static class KeyBuilder - { - - private String namespace; - - private String repositoryName; - - private String projectId; - - private String projectVersion; - - private String id; - - public KeyBuilder() - { - // no op - } - - public KeyBuilder withNamespace( Namespace namespace ) - { - this.namespace = namespace.getName(); - this.repositoryName = namespace.getRepository().getName(); - return this; - } - - public KeyBuilder withNamespace( String namespace ) - { - this.namespace = namespace; - return this; - } - - public KeyBuilder withRepository( String repositoryId ) - { - this.repositoryName = repositoryId; - return this; - } - - public KeyBuilder withProjectId( String projectId ) - { - this.projectId = projectId; - return this; - } - - public KeyBuilder withProjectVersion( String projectVersion ) - { - this.projectVersion = projectVersion; - return this; - } - - public KeyBuilder withId( String id ) - { - this.id = id; - return this; - } - - public String build() - { - // FIXME add some controls - return CassandraUtils.generateKey( this.repositoryName, this.namespace, this.projectId, this.projectVersion, - this.id ); - } - } -} diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/Repository.java b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/Repository.java deleted file mode 100644 index 402fa8a63..000000000 --- a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/Repository.java +++ /dev/null @@ -1,91 +0,0 @@ -package org.apache.archiva.metadata.repository.cassandra.model; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import java.io.Serializable; - - -/** - * @author Olivier Lamy - * @since 2.0.0 - */ -public class Repository - implements Serializable -{ - - - private String name; - - public Repository() - { - // no op - } - - public Repository( String name ) - { - this.name = name; - } - - public String getName() - { - return name; - } - - public void setName( String name ) - { - this.name = name; - } - - @Override - public boolean equals( Object o ) - { - if ( this == o ) - { - return true; - } - if ( o == null || getClass() != o.getClass() ) - { - return false; - } - - Repository that = (Repository) o; - - if ( !name.equals( that.name ) ) - { - return false; - } - - return true; - } - - @Override - public int hashCode() - { - return name.hashCode(); - } - - @Override - public String toString() - { - return "Repository{" + - "name='" + name + '\'' + - '}'; - } -} diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/main/resources/META-INF/spring-context.xml b/archiva-modules/plugins/metadata-store-cassandra/src/main/resources/META-INF/spring-context.xml deleted file mode 100644 index 805ef8ce4..000000000 --- a/archiva-modules/plugins/metadata-store-cassandra/src/main/resources/META-INF/spring-context.xml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0"?> - -<!-- - ~ Licensed to the Apache Software Foundation (ASF) under one - ~ or more contributor license agreements. See the NOTICE file - ~ distributed with this work for additional information - ~ regarding copyright ownership. The ASF licenses this file - ~ to you under the Apache License, Version 2.0 (the - ~ "License"); you may not use this file except in compliance - ~ with the License. You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, - ~ software distributed under the License is distributed on an - ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - ~ KIND, either express or implied. See the License for the - ~ specific language governing permissions and limitations - ~ under the License. - --> -<beans xmlns="http://www.springframework.org/schema/beans" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns:context="http://www.springframework.org/schema/context" - xsi:schemaLocation="http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans-3.0.xsd - http://www.springframework.org/schema/context - http://www.springframework.org/schema/context/spring-context-3.0.xsd" - default-lazy-init="true"> - - <context:annotation-config/> - <context:component-scan base-package="org.apache.archiva.metadata.repository.cassandra"/> - - <context:property-placeholder location="classpath:default-archiva-cassandra.properties" - system-properties-mode="OVERRIDE" - order="2"/> - - <context:property-placeholder location="file:${archiva.cassandra.configuration.file}" - ignore-resource-not-found="true" - ignore-unresolvable="true" - system-properties-mode="OVERRIDE" - order="1"/> - -</beans>
\ No newline at end of file diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/main/resources/default-archiva-cassandra.properties b/archiva-modules/plugins/metadata-store-cassandra/src/main/resources/default-archiva-cassandra.properties deleted file mode 100644 index e55a955b8..000000000 --- a/archiva-modules/plugins/metadata-store-cassandra/src/main/resources/default-archiva-cassandra.properties +++ /dev/null @@ -1,28 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# -cassandra.host=localhost -cassandra.port=9160 -cassandra.maxActive=20 -cassandra.readConsistencyLevel=QUORUM -cassandra.writeConsistencyLevel=QUORUM -cassandra.replicationFactor=1 -cassandra.keyspace.name=ArchivaKeySpace -cassandra.cluster.name=archiva - -archiva.cassandra.configuration.file=./archiva-cassandra.properties
\ No newline at end of file diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/test/filtered-resources/META-INF/spring-context.xml b/archiva-modules/plugins/metadata-store-cassandra/src/test/filtered-resources/META-INF/spring-context.xml deleted file mode 100644 index 49f80f869..000000000 --- a/archiva-modules/plugins/metadata-store-cassandra/src/test/filtered-resources/META-INF/spring-context.xml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ Licensed to the Apache Software Foundation (ASF) under one - ~ or more contributor license agreements. See the NOTICE file - ~ distributed with this work for additional information - ~ regarding copyright ownership. The ASF licenses this file - ~ to you under the Apache License, Version 2.0 (the - ~ "License"); you may not use this file except in compliance - ~ with the License. You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, - ~ software distributed under the License is distributed on an - ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - ~ KIND, either express or implied. See the License for the - ~ specific language governing permissions and limitations - ~ under the License. - --> - -<beans xmlns="http://www.springframework.org/schema/beans" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> - - <bean name="repositoryStorage#maven2" class="org.apache.archiva.metadata.repository.cassandra.MockRepositoryStorage"/> - - <bean name="mockrepo#listener" class="org.apache.archiva.metadata.repository.cassandra.MockRepositoryStorage"/> - -</beans>
\ No newline at end of file diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java b/archiva-modules/plugins/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java deleted file mode 100644 index ea03801c5..000000000 --- a/archiva-modules/plugins/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java +++ /dev/null @@ -1,182 +0,0 @@ -package org.apache.archiva.metadata.repository.cassandra; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import org.apache.archiva.metadata.model.MetadataFacetFactory; -import org.apache.archiva.metadata.repository.AbstractMetadataRepositoryTest; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.MetadataService; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.metadata.repository.RepositorySessionFactory; -import org.apache.archiva.metadata.repository.cassandra.model.ProjectVersionMetadataModel; -import org.easymock.EasyMock; -import org.easymock.IMocksControl; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import javax.inject.Inject; -import javax.inject.Named; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * @author Olivier Lamy - */ -public class CassandraMetadataRepositoryTest - extends AbstractMetadataRepositoryTest -{ - @Inject - @Named(value = "archivaEntityManagerFactory#cassandra") - CassandraArchivaManager cassandraArchivaManager; - - CassandraMetadataRepository cmr; - - IMocksControl sessionFactoryControl; - RepositorySessionFactory sessionFactory; - - IMocksControl sessionControl; - RepositorySession session; - - - - @Override - protected RepositorySessionFactory getSessionFactory( ) - { - return sessionFactory; - } - - @Override - protected MetadataRepository getRepository( ) - { - return cmr; - } - - @Before - @Override - public void setUp() - throws Exception - { - - super.setUp(); - assertMaxTries =1; - assertRetrySleepMs=10; - - Path directory = Paths.get( "target/test-repositories" ); - if ( Files.exists(directory) ) - { - org.apache.archiva.common.utils.FileUtils.deleteDirectory( directory ); - } - - List<MetadataFacetFactory> factories = createTestMetadataFacetFactories(); - MetadataService metadataService = new MetadataService( ); - metadataService.setMetadataFacetFactories( factories ); - - this.cmr = new CassandraMetadataRepository( metadataService, cassandraArchivaManager ); - - sessionFactoryControl = EasyMock.createControl( ); - sessionFactory = sessionFactoryControl.createMock( RepositorySessionFactory.class ); - sessionControl = EasyMock.createControl( ); - session = sessionControl.createMock( RepositorySession.class ); - - EasyMock.expect( sessionFactory.createSession( ) ).andStubReturn( session ); - - sessionFactoryControl.replay(); - - clearReposAndNamespace( cassandraArchivaManager ); - } - - /** - * ensure all dependant tables are cleaned up (mailinglist, license, dependencies) - * - * @throws Exception - */ - @Test - public void clean_dependant_tables() - throws Exception - { - - super.testUpdateProjectVersionMetadataWithAllElements(); - - String key = new ProjectVersionMetadataModel.KeyBuilder().withRepository( TEST_REPO_ID ) // - .withNamespace( TEST_NAMESPACE ) // - .withProjectId( TEST_PROJECT ) // - .withProjectVersion( TEST_PROJECT_VERSION ) // - .withId( TEST_PROJECT_VERSION ) // - .build(); - - this.cmr.removeProjectVersion( null, TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ); - - assertThat( - cmr.getProjectVersion( null , TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ) ).isNull(); - - assertThat( cmr.getMailingLists( key ) ).isNotNull().isEmpty(); - - assertThat( cmr.getLicenses( key ) ).isNotNull().isEmpty(); - - assertThat( cmr.getDependencies( key ) ).isNotNull().isEmpty(); - } - - - @After - public void shutdown() - throws Exception - { - clearReposAndNamespace( cassandraArchivaManager ); - super.tearDown(); - } - - static void clearReposAndNamespace( CassandraArchivaManager cassandraArchivaManager ) - throws Exception - { - cassandraArchivaManager.getCluster().truncate( cassandraArchivaManager.getKeyspace().getKeyspaceName(), - cassandraArchivaManager.getProjectFamilyName() ); - - cassandraArchivaManager.getCluster().truncate( cassandraArchivaManager.getKeyspace().getKeyspaceName(), - cassandraArchivaManager.getNamespaceFamilyName() ); - - cassandraArchivaManager.getCluster().truncate( cassandraArchivaManager.getKeyspace().getKeyspaceName(), - cassandraArchivaManager.getRepositoryFamilyName() ); - - cassandraArchivaManager.getCluster().truncate( cassandraArchivaManager.getKeyspace().getKeyspaceName(), - cassandraArchivaManager.getProjectVersionMetadataFamilyName() ); - - cassandraArchivaManager.getCluster().truncate( cassandraArchivaManager.getKeyspace().getKeyspaceName(), - cassandraArchivaManager.getArtifactMetadataFamilyName() ); - - cassandraArchivaManager.getCluster().truncate( cassandraArchivaManager.getKeyspace().getKeyspaceName(), - cassandraArchivaManager.getMetadataFacetFamilyName() ); - - cassandraArchivaManager.getCluster().truncate( cassandraArchivaManager.getKeyspace().getKeyspaceName(), - cassandraArchivaManager.getMailingListFamilyName() ); - - cassandraArchivaManager.getCluster().truncate( cassandraArchivaManager.getKeyspace().getKeyspaceName(), - cassandraArchivaManager.getLicenseFamilyName() ); - - cassandraArchivaManager.getCluster().truncate( cassandraArchivaManager.getKeyspace().getKeyspaceName(), - cassandraArchivaManager.getDependencyFamilyName() ); - - } - -} diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/MockRepositoryStorage.java b/archiva-modules/plugins/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/MockRepositoryStorage.java deleted file mode 100644 index 5c82f6ee5..000000000 --- a/archiva-modules/plugins/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/MockRepositoryStorage.java +++ /dev/null @@ -1,147 +0,0 @@ -package org.apache.archiva.metadata.repository.cassandra; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import org.apache.archiva.metadata.model.ArtifactMetadata; -import org.apache.archiva.metadata.model.ProjectMetadata; -import org.apache.archiva.metadata.model.ProjectVersionMetadata; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.filter.Filter; -import org.apache.archiva.metadata.repository.storage.ReadMetadataRequest; -import org.apache.archiva.metadata.repository.storage.RelocationException; -import org.apache.archiva.metadata.repository.storage.RepositoryStorage; -import org.apache.archiva.metadata.repository.storage.RepositoryStorageMetadataException; -import org.apache.archiva.metadata.repository.storage.RepositoryStorageMetadataInvalidException; -import org.apache.archiva.metadata.repository.storage.RepositoryStorageMetadataNotFoundException; -import org.apache.archiva.metadata.repository.storage.RepositoryStorageRuntimeException; -import org.apache.archiva.policies.ProxyDownloadException; -import org.apache.archiva.repository.ManagedRepositoryContent; -import org.apache.archiva.repository.ManagedRepository; -import org.apache.archiva.metadata.audit.RepositoryListener; -import org.apache.archiva.repository.content.ItemSelector; -import org.apache.archiva.xml.XMLException; - -import java.io.IOException; -import java.util.Collection; - -/** - * @author Olivier Lamy - */ -public class MockRepositoryStorage - implements RepositoryStorage, RepositoryListener -{ - @Override - public ProjectMetadata readProjectMetadata( String repoId, String namespace, String projectId ) - { - return null; - } - - @Override - public ProjectVersionMetadata readProjectVersionMetadata( ReadMetadataRequest readMetadataRequest ) - throws RepositoryStorageMetadataInvalidException, RepositoryStorageMetadataNotFoundException, - RepositoryStorageRuntimeException - { - return null; - } - - @Override - public Collection<String> listRootNamespaces( String repoId, Filter<String> filter ) - throws RepositoryStorageRuntimeException - { - return null; - } - - @Override - public Collection<String> listNamespaces( String repoId, String namespace, Filter<String> filter ) - throws RepositoryStorageRuntimeException - { - return null; - } - - @Override - public Collection<String> listProjects( String repoId, String namespace, Filter<String> filter ) - throws RepositoryStorageRuntimeException - { - return null; - } - - @Override - public Collection<String> listProjectVersions( String repoId, String namespace, String projectId, - Filter<String> filter ) - throws RepositoryStorageRuntimeException - { - return null; - } - - @Override - public Collection<ArtifactMetadata> readArtifactsMetadata( ReadMetadataRequest readMetadataRequest ) - throws RepositoryStorageRuntimeException - { - return null; - } - - @Override - public ArtifactMetadata readArtifactMetadataFromPath( String repoId, String path ) - throws RepositoryStorageRuntimeException - { - return null; - } - - @Override - public ItemSelector applyServerSideRelocation( ManagedRepository managedRepository, ItemSelector selector ) throws ProxyDownloadException - { - return null; - } - - @Override - public String getFilePath( String requestPath, org.apache.archiva.repository.ManagedRepository managedRepository ) - { - return null; - } - - @Override - public String getFilePathWithVersion( String requestPath, ManagedRepositoryContent managedRepositoryContent ) - throws RelocationException, XMLException, IOException - { - return null; - } - - @Override - public void deleteArtifact( MetadataRepository metadataRepository, String repositoryId, String namespace, - String project, String version, String id ) - { - - } - - @Override - public void addArtifact( RepositorySession session, String repoId, String namespace, String projectId, - ProjectVersionMetadata metadata ) - { - - } - - @Override - public void addArtifactProblem( RepositorySession session, String repoId, String namespace, String projectId, - String projectVersion, RepositoryStorageMetadataException exception ) - { - - } -} diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/RepositoriesNamespaceTest.java b/archiva-modules/plugins/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/RepositoriesNamespaceTest.java deleted file mode 100644 index 9a631907f..000000000 --- a/archiva-modules/plugins/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/RepositoriesNamespaceTest.java +++ /dev/null @@ -1,142 +0,0 @@ -package org.apache.archiva.metadata.repository.cassandra; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import org.apache.archiva.metadata.model.ProjectMetadata; -import org.apache.archiva.metadata.repository.cassandra.model.Namespace; -import org.apache.archiva.metadata.repository.cassandra.model.Repository; -import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.test.context.ContextConfiguration; - -import javax.inject.Inject; -import javax.inject.Named; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * @author Olivier Lamy - */ -@RunWith( ArchivaSpringJUnit4ClassRunner.class ) -@ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath*:/spring-context.xml" } ) -public class RepositoriesNamespaceTest -{ - - private Logger logger = LoggerFactory.getLogger( getClass() ); - - @Inject - @Named( value = "archivaEntityManagerFactory#cassandra" ) - CassandraArchivaManager cassandraArchivaManager; - - - CassandraMetadataRepository cmr; - - @Before - public void setup() - throws Exception - { - cmr = new CassandraMetadataRepository( null, cassandraArchivaManager ); - if ( !cassandraArchivaManager.started() ) - { - cassandraArchivaManager.start(); - } - CassandraMetadataRepositoryTest.clearReposAndNamespace( cassandraArchivaManager ); - } - - @After - public void shutdown() - throws Exception - { - CassandraMetadataRepositoryTest.clearReposAndNamespace( cassandraArchivaManager ); - cassandraArchivaManager.shutdown(); - } - - - @Test - public void testMetadataRepo() - throws Exception - { - - Repository r = null; - Namespace n = null; - - try - { - - cmr.updateNamespace( null , "release", "org" ); - - r = cmr.getRepository( "release" ); - - assertThat( r ).isNotNull(); - - assertThat( cmr.getNamespaces( "release" ) ).isNotEmpty().hasSize( 1 ); - - n = cmr.getNamespace( "release", "org" ); - - assertThat( n ).isNotNull(); - assertThat( n.getRepository() ).isNotNull(); - - cmr.updateNamespace( null, "release", "org.apache" ); - - r = cmr.getRepository( "release" ); - - assertThat( r ).isNotNull(); - assertThat( cmr.getNamespaces( "release" ) ).isNotEmpty().hasSize( 2 ); - - cmr.removeNamespace(null , "release", "org.apache" ); - assertThat( cmr.getNamespaces( "release" ) ).isNotEmpty().hasSize( 1 ); - assertThat( cmr.getNamespaces( "release" ) ).containsExactly( "org" ); - - ProjectMetadata projectMetadata = new ProjectMetadata(); - projectMetadata.setId( "theproject" ); - projectMetadata.setNamespace( "org" ); - - cmr.updateProject(null , "release", projectMetadata ); - - assertThat( cmr.getProjects(null , "release", "org" ) ).isNotEmpty().hasSize( 1 ).containsExactly( - "theproject" ); - - cmr.removeProject(null , "release", "org", "theproject" ); - - assertThat( cmr.getProjects(null , "release", "org" ) ).isEmpty(); - - cmr.removeRepository(null , "release" ); - - r = cmr.getRepository( "release" ); - - assertThat( r ).isNull(); - - } - catch ( Exception e ) - { - logger.error( e.getMessage(), e ); - throw e; - } - finally - { - CassandraMetadataRepositoryTest.clearReposAndNamespace( cassandraArchivaManager ); - } - } -} diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/test/resources/log4j2-test.xml b/archiva-modules/plugins/metadata-store-cassandra/src/test/resources/log4j2-test.xml deleted file mode 100644 index a2aad3034..000000000 --- a/archiva-modules/plugins/metadata-store-cassandra/src/test/resources/log4j2-test.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!-- - ~ Licensed to the Apache Software Foundation (ASF) under one - ~ or more contributor license agreements. See the NOTICE file - ~ distributed with this work for additional information - ~ regarding copyright ownership. The ASF licenses this file - ~ to you under the Apache License, Version 2.0 (the - ~ "License"); you may not use this file except in compliance - ~ with the License. You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, - ~ software distributed under the License is distributed on an - ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - ~ KIND, either express or implied. See the License for the - ~ specific language governing permissions and limitations - ~ under the License. - --> - - -<configuration status="debug"> - - - - <appenders> - <Console name="console" target="SYSTEM_OUT"> - <!--PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/--> - <PatternLayout pattern="%highlight{%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n}" /> - </Console> - - </appenders> - <loggers> - - - <logger name="org.apache.archiva.metadata.repository.cassandra" level="debug"/> - - <root level="info" includeLocation="true"> - <appender-ref ref="console"/> - </root> - </loggers> -</configuration> - - diff --git a/archiva-modules/plugins/metadata-store-file/pom.xml b/archiva-modules/plugins/metadata-store-file/pom.xml deleted file mode 100644 index 04ca69f9d..000000000 --- a/archiva-modules/plugins/metadata-store-file/pom.xml +++ /dev/null @@ -1,116 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ Licensed to the Apache Software Foundation (ASF) under one - ~ or more contributor license agreements. See the NOTICE file - ~ distributed with this work for additional information - ~ regarding copyright ownership. The ASF licenses this file - ~ to you under the Apache License, Version 2.0 (the - ~ "License"); you may not use this file except in compliance - ~ with the License. You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, - ~ software distributed under the License is distributed on an - ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - ~ KIND, either express or implied. See the License for the - ~ specific language governing permissions and limitations - ~ under the License. ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <artifactId>plugins</artifactId> - <groupId>org.apache.archiva</groupId> - <version>3.0.0-SNAPSHOT</version> - </parent> - <artifactId>metadata-store-file</artifactId> - <name>Archiva Core Plugins :: File System Backed Metadata Repository</name> - - <properties> - <site.staging.base>${project.parent.parent.basedir}</site.staging.base> - </properties> - - <dependencies> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>archiva-configuration</artifactId> - </dependency> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>metadata-repository-api</artifactId> - </dependency> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>archiva-common</artifactId> - </dependency> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>archiva-checksum</artifactId> - </dependency> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>metadata-model</artifactId> - </dependency> - - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-context</artifactId> - </dependency> - <dependency> - <groupId>javax.inject</groupId> - <artifactId>javax.inject</artifactId> - </dependency> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-lang3</artifactId> - </dependency> - - <!-- Test scope --> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>metadata-repository-api</artifactId> - <classifier>tests</classifier> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>archiva-test-utils</artifactId> - <version>${project.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>generic-metadata-support</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-jcl</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - </dependencies> - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - <configuration> - <systemPropertyVariables> - <archiva.repositorySessionFactory.id>file</archiva.repositorySessionFactory.id> - </systemPropertyVariables> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/archiva-modules/plugins/metadata-store-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java b/archiva-modules/plugins/metadata-store-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java deleted file mode 100644 index 00e68c118..000000000 --- a/archiva-modules/plugins/metadata-store-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java +++ /dev/null @@ -1,1315 +0,0 @@ -package org.apache.archiva.metadata.repository.file; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import org.apache.archiva.checksum.ChecksumAlgorithm; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.ManagedRepositoryConfiguration; -import org.apache.archiva.metadata.QueryParameter; -import org.apache.archiva.metadata.model.ArtifactMetadata; -import org.apache.archiva.metadata.model.CiManagement; -import org.apache.archiva.metadata.model.Dependency; -import org.apache.archiva.metadata.model.IssueManagement; -import org.apache.archiva.metadata.model.License; -import org.apache.archiva.metadata.model.MailingList; -import org.apache.archiva.metadata.model.MetadataFacet; -import org.apache.archiva.metadata.model.MetadataFacetFactory; -import org.apache.archiva.metadata.model.Organization; -import org.apache.archiva.metadata.model.ProjectMetadata; -import org.apache.archiva.metadata.model.ProjectVersionMetadata; -import org.apache.archiva.metadata.model.ProjectVersionReference; -import org.apache.archiva.metadata.model.Scm; -import org.apache.archiva.metadata.repository.AbstractMetadataRepository; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.MetadataRepositoryException; -import org.apache.archiva.metadata.repository.MetadataResolutionException; -import org.apache.archiva.metadata.repository.MetadataService; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.nio.file.FileVisitOption; -import java.nio.file.Files; -import java.nio.file.NoSuchFileException; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.time.Instant; -import java.time.ZoneId; -import java.time.ZonedDateTime; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Properties; -import java.util.Set; -import java.util.StringTokenizer; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -/** - * File implementation of the metadata repository. It uses property files in a separate directory tree. - * The implementation has no fulltext index. So fulltext queries are not supported. - * - * Some retrieval methods may not be very efficient. - */ -public class FileMetadataRepository - extends AbstractMetadataRepository implements MetadataRepository { - - private final ArchivaConfiguration configuration; - - private Logger log = LoggerFactory.getLogger(FileMetadataRepository.class); - - private static final String PROJECT_METADATA_KEY = "project-metadata"; - - private static final String PROJECT_VERSION_METADATA_KEY = "version-metadata"; - - private static final String NAMESPACE_METADATA_KEY = "namespace-metadata"; - - private static final String METADATA_KEY = "metadata"; - - private Map<String, Path> baseDirectory = new HashMap<>(); - - public FileMetadataRepository(MetadataService metadataService, - ArchivaConfiguration configuration) { - super(metadataService); - this.configuration = configuration; - } - - private Path getBaseDirectory(String repoId) - throws IOException { - if (!baseDirectory.containsKey(repoId)) { - Path baseDir; - ManagedRepositoryConfiguration managedRepositoryConfiguration = - configuration.getConfiguration().getManagedRepositoriesAsMap().get(repoId); - if (managedRepositoryConfiguration == null) { - baseDir = Files.createTempDirectory(repoId); - } else { - baseDir = Paths.get(managedRepositoryConfiguration.getLocation()); - } - baseDirectory.put(repoId, baseDir.resolve(".archiva")); - } - return baseDirectory.get(repoId); - } - - private Path getDirectory(String repoId) - throws IOException { - return getBaseDirectory(repoId).resolve("content"); - } - - @Override - public void updateProject(RepositorySession session, String repoId, ProjectMetadata project) { - updateProject(session, repoId, project.getNamespace(), project.getId()); - } - - private void updateProject(RepositorySession session, String repoId, String namespace, String id) { - // TODO: this is a more braindead implementation than we would normally expect, for prototyping purposes - updateNamespace(session, repoId, namespace); - - try { - Path namespaceDirectory = getDirectory(repoId).resolve(namespace); - Properties properties = new Properties(); - properties.setProperty("namespace", namespace); - properties.setProperty("id", id); - writeProperties(properties, namespaceDirectory.resolve(id), PROJECT_METADATA_KEY); - } catch (IOException e) { - log.error("Could not update project {}, {}, {}: {}", repoId, namespace, id, e.getMessage(), e); - } - } - - @Override - public void updateProjectVersion(RepositorySession session, String repoId, String namespace, String projectId, - ProjectVersionMetadata versionMetadata) { - - try { - updateProject(session, repoId, namespace, projectId); - - Path directory = - getDirectory(repoId).resolve(namespace + "/" + projectId + "/" + versionMetadata.getId()); - - Properties properties = readOrCreateProperties(directory, PROJECT_VERSION_METADATA_KEY); - // remove properties that are not references or artifacts - for (Object key : new ArrayList<>(properties.keySet())) { - String name = (String) key; - if (!name.contains(":") && !name.equals("facetIds")) { - properties.remove(name); - } - - // clear the facet contents so old properties are no longer written - clearMetadataFacetProperties(versionMetadata.getFacetList(), properties, ""); - } - properties.setProperty("id", versionMetadata.getId()); - setProperty(properties, "name", versionMetadata.getName()); - setProperty(properties, "description", versionMetadata.getDescription()); - setProperty(properties, "url", versionMetadata.getUrl()); - setProperty(properties, "incomplete", String.valueOf(versionMetadata.isIncomplete())); - if (versionMetadata.getScm() != null) { - setProperty(properties, "scm.connection", versionMetadata.getScm().getConnection()); - setProperty(properties, "scm.developerConnection", versionMetadata.getScm().getDeveloperConnection()); - setProperty(properties, "scm.url", versionMetadata.getScm().getUrl()); - } - if (versionMetadata.getCiManagement() != null) { - setProperty(properties, "ci.system", versionMetadata.getCiManagement().getSystem()); - setProperty(properties, "ci.url", versionMetadata.getCiManagement().getUrl()); - } - if (versionMetadata.getIssueManagement() != null) { - setProperty(properties, "issue.system", versionMetadata.getIssueManagement().getSystem()); - setProperty(properties, "issue.url", versionMetadata.getIssueManagement().getUrl()); - } - if (versionMetadata.getOrganization() != null) { - setProperty(properties, "org.name", versionMetadata.getOrganization().getName()); - setProperty(properties, "org.url", versionMetadata.getOrganization().getUrl()); - } - int i = 0; - for (License license : versionMetadata.getLicenses()) { - setProperty(properties, "license." + i + ".name", license.getName()); - setProperty(properties, "license." + i + ".url", license.getUrl()); - i++; - } - i = 0; - for (MailingList mailingList : versionMetadata.getMailingLists()) { - setProperty(properties, "mailingList." + i + ".archive", mailingList.getMainArchiveUrl()); - setProperty(properties, "mailingList." + i + ".name", mailingList.getName()); - setProperty(properties, "mailingList." + i + ".post", mailingList.getPostAddress()); - setProperty(properties, "mailingList." + i + ".unsubscribe", mailingList.getUnsubscribeAddress()); - setProperty(properties, "mailingList." + i + ".subscribe", mailingList.getSubscribeAddress()); - setProperty(properties, "mailingList." + i + ".otherArchives", - join(mailingList.getOtherArchives())); - i++; - } - i = 0; - ProjectVersionReference reference = new ProjectVersionReference(); - reference.setNamespace(namespace); - reference.setProjectId(projectId); - reference.setProjectVersion(versionMetadata.getId()); - reference.setReferenceType(ProjectVersionReference.ReferenceType.DEPENDENCY); - for (Dependency dependency : versionMetadata.getDependencies()) { - setProperty(properties, "dependency." + i + ".classifier", dependency.getClassifier()); - setProperty(properties, "dependency." + i + ".scope", dependency.getScope()); - setProperty(properties, "dependency." + i + ".systemPath", dependency.getSystemPath()); - setProperty(properties, "dependency." + i + ".artifactId", dependency.getArtifactId()); - setProperty(properties, "dependency." + i + ".groupId", dependency.getNamespace()); - setProperty(properties, "dependency." + i + ".version", dependency.getVersion()); - setProperty(properties, "dependency." + i + ".type", dependency.getType()); - setProperty(properties, "dependency." + i + ".optional", String.valueOf(dependency.isOptional())); - - updateProjectReference(repoId, dependency.getNamespace(), dependency.getArtifactId(), - dependency.getVersion(), reference); - - i++; - } - Set<String> facetIds = new LinkedHashSet<>(versionMetadata.getFacetIds()); - facetIds.addAll(Arrays.asList(properties.getProperty("facetIds", "").split(","))); - properties.setProperty("facetIds", join(facetIds)); - - updateProjectVersionFacets(versionMetadata, properties); - - writeProperties(properties, directory, PROJECT_VERSION_METADATA_KEY); - } catch (IOException e) { - log.error("Could not update project version {}, {}, {}: {}", repoId, namespace, versionMetadata.getId(), e.getMessage(), e); - } - } - - private void updateProjectVersionFacets(ProjectVersionMetadata versionMetadata, Properties properties) { - for (MetadataFacet facet : versionMetadata.getFacetList()) { - for (Map.Entry<String, String> entry : facet.toProperties().entrySet()) { - properties.setProperty(facet.getFacetId() + ":" + entry.getKey(), entry.getValue()); - } - } - } - - private static void clearMetadataFacetProperties(Collection<MetadataFacet> facetList, Properties properties, - String prefix) { - List<Object> propsToRemove = new ArrayList<>(); - for (MetadataFacet facet : facetList) { - for (Object key : new ArrayList<>(properties.keySet())) { - String keyString = (String) key; - if (keyString.startsWith(prefix + facet.getFacetId() + ":")) { - propsToRemove.add(key); - } - } - } - - for (Object key : propsToRemove) { - properties.remove(key); - } - } - - private void updateProjectReference(String repoId, String namespace, String projectId, String projectVersion, - ProjectVersionReference reference) { - try { - Path directory = getDirectory(repoId).resolve(namespace + "/" + projectId + "/" + projectVersion); - - Properties properties = readOrCreateProperties(directory, PROJECT_VERSION_METADATA_KEY); - int i = Integer.parseInt(properties.getProperty("ref:lastReferenceNum", "-1")) + 1; - setProperty(properties, "ref:lastReferenceNum", Integer.toString(i)); - setProperty(properties, "ref:reference." + i + ".namespace", reference.getNamespace()); - setProperty(properties, "ref:reference." + i + ".projectId", reference.getProjectId()); - setProperty(properties, "ref:reference." + i + ".projectVersion", reference.getProjectVersion()); - setProperty(properties, "ref:reference." + i + ".referenceType", reference.getReferenceType().toString()); - - writeProperties(properties, directory, PROJECT_VERSION_METADATA_KEY); - } catch (IOException e) { - log.error("Could not update project reference {}, {}, {}, {}: {}", repoId, namespace, projectId, projectVersion, e.getMessage(), e); - } - } - - @Override - public void updateNamespace(RepositorySession session, String repoId, String namespace) { - try { - Path namespaceDirectory = getDirectory(repoId).resolve(namespace); - Properties properties = new Properties(); - properties.setProperty("namespace", namespace); - writeProperties(properties, namespaceDirectory, NAMESPACE_METADATA_KEY); - - } catch (IOException e) { - log.error("Could not update namespace of {}, {}: {}", repoId, namespace, e.getMessage(), e); - } - } - - @Override - public List<String> getMetadataFacets(RepositorySession session, String repoId, String facetId) - throws MetadataRepositoryException { - try { - Path directory = getMetadataDirectory(repoId, facetId); - if (!(Files.exists(directory) && Files.isDirectory(directory))) { - return Collections.emptyList(); - } - List<String> facets; - final String searchFile = METADATA_KEY + ".properties"; - try (Stream<Path> fs = Files.walk(directory, FileVisitOption.FOLLOW_LINKS)) { - facets = fs.filter(Files::isDirectory).filter(path -> Files.exists(path.resolve(searchFile))) - .map(path -> directory.relativize(path).toString()).collect(Collectors.toList()); - } - return facets; - } catch (IOException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - @Override - public <T extends MetadataFacet> Stream<T> getMetadataFacetStream(RepositorySession session, String repositoryId, Class<T> facetClazz, QueryParameter queryParameter) throws MetadataRepositoryException { - final MetadataFacetFactory<T> metadataFacetFactory = getFacetFactory(facetClazz); - if (metadataFacetFactory == null) { - return null; - } - final String facetId = metadataFacetFactory.getFacetId(); - final String searchFile = METADATA_KEY + ".properties"; - try { - Path directory = getMetadataDirectory(repositoryId, facetId); - return Files.walk(directory, FileVisitOption.FOLLOW_LINKS).filter(Files::isDirectory) - .filter(path -> Files.exists(path.resolve(searchFile))) - .map(path -> directory.relativize(path).toString()) - .sorted() - .skip(queryParameter.getOffset()) - .limit(queryParameter.getLimit()) - .map(name -> getMetadataFacet(session, repositoryId, facetClazz, name)); - } catch (IOException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - @Override - public boolean hasMetadataFacet(RepositorySession session, String repositoryId, String facetId) - throws MetadataRepositoryException { - - try { - Path directory = getMetadataDirectory(repositoryId, facetId); - if (!(Files.exists(directory) && Files.isDirectory(directory))) { - return false; - } - final String searchFile = METADATA_KEY + ".properties"; - try (Stream<Path> fs = Files.walk(directory, FileVisitOption.FOLLOW_LINKS)) { - return fs.filter(Files::isDirectory).anyMatch(path -> Files.exists(path.resolve(searchFile))); - } - } catch (IOException e) { - log.error("Could not retrieve facet metatadata {}, {}: {}", repositoryId, facetId, e.getMessage(), e); - throw new MetadataRepositoryException(e.getMessage(), e); - } - - } - - - @Override - public <T extends MetadataFacet> T getMetadataFacet(RepositorySession session, String repositoryId, Class<T> facetClazz, String name) { - final MetadataFacetFactory<T> metadataFacetFactory = getFacetFactory(facetClazz); - if (metadataFacetFactory == null) { - return null; - } - final String facetId = metadataFacetFactory.getFacetId(); - - Properties properties; - try { - properties = - readProperties(getMetadataDirectory(repositoryId, facetId).resolve(name), METADATA_KEY); - } catch (NoSuchFileException | FileNotFoundException e) { - return null; - } catch (IOException e) { - log.error("Could not read properties from {}, {}: {}", repositoryId, facetId, e.getMessage(), e); - return null; - } - T metadataFacet = null; - if (metadataFacetFactory != null) { - metadataFacet = metadataFacetFactory.createMetadataFacet(repositoryId, name); - Map<String, String> map = new HashMap<>(); - for (Object key : new ArrayList<>(properties.keySet())) { - String property = (String) key; - map.put(property, properties.getProperty(property)); - } - metadataFacet.fromProperties(map); - } - return metadataFacet; - } - - - @Override - public void addMetadataFacet(RepositorySession session, String repositoryId, MetadataFacet metadataFacet) { - Properties properties = new Properties(); - properties.putAll(metadataFacet.toProperties()); - - try { - Path directory = - getMetadataDirectory(repositoryId, metadataFacet.getFacetId()).resolve(metadataFacet.getName()); - writeProperties(properties, directory, METADATA_KEY); - } catch (IOException e) { - // TODO! - log.error(e.getMessage(), e); - } - } - - @Override - public void removeMetadataFacets(RepositorySession session, String repositoryId, String facetId) - throws MetadataRepositoryException { - try { - Path dir = getMetadataDirectory(repositoryId, facetId); - org.apache.archiva.common.utils.FileUtils.deleteDirectory(dir); - } catch (IOException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - @Override - public void removeMetadataFacet(RepositorySession session, String repoId, String facetId, String name) - throws MetadataRepositoryException { - try { - Path dir = getMetadataDirectory(repoId, facetId).resolve(name); - org.apache.archiva.common.utils.FileUtils.deleteDirectory(dir); - } catch (IOException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - @Override - public List<ArtifactMetadata> getArtifactsByDateRange(RepositorySession session, String repoId, ZonedDateTime startTime, ZonedDateTime endTime) - throws MetadataRepositoryException { - try { - List<ArtifactMetadata> artifacts = new ArrayList<>(); - for (String ns : getRootNamespaces(session, repoId)) { - getArtifactsByDateRange(session, artifacts, repoId, ns, startTime, endTime); - } - artifacts.sort(new ArtifactComparator()); - return artifacts; - } catch (MetadataResolutionException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - - /** - * Result is sorted by date, - * - * @param session The repository session - * @param repositoryId The repository id - * @param startTime The start time, can be <code>null</code> - * @param endTime The end time, can be <code>null</code> - * @param queryParameter Additional parameters for the query that affect ordering and number of returned results. - * @return - * @throws MetadataRepositoryException - */ - @Override - public Stream<ArtifactMetadata> getArtifactByDateRangeStream( RepositorySession session, String repositoryId, ZonedDateTime startTime, ZonedDateTime endTime, QueryParameter queryParameter) throws MetadataRepositoryException { - try { - List<ArtifactMetadata> artifacts = new ArrayList<>(); - for (String ns : getRootNamespaces(session, repositoryId)) { - getArtifactsByDateRange(session, artifacts, repositoryId, ns, startTime, endTime); - } - Comparator<ArtifactMetadata> comp = getArtifactMetadataComparator(queryParameter, "whenGathered"); - return artifacts.stream().sorted(comp).skip(queryParameter.getOffset()).limit(queryParameter.getLimit()); - - } catch (MetadataResolutionException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - - private void getArtifactsByDateRange(RepositorySession session, List<ArtifactMetadata> artifacts, String repoId, String ns, ZonedDateTime startTime, - ZonedDateTime endTime) - throws MetadataRepositoryException { - try { - for (String namespace : this.getChildNamespaces(session, repoId, ns)) { - getArtifactsByDateRange(session, artifacts, repoId, ns + "." + namespace, startTime, endTime); - } - - for (String project : getProjects(session, repoId, ns)) { - for (String version : getProjectVersions(session, repoId, ns, project)) { - for (ArtifactMetadata artifact : getArtifacts(session, repoId, ns, project, version)) { - if (startTime == null || startTime.isBefore(ZonedDateTime.from(artifact.getWhenGathered().toInstant().atZone(ZoneId.systemDefault())))) { - if (endTime == null || endTime.isAfter(ZonedDateTime.from(artifact.getWhenGathered().toInstant().atZone(ZoneId.systemDefault())))) { - artifacts.add(artifact); - } - } - } - } - } - } catch (MetadataResolutionException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - - @Override - public List<ArtifactMetadata> getArtifacts( RepositorySession session, String repoId, String namespace, String projectId, - String projectVersion) - throws MetadataResolutionException { - try { - Map<String, ArtifactMetadata> artifacts = new HashMap<>(); - - Path directory = getDirectory(repoId).resolve(namespace + "/" + projectId + "/" + projectVersion); - - Properties properties = readOrCreateProperties(directory, PROJECT_VERSION_METADATA_KEY); - - for (Map.Entry entry : properties.entrySet()) { - String name = (String) entry.getKey(); - StringTokenizer tok = new StringTokenizer(name, ":"); - if (tok.hasMoreTokens() && "artifact".equals(tok.nextToken())) { - String field = tok.nextToken(); - String id = tok.nextToken(); - - ArtifactMetadata artifact = artifacts.get(id); - if (artifact == null) { - artifact = new ArtifactMetadata(); - artifact.setRepositoryId(repoId); - artifact.setNamespace(namespace); - artifact.setProject(projectId); - artifact.setProjectVersion(projectVersion); - artifact.setVersion(projectVersion); - artifact.setId(id); - artifacts.put(id, artifact); - } - - String value = (String) entry.getValue(); - if ("updated".equals(field)) { - artifact.setFileLastModified(Long.parseLong(value)); - } else if ("size".equals(field)) { - artifact.setSize(Long.valueOf(value)); - } else if ("whenGathered".equals(field)) { - artifact.setWhenGathered(ZonedDateTime.ofInstant(Instant.ofEpochMilli(Long.parseLong(value)), ZoneId.of("GMT"))); - } else if ("version".equals(field)) { - artifact.setVersion(value); - } else if (field.startsWith("checksum")) { - String algorithmStr = StringUtils.removeStart( name, "artifact:checksum:"+id+":"); - artifact.setChecksum( ChecksumAlgorithm.valueOf( algorithmStr ), value ); - } else if ("facetIds".equals(field)) { - if (value.length() > 0) { - String propertyPrefix = "artifact:facet:" + id + ":"; - for (String facetId : value.split(",")) { - MetadataFacetFactory factory = getFacetFactory(facetId); - if (factory == null) { - log.error("Attempted to load unknown artifact metadata facet: {}", facetId); - } else { - MetadataFacet facet = factory.createMetadataFacet(); - String prefix = propertyPrefix + facet.getFacetId(); - Map<String, String> map = new HashMap<>(); - for (Object key : new ArrayList<>(properties.keySet())) { - String property = (String) key; - if (property.startsWith(prefix)) { - map.put(property.substring(prefix.length() + 1), - properties.getProperty(property)); - } - } - facet.fromProperties(map); - artifact.addFacet(facet); - } - } - } - - updateArtifactFacets(artifact, properties); - } - } - } - return new ArrayList<>(artifacts.values()); - } catch (IOException e) { - throw new MetadataResolutionException(e.getMessage(), e); - } - } - - - @Override - public void close() { - // nothing additional to close - } - - - private void updateArtifactFacets(ArtifactMetadata artifact, Properties properties) { - String propertyPrefix = "artifact:facet:" + artifact.getId() + ":"; - for (MetadataFacet facet : artifact.getFacetList()) { - for (Map.Entry<String, String> e : facet.toProperties().entrySet()) { - String key = propertyPrefix + facet.getFacetId() + ":" + e.getKey(); - properties.setProperty(key, e.getValue()); - } - } - } - - @Override - public List<ArtifactMetadata> getArtifactsByChecksum(RepositorySession session, String repositoryId, String checksum) - throws MetadataRepositoryException { - try { - // TODO: this is quite slow - if we are to persist with this repository implementation we should build an index - // of this information (eg. in Lucene, as before) - // alternatively, we could build a referential tree in the content repository, however it would need some levels - // of depth to avoid being too broad to be useful (eg. /repository/checksums/a/ab/abcdef1234567) - - return getArtifactStream( session, repositoryId ).filter( - a -> a.hasChecksum( checksum ) - ).collect( Collectors.toList() ); - } catch (MetadataResolutionException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - @Override - public void removeNamespace(RepositorySession session, String repositoryId, String project) - throws MetadataRepositoryException { - try { - Path namespaceDirectory = getDirectory(repositoryId).resolve(project); - org.apache.archiva.common.utils.FileUtils.deleteDirectory(namespaceDirectory); - //Properties properties = new Properties(); - //properties.setProperty( "namespace", namespace ); - //writeProperties( properties, namespaceDirectory, NAMESPACE_METADATA_KEY ); - - } catch (IOException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - @Override - public void removeTimestampedArtifact( RepositorySession session, ArtifactMetadata artifactMetadata, String baseVersion) - throws MetadataRepositoryException { - - try { - Path directory = getDirectory(artifactMetadata.getRepositoryId()).resolve( - artifactMetadata.getNamespace() + "/" + artifactMetadata.getProject() + "/" - + baseVersion); - - Properties properties = readOrCreateProperties(directory, PROJECT_VERSION_METADATA_KEY); - - String id = artifactMetadata.getId(); - - properties.remove("artifact:updated:" + id); - properties.remove("artifact:whenGathered:" + id); - properties.remove("artifact:size:" + id); - artifactMetadata.getChecksums().entrySet().stream().forEach( entry -> - properties.remove( "artifact:checksum:"+id+":"+entry.getKey().name() )); - properties.remove("artifact:version:" + id); - properties.remove("artifact:facetIds:" + id); - - String prefix = "artifact:facet:" + id + ":"; - for (Object key : new ArrayList<>(properties.keySet())) { - String property = (String) key; - if (property.startsWith(prefix)) { - properties.remove(property); - } - } - - writeProperties(properties, directory, PROJECT_VERSION_METADATA_KEY); - } catch (IOException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - - } - - @Override - public void removeArtifact(RepositorySession session, String repoId, String namespace, String project, String version, String id) - throws MetadataRepositoryException { - try { - Path directory = getDirectory(repoId).resolve(namespace + "/" + project + "/" + version); - - Properties properties = readOrCreateProperties(directory, PROJECT_VERSION_METADATA_KEY); - - properties.remove("artifact:updated:" + id); - properties.remove("artifact:whenGathered:" + id); - properties.remove("artifact:size:" + id); - properties.remove("artifact:version:" + id); - properties.remove("artifact:facetIds:" + id); - - String facetPrefix = "artifact:facet:" + id + ":"; - String checksumPrefix = "artifact:checksum:"+id+":"; - for (String property : properties.stringPropertyNames()) { - if (property.startsWith( checksumPrefix )) { - properties.remove( property ); - } else if (property.startsWith(facetPrefix)) { - properties.remove(property); - } - } - - org.apache.archiva.common.utils.FileUtils.deleteDirectory(directory); - //writeProperties( properties, directory, PROJECT_VERSION_METADATA_KEY ); - } catch (IOException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - /** - * FIXME implements this !!!! - * - * @param session - * @param repositoryId - * @param namespace - * @param project - * @param projectVersion - * @param metadataFacet will remove artifacts which have this {@link MetadataFacet} using equals - * @throws MetadataRepositoryException - */ - @Override - public void removeFacetFromArtifact( RepositorySession session, String repositoryId, String namespace, String project, String projectVersion, - MetadataFacet metadataFacet) - throws MetadataRepositoryException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void removeRepository(RepositorySession session, String repoId) - throws MetadataRepositoryException { - try { - Path dir = getDirectory(repoId); - org.apache.archiva.common.utils.FileUtils.deleteDirectory(dir); - } catch (IOException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - - @Override - public List<ArtifactMetadata> getArtifactsByProjectVersionFacet( RepositorySession session, String key, String value, String repositoryId) - throws MetadataRepositoryException { - throw new UnsupportedOperationException("not yet implemented in File backend"); - } - - @Override - public List<ArtifactMetadata> getArtifactsByAttribute( RepositorySession session, String key, String value, String repositoryId) - throws MetadataRepositoryException { - throw new UnsupportedOperationException("not yet implemented in File backend"); - } - - @Override - public List<ArtifactMetadata> getArtifactsByProjectVersionAttribute( RepositorySession session, String key, String value, String repositoryId) - throws MetadataRepositoryException { - throw new UnsupportedOperationException("getArtifactsByProjectVersionAttribute not yet implemented in File backend"); - } - - private Path getMetadataDirectory(String repoId, String facetId) - throws IOException { - return getBaseDirectory(repoId).resolve("facets/" + facetId); - } - - private String join(Collection<String> ids) { - if (ids != null && !ids.isEmpty()) { - StringBuilder s = new StringBuilder(); - for (String id : ids) { - s.append(id); - s.append(","); - } - return s.substring(0, s.length() - 1); - } - return ""; - } - - private void setProperty(Properties properties, String name, String value) { - if (value != null) { - properties.setProperty(name, value); - } - } - - @Override - public void updateArtifact(RepositorySession session, String repoId, String namespace, String projectId, String projectVersion, - ArtifactMetadata artifact) { - try { - ProjectVersionMetadata metadata = new ProjectVersionMetadata(); - metadata.setId(projectVersion); - updateProjectVersion(session, repoId, namespace, projectId, metadata); - - Path directory = getDirectory(repoId).resolve(namespace + "/" + projectId + "/" + projectVersion); - - Properties properties = readOrCreateProperties(directory, PROJECT_VERSION_METADATA_KEY); - - clearMetadataFacetProperties(artifact.getFacetList(), properties, - "artifact:facet:" + artifact.getId() + ":"); - - String id = artifact.getId(); - properties.setProperty("artifact:updated:" + id, - Long.toString(artifact.getFileLastModified().toInstant().toEpochMilli())); - properties.setProperty("artifact:whenGathered:" + id, - Long.toString(artifact.getWhenGathered().toInstant().toEpochMilli())); - properties.setProperty("artifact:size:" + id, Long.toString(artifact.getSize())); - artifact.getChecksums().entrySet().stream().forEach( entry -> - properties.setProperty( "artifact:checksum:"+id+":"+entry.getKey().name(), entry.getValue() )); - properties.setProperty("artifact:version:" + id, artifact.getVersion()); - - Set<String> facetIds = new LinkedHashSet<>(artifact.getFacetIds()); - String property = "artifact:facetIds:" + id; - facetIds.addAll(Arrays.asList(properties.getProperty(property, "").split(","))); - properties.setProperty(property, join(facetIds)); - - updateArtifactFacets(artifact, properties); - - writeProperties(properties, directory, PROJECT_VERSION_METADATA_KEY); - } catch (IOException e) { - // TODO - log.error(e.getMessage(), e); - } - } - - private Properties readOrCreateProperties(Path directory, String propertiesKey) { - try { - return readProperties(directory, propertiesKey); - } catch (FileNotFoundException | NoSuchFileException e) { - // ignore and return new properties - } catch (IOException e) { - // TODO - log.error(e.getMessage(), e); - } - return new Properties(); - } - - private Properties readProperties(Path directory, String propertiesKey) - throws IOException { - Properties properties = new Properties(); - try (InputStream in = Files.newInputStream(directory.resolve(propertiesKey + ".properties"))) { - - properties.load(in); - } - return properties; - } - - @Override - public ProjectMetadata getProject(RepositorySession session, String repoId, String namespace, String projectId) - throws MetadataResolutionException { - try { - Path directory = getDirectory(repoId).resolve(namespace + "/" + projectId); - - Properties properties = readOrCreateProperties(directory, PROJECT_METADATA_KEY); - - ProjectMetadata project = null; - - String id = properties.getProperty("id"); - if (id != null) { - project = new ProjectMetadata(); - project.setNamespace(properties.getProperty("namespace")); - project.setId(id); - } - - return project; - } catch (IOException e) { - throw new MetadataResolutionException(e.getMessage(), e); - } - } - - @Override - public ProjectVersionMetadata getProjectVersion(RepositorySession session, String repoId, String namespace, String projectId, - String projectVersion) - throws MetadataResolutionException { - try { - Path directory = getDirectory(repoId).resolve(namespace + "/" + projectId + "/" + projectVersion); - - Properties properties = readOrCreateProperties(directory, PROJECT_VERSION_METADATA_KEY); - String id = properties.getProperty("id"); - ProjectVersionMetadata versionMetadata = null; - if (id != null) { - versionMetadata = new ProjectVersionMetadata(); - versionMetadata.setId(id); - versionMetadata.setName(properties.getProperty("name")); - versionMetadata.setDescription(properties.getProperty("description")); - versionMetadata.setUrl(properties.getProperty("url")); - versionMetadata.setIncomplete(Boolean.valueOf(properties.getProperty("incomplete", "false"))); - - String scmConnection = properties.getProperty("scm.connection"); - String scmDeveloperConnection = properties.getProperty("scm.developerConnection"); - String scmUrl = properties.getProperty("scm.url"); - if (scmConnection != null || scmDeveloperConnection != null || scmUrl != null) { - Scm scm = new Scm(); - scm.setConnection(scmConnection); - scm.setDeveloperConnection(scmDeveloperConnection); - scm.setUrl(scmUrl); - versionMetadata.setScm(scm); - } - - String ciSystem = properties.getProperty("ci.system"); - String ciUrl = properties.getProperty("ci.url"); - if (ciSystem != null || ciUrl != null) { - CiManagement ci = new CiManagement(); - ci.setSystem(ciSystem); - ci.setUrl(ciUrl); - versionMetadata.setCiManagement(ci); - } - - String issueSystem = properties.getProperty("issue.system"); - String issueUrl = properties.getProperty("issue.url"); - if (issueSystem != null || issueUrl != null) { - IssueManagement issueManagement = new IssueManagement(); - issueManagement.setSystem(issueSystem); - issueManagement.setUrl(issueUrl); - versionMetadata.setIssueManagement(issueManagement); - } - - String orgName = properties.getProperty("org.name"); - String orgUrl = properties.getProperty("org.url"); - if (orgName != null || orgUrl != null) { - Organization org = new Organization(); - org.setName(orgName); - org.setUrl(orgUrl); - versionMetadata.setOrganization(org); - } - - boolean done = false; - int i = 0; - while (!done) { - String licenseName = properties.getProperty("license." + i + ".name"); - String licenseUrl = properties.getProperty("license." + i + ".url"); - if (licenseName != null || licenseUrl != null) { - License license = new License(); - license.setName(licenseName); - license.setUrl(licenseUrl); - versionMetadata.addLicense(license); - } else { - done = true; - } - i++; - } - - done = false; - i = 0; - while (!done) { - String mailingListName = properties.getProperty("mailingList." + i + ".name"); - if (mailingListName != null) { - MailingList mailingList = new MailingList(); - mailingList.setName(mailingListName); - mailingList.setMainArchiveUrl(properties.getProperty("mailingList." + i + ".archive")); - String p = properties.getProperty("mailingList." + i + ".otherArchives"); - if (p != null && p.length() > 0) { - mailingList.setOtherArchives(Arrays.asList(p.split(","))); - } else { - mailingList.setOtherArchives(Collections.emptyList()); - } - mailingList.setPostAddress(properties.getProperty("mailingList." + i + ".post")); - mailingList.setSubscribeAddress(properties.getProperty("mailingList." + i + ".subscribe")); - mailingList.setUnsubscribeAddress( - properties.getProperty("mailingList." + i + ".unsubscribe")); - versionMetadata.addMailingList(mailingList); - } else { - done = true; - } - i++; - } - - done = false; - i = 0; - while (!done) { - String dependencyArtifactId = properties.getProperty("dependency." + i + ".artifactId"); - if (dependencyArtifactId != null) { - Dependency dependency = new Dependency(); - dependency.setArtifactId(dependencyArtifactId); - dependency.setNamespace(properties.getProperty("dependency." + i + ".groupId")); - dependency.setClassifier(properties.getProperty("dependency." + i + ".classifier")); - dependency.setOptional( - Boolean.valueOf(properties.getProperty("dependency." + i + ".optional"))); - dependency.setScope(properties.getProperty("dependency." + i + ".scope")); - dependency.setSystemPath(properties.getProperty("dependency." + i + ".systemPath")); - dependency.setType(properties.getProperty("dependency." + i + ".type")); - dependency.setVersion(properties.getProperty("dependency." + i + ".version")); - dependency.setOptional( - Boolean.valueOf(properties.getProperty("dependency." + i + ".optional"))); - versionMetadata.addDependency(dependency); - } else { - done = true; - } - i++; - } - - String facetIds = properties.getProperty("facetIds", ""); - if (facetIds.length() > 0) { - for (String facetId : facetIds.split(",")) { - MetadataFacetFactory factory = getFacetFactory(facetId); - if (factory == null) { - log.error("Attempted to load unknown project version metadata facet: {}", facetId); - } else { - MetadataFacet facet = factory.createMetadataFacet(); - Map<String, String> map = new HashMap<>(); - for (Object key : new ArrayList<>(properties.keySet())) { - String property = (String) key; - if (property.startsWith(facet.getFacetId())) { - map.put(property.substring(facet.getFacetId().length() + 1), - properties.getProperty(property)); - } - } - facet.fromProperties(map); - versionMetadata.addFacet(facet); - } - } - } - - updateProjectVersionFacets(versionMetadata, properties); - } - return versionMetadata; - } catch (IOException e) { - throw new MetadataResolutionException(e.getMessage(), e); - } - } - - @Override - public List<String> getArtifactVersions( RepositorySession session, String repoId, String namespace, String projectId, - String projectVersion) - throws MetadataResolutionException { - try { - Path directory = getDirectory(repoId).resolve(namespace + "/" + projectId + "/" + projectVersion); - - Properties properties = readOrCreateProperties(directory, PROJECT_VERSION_METADATA_KEY); - - Set<String> versions = new HashSet<>(); - for (Map.Entry entry : properties.entrySet()) { - String name = (String) entry.getKey(); - if (name.startsWith("artifact:version:")) { - versions.add((String) entry.getValue()); - } - } - return new ArrayList<>( versions ); - } catch (IOException e) { - throw new MetadataResolutionException(e.getMessage(), e); - } - } - - @Override - public List<ProjectVersionReference> getProjectReferences( RepositorySession session, String repoId, String namespace, String projectId, - String projectVersion) - throws MetadataResolutionException { - try { - Path directory = getDirectory(repoId).resolve(namespace + "/" + projectId + "/" + projectVersion); - - Properties properties = readOrCreateProperties(directory, PROJECT_VERSION_METADATA_KEY); - int numberOfRefs = Integer.parseInt(properties.getProperty("ref:lastReferenceNum", "-1")) + 1; - - List<ProjectVersionReference> references = new ArrayList<>(); - for (int i = 0; i < numberOfRefs; i++) { - ProjectVersionReference reference = new ProjectVersionReference(); - reference.setProjectId(properties.getProperty("ref:reference." + i + ".projectId")); - reference.setNamespace(properties.getProperty("ref:reference." + i + ".namespace")); - reference.setProjectVersion(properties.getProperty("ref:reference." + i + ".projectVersion")); - reference.setReferenceType(ProjectVersionReference.ReferenceType.valueOf( - properties.getProperty("ref:reference." + i + ".referenceType"))); - references.add(reference); - } - return references; - } catch (IOException e) { - throw new MetadataResolutionException(e.getMessage(), e); - } - } - - @Override - public List<String> getRootNamespaces( RepositorySession session, String repoId) - throws MetadataResolutionException { - return this.getChildNamespaces(session, repoId, null); - } - - private Stream<String> getAllNamespacesStream(RepositorySession session, String repoId) { - Path directory = null; - try - { - directory = getDirectory(repoId); - } - catch ( IOException e ) - { - return Stream.empty( ); - } - if (!(Files.exists(directory) && Files.isDirectory(directory))) { - return Stream.empty( ); - } - final String searchFile = NAMESPACE_METADATA_KEY + ".properties"; - try - { - return Files.list(directory).filter(Files::isDirectory).filter(path -> - Files.exists(path.resolve(searchFile)) - ).map(path -> path.getFileName().toString()); - } - catch ( IOException e ) - { - return Stream.empty( ); - } - } - - @Override - public List<String> getChildNamespaces( RepositorySession session, String repoId, String baseNamespace) - throws MetadataResolutionException { - try { - List<String> allNamespaces; - Path directory = getDirectory(repoId); - if (!(Files.exists(directory) && Files.isDirectory(directory))) { - return Collections.emptyList(); - } - final String searchFile = NAMESPACE_METADATA_KEY + ".properties"; - try (Stream<Path> fs = Files.list(directory)) { - allNamespaces = fs.filter(Files::isDirectory).filter(path -> - Files.exists(path.resolve(searchFile)) - ).map(path -> path.getFileName().toString()).collect(Collectors.toList()); - } - - Set<String> namespaces = new LinkedHashSet<>(); - int fromIndex = baseNamespace != null ? baseNamespace.length() + 1 : 0; - for (String namespace : allNamespaces) { - if (baseNamespace == null || namespace.startsWith(baseNamespace + ".")) { - int i = namespace.indexOf('.', fromIndex); - if (i >= 0) { - namespaces.add(namespace.substring(fromIndex, i)); - } else { - namespaces.add(namespace.substring(fromIndex)); - } - } - } - return new ArrayList<>(namespaces); - } catch (IOException e) { - throw new MetadataResolutionException(e.getMessage(), e); - } - } - - @Override - public List<String> getProjects( RepositorySession session, String repoId, String namespace) - throws MetadataResolutionException { - try { - List<String> projects; - Path directory = getDirectory(repoId).resolve(namespace); - if (!(Files.exists(directory) && Files.isDirectory(directory))) { - return Collections.emptyList(); - } - final String searchFile = PROJECT_METADATA_KEY + ".properties"; - try (Stream<Path> fs = Files.list(directory)) { - projects = fs.filter(Files::isDirectory).filter(path -> - Files.exists(path.resolve(searchFile)) - ).map(path -> path.getFileName().toString()).collect(Collectors.toList()); - } - - return projects; - } catch (IOException e) { - throw new MetadataResolutionException(e.getMessage(), e); - } - } - - @Override - public List<String> getProjectVersions( RepositorySession session, String repoId, String namespace, String projectId) - throws MetadataResolutionException { - try { - List<String> projectVersions; - Path directory = getDirectory(repoId).resolve(namespace + "/" + projectId); - if (!(Files.exists(directory) && Files.isDirectory(directory))) { - return Collections.emptyList(); - } - final String searchFile = PROJECT_VERSION_METADATA_KEY + ".properties"; - try (Stream<Path> fs = Files.list(directory)) { - projectVersions = fs.filter(Files::isDirectory).filter(path -> - Files.exists(path.resolve(searchFile)) - ).map(path -> path.getFileName().toString()).collect(Collectors.toList()); - } - return projectVersions; - } catch (IOException e) { - throw new MetadataResolutionException(e.getMessage(), e); - } - } - - @Override - public void removeProject(RepositorySession session, String repositoryId, String namespace, String projectId) - throws MetadataRepositoryException { - try { - Path directory = getDirectory(repositoryId).resolve(namespace + "/" + projectId); - org.apache.archiva.common.utils.FileUtils.deleteDirectory(directory); - } catch (IOException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - @Override - public void removeProjectVersion(RepositorySession session, String repoId, String namespace, String projectId, String projectVersion) - throws MetadataRepositoryException { - try { - Path directory = getDirectory(repoId).resolve(namespace + "/" + projectId + "/" + projectVersion); - org.apache.archiva.common.utils.FileUtils.deleteDirectory(directory); - } catch (IOException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - - } - - private void writeProperties(Properties properties, Path directory, String propertiesKey) - throws IOException { - Files.createDirectories(directory); - try (OutputStream os = Files.newOutputStream(directory.resolve(propertiesKey + ".properties"))) { - properties.store(os, null); - } - } - - private static class ArtifactComparator - implements Comparator<ArtifactMetadata> { - @Override - public int compare(ArtifactMetadata artifact1, ArtifactMetadata artifact2) { - if (artifact1.getWhenGathered() == artifact2.getWhenGathered()) { - return 0; - } - if (artifact1.getWhenGathered() == null) { - return 1; - } - if (artifact2.getWhenGathered() == null) { - return -1; - } - return artifact1.getWhenGathered().compareTo(artifact2.getWhenGathered()); - } - } - - @Override - public List<ArtifactMetadata> getArtifacts(RepositorySession session, String repoId) - throws MetadataRepositoryException { - try { - List<ArtifactMetadata> artifacts = new ArrayList<>(); - for (String ns : getRootNamespaces(session, repoId)) { - getArtifacts(session, artifacts, repoId, ns); - } - return artifacts; - } catch (MetadataResolutionException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - private class ArtifactCoordinates { - final String namespace; - final String project; - final String version; - - public ArtifactCoordinates(String namespace, String project, String version) { - this.namespace = namespace; - this.project = project; - this.version = version; - } - - public String getNamespace( ) - { - return namespace; - } - - public String getProject( ) - { - return project; - } - - public String getVersion( ) - { - return version; - } - } - - @Override - public Stream<ArtifactMetadata> getArtifactStream( final RepositorySession session, final String repositoryId, - QueryParameter queryParameter ) throws MetadataResolutionException - { - - return getAllNamespacesStream( session, repositoryId ).filter( Objects::nonNull ).flatMap( ns -> - { - try - { - return getProjects( session, repositoryId, ns ).stream( ).map( proj -> - new ArtifactCoordinates( ns, proj, null ) ); - } - catch ( MetadataResolutionException e ) - { - return null; - } - } - ).filter( Objects::nonNull ).flatMap( artifactCoordinates -> - { - try - { - return getProjectVersions( session, repositoryId, artifactCoordinates.getNamespace( ), artifactCoordinates.getProject( ) ) - .stream( ).map(version -> new ArtifactCoordinates( artifactCoordinates.getNamespace(), artifactCoordinates.getProject(), version )); - } - catch ( MetadataResolutionException e ) - { - return null; - } - } - ).filter( Objects::nonNull ).flatMap( ac -> - { - try - { - return getArtifactStream( session, repositoryId, ac.getNamespace(), ac.getProject(), ac.getVersion() ); - } - catch ( MetadataResolutionException e ) - { - return null; - } - } - ).filter( Objects::nonNull ); - } - - @Override - public Stream<ArtifactMetadata> getArtifactStream( final RepositorySession session, final String repoId, - final String namespace, final String projectId, - final String projectVersion ) throws MetadataResolutionException - { - return getArtifacts( session, repoId, namespace, projectId, projectVersion ).stream( ); - } - - private void getArtifacts(RepositorySession session, List<ArtifactMetadata> artifacts, String repoId, String ns) - throws MetadataResolutionException { - for (String namespace : this.getChildNamespaces(session, repoId, ns)) { - getArtifacts(session, artifacts, repoId, ns + "." + namespace); - } - - for (String project : getProjects(session, repoId, ns)) { - for (String version : getProjectVersions(session, repoId, ns, project)) { - artifacts.addAll(getArtifacts(session, repoId, ns, project, version)); - } - } - } - - @Override - public List<ArtifactMetadata> searchArtifacts(RepositorySession session, String repositoryId, String text, boolean exact) { - throw new UnsupportedOperationException("searchArtifacts not yet implemented in File backend"); - } - - @Override - public List<ArtifactMetadata> searchArtifacts(RepositorySession session, String repositoryId, String key, String text, boolean exact) { - throw new UnsupportedOperationException("searchArtifacts not yet implemented in File backend"); - } -} diff --git a/archiva-modules/plugins/metadata-store-file/src/main/java/org/apache/archiva/metadata/repository/file/FileRepositorySessionFactory.java b/archiva-modules/plugins/metadata-store-file/src/main/java/org/apache/archiva/metadata/repository/file/FileRepositorySessionFactory.java deleted file mode 100644 index 911dea071..000000000 --- a/archiva-modules/plugins/metadata-store-file/src/main/java/org/apache/archiva/metadata/repository/file/FileRepositorySessionFactory.java +++ /dev/null @@ -1,79 +0,0 @@ -package org.apache.archiva.metadata.repository.file; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.metadata.model.MetadataFacetFactory; -import org.apache.archiva.metadata.repository.AbstractRepositorySessionFactory; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.MetadataRepositoryException; -import org.apache.archiva.metadata.repository.MetadataResolver; -import org.apache.archiva.metadata.repository.MetadataService; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.metadata.repository.RepositorySessionFactory; -import org.apache.commons.lang3.StringUtils; -import org.springframework.context.ApplicationContext; -import org.springframework.stereotype.Service; - -import javax.inject.Inject; -import javax.inject.Named; -import java.util.HashMap; -import java.util.Map; - -/** - * - */ -@Service( "repositorySessionFactory#file" ) -public class FileRepositorySessionFactory extends AbstractRepositorySessionFactory - implements RepositorySessionFactory -{ - @Inject - @Named( value = "archivaConfiguration#default" ) - private ArchivaConfiguration configuration; - - @Inject - private MetadataResolver metadataResolver; - - @Inject - private ApplicationContext applicationContext; - - @Inject - private MetadataService metadataService; - - public void initialize() - { - Map<String, MetadataFacetFactory> tmpMetadataFacetFactories = - applicationContext.getBeansOfType( MetadataFacetFactory.class ); - } - - @Override - protected void shutdown() { - // do nothing - } - - @Override - public RepositorySession createSession() throws MetadataRepositoryException - { - MetadataRepository metadataRepository = new FileMetadataRepository( metadataService, configuration ); - - return new RepositorySession( metadataRepository, metadataResolver ); - } - -} diff --git a/archiva-modules/plugins/metadata-store-file/src/main/resources/META-INF/spring-context.xml b/archiva-modules/plugins/metadata-store-file/src/main/resources/META-INF/spring-context.xml deleted file mode 100755 index c5f30ba5c..000000000 --- a/archiva-modules/plugins/metadata-store-file/src/main/resources/META-INF/spring-context.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0"?> - -<!-- - ~ Licensed to the Apache Software Foundation (ASF) under one - ~ or more contributor license agreements. See the NOTICE file - ~ distributed with this work for additional information - ~ regarding copyright ownership. The ASF licenses this file - ~ to you under the Apache License, Version 2.0 (the - ~ "License"); you may not use this file except in compliance - ~ with the License. You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, - ~ software distributed under the License is distributed on an - ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - ~ KIND, either express or implied. See the License for the - ~ specific language governing permissions and limitations - ~ under the License. - --> -<beans xmlns="http://www.springframework.org/schema/beans" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns:context="http://www.springframework.org/schema/context" - xsi:schemaLocation="http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans-3.0.xsd - http://www.springframework.org/schema/context - http://www.springframework.org/schema/context/spring-context-3.0.xsd" - default-lazy-init="true"> - - <context:annotation-config/> - <context:component-scan base-package="org.apache.archiva.metadata.repository.file"/> - -</beans>
\ No newline at end of file diff --git a/archiva-modules/plugins/metadata-store-file/src/test/java/org/apache/archiva/metadata/repository/file/FileMetadataRepositoryTest.java b/archiva-modules/plugins/metadata-store-file/src/test/java/org/apache/archiva/metadata/repository/file/FileMetadataRepositoryTest.java deleted file mode 100644 index 053b28353..000000000 --- a/archiva-modules/plugins/metadata-store-file/src/test/java/org/apache/archiva/metadata/repository/file/FileMetadataRepositoryTest.java +++ /dev/null @@ -1,196 +0,0 @@ -package org.apache.archiva.metadata.repository.file; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.configuration.ManagedRepositoryConfiguration; -import org.apache.archiva.metadata.model.MetadataFacetFactory; -import org.apache.archiva.metadata.repository.AbstractMetadataRepositoryTest; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.MetadataService; -import org.apache.archiva.metadata.repository.RepositorySessionFactory; -import org.junit.Before; -import org.junit.Ignore; - -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.List; -import java.util.Map; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -public class FileMetadataRepositoryTest - extends AbstractMetadataRepositoryTest -{ - - private FileMetadataRepository repository; - private RepositorySessionFactory sessionFactory = new FileRepositorySessionFactory(); - - @Override - protected MetadataRepository getRepository( ) - { - return this.repository; - } - - @Override - protected RepositorySessionFactory getSessionFactory( ) - { - return this.sessionFactory; - } - - @Before - @Override - public void setUp() - throws Exception - { - super.setUp(); - assertMaxTries = 1; - assertRetrySleepMs = 10; - - Path directory = Paths.get( "target/test-repositories" ); - if (Files.exists(directory)) - { - org.apache.archiva.common.utils.FileUtils.deleteDirectory( directory ); - } - ArchivaConfiguration config = createTestConfiguration( directory ); - List<MetadataFacetFactory> factories = createTestMetadataFacetFactories(); - MetadataService metadataService = new MetadataService( ); - metadataService.setMetadataFacetFactories( factories ); - - this.repository = new FileMetadataRepository( metadataService, config ); - } - - @Override - @Ignore - public void testGetArtifactsByProjectVersionMetadata() - throws Exception - { - // TODO not implemented - } - - @Override - @Ignore - public void testGetArtifactsByProjectVersionMetadataNoRepository() - throws Exception - { - // TODO not implemented - } - - @Override - @Ignore - public void testGetArtifactsByProjectVersionMetadataAllRepositories() - throws Exception - { - // TODO not implemented - } - - @Override - @Ignore - public void testGetArtifactsByMetadataAllRepositories() - throws Exception - { - // TODO not implemented - } - - @Override - @Ignore - public void testGetArtifactsByPropertySingleResult() - throws Exception - { - // TODO not implemented - } - - @Override - @Ignore - public void testSearchArtifactsByKey() - throws Exception - { - // TODO not implemented - } - - @Override - @Ignore - public void testSearchArtifactsByKeyExact() - throws Exception - { - // TODO not implemented - } - - @Override - @Ignore - public void testSearchArtifactsFullText() - throws Exception - { - // TODO not implemented - } - - @Override - @Ignore - public void testSearchArtifactsFullTextExact() - throws Exception - { - // TODO not implemented - } - - @Override - @Ignore - public void testSearchArtifactsByFacetKeyAllRepos() - throws Exception - { - // TODO not implemented - } - - @Override - @Ignore - public void testSearchArtifactsByFacetKey() - throws Exception - { - // TODO not implemented - } - - @Override - @Ignore - public void testSearchArtifactsFullTextByFacet() - throws Exception - { - // TODO not implemented - } - - protected static ArchivaConfiguration createTestConfiguration( Path directory ) - { - ArchivaConfiguration config = mock( ArchivaConfiguration.class ); - Configuration configData = new Configuration(); - configData.addManagedRepository( createManagedRepository( TEST_REPO_ID, directory ) ); - configData.addManagedRepository( createManagedRepository( "other-repo", directory ) ); - when( config.getConfiguration() ).thenReturn( configData ); - return config; - } - - private static ManagedRepositoryConfiguration createManagedRepository( String repoId, Path directory ) - { - ManagedRepositoryConfiguration managedRepository = new ManagedRepositoryConfiguration(); - managedRepository.setId( repoId ); - managedRepository.setLocation( directory.resolve( repoId ).toAbsolutePath().toString() ); - return managedRepository; - } -} diff --git a/archiva-modules/plugins/metadata-store-jcr/pom.xml b/archiva-modules/plugins/metadata-store-jcr/pom.xml deleted file mode 100644 index 20e3a895a..000000000 --- a/archiva-modules/plugins/metadata-store-jcr/pom.xml +++ /dev/null @@ -1,198 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ Licensed to the Apache Software Foundation (ASF) under one - ~ or more contributor license agreements. See the NOTICE file - ~ distributed with this work for additional information - ~ regarding copyright ownership. The ASF licenses this file - ~ to you under the Apache License, Version 2.0 (the - ~ "License"); you may not use this file except in compliance - ~ with the License. You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, - ~ software distributed under the License is distributed on an - ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - ~ KIND, either express or implied. See the License for the - ~ specific language governing permissions and limitations - ~ under the License. - --> - -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <artifactId>plugins</artifactId> - <groupId>org.apache.archiva</groupId> - <version>3.0.0-SNAPSHOT</version> - </parent> - <artifactId>metadata-store-jcr</artifactId> - <name>Archiva Core Plugins :: JCR Storage for Metadata</name> - - <properties> - <site.staging.base>${project.parent.parent.basedir}</site.staging.base> - </properties> - - <dependencies> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>metadata-repository-api</artifactId> - </dependency> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>metadata-statistics-api</artifactId> - </dependency> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>archiva-checksum</artifactId> - </dependency> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>archiva-common</artifactId> - </dependency> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>metadata-model</artifactId> - </dependency> - <dependency> - <groupId>org.apache.archiva.maven</groupId> - <artifactId>archiva-maven-metadata</artifactId> - </dependency> - - <!-- This is a oak-lucene package with shaded lucene dependencies --> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>oak-jcr-lucene</artifactId> - </dependency> - - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-context</artifactId> - </dependency> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-lang3</artifactId> - </dependency> - <dependency> - <groupId>javax.jcr</groupId> - <artifactId>jcr</artifactId> - </dependency> - <dependency> - <groupId>org.apache.jackrabbit</groupId> - <artifactId>oak-jcr</artifactId> - </dependency> - <dependency> - <groupId>org.apache.jackrabbit</groupId> - <artifactId>oak-segment-tar</artifactId> - </dependency> - <dependency> - <groupId>org.apache.jackrabbit</groupId> - <artifactId>oak-api</artifactId> - </dependency> - <dependency> - <groupId>org.apache.jackrabbit</groupId> - <artifactId>oak-core-spi</artifactId> - </dependency> - <dependency> - <groupId>org.apache.jackrabbit</groupId> - <artifactId>oak-store-spi</artifactId> - </dependency> - <dependency> - <groupId>org.apache.jackrabbit</groupId> - <artifactId>oak-blob</artifactId> - </dependency> - <dependency> - <groupId>org.apache.jackrabbit</groupId> - <artifactId>jackrabbit-jcr-commons</artifactId> - </dependency> - <dependency> - <groupId>org.apache.jackrabbit</groupId> - <artifactId>oak-query-spi</artifactId> - </dependency> - <dependency> - <groupId>org.apache.jackrabbit</groupId> - <artifactId>oak-core</artifactId> - </dependency> - - <dependency> - <groupId>javax.inject</groupId> - <artifactId>javax.inject</artifactId> - </dependency> - <dependency> - <groupId>javax.annotation</groupId> - <artifactId>javax.annotation-api</artifactId> - </dependency> - - <dependency> - <groupId>io.dropwizard.metrics</groupId> - <artifactId>metrics-core</artifactId> - <scope>runtime</scope> - </dependency> - - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - </dependency> - - - <!-- Test scope --> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>metadata-repository-api</artifactId> - <classifier>tests</classifier> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>archiva-test-utils</artifactId> - <version>${project.version}</version> - <scope>test</scope> - <exclusions> - <exclusion> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-simple</artifactId> - </exclusion> - </exclusions> - </dependency> - - - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-test</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.archiva</groupId> - <artifactId>generic-metadata-support</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <scope>test</scope> - </dependency> - -</dependencies> - <build> - <testResources> - <testResource> - <directory>src/test/filtered-resources</directory> - <filtering>true</filtering> - </testResource> - <testResource> - <directory>src/test/resources</directory> - <filtering>false</filtering> - </testResource> - </testResources> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - <configuration> - <systemPropertyVariables> - <appserver.base>${project.build.directory}/jcr/repo</appserver.base> - </systemPropertyVariables> - </configuration> - </plugin> - </plugins> - </build> -</project> diff --git a/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrConstants.java b/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrConstants.java deleted file mode 100644 index 12cf7b431..000000000 --- a/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrConstants.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.apache.archiva.metadata.repository.jcr; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import java.time.ZoneId; - -/** - * Node types and properties defined in the schema. - * - * @author Martin Stockhammer <martin_s@apache.org> - */ -public interface JcrConstants -{ - - - - String BASE_NODE_TYPE = "archiva:base"; - String CONTENT_NODE_TYPE = "archiva:content"; - String NAMESPACE_MIXIN_TYPE = "archiva:namespace"; - String PROJECT_MIXIN_TYPE = "archiva:project"; - String PROJECT_VERSION_NODE_TYPE = "archiva:projectVersion"; - String ARTIFACT_NODE_TYPE = "archiva:artifact"; - String REPOSITORY_NODE_TYPE = "archiva:repository"; - String FACET_NODE_TYPE = "archiva:facet"; - String MIXIN_META_SCM = "archiva:meta_scm"; - String MIXIN_META_CI = "archiva:meta_ci"; - String MIXIN_META_ISSUE = "archiva:meta_issue"; - String MIXIN_META_ORGANIZATION = "archiva:meta_organization"; - String MAILINGLIST_NODE_TYPE = "archiva:mailinglist"; - String MAILINGLISTS_FOLDER_TYPE = "archiva:mailinglists"; - String LICENSES_FOLDER_TYPE = "archiva:licenses"; - String LICENSE_NODE_TYPE = "archiva:license"; - String DEPENDENCY_NODE_TYPE = "archiva:dependency"; - String DEPENDENCIES_FOLDER_TYPE = "archiva:dependencies"; - String CHECKSUM_NODE_TYPE = "archiva:checksum"; - String CHECKSUMS_FOLDER_TYPE = "archiva:checksums"; - String FACETS_FOLDER_TYPE = "archiva:facets"; - String FACET_ID_CONTAINER_TYPE = "archiva:facetIdContainer"; - String FOLDER_TYPE = "archiva:folder"; - - // Must be alphabetically ordered! - String[] PROJECT_VERSION_VERSION_PROPERTIES = {"ci.system","ci.url", "description", "incomplete", "issue.system","issue.url", "name", "org.name", "org.url", "url", "scm.connection", "scm.developerConnection", "scm.url"}; -} diff --git a/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java b/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java deleted file mode 100644 index 811fb0733..000000000 --- a/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java +++ /dev/null @@ -1,1903 +0,0 @@ -package org.apache.archiva.metadata.repository.jcr; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import org.apache.archiva.checksum.ChecksumAlgorithm; -import org.apache.archiva.metadata.QueryParameter; -import org.apache.archiva.metadata.maven.model.MavenArtifactFacet; -import org.apache.archiva.metadata.model.ArtifactMetadata; -import org.apache.archiva.metadata.model.CiManagement; -import org.apache.archiva.metadata.model.Dependency; -import org.apache.archiva.metadata.model.FacetedMetadata; -import org.apache.archiva.metadata.model.IssueManagement; -import org.apache.archiva.metadata.model.License; -import org.apache.archiva.metadata.model.MailingList; -import org.apache.archiva.metadata.model.MetadataFacet; -import org.apache.archiva.metadata.model.MetadataFacetFactory; -import org.apache.archiva.metadata.model.ModelInfo; -import org.apache.archiva.metadata.model.Organization; -import org.apache.archiva.metadata.model.ProjectMetadata; -import org.apache.archiva.metadata.model.ProjectVersionMetadata; -import org.apache.archiva.metadata.model.ProjectVersionReference; -import org.apache.archiva.metadata.model.Scm; -import org.apache.archiva.metadata.repository.AbstractMetadataRepository; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.MetadataRepositoryException; -import org.apache.archiva.metadata.repository.MetadataResolutionException; -import org.apache.archiva.metadata.repository.MetadataService; -import org.apache.archiva.metadata.repository.MetadataSessionException; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.metadata.repository.stats.model.RepositoryStatistics; -import org.apache.archiva.metadata.repository.stats.model.RepositoryStatisticsProvider; -import org.apache.commons.lang3.StringUtils; -import org.apache.jackrabbit.commons.JcrUtils; -import org.apache.jackrabbit.commons.cnd.CndImporter; -import org.apache.jackrabbit.commons.cnd.ParseException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.jcr.NamespaceRegistry; -import javax.jcr.Node; -import javax.jcr.NodeIterator; -import javax.jcr.PathNotFoundException; -import javax.jcr.Property; -import javax.jcr.Repository; -import javax.jcr.RepositoryException; -import javax.jcr.Session; -import javax.jcr.SimpleCredentials; -import javax.jcr.Value; -import javax.jcr.ValueFactory; -import javax.jcr.Workspace; -import javax.jcr.query.Query; -import javax.jcr.query.QueryManager; -import javax.jcr.query.QueryResult; -import javax.jcr.query.Row; -import javax.jcr.query.RowIterator; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.Reader; -import java.time.ZonedDateTime; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Collection; -import java.util.Collections; -import java.util.GregorianCalendar; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Optional; -import java.util.Set; -import java.util.Spliterator; -import java.util.function.Consumer; -import java.util.function.Function; -import java.util.stream.Collectors; -import java.util.stream.Stream; -import java.util.stream.StreamSupport; - -import static javax.jcr.Property.JCR_LAST_MODIFIED; -import static org.apache.archiva.metadata.repository.jcr.JcrConstants.*; - -/** - * TODO below: revise storage format for project version metadata - * TODO revise reference storage - */ -public class JcrMetadataRepository - extends AbstractMetadataRepository implements MetadataRepository, RepositoryStatisticsProvider { - - - private static final String QUERY_ARTIFACT_1 = "SELECT * FROM [" + ARTIFACT_NODE_TYPE + "] AS artifact WHERE ISDESCENDANTNODE(artifact,'/"; - - static final String QUERY_ARTIFACTS_BY_PROJECT_VERSION_1 = "SELECT * FROM [" + PROJECT_VERSION_NODE_TYPE + "] AS projectVersion INNER JOIN [" + ARTIFACT_NODE_TYPE - + "] AS artifact ON ISCHILDNODE(artifact, projectVersion) INNER JOIN [" + FACET_NODE_TYPE - + "] AS facet ON ISCHILDNODE(facet, projectVersion) WHERE ([facet].["; - static final String QUERY_ARTIFACTS_BY_PROJECT_VERSION_2 = "] = $value)"; - - static final String QUERY_ARTIFACTS_BY_METADATA_1 = "SELECT * FROM [" + ARTIFACT_NODE_TYPE + "] AS artifact INNER JOIN [" + FACET_NODE_TYPE - + "] AS facet ON ISCHILDNODE(facet, artifact) WHERE ([facet].["; - static final String QUERY_ARTIFACTS_BY_METADATA_2 = "] = $value)"; - - static final String QUERY_ARTIFACTS_BY_PROPERTY_1 = "SELECT * FROM [" + PROJECT_VERSION_NODE_TYPE + "] AS projectVersion INNER JOIN [" + ARTIFACT_NODE_TYPE - + "] AS artifact ON ISCHILDNODE(artifact, projectVersion) WHERE ([projectVersion].["; - static final String QUERY_ARTIFACTS_BY_PROPERTY_2 = "] = $value)"; - - - private static final String QUERY_ARTIFACT_2 = "')"; - - private Logger log = LoggerFactory.getLogger(JcrMetadataRepository.class); - - private Repository repository; - - public JcrMetadataRepository(MetadataService metadataService, Repository repository) - throws RepositoryException { - super(metadataService); - this.repository = repository; - } - - - public static void initializeNodeTypes(Session session) - throws RepositoryException { - - // TODO: consider using namespaces for facets instead of the current approach: - // (if used, check if actually called by normal injection) -// for ( String facetId : metadataFacetFactories.keySet() ) -// { -// session.getWorkspace().getNamespaceRegistry().registerNamespace( facetId, facetId ); -// } - Workspace workspace = session.getWorkspace(); - NamespaceRegistry registry = workspace.getNamespaceRegistry(); - - if (!Arrays.asList(registry.getPrefixes()).contains("archiva")) { - registry.registerNamespace("archiva", "http://archiva.apache.org/jcr/"); - } - - try ( - Reader cndReader = new InputStreamReader( - Thread.currentThread().getContextClassLoader().getResourceAsStream("org/apache/archiva/metadata/repository/jcr/jcr-schema.cnd"))) { - CndImporter.registerNodeTypes(cndReader, session); - } catch (ParseException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - - } - - private Session getSession(RepositorySession repositorySession) throws MetadataRepositoryException { - if (repositorySession instanceof JcrRepositorySession) { - return ((JcrRepositorySession) repositorySession).getJcrSession(); - } else { - throw new MetadataRepositoryException("The given session object is not a JcrSession instance: " + repositorySession.getClass().getName()); - } - } - - @Override - public void updateProject(RepositorySession session, String repositoryId, ProjectMetadata project) - throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - updateProject(jcrSession, repositoryId, project.getNamespace(), project.getId()); - } - - private void updateProject(Session jcrSession, String repositoryId, String namespace, String projectId) - throws MetadataRepositoryException { - updateNamespace(jcrSession, repositoryId, namespace); - - try { - getOrAddProjectNode(jcrSession, repositoryId, namespace, projectId); - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - @Override - public void updateArtifact(RepositorySession session, String repositoryId, String namespace, String projectId, String projectVersion, - ArtifactMetadata artifactMeta) - throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - updateNamespace(session, repositoryId, namespace); - - try { - Node node = - getOrAddArtifactNode(jcrSession, repositoryId, namespace, projectId, projectVersion, artifactMeta.getId()); - - node.setProperty("id", artifactMeta.getId()); - Calendar cal = GregorianCalendar.from(artifactMeta.getFileLastModified()); - node.setProperty(JCR_LAST_MODIFIED, cal); - - cal = GregorianCalendar.from(artifactMeta.getWhenGathered()); - node.setProperty("whenGathered", cal); - - node.setProperty("size", artifactMeta.getSize()); - - int idx = 0; - Node cslistNode = getOrAddNodeByPath(node, "checksums", CHECKSUMS_FOLDER_TYPE, true); - NodeIterator nit = cslistNode.getNodes("*"); - while (nit.hasNext()) { - Node csNode = nit.nextNode(); - if (csNode.isNodeType(CHECKSUM_NODE_TYPE)) { - csNode.remove(); - } - } - for (Map.Entry<ChecksumAlgorithm, String> entry : artifactMeta.getChecksums().entrySet()) { - String type = entry.getKey().name(); - Node csNode = cslistNode.addNode(type, CHECKSUM_NODE_TYPE); - csNode.setProperty("type", type); - csNode.setProperty("value", entry.getValue()); - } - - node.setProperty("version", artifactMeta.getVersion()); - - // iterate over available facets to update/add/remove from the artifactMetadata - for (String facetId : metadataService.getSupportedFacets()) { - MetadataFacet metadataFacet = artifactMeta.getFacet(facetId); - if (metadataFacet == null) { - continue; - } - if (node.hasNode(facetId)) { - node.getNode(facetId).remove(); - } - if (metadataFacet != null) { - // recreate, to ensure properties are removed - Node n = node.addNode(facetId, FACET_NODE_TYPE); - n.setProperty("facetId", facetId); - - for (Map.Entry<String, String> entry : metadataFacet.toProperties().entrySet()) { - n.setProperty(entry.getKey(), entry.getValue()); - } - } - } - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - @Override - public void updateProjectVersion(RepositorySession session, String repositoryId, String namespace, String projectId, - ProjectVersionMetadata versionMetadata) - throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - updateProject(jcrSession, repositoryId, namespace, projectId); - - try { - Node versionNode = - getOrAddProjectVersionNode(jcrSession, repositoryId, namespace, projectId, versionMetadata.getId()); - versionNode.setProperty("id", versionMetadata.getId()); - versionNode.setProperty("name", StringUtils.isEmpty(versionMetadata.getName()) ? "" : versionMetadata.getName()); - versionNode.setProperty("description", StringUtils.isEmpty(versionMetadata.getDescription()) ? "" : versionMetadata.getDescription()); - versionNode.setProperty("url", versionMetadata.getUrl()); - versionNode.setProperty("incomplete", versionMetadata.isIncomplete()); - - // FIXME: decide how to treat these in the content repo - if (versionMetadata.getScm() != null) { - versionNode.setProperty("scm.connection", versionMetadata.getScm().getConnection()); - versionNode.setProperty("scm.developerConnection", versionMetadata.getScm().getDeveloperConnection()); - versionNode.setProperty("scm.url", versionMetadata.getScm().getUrl()); - } - if (versionMetadata.getCiManagement() != null) { - versionNode.setProperty("ci.system", versionMetadata.getCiManagement().getSystem()); - versionNode.setProperty("ci.url", versionMetadata.getCiManagement().getUrl()); - } - if (versionMetadata.getIssueManagement() != null) { - versionNode.setProperty("issue.system", versionMetadata.getIssueManagement().getSystem()); - versionNode.setProperty("issue.url", versionMetadata.getIssueManagement().getUrl()); - } - if (versionMetadata.getOrganization() != null) { - versionNode.setProperty("org.name", versionMetadata.getOrganization().getName()); - versionNode.setProperty("org.url", versionMetadata.getOrganization().getUrl()); - } - int i = 0; - Node licensesNode = JcrUtils.getOrAddNode(versionNode, "licenses", LICENSES_FOLDER_TYPE); - Set<String> licNames = new HashSet<>(); - for (License license : versionMetadata.getLicenses()) { - Node licNode = JcrUtils.getOrAddNode(licensesNode, license.getName(), LICENSE_NODE_TYPE); - licNode.setProperty("index", i); - licNode.setProperty("name", license.getName()); - licNode.setProperty("url", license.getUrl()); - licNames.add(license.getName()); - i++; - } - NodeIterator nodeIterator = licensesNode.getNodes(); - while (nodeIterator.hasNext()) { - Node n = nodeIterator.nextNode(); - if (!licNames.contains(n.getName())) { - n.remove(); - } - } - i = 0; - Node mailinglistsListNode = JcrUtils.getOrAddNode(versionNode, "mailinglists", MAILINGLISTS_FOLDER_TYPE); - Set<String> listNames = new HashSet<>(); - for (MailingList mailingList : versionMetadata.getMailingLists()) { - final String name = mailingList.getName(); - Node mailNode = JcrUtils.getOrAddNode(mailinglistsListNode, mailingList.getName(), MAILINGLIST_NODE_TYPE); - mailNode.setProperty("index", i); - mailNode.setProperty("archive", mailingList.getMainArchiveUrl()); - mailNode.setProperty("name", mailingList.getName()); - mailNode.setProperty("post", mailingList.getPostAddress()); - mailNode.setProperty("unsubscribe", mailingList.getUnsubscribeAddress()); - mailNode.setProperty("subscribe", mailingList.getSubscribeAddress()); - mailNode.setProperty("otherArchives", - join(mailingList.getOtherArchives())); - i++; - listNames.add(name); - } - nodeIterator = mailinglistsListNode.getNodes(); - while (nodeIterator.hasNext()) { - Node n = nodeIterator.nextNode(); - if (!listNames.contains(n.getName())) { - n.remove(); - } - } - if (!versionMetadata.getDependencies().isEmpty()) { - Node dependenciesNode = JcrUtils.getOrAddNode(versionNode, "dependencies", DEPENDENCIES_FOLDER_TYPE); - - for (Dependency dependency : versionMetadata.getDependencies()) { - // Note that we deliberately don't alter the namespace path - not enough dependencies for - // number of nodes at a given depth to be an issue. Similarly, we don't add subnodes for each - // component of the ID as that creates extra depth and causes a great cost in space and memory - - // FIXME: change to artifact's ID - this is constructed by the Maven 2 format for now. - // This won't support types where the extension doesn't match the type. - // (see also Maven2RepositoryStorage#readProjectVersionMetadata construction of POM) - String id = - dependency.getNamespace() + ";" + dependency.getArtifactId() + "-" + dependency.getVersion(); - if (dependency.getClassifier() != null) { - id += "-" + dependency.getClassifier(); - } - id += "." + dependency.getType(); - - Node n = JcrUtils.getOrAddNode(dependenciesNode, id, DEPENDENCY_NODE_TYPE); - n.setProperty("id", id); - - n.setProperty("namespace", dependency.getNamespace()); - n.setProperty("artifactId", dependency.getArtifactId()); - n.setProperty("version", dependency.getVersion()); - n.setProperty("type", dependency.getType()); - n.setProperty("classifier", dependency.getClassifier()); - n.setProperty("scope", dependency.getScope()); - n.setProperty("systemPath", dependency.getSystemPath()); - n.setProperty("optional", dependency.isOptional()); - n.setProperty("projectId", dependency.getProjectId()); - // TODO: Fixig - Node refNode = findArtifactNode(jcrSession, dependency.getNamespace(), - dependency.getProjectId(), dependency.getVersion(), dependency.getArtifactId()); - if (refNode!=null) { - n.setProperty("link", refNode.getPath()); - } - - // node has no native content at this time, just facets - // no need to list a type as it's implied by the path. Parents are Maven specific. - - // FIXME: add scope, systemPath, type, version, classifier & maven2 specific IDs as a facet - // (should also have been added to the Dependency) - - // TODO: add a property that is a weak reference to the originating artifact, creating it if - // necessary (without adding the archiva:artifact mixin so that it doesn't get listed as an - // artifact, which gives a different meaning to "incomplete" which is a known local project - // that doesn't have metadata yet but has artifacts). (Though we may want to give it the - // artifact mixin and another property to identify all non-local artifacts for the closure - // reports) - } - } - - for (MetadataFacet facet : versionMetadata.getFacetList()) { - // recreate, to ensure properties are removed - if (versionNode.hasNode(facet.getFacetId())) { - versionNode.getNode(facet.getFacetId()).remove(); - } - Node n = versionNode.addNode(facet.getFacetId(), FACET_NODE_TYPE); - - for (Map.Entry<String, String> entry : facet.toProperties().entrySet()) { - n.setProperty(entry.getKey(), entry.getValue()); - } - } - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - private void updateNamespace(Session jcrSession, String repositoryId, String namespace) throws MetadataRepositoryException { - try { - Node node = getOrAddNamespaceNode(jcrSession, repositoryId, namespace); - node.setProperty("id", namespace); - node.setProperty("namespace", namespace); - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - @Override - public void updateNamespace(RepositorySession session, String repositoryId, String namespace) - throws MetadataRepositoryException { - updateNamespace(getSession(session), repositoryId, namespace); - } - - @Override - public void removeProject(RepositorySession session, String repositoryId, String namespace, String projectId) - throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - try { - Node root = jcrSession.getRootNode(); - String namespacePath = getNamespacePath(repositoryId, namespace); - - if (root.hasNode(namespacePath)) { - Iterator<Node> nodeIterator = JcrUtils.getChildNodes(root.getNode(namespacePath)).iterator(); - while (nodeIterator.hasNext()) { - Node node = nodeIterator.next(); - if (node.isNodeType(org.apache.archiva.metadata.repository.jcr.JcrConstants.PROJECT_MIXIN_TYPE) && projectId.equals(node.getName())) { - node.remove(); - } - } - - } - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - - } - - - @Override - public boolean hasMetadataFacet(RepositorySession session, String repositoryId, String facetId) - throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - try { - Node node = jcrSession.getRootNode().getNode(getFacetPath(repositoryId, facetId)); - return node.getNodes().hasNext(); - } catch (PathNotFoundException e) { - // ignored - the facet doesn't exist, so return false - return false; - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - @Override - public List<String> getMetadataFacets(RepositorySession session, String repositoryId, String facetId) - throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - List<String> facets = new ArrayList<>(); - - try { - // no need to construct node-by-node here, as we'll find in the next instance, the facet names have / and - // are paths themselves - Node node = jcrSession.getRootNode().getNode(getFacetPath(repositoryId, facetId)); - - // TODO: this is a bit awkward. Might be better to review the purpose of this function - why is the list of - // paths helpful? - recurse(facets, "", node); - } catch (PathNotFoundException e) { - // ignored - the facet doesn't exist, so return the empty list - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - return facets; - } - - private <T> Spliterator<T> createResultSpliterator(QueryResult result, Function<Row, T> converter) throws MetadataRepositoryException { - final RowIterator rowIterator; - try { - rowIterator = result.getRows(); - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - return new Spliterator<T>() { - @Override - public boolean tryAdvance(Consumer<? super T> action) { - while (rowIterator.hasNext()) { - T item = converter.apply(rowIterator.nextRow()); - if (item != null) { - action.accept(item); - return true; - } - } - return false; - } - - @Override - public Spliterator<T> trySplit() { - return null; - } - - @Override - public long estimateSize() { - return 0; - } - - @Override - public int characteristics() { - return ORDERED + NONNULL; - } - }; - } - - private StringBuilder appendQueryParams(StringBuilder query, String selector, String defaultProperty, QueryParameter queryParameter) { - if (queryParameter.getSortFields().size() == 0) { - query.append(" ORDER BY [").append(selector).append("].[").append(defaultProperty).append("]"); - if (queryParameter.isAscending()) { - query.append(" ASC"); - } else { - query.append(" DESC"); - } - } else { - query.append(" ORDER BY"); - for (String property : queryParameter.getSortFields()) { - query.append(" [").append(selector).append("].[").append(property).append("]"); - if (queryParameter.isAscending()) { - query.append(" ASC"); - } else { - query.append(" DESC"); - } - } - } - return query; - } - - private <T extends MetadataFacet> Function<Row, Optional<T>> getFacetFromRowFunc(MetadataFacetFactory<T> factory, String repositoryId) { - return (Row row) -> { - try { - Node node = row.getNode("facet"); - if (node.hasProperty("archiva:name")) { - String facetName = node.getProperty("archiva:name").getString(); - return Optional.ofNullable(createFacetFromNode(factory, node, repositoryId, facetName)); - } else { - return Optional.empty(); - } - } catch (RepositoryException e) { - log.error("Exception encountered {}", e.getMessage()); - return Optional.empty(); - } - }; - } - - @Override - public <T extends MetadataFacet> Stream<T> getMetadataFacetStream(RepositorySession session, String repositoryId, Class<T> facetClazz, QueryParameter queryParameter) throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - final MetadataFacetFactory<T> factory = metadataService.getFactory(facetClazz); - final String facetId = factory.getFacetId(); - final String facetPath = '/' + getFacetPath(repositoryId, facetId); - StringBuilder query = new StringBuilder("SELECT * FROM ["); - query.append(FACET_NODE_TYPE).append("] AS facet WHERE ISDESCENDANTNODE(facet, [") - .append(facetPath).append("]) AND [facet].[archiva:name] IS NOT NULL"); - appendQueryParams(query, "facet", "archiva:name", queryParameter); - String q = query.toString(); - Map<String, String> params = new HashMap<>(); - QueryResult result = runNativeJcrQuery(jcrSession, q, params, queryParameter.getOffset(), queryParameter.getLimit()); - final Function<Row, Optional<T>> rowFunc = getFacetFromRowFunc(factory, repositoryId); - return StreamSupport.stream(createResultSpliterator(result, rowFunc), false).filter(Optional::isPresent).map(Optional::get); - - } - - private void recurse(List<String> facets, String prefix, Node node) - throws RepositoryException { - for (Node n : JcrUtils.getChildNodes(node)) { - String name = prefix + "/" + n.getName(); - if (n.hasNodes()) { - recurse(facets, name, n); - } else { - // strip leading / first - facets.add(name.substring(1)); - } - } - } - - - @Override - public <T extends MetadataFacet> T getMetadataFacet(RepositorySession session, String repositoryId, Class<T> clazz, String name) throws MetadataRepositoryException { - if (!metadataService.supportsFacet(clazz)) { - log.warn("The required metadata class is not supported: " + clazz); - return null; - } - final Session jcrSession = getSession(session); - final MetadataFacetFactory<T> factory = getFacetFactory(clazz); - final String facetId = factory.getFacetId(); - try { - Node root = jcrSession.getRootNode(); - Node node = root.getNode(getFacetPath(repositoryId, facetId, name)); - - if (getSupportedFacets().size() == 0) { - return null; - } - - return createFacetFromNode(factory, node, repositoryId, name); - } catch (PathNotFoundException e) { - // ignored - the facet doesn't exist, so return null - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - return null; - } - - private <T extends MetadataFacet> T createFacetFromNode(final MetadataFacetFactory<T> factory, final Node node) throws RepositoryException { - return createFacetFromNode(factory, node, null, null); - } - - private <T extends MetadataFacet> T createFacetFromNode(final MetadataFacetFactory<T> factory, final Node node, - final String repositoryId, final String name) throws RepositoryException { - if (factory != null) { - T metadataFacet; - if (repositoryId != null) { - metadataFacet = factory.createMetadataFacet(repositoryId, name); - } else { - metadataFacet = factory.createMetadataFacet(); - } - Map<String, String> map = new HashMap<>(); - for (Property property : JcrUtils.getProperties(node)) { - String p = property.getName(); - if (!p.startsWith("jcr:")) { - map.put(p, property.getString()); - } - } - metadataFacet.fromProperties(map); - return metadataFacet; - } - return null; - } - - @Override - public void addMetadataFacet(RepositorySession session, String repositoryId, MetadataFacet metadataFacet) - throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - try { - Node repo = getOrAddRepositoryNode(jcrSession, repositoryId); - Node facets = JcrUtils.getOrAddNode(repo, "facets", FACETS_FOLDER_TYPE); - - String id = metadataFacet.getFacetId(); - Node facetNode = JcrUtils.getOrAddNode(facets, id, FACET_ID_CONTAINER_TYPE); - if (!facetNode.hasProperty("id")) { - facetNode.setProperty("id", id); - } - - Node facetInstance = getOrAddNodeByPath(facetNode, metadataFacet.getName(), FACET_NODE_TYPE, true); - if (!facetInstance.hasProperty("archiva:facetId")) { - facetInstance.setProperty("archiva:facetId", id); - facetInstance.setProperty("archiva:name", metadataFacet.getName()); - } - - for (Map.Entry<String, String> entry : metadataFacet.toProperties().entrySet()) { - facetInstance.setProperty(entry.getKey(), entry.getValue()); - } - session.save(); - } catch (RepositoryException | MetadataSessionException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - @Override - public void removeNamespace(RepositorySession session, String repositoryId, String projectId) - throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - try { - Node root = jcrSession.getRootNode(); - String path = getNamespacePath(repositoryId, projectId); - if (root.hasNode(path)) { - Node node = root.getNode(path); - if (node.isNodeType(NAMESPACE_MIXIN_TYPE)) { - node.remove(); - } - } - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - @Override - public void removeMetadataFacets(RepositorySession session, String repositoryId, String facetId) - throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - try { - Node root = jcrSession.getRootNode(); - String path = getFacetPath(repositoryId, facetId); - if (root.hasNode(path)) { - root.getNode(path).remove(); - } - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - @Override - public void removeMetadataFacet(RepositorySession session, String repositoryId, String facetId, String name) - throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - try { - Node root = jcrSession.getRootNode(); - String path = getFacetPath(repositoryId, facetId, name); - if (root.hasNode(path)) { - Node node = root.getNode(path); - do { - // also remove empty container nodes - Node parent = node.getParent(); - node.remove(); - node = parent; - } - while (!node.hasNodes()); - } - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - private StringBuilder buildArtifactByDateRangeQuery(String repoId, ZonedDateTime startTime, ZonedDateTime endTime, - QueryParameter queryParameter) { - StringBuilder q = getArtifactQuery(repoId); - - if (startTime != null) { - q.append(" AND [artifact].[whenGathered] >= $start"); - } - if (endTime != null) { - q.append(" AND [artifact].[whenGathered] <= $end"); - } - appendQueryParams(q, "artifact", "whenGathered", queryParameter); - return q; - } - - private QueryResult queryArtifactByDateRange(Session jcrSession, String repositoryId, - ZonedDateTime startTime, ZonedDateTime endTime, - QueryParameter queryParameter) throws MetadataRepositoryException { - String q = buildArtifactByDateRangeQuery(repositoryId, startTime, endTime, queryParameter).toString(); - - try { - Query query = jcrSession.getWorkspace().getQueryManager().createQuery(q, Query.JCR_SQL2); - query.setOffset(queryParameter.getOffset()); - query.setLimit(queryParameter.getLimit()); - ValueFactory valueFactory = jcrSession.getValueFactory(); - if (startTime != null) { - query.bindValue("start", valueFactory.createValue(createCalendar(startTime.withZoneSameInstant(ModelInfo.STORAGE_TZ)))); - } - if (endTime != null) { - query.bindValue("end", valueFactory.createValue(createCalendar(endTime.withZoneSameInstant(ModelInfo.STORAGE_TZ)))); - } - return query.execute(); - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - @Override - public List<ArtifactMetadata> getArtifactsByDateRange(RepositorySession session, String repoId, ZonedDateTime startTime, ZonedDateTime endTime, QueryParameter queryParameter) - throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - - List<ArtifactMetadata> artifacts; - try { - QueryResult result = queryArtifactByDateRange(jcrSession, repoId, startTime, endTime, queryParameter); - - artifacts = new ArrayList<>(); - for (Node n : JcrUtils.getNodes(result)) { - artifacts.add(getArtifactFromNode(repoId, n)); - } - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - return artifacts; - } - - private Function<Row, Optional<ArtifactMetadata>> getArtifactFromRowFunc(final String repositoryId) { - return (Row row) -> { - try { - return Optional.of(getArtifactFromNode(repositoryId, row.getNode("artifact"))); - } catch (RepositoryException e) { - return Optional.empty(); - } - }; - } - - @Override - public Stream<ArtifactMetadata> getArtifactByDateRangeStream(RepositorySession session, String repositoryId, ZonedDateTime startTime, ZonedDateTime endTime, QueryParameter queryParameter) throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - final QueryResult result = queryArtifactByDateRange(jcrSession, repositoryId, startTime, endTime, queryParameter); - final Function<Row, Optional<ArtifactMetadata>> rowFunc = getArtifactFromRowFunc(repositoryId); - return StreamSupport.stream(createResultSpliterator(result, rowFunc), false).filter(Optional::isPresent).map(Optional::get); - } - - - @Override - public List<ArtifactMetadata> getArtifactsByChecksum(RepositorySession session, String repositoryId, String checksum) - throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - List<ArtifactMetadata> artifacts; - - String q = getArtifactQuery(repositoryId).append(" AND ([artifact].[checksums/*/value] = $checksum)").toString(); - - try { - Query query = jcrSession.getWorkspace().getQueryManager().createQuery(q, Query.JCR_SQL2); - ValueFactory valueFactory = jcrSession.getValueFactory(); - query.bindValue("checksum", valueFactory.createValue(checksum)); - QueryResult result = query.execute(); - - artifacts = new ArrayList<>(); - for (Node n : JcrUtils.getNodes(result)) { - artifacts.add(getArtifactFromNode(repositoryId, n)); - } - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - return artifacts; - } - - public List<ArtifactMetadata> runJcrQuery(Session jcrSession, String repositoryId, String q, Map<String, String> bindingParam) - throws MetadataRepositoryException { - return runJcrQuery(jcrSession, repositoryId, q, bindingParam, true); - } - - public List<ArtifactMetadata> runJcrQuery(final Session jcrSession, final String repositoryId, final String qParam, - final Map<String, String> bindingParam, final boolean checkPath) - throws MetadataRepositoryException { - - String q = qParam; - List<ArtifactMetadata> artifacts; - if (repositoryId != null && checkPath) { - q += " AND ISDESCENDANTNODE(artifact,'/" + getRepositoryContentPath(repositoryId) + "')"; - } - - log.info("Running JCR Query: {}", q); - - try { - QueryResult result = runNativeJcrQuery(jcrSession, q, bindingParam); - artifacts = new ArrayList<>(); - RowIterator rows = result.getRows(); - while (rows.hasNext()) { - Row row = rows.nextRow(); - Node node = row.getNode("artifact"); - artifacts.add(getArtifactFromNode(repositoryId, node)); - } - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - log.info("Artifacts found {}", artifacts.size()); - for (ArtifactMetadata meta : artifacts) { - log.info("Artifact: " + meta.getVersion() + " " + meta.getFacetList()); - } - return artifacts; - } - - public QueryResult runNativeJcrQuery(final Session jcrSession, final String q, final Map<String, String> bindingParam) throws MetadataRepositoryException { - return runNativeJcrQuery(jcrSession, q, bindingParam, 0, Long.MAX_VALUE); - } - - public QueryResult runNativeJcrQuery(final Session jcrSession, final String q, final Map<String, String> bindingParam, long offset, long maxEntries) - throws MetadataRepositoryException { - Map<String, String> bindings; - if (bindingParam == null) { - bindings = new HashMap<>(); - } else { - bindings = bindingParam; - } - - try { - log.debug("Query: offset={}, limit={}, query={}", offset, maxEntries, q); - Query query = jcrSession.getWorkspace().getQueryManager().createQuery(q, Query.JCR_SQL2); - query.setLimit(maxEntries); - query.setOffset(offset); - ValueFactory valueFactory = jcrSession.getValueFactory(); - for (Entry<String, String> entry : bindings.entrySet()) { - log.debug("Binding: {}={}", entry.getKey(), entry.getValue()); - Value value = valueFactory.createValue(entry.getValue()); - log.debug("Binding value {}={}", entry.getKey(), value); - query.bindValue(entry.getKey(), value); - } - long start = System.currentTimeMillis(); - log.debug("Execute query {}", query); - QueryResult result = query.execute(); - long end = System.currentTimeMillis(); - log.info("JCR Query ran in {} milliseconds: {}", end - start, q); - return result; - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - @Override - public List<ArtifactMetadata> getArtifactsByProjectVersionFacet(RepositorySession session, String key, String value, String repositoryId) - throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - final String q = new StringBuilder(QUERY_ARTIFACTS_BY_PROJECT_VERSION_1).append(key).append(QUERY_ARTIFACTS_BY_PROJECT_VERSION_2).toString(); - Map<String, String> parameterMap = new HashMap<>(); - parameterMap.put("value", value); - parameterMap = Collections.unmodifiableMap(parameterMap); - return runJcrQuery(jcrSession, repositoryId, q, parameterMap); - } - - - @Override - public List<ArtifactMetadata> getArtifactsByAttribute(RepositorySession session, String key, String value, String repositoryId) - throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - final String q = new StringBuilder(QUERY_ARTIFACTS_BY_METADATA_1).append(key).append(QUERY_ARTIFACTS_BY_METADATA_2).toString(); - Map<String, String> parameterMap = new HashMap<>(); - parameterMap.put("value", value); - parameterMap = Collections.unmodifiableMap(parameterMap); - return runJcrQuery(jcrSession, repositoryId, q, parameterMap); - } - - - @Override - public List<ArtifactMetadata> getArtifactsByProjectVersionAttribute(RepositorySession session, String key, String value, String repositoryId) - throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - final String q = new StringBuilder(QUERY_ARTIFACTS_BY_PROPERTY_1).append(key).append(QUERY_ARTIFACTS_BY_PROPERTY_2).toString(); - Map<String, String> parameterMap = new HashMap<>(); - parameterMap.put("value", value); - parameterMap = Collections.unmodifiableMap(parameterMap); - return runJcrQuery(jcrSession, repositoryId, q, parameterMap); - } - - - @Override - public void removeRepository(RepositorySession session, String repositoryId) - throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - try { - Node root = jcrSession.getRootNode(); - String path = getRepositoryPath(repositoryId); - if (root.hasNode(path)) { - root.getNode(path).remove(); - } - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - @Override - public List<ArtifactMetadata> getArtifacts(RepositorySession session, String repositoryId) - throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - List<ArtifactMetadata> artifacts; - - String q = getArtifactQuery(repositoryId).toString(); - - try { - Query query = jcrSession.getWorkspace().getQueryManager().createQuery(q, Query.JCR_SQL2); - QueryResult result = query.execute(); - - artifacts = new ArrayList<>(); - for (Node n : JcrUtils.getNodes(result)) { - if (n.isNodeType(ARTIFACT_NODE_TYPE)) { - artifacts.add(getArtifactFromNode(repositoryId, n)); - } - } - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - return artifacts; - } - - private static StringBuilder getArtifactQuery(String repositoryId) { - return new StringBuilder(QUERY_ARTIFACT_1).append(getRepositoryContentPath(repositoryId)).append(QUERY_ARTIFACT_2); - } - - @Override - public ProjectMetadata getProject(RepositorySession session, String repositoryId, String namespace, String projectId) - throws MetadataResolutionException { - final Session jcrSession; - try { - jcrSession = getSession(session); - } catch (MetadataRepositoryException e) { - throw new MetadataResolutionException(e.getMessage()); - } - ProjectMetadata metadata = null; - - try { - Node root = jcrSession.getRootNode(); - - // basically just checking it exists - String path = getProjectPath(repositoryId, namespace, projectId); - if (root.hasNode(path)) { - metadata = new ProjectMetadata(); - metadata.setId(projectId); - metadata.setNamespace(namespace); - } - } catch (RepositoryException e) { - throw new MetadataResolutionException(e.getMessage(), e); - } - - return metadata; - } - - private static Optional<License> getLicense(Node licenseNode) { - try { - String licenseName = licenseNode.getName(); - String licenseUrl = getPropertyString(licenseNode, "url"); - License license = new License(); - license.setName(licenseName); - license.setUrl(licenseUrl); - return Optional.of(license); - } catch (RepositoryException e) { - return Optional.empty(); - } - } - - private static Optional<MailingList> getMailinglist(Node mailinglistNode) { - try { - String mailingListName = mailinglistNode.getName(); - MailingList mailinglist = new MailingList(); - mailinglist.setName(mailingListName); - mailinglist.setMainArchiveUrl(getPropertyString(mailinglistNode, "archive")); - String n = "otherArchives"; - if (mailinglistNode.hasProperty(n)) { - mailinglist.setOtherArchives(Arrays.asList(getPropertyString(mailinglistNode, n).split(","))); - } else { - mailinglist.setOtherArchives(Collections.<String>emptyList()); - } - mailinglist.setPostAddress(getPropertyString(mailinglistNode, "post")); - mailinglist.setSubscribeAddress(getPropertyString(mailinglistNode, "subscribe")); - mailinglist.setUnsubscribeAddress(getPropertyString(mailinglistNode, "unsubscribe")); - return Optional.of(mailinglist); - } catch (RepositoryException e) { - return Optional.empty(); - } - - } - - @Override - public ProjectVersionMetadata getProjectVersion(RepositorySession session, String repositoryId, String namespace, String projectId, - String projectVersion) - throws MetadataResolutionException { - final Session jcrSession; - try { - jcrSession = getSession(session); - } catch (MetadataRepositoryException e) { - throw new MetadataResolutionException(e.getMessage()); - } - ProjectVersionMetadata versionMetadata; - - try { - Node root = jcrSession.getRootNode(); - - String path = getProjectVersionPath(repositoryId, namespace, projectId, projectVersion); - if (!root.hasNode(path)) { - return null; - } - - Node node = root.getNode(path); - - versionMetadata = new ProjectVersionMetadata(); - versionMetadata.setId(projectVersion); - versionMetadata.setName(getPropertyString(node, "name")); - versionMetadata.setDescription(getPropertyString(node, "description")); - versionMetadata.setUrl(getPropertyString(node, "url")); - versionMetadata.setIncomplete( - node.hasProperty("incomplete") && node.getProperty("incomplete").getBoolean()); - - // FIXME: decide how to treat these in the content repo - String scmConnection = getPropertyString(node, "scm.connection"); - String scmDeveloperConnection = getPropertyString(node, "scm.developerConnection"); - String scmUrl = getPropertyString(node, "scm.url"); - if (scmConnection != null || scmDeveloperConnection != null || scmUrl != null) { - Scm scm = new Scm(); - scm.setConnection(scmConnection); - scm.setDeveloperConnection(scmDeveloperConnection); - scm.setUrl(scmUrl); - versionMetadata.setScm(scm); - } - - String ciSystem = getPropertyString(node, "ci.system"); - String ciUrl = getPropertyString(node, "ci.url"); - if (ciSystem != null || ciUrl != null) { - CiManagement ci = new CiManagement(); - ci.setSystem(ciSystem); - ci.setUrl(ciUrl); - versionMetadata.setCiManagement(ci); - } - - String issueSystem = getPropertyString(node, "issue.system"); - String issueUrl = getPropertyString(node, "issue.url"); - if (issueSystem != null || issueUrl != null) { - IssueManagement issueManagement = new IssueManagement(); - issueManagement.setSystem(issueSystem); - issueManagement.setUrl(issueUrl); - versionMetadata.setIssueManagement(issueManagement); - } - - String orgName = getPropertyString(node, "org.name"); - String orgUrl = getPropertyString(node, "org.url"); - if (orgName != null || orgUrl != null) { - Organization org = new Organization(); - org.setName(orgName); - org.setUrl(orgUrl); - versionMetadata.setOrganization(org); - } - - if (node.hasNode("licenses")) { - Node licensesListNode = node.getNode("licenses"); - List<License> licenseList = StreamSupport.stream(JcrUtils.getChildNodes(licensesListNode).spliterator(),false) - .map(JcrMetadataRepository::getLicense).filter(Optional::isPresent) - .map(Optional::get).sorted().collect(Collectors.toList()); - versionMetadata.setLicenses(licenseList); - } - if (node.hasNode("mailinglists")) { - Node mailinglistsListNode = node.getNode("mailinglists"); - List<MailingList> mailinglistList = StreamSupport.stream(JcrUtils.getChildNodes(mailinglistsListNode).spliterator(), false) - .map(JcrMetadataRepository::getMailinglist) - .filter(Optional::isPresent) - .map(Optional::get) - .sorted().collect(Collectors.toList()); - versionMetadata.setMailingLists(mailinglistList); - } - - if (node.hasNode("dependencies")) { - Node dependenciesNode = node.getNode("dependencies"); - for (Node n : JcrUtils.getChildNodes(dependenciesNode)) { - if (n.isNodeType(DEPENDENCY_NODE_TYPE)) { - Dependency dependency = new Dependency(); - // FIXME: correct these properties - dependency.setNamespace(getPropertyString(n, "namespace")); - dependency.setProjectId(getPropertyString(n, "projectId")); - dependency.setVersion(getPropertyString(n, "version")); - dependency.setArtifactId(getPropertyString(n, "artifactId")); - dependency.setClassifier(getPropertyString(n, "classifier")); - dependency.setOptional(Boolean.valueOf(getPropertyString(n, "optional"))); - dependency.setScope(getPropertyString(n, "scope")); - dependency.setSystemPath(getPropertyString(n, "systemPath")); - dependency.setType(getPropertyString(n, "type")); - versionMetadata.addDependency(dependency); - } - } - } - - retrieveFacetProperties(versionMetadata, node); - } catch (RepositoryException e) { - throw new MetadataResolutionException(e.getMessage(), e); - } - - return versionMetadata; - } - - private void retrieveFacetProperties(FacetedMetadata metadata, Node node) throws RepositoryException { - for (Node n : JcrUtils.getChildNodes(node)) { - if (n.isNodeType(FACET_NODE_TYPE)) { - String name = n.getName(); - MetadataFacetFactory factory = metadataService.getFactory(name); - if (factory == null) { - log.error("Attempted to load unknown project version metadata facet: {}", name); - } else { - MetadataFacet facet = createFacetFromNode(factory, n); - metadata.addFacet(facet); - } - } - } - } - - @Override - public List<String> getArtifactVersions(RepositorySession session, String repositoryId, String namespace, String projectId, - String projectVersion) - throws MetadataResolutionException { - final Session jcrSession; - try { - jcrSession = getSession(session); - } catch (MetadataRepositoryException e) { - throw new MetadataResolutionException(e.getMessage()); - } - Set<String> versions = new LinkedHashSet<String>(); - - try { - Node root = jcrSession.getRootNode(); - - Node node = root.getNode(getProjectVersionPath(repositoryId, namespace, projectId, projectVersion)); - - for (Node n : JcrUtils.getChildNodes(node)) { - versions.add(n.getProperty("version").getString()); - } - } catch (PathNotFoundException e) { - // ignore repo not found for now - } catch (RepositoryException e) { - throw new MetadataResolutionException(e.getMessage(), e); - } - - return new ArrayList<>(versions); - } - - @Override - public List<ProjectVersionReference> getProjectReferences(RepositorySession session, String repositoryId, String namespace, - String projectId, String projectVersion) - throws MetadataResolutionException { - final Session jcrSession; - try { - jcrSession = getSession(session); - } catch (MetadataRepositoryException e) { - throw new MetadataResolutionException(e.getMessage()); - } - - List<ProjectVersionReference> references = new ArrayList<>(); - - // TODO: bind variables instead - String q = "SELECT * FROM [archiva:dependency] WHERE ISDESCENDANTNODE([/repositories/" + repositoryId - + "/content]) AND [namespace]='" + namespace + "' AND [artifactId]='" + projectId + "'"; - if (projectVersion != null) { - q += " AND [version]='" + projectVersion + "'"; - } - try { - Query query = jcrSession.getWorkspace().getQueryManager().createQuery(q, Query.JCR_SQL2); - QueryResult result = query.execute(); - - for (Node n : JcrUtils.getNodes(result)) { - n = n.getParent(); // dependencies grouping element - - n = n.getParent(); // project version - String usedByProjectVersion = n.getName(); - - n = n.getParent(); // project - String usedByProject = n.getName(); - - n = n.getParent(); // namespace - String usedByNamespace = n.getProperty("namespace").getString(); - - ProjectVersionReference ref = new ProjectVersionReference(); - ref.setNamespace(usedByNamespace); - ref.setProjectId(usedByProject); - ref.setProjectVersion(usedByProjectVersion); - ref.setReferenceType(ProjectVersionReference.ReferenceType.DEPENDENCY); - references.add(ref); - } - } catch (RepositoryException e) { - throw new MetadataResolutionException(e.getMessage(), e); - } - - return references; - } - - @Override - public List<String> getRootNamespaces(RepositorySession session, String repositoryId) - throws MetadataResolutionException { - return this.getChildNamespaces(session, repositoryId, null); - } - - @Override - public List<String> getChildNamespaces(RepositorySession session, String repositoryId, String baseNamespace) - throws MetadataResolutionException { - String path = baseNamespace != null - ? getNamespacePath(repositoryId, baseNamespace) - : getRepositoryContentPath(repositoryId); - - try { - return getNodeNames(getSession(session), path, NAMESPACE_MIXIN_TYPE); - } catch (MetadataRepositoryException e) { - throw new MetadataResolutionException(e.getMessage()); - } - } - - @Override - public List<String> getProjects(RepositorySession session, String repositoryId, String namespace) - throws MetadataResolutionException { - try { - return getNodeNames(getSession(session), getNamespacePath(repositoryId, namespace), org.apache.archiva.metadata.repository.jcr.JcrConstants.PROJECT_MIXIN_TYPE); - } catch (MetadataRepositoryException e) { - throw new MetadataResolutionException(e.getMessage()); - } - } - - @Override - public List<String> getProjectVersions(RepositorySession session, String repositoryId, String namespace, String projectId) - throws MetadataResolutionException { - try { - return getNodeNames(getSession(session), getProjectPath(repositoryId, namespace, projectId), PROJECT_VERSION_NODE_TYPE); - } catch (MetadataRepositoryException e) { - throw new MetadataResolutionException(e.getMessage()); - } - } - - @Override - public void removeTimestampedArtifact(RepositorySession session, ArtifactMetadata artifactMetadata, String baseVersion) - throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - String repositoryId = artifactMetadata.getRepositoryId(); - - try { - Node root = jcrSession.getRootNode(); - String path = - getProjectVersionPath(repositoryId, artifactMetadata.getNamespace(), artifactMetadata.getProject(), - baseVersion); - - if (root.hasNode(path)) { - Node node = root.getNode(path); - - for (Node n : JcrUtils.getChildNodes(node)) { - if (n.isNodeType(ARTIFACT_NODE_TYPE)) { - if (n.hasProperty("version")) { - String version = n.getProperty("version").getString(); - if (StringUtils.equals(version, artifactMetadata.getVersion())) { - n.remove(); - } - } - - } - } - } - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - - - } - - - @Override - public void removeProjectVersion(RepositorySession session, String repoId, String namespace, String projectId, String projectVersion) - throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - try { - - String path = getProjectPath(repoId, namespace, projectId); - Node root = jcrSession.getRootNode(); - - Node nodeAtPath = root.getNode(path); - - for (Node node : JcrUtils.getChildNodes(nodeAtPath)) { - if (node.isNodeType(PROJECT_VERSION_NODE_TYPE) && StringUtils.equals(projectVersion, - node.getName())) { - node.remove(); - } - } - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - @Override - public void removeArtifact(RepositorySession session, String repositoryId, String namespace, String projectId, String projectVersion, - String id) - throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - try { - Node root = jcrSession.getRootNode(); - String path = getArtifactPath(repositoryId, namespace, projectId, projectVersion, id); - if (root.hasNode(path)) { - root.getNode(path).remove(); - } - - // remove version - - path = getProjectPath(repositoryId, namespace, projectId); - - Node nodeAtPath = root.getNode(path); - - for (Node node : JcrUtils.getChildNodes(nodeAtPath)) { - if (node.isNodeType(PROJECT_VERSION_NODE_TYPE) // - && StringUtils.equals(node.getName(), projectVersion)) { - node.remove(); - } - } - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - @Override - public void removeFacetFromArtifact(RepositorySession session, String repositoryId, String namespace, String project, String projectVersion, - MetadataFacet metadataFacet) - throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - try { - Node root = jcrSession.getRootNode(); - String path = getProjectVersionPath(repositoryId, namespace, project, projectVersion); - - if (root.hasNode(path)) { - Node node = root.getNode(path); - - for (Node n : JcrUtils.getChildNodes(node)) { - if (n.isNodeType(ARTIFACT_NODE_TYPE)) { - ArtifactMetadata artifactMetadata = getArtifactFromNode(repositoryId, n); - log.debug("artifactMetadata: {}", artifactMetadata); - MetadataFacet metadataFacetToRemove = artifactMetadata.getFacet(metadataFacet.getFacetId()); - if (metadataFacetToRemove != null && metadataFacet.equals(metadataFacetToRemove)) { - n.remove(); - } - } - } - } - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - @Override - public List<ArtifactMetadata> getArtifacts(RepositorySession session, String repositoryId, String namespace, String projectId, - String projectVersion) - throws MetadataResolutionException { - final Session jcrSession; - try { - jcrSession = getSession(session); - } catch (MetadataRepositoryException e) { - throw new MetadataResolutionException(e.getMessage()); - } - List<ArtifactMetadata> artifacts = new ArrayList<>(); - - try { - Node root = jcrSession.getRootNode(); - String path = getProjectVersionPath(repositoryId, namespace, projectId, projectVersion); - - if (root.hasNode(path)) { - Node node = root.getNode(path); - - for (Node n : JcrUtils.getChildNodes(node)) { - if (n.isNodeType(ARTIFACT_NODE_TYPE)) { - artifacts.add(getArtifactFromNode(repositoryId, n)); - } - } - } - } catch (RepositoryException e) { - throw new MetadataResolutionException(e.getMessage(), e); - } - - return artifacts; - } - - - @Override - public void close() - throws MetadataRepositoryException { - } - - - /** - * Exact is ignored as we can't do exact search in any property, we need a key - */ - @Override - public List<ArtifactMetadata> searchArtifacts(RepositorySession session, String repositoryId, String text, boolean exact) - throws MetadataRepositoryException { - return searchArtifacts(session, repositoryId, null, text, exact); - } - - @Override - public List<ArtifactMetadata> searchArtifacts(RepositorySession session, String repositoryId, String key, String text, boolean exact) - throws MetadataRepositoryException { - final Session jcrSession = getSession(session); - String theKey = key == null ? "*" : "[" + key + "]"; - String projectVersionCondition = - exact ? "(projectVersion." + theKey + " = $value)" : "contains([projectVersion]." + theKey + ", $value)"; - String facetCondition = exact ? "(facet." + theKey + " = $value)" : "contains([facet]." + theKey + ", $value)"; - String descendantCondition = repositoryId == null ? - " AND [projectVersion].[jcr:path] LIKE '/repositories/%/content/%'" : - " AND ISDESCENDANTNODE(projectVersion,'/" + getRepositoryContentPath(repositoryId) + "')"; - List<ArtifactMetadata> result = new ArrayList<>(); - if (key == null || (key != null && Arrays.binarySearch(PROJECT_VERSION_VERSION_PROPERTIES, key) >= 0)) { - // We search only for project version properties if the key is a valid property name - String q1 = - "SELECT * FROM [" + PROJECT_VERSION_NODE_TYPE - + "] AS projectVersion LEFT OUTER JOIN [" + ARTIFACT_NODE_TYPE - + "] AS artifact ON ISCHILDNODE(artifact, projectVersion) WHERE " + projectVersionCondition + descendantCondition; - Map<String, String> parameterMap = new HashMap<>(); - parameterMap.put("value", text); - parameterMap = Collections.unmodifiableMap(parameterMap); - result.addAll(runJcrQuery(jcrSession, repositoryId, q1, parameterMap, false)); - } - String q2 = - "SELECT * FROM [" + PROJECT_VERSION_NODE_TYPE - + "] AS projectVersion LEFT OUTER JOIN [" + ARTIFACT_NODE_TYPE - + "] AS artifact ON ISCHILDNODE(artifact, projectVersion) LEFT OUTER JOIN [" + FACET_NODE_TYPE - + "] AS facet ON ISCHILDNODE(facet, projectVersion) WHERE " + facetCondition + descendantCondition; - Map<String, String> parameterMap = new HashMap<>(); - parameterMap.put("value", text); - parameterMap = Collections.unmodifiableMap(parameterMap); - result.addAll(runJcrQuery(jcrSession, repositoryId, q2, parameterMap, false)); - return result; - } - - private ArtifactMetadata getArtifactFromNode(String repositoryId, Node artifactNode) - throws RepositoryException { - String id = artifactNode.getName(); - - ArtifactMetadata artifact = new ArtifactMetadata(); - artifact.setId(id); - artifact.setRepositoryId(repositoryId == null ? artifactNode.getAncestor(2).getName() : repositoryId); - - Node projectVersionNode = artifactNode.getParent(); - Node projectNode = projectVersionNode.getParent(); - Node namespaceNode = projectNode.getParent(); - - artifact.setNamespace(namespaceNode.getProperty("namespace").getString()); - artifact.setProject(projectNode.getName()); - artifact.setProjectVersion(projectVersionNode.getName()); - artifact.setVersion(artifactNode.hasProperty("version") - ? artifactNode.getProperty("version").getString() - : projectVersionNode.getName()); - - if (artifactNode.hasProperty(JCR_LAST_MODIFIED)) { - artifact.setFileLastModified(artifactNode.getProperty(JCR_LAST_MODIFIED).getDate().getTimeInMillis()); - } - - if (artifactNode.hasProperty("whenGathered")) { - Calendar cal = artifactNode.getProperty("whenGathered").getDate(); - artifact.setWhenGathered(ZonedDateTime.ofInstant(cal.toInstant(), cal.getTimeZone().toZoneId())); - } - - if (artifactNode.hasProperty("size")) { - artifact.setSize(artifactNode.getProperty("size").getLong()); - } - - Node cslistNode = getOrAddNodeByPath(artifactNode, "checksums"); - NodeIterator csNodeIt = cslistNode.getNodes("*"); - while (csNodeIt.hasNext()) { - Node csNode = csNodeIt.nextNode(); - if (csNode.isNodeType(CHECKSUM_NODE_TYPE)) { - addChecksum(artifact, csNode); - } - } - - retrieveFacetProperties(artifact, artifactNode); - return artifact; - } - - private void addChecksum(ArtifactMetadata artifact, Node n) { - try { - ChecksumAlgorithm alg = ChecksumAlgorithm.valueOf(n.getProperty("type").getString()); - String value = n.getProperty("value").getString(); - artifact.setChecksum(alg, value); - } catch (Throwable e) { - log.error("Could not set checksum from node {}", n); - } - } - - private static String getPropertyString(Node node, String name) - throws RepositoryException { - return node.hasProperty(name) ? node.getProperty(name).getString() : null; - } - - private List<String> getNodeNames(Session jcrSession, String path, String nodeType) - throws MetadataResolutionException { - - List<String> names = new ArrayList<>(); - - try { - Node root = jcrSession.getRootNode(); - - Node nodeAtPath = root.getNode(path); - - for (Node node : JcrUtils.getChildNodes(nodeAtPath)) { - if (node.isNodeType(nodeType)) { - names.add(node.getName()); - } - } - } catch (PathNotFoundException e) { - // ignore repo not found for now - } catch (RepositoryException e) { - throw new MetadataResolutionException(e.getMessage(), e); - } - - return names; - } - - private static String getRepositoryPath(String repositoryId) { - return "repositories/" + repositoryId; - } - - private static String getRepositoryContentPath(String repositoryId) { - return getRepositoryPath(repositoryId) + "/content"; - } - - private static String getFacetPath(String repositoryId, String facetId) { - return StringUtils.isEmpty(facetId) ? getRepositoryPath(repositoryId) + "/facets" : - getRepositoryPath(repositoryId) + "/facets/" + facetId; - } - - private static String getNamespacePath(String repositoryId, String namespace) { - return getRepositoryContentPath(repositoryId) + "/" + namespace.replace('.', '/'); - } - - private static String getProjectPath(String repositoryId, String namespace, String projectId) { - return getNamespacePath(repositoryId, namespace) + "/" + projectId; - } - - private static String getProjectVersionPath(String repositoryId, String namespace, String projectId, - String projectVersion) { - return getProjectPath(repositoryId, namespace, projectId) + "/" + projectVersion; - } - - private static String getArtifactPath(String repositoryId, String namespace, String projectId, - String projectVersion, String id) { - return getProjectVersionPath(repositoryId, namespace, projectId, projectVersion) + "/" + id; - } - - private Node getOrAddNodeByPath(Node baseNode, String name) - throws RepositoryException { - return getOrAddNodeByPath(baseNode, name, null); - } - - private Node getOrAddNodeByPath(Node baseNode, String name, String nodeType) throws RepositoryException { - return getOrAddNodeByPath(baseNode, name, nodeType, false); - } - - private Node getOrAddNodeByPath(Node baseNode, String name, String nodeType, boolean primaryType) - throws RepositoryException { - log.debug("getOrAddNodeByPath " + baseNode + " " + name + " " + nodeType); - Node node = baseNode; - for (String n : name.split("/")) { - if (nodeType != null && primaryType) { - node = JcrUtils.getOrAddNode(node, n, nodeType); - } else { - node = JcrUtils.getOrAddNode(node, n); - if (nodeType != null && !node.isNodeType(nodeType)) { - node.addMixin(nodeType); - } - } - if (!node.hasProperty("id")) { - node.setProperty("id", n); - } - } - return node; - } - - private Node getOrAddNodeByPath(Node baseNode, String name, String primaryType, String... mixinTypes) - throws RepositoryException { - log.debug("getOrAddNodeByPath baseNode={}, name={}, primary={}, mixin={}", baseNode, name, primaryType, mixinTypes); - Node node = baseNode; - for (String n : name.split("/")) { - node = JcrUtils.getOrAddNode(node, n, primaryType); - for (String mixin : mixinTypes) { - if (mixin != null && !node.isNodeType(mixin)) { - node.addMixin(mixin); - } - - } - if (!node.hasProperty("id")) { - node.setProperty("id", n); - } - } - return node; - } - - private static String getFacetPath(String repositoryId, String facetId, String name) { - return getFacetPath(repositoryId, facetId) + "/" + name; - } - - private Node getOrAddRepositoryNode(Session jcrSession, String repositoryId) - throws RepositoryException { - log.debug("getOrAddRepositoryNode " + repositoryId); - Node root = jcrSession.getRootNode(); - Node node = JcrUtils.getOrAddNode(root, "repositories"); - log.debug("Repositories " + node); - node = JcrUtils.getOrAddNode(node, repositoryId, REPOSITORY_NODE_TYPE); - if (!node.hasProperty("id")) { - node.setProperty("id", repositoryId); - } - return node; - } - - private Node getOrAddRepositoryContentNode(Session jcrSession, String repositoryId) - throws RepositoryException { - Node node = getOrAddRepositoryNode(jcrSession, repositoryId); - return JcrUtils.getOrAddNode(node, "content", CONTENT_NODE_TYPE); - } - - private Node getOrAddNamespaceNode(Session jcrSession, String repositoryId, String namespace) - throws RepositoryException { - Node repo = getOrAddRepositoryContentNode(jcrSession, repositoryId); - return getOrAddNodeByPath(repo, namespace.replace('.', '/'), FOLDER_TYPE, NAMESPACE_MIXIN_TYPE); - } - - private Node getOrAddProjectNode(Session jcrSession, String repositoryId, String namespace, String projectId) - throws RepositoryException { - Node namespaceNode = getOrAddNamespaceNode(jcrSession, repositoryId, namespace); - Node node = JcrUtils.getOrAddNode(namespaceNode, projectId, FOLDER_TYPE); - if (!node.isNodeType(PROJECT_MIXIN_TYPE)) { - node.addMixin(PROJECT_MIXIN_TYPE); - } - if (!node.hasProperty("id")) { - node.setProperty("id", projectId); - } - return node; - } - - private Node getOrAddProjectVersionNode(Session jcrSession, String repositoryId, String namespace, String projectId, - String projectVersion) - throws RepositoryException { - Node projectNode = getOrAddProjectNode(jcrSession, repositoryId, namespace, projectId); - log.debug("Project node {}", projectNode); - Node projectVersionNode = JcrUtils.getOrAddNode(projectNode, projectVersion, PROJECT_VERSION_NODE_TYPE); - if (!projectVersionNode.hasProperty("id")) { - projectVersionNode.setProperty("id", projectVersion); - } - - log.debug("Project version node {}", projectVersionNode); - return projectVersionNode; - } - - private Node getOrAddArtifactNode(Session jcrSession, String repositoryId, String namespace, String projectId, String projectVersion, - String id) - throws RepositoryException { - Node versionNode = getOrAddProjectVersionNode(jcrSession, repositoryId, namespace, projectId, projectVersion); - Node node = JcrUtils.getOrAddNode(versionNode, id, ARTIFACT_NODE_TYPE); - if (!node.hasProperty("id")) { - node.setProperty("id", id); - } - return node; - } - - private Node findArtifactNode(Session jcrSession, String namespace, String projectId, - String projectVersion, String id) throws RepositoryException { - - if (namespace==null || projectId==null||projectVersion==null||id==null) { - return null; - } - Node root = jcrSession.getRootNode(); - Node node = JcrUtils.getOrAddNode(root, "repositories"); - for (Node n : JcrUtils.getChildNodes(node)) { - String repositoryId = n.getName(); - Node repo = getOrAddRepositoryContentNode(jcrSession, repositoryId); - Node nsNode = JcrUtils.getNodeIfExists(repo, StringUtils.replaceChars(namespace, '.', '/')); - if (nsNode!=null) { - Node projNode = JcrUtils.getNodeIfExists(nsNode, projectId); - if (projNode !=null ) { - Node projVersionNode = JcrUtils.getNodeIfExists(projNode, projectVersion); - if (projVersionNode != null) { - return JcrUtils.getNodeIfExists(projVersionNode, id); - } - } - } - } - - return null; - } - - private static Calendar createCalendar(ZonedDateTime time) { - return GregorianCalendar.from(time); - } - - private String join(Collection<String> ids) { - if (ids != null && !ids.isEmpty()) { - StringBuilder s = new StringBuilder(); - for (String id : ids) { - s.append(id); - s.append(","); - } - return s.substring(0, s.length() - 1); - } - return null; - } - - - @Override - public void populateStatistics(RepositorySession repositorySession, MetadataRepository repository, String repositoryId, - RepositoryStatistics repositoryStatistics) - throws MetadataRepositoryException { - if (!(repository instanceof JcrMetadataRepository)) { - throw new MetadataRepositoryException( - "The statistics population is only possible for JcrMetdataRepository implementations"); - } - Session session = getSession(repositorySession); - // TODO: these may be best as running totals, maintained by observations on the properties in JCR - - try { - QueryManager queryManager = session.getWorkspace().getQueryManager(); - - // TODO: Check, if this is still the case - Switched to Jackrabbit OAK with archiva 3.0 - // Former statement: JCR-SQL2 query will not complete on a large repo in Jackrabbit 2.2.0 - see JCR-2835 - // Using the JCR-SQL2 variants gives - // "org.apache.lucene.search.BooleanQuery$TooManyClauses: maxClauseCount is set to 1024" -// String whereClause = "WHERE ISDESCENDANTNODE([/repositories/" + repositoryId + "/content])"; -// Query query = queryManager.createQuery( "SELECT size FROM [archiva:artifact] " + whereClause, -// Query.JCR_SQL2 ); - String whereClause = "WHERE ISDESCENDANTNODE([/repositories/" + repositoryId + "/content])"; - Query query = queryManager.createQuery("SELECT type,size FROM [" + ARTIFACT_NODE_TYPE + "] " + whereClause, Query.JCR_SQL2); - - QueryResult queryResult = query.execute(); - - Map<String, Integer> totalByType = new HashMap<>(); - long totalSize = 0, totalArtifacts = 0; - for (Row row : JcrUtils.getRows(queryResult)) { - Node n = row.getNode(); - log.debug("Result node {}", n); - totalSize += row.getValue("size").getLong(); - - String type; - if (n.hasNode(MavenArtifactFacet.FACET_ID)) { - Node facetNode = n.getNode(MavenArtifactFacet.FACET_ID); - type = facetNode.getProperty("type").getString(); - } else { - type = "Other"; - } - Integer prev = totalByType.get(type); - totalByType.put(type, prev != null ? prev + 1 : 1); - - totalArtifacts++; - } - - repositoryStatistics.setTotalArtifactCount(totalArtifacts); - repositoryStatistics.setTotalArtifactFileSize(totalSize); - for (Map.Entry<String, Integer> entry : totalByType.entrySet()) { - log.info("Setting count for type: {} = {}", entry.getKey(), entry.getValue()); - repositoryStatistics.setTotalCountForType(entry.getKey(), entry.getValue()); - } - - // The query ordering is a trick to ensure that the size is correct, otherwise due to lazy init it will be -1 -// query = queryManager.createQuery( "SELECT * FROM [archiva:project] " + whereClause, Query.JCR_SQL2 ); - query = queryManager.createQuery("SELECT * FROM [archiva:project] " + whereClause + " ORDER BY [jcr:score]", - Query.JCR_SQL2); - repositoryStatistics.setTotalProjectCount(query.execute().getRows().getSize()); - -// query = queryManager.createQuery( -// "SELECT * FROM [archiva:namespace] " + whereClause + " AND namespace IS NOT NULL", Query.JCR_SQL2 ); - query = queryManager.createQuery( - "SELECT * FROM [archiva:namespace] " + whereClause + " AND namespace IS NOT NULL ORDER BY [jcr:score]", - Query.JCR_SQL2); - repositoryStatistics.setTotalGroupCount(query.execute().getRows().getSize()); - } catch (RepositoryException e) { - throw new MetadataRepositoryException(e.getMessage(), e); - } - } - - - public Session login() throws RepositoryException { - return repository.login(new SimpleCredentials("admin", "admin".toCharArray())); - } - - private static boolean isArtifactNodeType(Node n) { - try { - return n != null && n.isNodeType(ARTIFACT_NODE_TYPE); - } catch (RepositoryException e) { - return false; - } - } - - private Optional<ArtifactMetadata> getArtifactOptional(final String repositoryId, final Node n) { - try { - return Optional.ofNullable(getArtifactFromNode(repositoryId, n)); - } catch (RepositoryException e) { - return Optional.empty(); - } - } - - private Optional<ArtifactMetadata> getArtifactOptional(final String repositoryId, final Row row) { - try { - return Optional.of(getArtifactFromNode(repositoryId, row.getNode("artifact"))); - } catch (RepositoryException e) { - return Optional.empty(); - } - } - - @Override - public Stream<ArtifactMetadata> getArtifactStream(final RepositorySession session, final String repositoryId, - final String namespace, final String projectId, final String projectVersion, - final QueryParameter queryParameter) throws MetadataResolutionException { - final Session jcrSession; - try { - jcrSession = getSession(session); - } catch (MetadataRepositoryException e) { - throw new MetadataResolutionException(e.getMessage()); - } - - try { - Node root = jcrSession.getRootNode(); - String path = getProjectVersionPath(repositoryId, namespace, projectId, projectVersion); - - if (root.hasNode(path)) { - Node node = root.getNode(path); - return StreamSupport.stream(JcrUtils.getChildNodes(node).spliterator(), false).filter(JcrMetadataRepository::isArtifactNodeType) - .map(n -> getArtifactOptional(repositoryId, n)) - .map(Optional::get).skip(queryParameter.getOffset()).limit(queryParameter.getLimit()); - } else { - return Stream.empty(); - } - } catch (RepositoryException e) { - throw new MetadataResolutionException(e.getMessage(), e); - } - } - - @Override - public Stream<ArtifactMetadata> getArtifactStream(final RepositorySession session, final String repositoryId, - final QueryParameter queryParameter) throws MetadataResolutionException { - final Session jcrSession; - try { - jcrSession = getSession(session); - } catch (MetadataRepositoryException e) { - throw new MetadataResolutionException(e.getMessage(), e); - } - List<ArtifactMetadata> artifacts; - - String q = getArtifactQuery(repositoryId).toString(); - - try { - Query query = jcrSession.getWorkspace().getQueryManager().createQuery(q, Query.JCR_SQL2); - QueryResult result = query.execute(); - - return StreamSupport.stream(createResultSpliterator(result, getArtifactFromRowFunc(repositoryId)), false) - .filter(Optional::isPresent).map(Optional::get) - .skip(queryParameter.getOffset()).limit(queryParameter.getLimit()); - - } catch (RepositoryException | MetadataRepositoryException e) { - throw new MetadataResolutionException(e.getMessage(), e); - } - - } -} diff --git a/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrRepositorySession.java b/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrRepositorySession.java deleted file mode 100644 index c914c9a55..000000000 --- a/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrRepositorySession.java +++ /dev/null @@ -1,129 +0,0 @@ -package org.apache.archiva.metadata.repository.jcr; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import org.apache.archiva.metadata.repository.MetadataResolver; -import org.apache.archiva.metadata.repository.MetadataSessionException; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.jcr.RepositoryException; -import javax.jcr.Session; - -/** - * - * Session implementation for a JCR repository. - * - * @author Martin Stockhammer <martin_s@apache.org> - */ -public class JcrRepositorySession extends RepositorySession implements AutoCloseable -{ - - private static final Logger log = LoggerFactory.getLogger( JcrRepositorySession.class ); - - private Session jcrSession; - private JcrMetadataRepository repository; - - public JcrRepositorySession( JcrMetadataRepository metadataRepository, MetadataResolver resolver) throws RepositoryException - { - super( metadataRepository, resolver ); - this.repository = metadataRepository; - this.jcrSession = metadataRepository.login(); - } - - public Session getJcrSession() { - return jcrSession; - } - - public JcrMetadataRepository getJcrRepository() { - return repository; - } - - @Override - public void close( ) - { - super.close( ); - jcrSession.logout(); - } - - @Override - protected boolean isDirty( ) - { - if (super.isDirty()) { - return true; - } - try - { - return jcrSession.hasPendingChanges( ); - } - catch ( RepositoryException e ) - { - log.error( "Could not check pending changes {}", e.getMessage( ) ); - return true; - } - } - - @Override - public void save( ) throws MetadataSessionException - { - super.save( ); - try - { - jcrSession.save(); - } - catch ( RepositoryException e ) - { - throw new MetadataSessionException( e.getMessage( ), e ); - } - } - - @Override - public void revert( ) throws MetadataSessionException - { - super.revert( ); - try - { - jcrSession.refresh( false ); - } - catch ( RepositoryException e ) - { - throw new MetadataSessionException( e.getMessage( ), e ); - } - } - - @Override - public void refresh() throws MetadataSessionException { - try { - jcrSession.refresh(true); - } catch (RepositoryException e) { - throw new MetadataSessionException(e.getMessage(), e); - } - } - - @Override - public void refreshAndDiscard() throws MetadataSessionException { - try { - jcrSession.refresh(false); - } catch (RepositoryException e) { - throw new MetadataSessionException(e.getMessage(), e); - } - } -} diff --git a/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrRepositorySessionFactory.java b/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrRepositorySessionFactory.java deleted file mode 100644 index b367d4601..000000000 --- a/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrRepositorySessionFactory.java +++ /dev/null @@ -1,156 +0,0 @@ -package org.apache.archiva.metadata.repository.jcr; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import org.apache.archiva.metadata.model.MetadataFacet; -import org.apache.archiva.metadata.model.MetadataFacetFactory; -import org.apache.archiva.metadata.repository.*; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.time.StopWatch; -import org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.context.ApplicationContext; -import org.springframework.stereotype.Service; - -import javax.annotation.PreDestroy; -import javax.inject.Inject; -import javax.jcr.Repository; -import javax.jcr.RepositoryException; -import java.io.IOException; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.HashMap; -import java.util.Map; - -/** - * - */ -@Service( "repositorySessionFactory#jcr" ) -public class JcrRepositorySessionFactory extends AbstractRepositorySessionFactory - implements RepositorySessionFactory -{ - - private Logger logger = LoggerFactory.getLogger( getClass() ); - - private Repository repository; - - // Lazy evaluation to avoid problems with circular dependencies during initialization - private MetadataResolver metadataResolver; - - @Inject - private RepositorySessionFactoryBean repositorySessionFactoryBean; - - @Inject - private MetadataService metadataService; - - private OakRepositoryFactory repositoryFactory; - - private JcrMetadataRepository jcrMetadataRepository; - - @Override - public RepositorySession createSession() throws MetadataRepositoryException - { - try - { - return new JcrRepositorySession( jcrMetadataRepository, getMetadataResolver() ); - } - catch ( RepositoryException e ) - { - // FIXME: a custom exception requires refactoring for callers to handle it - throw new RuntimeException( e ); - } - } - - private MetadataResolver getMetadataResolver() { - return metadataService.getMetadataResolver( ); - } - - protected void initialize() - { - - // skip initialisation if not jcr - if ( repositorySessionFactoryBean!=null && !StringUtils.equals( repositorySessionFactoryBean.getId(), "jcr" ) ) - { - return; - } - - StopWatch stopWatch = new StopWatch(); - stopWatch.start(); - - try - { - - repositoryFactory = new OakRepositoryFactory(); - // FIXME this need to be configurable - Path directoryPath = Paths.get( System.getProperty( "appserver.base" ), "data/jcr" ); - repositoryFactory.setRepositoryPath( directoryPath ); - try { - repository = repositoryFactory.createRepository(); - } catch (InvalidFileStoreVersionException | IOException e) { - logger.error("Repository creation failed {}", e.getMessage()); - throw new RuntimeException("Fatal error. Could not create metadata repository."); - } - jcrMetadataRepository = new JcrMetadataRepository( metadataService, repository ); - try ( JcrRepositorySession session = new JcrRepositorySession( jcrMetadataRepository, metadataResolver )) { - JcrMetadataRepository.initializeNodeTypes( session.getJcrSession() ); - // Saves automatically with close - } - } - catch ( RepositoryException e ) - { - throw new RuntimeException( e.getMessage(), e ); - } - - stopWatch.stop(); - logger.info( "time to initialize JcrRepositorySessionFactory: {}", stopWatch.getTime() ); - } - - @Override - protected void shutdown() { - logger.info( "Shutting down JcrRepositorySessionFactory" ); - repositoryFactory.close(); - } - - @PreDestroy - public void close() - { - super.close(); - } - - public void setMetadataResolver(MetadataResolver metadataResolver) { - this.metadataResolver = metadataResolver; - } - - public JcrMetadataRepository getMetadataRepository() { - return jcrMetadataRepository; - } - - - public MetadataService getMetadataService( ) - { - return metadataService; - } - - public void setMetadataService( MetadataService metadataService ) - { - this.metadataService = metadataService; - } -} diff --git a/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/OakRepositoryFactory.java b/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/OakRepositoryFactory.java deleted file mode 100644 index 8822ff07b..000000000 --- a/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/OakRepositoryFactory.java +++ /dev/null @@ -1,660 +0,0 @@ -package org.apache.archiva.metadata.repository.jcr; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import org.apache.commons.lang3.time.StopWatch; -import org.apache.jackrabbit.oak.api.Type; -import org.apache.jackrabbit.oak.jcr.Jcr; -import org.apache.jackrabbit.oak.plugins.index.AsyncIndexInfoService; -import org.apache.jackrabbit.oak.plugins.index.AsyncIndexInfoServiceImpl; -import org.apache.jackrabbit.oak.plugins.index.IndexInfoProvider; -import org.apache.jackrabbit.oak.plugins.index.IndexPathService; -import org.apache.jackrabbit.oak.plugins.index.IndexPathServiceImpl; -import org.apache.jackrabbit.oak.plugins.index.IndexUtils; -import org.apache.jackrabbit.oak.plugins.index.aggregate.SimpleNodeAggregator; -import org.apache.jackrabbit.oak.plugins.index.lucene.IndexAugmentorFactory; -import org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier; -import org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker; -import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorProvider; -import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexInfoProvider; -import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProvider; -import org.apache.jackrabbit.oak.plugins.index.lucene.directory.ActiveDeletedBlobCollectorFactory; -import org.apache.jackrabbit.oak.plugins.index.lucene.directory.BufferedOakDirectory; -import org.apache.jackrabbit.oak.plugins.index.lucene.directory.LuceneIndexImporter; -import org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.DocumentQueue; -import org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.ExternalObserverBuilder; -import org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.LocalIndexObserver; -import org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.NRTIndexFactory; -import org.apache.jackrabbit.oak.plugins.index.lucene.property.PropertyIndexCleaner; -import org.apache.jackrabbit.oak.plugins.index.lucene.reader.DefaultIndexReaderFactory; -import org.apache.jackrabbit.oak.plugins.index.lucene.score.ScorerProviderFactory; -import org.apache.jackrabbit.oak.plugins.index.lucene.score.impl.ScorerProviderFactoryImpl; -import org.apache.jackrabbit.oak.plugins.index.lucene.util.IndexDefinitionBuilder; -import org.apache.jackrabbit.oak.plugins.index.search.ExtractedTextCache; -import org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants; -import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore; -import org.apache.jackrabbit.oak.plugins.name.Namespaces; -import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders; -import org.apache.jackrabbit.oak.segment.file.FileStore; -import org.apache.jackrabbit.oak.segment.file.FileStoreBuilder; -import org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException; -import org.apache.jackrabbit.oak.spi.blob.FileBlobStore; -import org.apache.jackrabbit.oak.spi.blob.GarbageCollectableBlobStore; -import org.apache.jackrabbit.oak.spi.commit.BackgroundObserver; -import org.apache.jackrabbit.oak.spi.commit.Observer; -import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer; -import org.apache.jackrabbit.oak.spi.mount.MountInfoProvider; -import org.apache.jackrabbit.oak.spi.mount.Mounts; -import org.apache.jackrabbit.oak.spi.namespace.NamespaceConstants; -import org.apache.jackrabbit.oak.spi.query.QueryIndex; -import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider; -import org.apache.jackrabbit.oak.spi.state.Clusterable; -import org.apache.jackrabbit.oak.spi.state.NodeBuilder; -import org.apache.jackrabbit.oak.spi.state.NodeStore; -import org.apache.jackrabbit.oak.stats.StatisticsProvider; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.jcr.Repository; -import java.io.Closeable; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ThreadFactory; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; - -import static org.apache.archiva.metadata.repository.jcr.JcrConstants.*; -import static org.apache.archiva.metadata.repository.jcr.OakRepositoryFactory.StoreType.IN_MEMORY_TYPE; -import static org.apache.archiva.metadata.repository.jcr.OakRepositoryFactory.StoreType.SEGMENT_FILE_TYPE; -import static org.apache.commons.io.FileUtils.ONE_MB; -import static org.apache.jackrabbit.JcrConstants.*; -import static org.apache.jackrabbit.oak.api.Type.NAME; - -/** - * Created by martin on 14.06.17. - * - * @author Martin Stockhammer - * @since 3.0.0 - */ -public class OakRepositoryFactory -{ - - private Logger log = LoggerFactory.getLogger( OakRepositoryFactory.class ); - - private FileStore fileStore; - - private NodeStore nodeStore; - - private IndexTracker tracker; - - private DocumentQueue documentQueue; - - private NRTIndexFactory nrtIndexFactory; - - private IndexCopier indexCopier; - - private ExecutorService executorService; - private ExtractedTextCache extractedTextCache; - - private boolean hybridIndex = true; - private boolean prefetchEnabled = true; - private boolean enableAsyncIndexOpen = true; - int queueSize = 10000; - int cleanerInterval = 10*60; - boolean enableCopyOnWrite = true; - boolean enableCopyOnRead = true; - int cacheSizeInMB = 20; - int cacheExpiryInSecs = 300; - int threadPoolSize = 5; - - private StatisticsProvider statisticsProvider; - - private MountInfoProvider mountInfoProvider = Mounts.defaultMountInfoProvider(); - - private AsyncIndexInfoService asyncIndexInfoService = null; - - private LuceneIndexProvider indexProvider; - - private ScorerProviderFactory scorerFactory = new ScorerProviderFactoryImpl( ); - private IndexAugmentorFactory augmentorFactory = new IndexAugmentorFactory( ); - - private ActiveDeletedBlobCollectorFactory.ActiveDeletedBlobCollector activeDeletedBlobCollector = ActiveDeletedBlobCollectorFactory.NOOP; - - private QueryIndex.NodeAggregator nodeAggregator = new SimpleNodeAggregator( ); - - private BackgroundObserver backgroundObserver; - - private BackgroundObserver externalIndexObserver; - - private GarbageCollectableBlobStore blobStore; - - private PropertyIndexCleaner cleaner; - - private IndexPathService indexPathService; - - private LuceneIndexEditorProvider editorProvider; - - private Path indexDir; - - public enum StoreType - { - SEGMENT_FILE_TYPE, - IN_MEMORY_TYPE; - } - - private StoreType storeType = SEGMENT_FILE_TYPE; - - private Path repositoryPath = Paths.get( "repository" ); - - public OakRepositoryFactory() { - final OakRepositoryFactory repositoryFactory = this; - Runtime.getRuntime().addShutdownHook( new Thread( ( ) -> { - if (repositoryFactory!=null) - { - repositoryFactory.close( ); - } - } ) ); - } - - private void initializeExtractedTextCache( StatisticsProvider statisticsProvider) { - boolean alwaysUsePreExtractedCache = false; - - extractedTextCache = new ExtractedTextCache( - cacheSizeInMB * ONE_MB, - cacheExpiryInSecs, - alwaysUsePreExtractedCache, - indexDir.toFile(), statisticsProvider); - } - - private IndexTracker createTracker() throws IOException { - IndexTracker tracker; - if (enableCopyOnRead){ - initializeIndexCopier(); - log.info("Enabling CopyOnRead support. Index files would be copied under {}", indexDir.toAbsolutePath()); - if (hybridIndex) { - nrtIndexFactory = new NRTIndexFactory(indexCopier, statisticsProvider); - } - tracker = new IndexTracker(new DefaultIndexReaderFactory(mountInfoProvider, indexCopier), nrtIndexFactory); - } else { - tracker = new IndexTracker(new DefaultIndexReaderFactory(mountInfoProvider, null)); - } - - tracker.setAsyncIndexInfoService(asyncIndexInfoService); - tracker.refresh(); - return tracker; - } - - private void initializeIndexCopier() throws IOException { - if(indexCopier != null){ - return; - } - - if (prefetchEnabled){ - log.info("Prefetching of index files enabled. Index would be opened after copying all new files locally"); - } - - indexCopier = new IndexCopier(getExecutorService(), indexDir.toFile(), prefetchEnabled); - - } - - ExecutorService getExecutorService(){ - if (executorService == null){ - executorService = createExecutor(); - } - return executorService; - } - - private ExecutorService createExecutor() { - ThreadPoolExecutor executor = new ThreadPoolExecutor(threadPoolSize, threadPoolSize, 60L, TimeUnit.SECONDS, - new LinkedBlockingQueue<Runnable>(), new ThreadFactory() { - private final AtomicInteger counter = new AtomicInteger(); - private final Thread.UncaughtExceptionHandler handler = new Thread.UncaughtExceptionHandler() { - @Override - public void uncaughtException(Thread t, Throwable e) { - log.warn("Error occurred in asynchronous processing ", e); - } - }; - @Override - public Thread newThread(Runnable r) { - Thread thread = new Thread(r, createName()); - thread.setDaemon(true); - thread.setPriority(Thread.MIN_PRIORITY); - thread.setUncaughtExceptionHandler(handler); - return thread; - } - - private String createName() { - return "oak-lucene-" + counter.getAndIncrement(); - } - }); - executor.setKeepAliveTime(1, TimeUnit.MINUTES); - executor.allowCoreThreadTimeOut(true); - return executor; - } - - private void initialize(){ - if(indexProvider == null){ - return; - } - - if(nodeAggregator != null){ - log.debug("Using NodeAggregator {}", nodeAggregator.getClass()); - } - - indexProvider.setAggregator(nodeAggregator); - } - - private void registerObserver() { - Observer observer = indexProvider; - if (enableAsyncIndexOpen) { - backgroundObserver = new BackgroundObserver(indexProvider, getExecutorService(), 5); - log.info("Registering the LuceneIndexProvider as a BackgroundObserver"); - } - } - - private void registerLocalIndexObserver(IndexTracker tracker) { - if (!hybridIndex){ - log.info("Hybrid indexing feature disabled"); - return; - } - documentQueue = new DocumentQueue( queueSize, tracker, getExecutorService(), statisticsProvider); - LocalIndexObserver localIndexObserver = new LocalIndexObserver(documentQueue, statisticsProvider); - - int observerQueueSize = 1000; - int builderMaxSize = 5000; - // regs.add(bundleContext.registerService(JournalPropertyService.class.getName(), - // new LuceneJournalPropertyService(builderMaxSize), null)); - ExternalObserverBuilder builder = new ExternalObserverBuilder(documentQueue, tracker, statisticsProvider, - getExecutorService(), observerQueueSize); - log.info("Configured JournalPropertyBuilder with max size {} and backed by BackgroundObserver " + - "with queue size {}", builderMaxSize, observerQueueSize); - - Observer observer = builder.build(); - externalIndexObserver = builder.getBackgroundObserver(); - log.info("Hybrid indexing enabled for configured indexes with queue size of {}", queueSize ); - } - - private IndexInfoProvider registerIndexInfoProvider() { - return new LuceneIndexInfoProvider(nodeStore, asyncIndexInfoService, getIndexCheckDir().toFile()); - } - - private Path getIndexCheckDir() { - if (indexDir==null) { - throw new NullPointerException( "Null value for indexDir encountered." ); - } - return indexDir.resolve("indexCheckDir"); - } - - private LuceneIndexImporter registerIndexImporterProvider() { - return new LuceneIndexImporter(blobStore); - } - - private void registerPropertyIndexCleaner( ) { - - if (cleanerInterval <= 0) { - log.info("Property index cleaner would not be registered"); - return; - } - - cleaner = new PropertyIndexCleaner(nodeStore, indexPathService, asyncIndexInfoService, statisticsProvider); - - //Proxy check for DocumentNodeStore - if (nodeStore instanceof Clusterable ) { - cleaner.setRecursiveDelete(true); - log.info("PropertyIndexCleaner configured to perform recursive delete"); - } - log.info("Property index cleaner configured to run every [{}] seconds", cleanerInterval); - } - - private void registerIndexEditor( IndexTracker tracker) throws IOException { - boolean enableCopyOnWrite = true; - if (enableCopyOnWrite){ - initializeIndexCopier(); - editorProvider = new LuceneIndexEditorProvider(indexCopier, tracker, extractedTextCache, - augmentorFactory, mountInfoProvider, activeDeletedBlobCollector, null, statisticsProvider); - log.info("Enabling CopyOnWrite support. Index files would be copied under {}", indexDir.toAbsolutePath()); - } else { - editorProvider = new LuceneIndexEditorProvider(null, tracker, extractedTextCache, augmentorFactory, - mountInfoProvider, activeDeletedBlobCollector, null, statisticsProvider); - } - editorProvider.setBlobStore(blobStore); - - if (hybridIndex){ - if (documentQueue==null) { - throw new NullPointerException( "Null value for documentQueue encountered" ); - } - editorProvider.setIndexingQueue(documentQueue); - } - - - } - - public Repository createRepository() - throws IOException, InvalidFileStoreVersionException - { - - indexDir = repositoryPath.resolve( ".index-lucene" ); - if (!Files.exists( indexDir )) { - Files.createDirectories( indexDir ); - } - blobStore = new FileBlobStore( indexDir.resolve( "blobs" ).toAbsolutePath().toString() ); - - statisticsProvider = StatisticsProvider.NOOP; - - if ( SEGMENT_FILE_TYPE == storeType ) - { - fileStore = FileStoreBuilder.fileStoreBuilder( repositoryPath.toFile() ) - .withStatisticsProvider( statisticsProvider ) - .build(); - nodeStore = SegmentNodeStoreBuilders.builder( fileStore ) // - .withStatisticsProvider( statisticsProvider ) // - .build(); - } - else if ( IN_MEMORY_TYPE == storeType ) - { - nodeStore = new MemoryNodeStore( ); - } - else - { - throw new IllegalArgumentException( "Store type " + storeType + " not recognized" ); - } - - asyncIndexInfoService = new AsyncIndexInfoServiceImpl( nodeStore ); - - indexPathService = new IndexPathServiceImpl( nodeStore, mountInfoProvider ); - - BufferedOakDirectory.setEnableWritingSingleBlobIndexFile( true ); - - initializeExtractedTextCache( statisticsProvider ); - - tracker = createTracker(); - - indexProvider = new LuceneIndexProvider(tracker, scorerFactory, augmentorFactory); - - initialize(); - registerObserver(); - registerLocalIndexObserver(tracker); - registerIndexInfoProvider(); - registerIndexImporterProvider(); - registerPropertyIndexCleaner(); - - registerIndexEditor(tracker); - - - - RepositoryInitializer repoInitializer = new RepositoryInitializer( ) - { - private IndexDefinitionBuilder.PropertyRule initRegexAll( IndexDefinitionBuilder.IndexRule rule ) { - return rule - .indexNodeName( ) - .property(JCR_LASTMODIFIED ).propertyIndex().type( "Date" ).ordered() - .property(JCR_PRIMARYTYPE).propertyIndex() - .property(JCR_MIXINTYPES).propertyIndex() - .property(JCR_PATH).propertyIndex().ordered() - .property( FulltextIndexConstants.REGEX_ALL_PROPS, true ) - .propertyIndex().analyzed( ).nodeScopeIndex(); - } - - private IndexDefinitionBuilder.PropertyRule initBaseRule( IndexDefinitionBuilder.IndexRule rule ) { - return rule - .indexNodeName( ) - .property(JCR_CREATED).propertyIndex().type("Date").ordered() - .property(JCR_LASTMODIFIED ).propertyIndex().type( "Date" ).ordered() - .property(JCR_PRIMARYTYPE).propertyIndex() - .property(JCR_MIXINTYPES).propertyIndex() - .property(JCR_PATH).propertyIndex().ordered() - .property( "id" ).propertyIndex().analyzed( ); - } - - @Override - public void initialize( NodeBuilder root ) - { - NodeBuilder namespaces; - if ( !root.hasChildNode( NamespaceConstants.REP_NAMESPACES ) ) - { - namespaces = Namespaces.createStandardMappings( root ); - Namespaces.buildIndexNode( namespaces ); // index node for faster lookup - } - else - { - namespaces = root.getChildNode( NamespaceConstants.REP_NAMESPACES ); - } - Namespaces.addCustomMapping( namespaces, "http://archiva.apache.org/jcr/", "archiva" ); - - log.info( "Creating index " ); - - NodeBuilder oakIdx = IndexUtils.getOrCreateOakIndex( root ); - if (!oakIdx.hasChildNode( "repo-lucene" )) - { - NodeBuilder lucene = oakIdx.child( "repo-lucene" ); - lucene.setProperty( JCR_PRIMARYTYPE, "oak:QueryIndexDefinition", NAME ); - - lucene.setProperty( "compatVersion", 2 ); - lucene.setProperty( "type", "lucene" ); - // lucene.setProperty("async", "async"); - // lucene.setProperty( INCLUDE_PROPERTY_TYPES, ImmutableSet.of( ), Type.STRINGS ); - // lucene.setProperty("refresh",true); - NodeBuilder rules = lucene.child( "indexRules" ). - setProperty( JCR_PRIMARYTYPE, NT_UNSTRUCTURED, NAME ); - Set<String> parameterSet = new HashSet<>( Arrays.asList(REPOSITORY_NODE_TYPE, - NAMESPACE_MIXIN_TYPE, // - PROJECT_MIXIN_TYPE, - PROJECT_VERSION_NODE_TYPE, // - ARTIFACT_NODE_TYPE, // - FACET_NODE_TYPE // - )); - parameterSet = Collections.unmodifiableSet(parameterSet); - rules.setProperty( ":childOrder", parameterSet, Type.STRINGS ); - IndexDefinitionBuilder idxBuilder = new IndexDefinitionBuilder( lucene ); - idxBuilder.async( "async", "nrt", "sync" ).includedPaths( "/repositories" ).evaluatePathRestrictions(); - - initBaseRule(idxBuilder.indexRule( REPOSITORY_NODE_TYPE )); - initBaseRule(idxBuilder.indexRule(NAMESPACE_MIXIN_TYPE)) - .property( "namespace" ).propertyIndex().analyzed(); - initBaseRule(idxBuilder.indexRule(PROJECT_MIXIN_TYPE)) - .property( "name" ).propertyIndex().analyzed().notNullCheckEnabled().nullCheckEnabled(); - initBaseRule( idxBuilder.indexRule( PROJECT_VERSION_NODE_TYPE ) ) - .property("name").propertyIndex().analyzed().notNullCheckEnabled().nullCheckEnabled() - .property("description").propertyIndex().analyzed().notNullCheckEnabled().nullCheckEnabled() - .property("url").propertyIndex().analyzed( ).notNullCheckEnabled().nullCheckEnabled() - .property("incomplete").type("Boolean").propertyIndex() - .property("mailinglist/name").propertyIndex().analyzed() - .property("license/license.name").propertyIndex().analyzed(); - initBaseRule(idxBuilder.indexRule( ARTIFACT_NODE_TYPE )) - .property( "whenGathered" ).type("Date").propertyIndex().analyzed().ordered() - .property("size").type("Long").propertyIndex().analyzed().ordered() - .property("version").propertyIndex().analyzed().ordered() - .property("checksums/*/value").propertyIndex(); - - initBaseRule( idxBuilder.indexRule( CHECKSUM_NODE_TYPE ) ) - .property("type").propertyIndex() - .property("value").propertyIndex(); - - initRegexAll( idxBuilder.indexRule( FACET_NODE_TYPE ) ) - .property("archiva:facetId").propertyIndex().analyzed().ordered() - .property("archiva:name").propertyIndex().analyzed().ordered().nullCheckEnabled().notNullCheckEnabled(); - - idxBuilder.indexRule( MIXIN_META_SCM ) - .property( "scm.connection" ).propertyIndex() - .property( "scm.developerConnection" ).propertyIndex() - .property( "scm.url").type("URI").propertyIndex().analyzed(); - idxBuilder.indexRule( MIXIN_META_CI ) - .property( "ci.system" ).propertyIndex( ) - .property( "ci.ur" ).propertyIndex( ).analyzed( ); - idxBuilder.indexRule( MIXIN_META_ISSUE ) - .property( "issue.system").propertyIndex() - .property("issue.url").propertyIndex().analyzed(); - idxBuilder.indexRule( MIXIN_META_ORGANIZATION ) - .property( "org.name" ).propertyIndex( ).analyzed( ) - .property( "org.url" ).propertyIndex( ).analyzed( ); - idxBuilder.indexRule( LICENSE_NODE_TYPE ) - .property( "license.name" ).propertyIndex( ).analyzed( ) - .property( "license.url" ).propertyIndex( ).analyzed( ); - idxBuilder.indexRule( MAILINGLIST_NODE_TYPE ) - .property( "name" ).propertyIndex().analyzed(); - initBaseRule(idxBuilder.indexRule( DEPENDENCY_NODE_TYPE )) - .property( "groupId" ).propertyIndex().analyzed().ordered() - .property( "artifactId").propertyIndex().analyzed().ordered() - .property("version").propertyIndex().analyzed().ordered() - .property("type").propertyIndex().analyzed().ordered() - .property( "classifier" ).propertyIndex().ordered() - .property("scope").propertyIndex() - .property("systemPath").propertyIndex().analyzed() - .property("optional").type("Boolean").propertyIndex(); - - idxBuilder.aggregateRule( PROJECT_VERSION_NODE_TYPE ).include( "dependencies") - .path("dependencies/*" ).relativeNode(); - - idxBuilder.build( ); - - List<String> parameterList = Arrays.asList("jcr:uuid", "rep:principalName"); - parameterList = Collections.unmodifiableList(parameterList); - IndexUtils.createIndexDefinition( oakIdx, "baseIndexes", true, false, parameterList, null ); - - log.info( "Index: {} repo-lucene: {}", lucene, lucene.getChildNode( "repo-lucene" ) ); - log.info( "repo-lucene Properties: {}", lucene.getChildNode( "repo-lucene" ).getProperties( ) ); - } else { - log.info( "No Index update" ); - } - // IndexUtils.createIndexDefinition( ) - - } - }; - - // ExternalObserverBuilder builder = new ExternalObserverBuilder(queue, tracker, statsProvider, -// executorService, queueSize); -// Observer observer = builder.build(); -// builder.getBackgroundObserver(); - - - - log.info( "Starting Jcr repo with nodeStore {}", nodeStore ); - Jcr jcr = new Jcr( nodeStore ).with( editorProvider ) // - .with( backgroundObserver ) // - .with( externalIndexObserver ) - // .with(observer) - .with( (QueryIndexProvider) indexProvider ) - .with (repoInitializer) - .withAsyncIndexing( "async", 5 ); - // - //.withAsyncIndexing( "async", 5 ); - StopWatch stopWatch = new StopWatch(); - stopWatch.start(); - Repository r = jcr.createRepository(); - stopWatch.stop(); - log.info( "time to create jcr repository: {} ms", stopWatch.getTime() ); - - return r; - - - } - - private void closeSilently( Closeable service) { - if (service!=null) { - try - { - service.close(); - } - catch ( Throwable e ) - { - // - } - } - } - - public void close() - { - log.info( "Closing JCR RepositoryFactory" ); - closeSilently( fileStore ); - closeSilently( backgroundObserver ); - closeSilently( externalIndexObserver ); - closeSilently( indexProvider ); - indexProvider = null; - closeSilently( documentQueue ); - closeSilently( nrtIndexFactory ); - closeSilently( indexCopier ); - - if (executorService != null){ - executorService.shutdown(); - try - { - executorService.awaitTermination(1, TimeUnit.MINUTES); - } - catch ( InterruptedException e ) - { - e.printStackTrace( ); - } - } - - if (extractedTextCache != null) { - extractedTextCache.close(); - } - - } - - public StoreType getStoreType() - { - return storeType; - } - - public void setStoreType( StoreType storeType ) - { - this.storeType = storeType; - } - - public Path getRepositoryPath() - { - return repositoryPath; - } - - public void setRepositoryPath( Path repositoryPath ) - { - this.repositoryPath = repositoryPath; - } - - public void setRepositoryPath( String repositoryPath ) - { - this.repositoryPath = Paths.get( repositoryPath ); - if ( !Files.exists( this.repositoryPath ) ) - { - try - { - Files.createDirectories( this.repositoryPath ); - } - catch ( IOException e ) - { - log.error( e.getMessage(), e ); - throw new IllegalArgumentException( "cannot create directory:" + repositoryPath, e ); - } - } - } - - -} diff --git a/archiva-modules/plugins/metadata-store-jcr/src/main/resources/META-INF/spring-context.xml b/archiva-modules/plugins/metadata-store-jcr/src/main/resources/META-INF/spring-context.xml deleted file mode 100644 index fd2e154b5..000000000 --- a/archiva-modules/plugins/metadata-store-jcr/src/main/resources/META-INF/spring-context.xml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0"?> - -<!-- - ~ Licensed to the Apache Software Foundation (ASF) under one - ~ or more contributor license agreements. See the NOTICE file - ~ distributed with this work for additional information - ~ regarding copyright ownership. The ASF licenses this file - ~ to you under the Apache License, Version 2.0 (the - ~ "License"); you may not use this file except in compliance - ~ with the License. You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, - ~ software distributed under the License is distributed on an - ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - ~ KIND, either express or implied. See the License for the - ~ specific language governing permissions and limitations - ~ under the License. - --> -<beans xmlns="http://www.springframework.org/schema/beans" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns:context="http://www.springframework.org/schema/context" - xsi:schemaLocation="http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans-3.0.xsd - http://www.springframework.org/schema/context - http://www.springframework.org/schema/context/spring-context-3.0.xsd" - default-lazy-init="true"> - - <context:annotation-config/> - <context:component-scan base-package="org.apache.archiva.metadata.repository.jcr"/> - - - -</beans>
\ No newline at end of file diff --git a/archiva-modules/plugins/metadata-store-jcr/src/main/resources/org/apache/archiva/metadata/repository/jcr/jcr-schema.cnd b/archiva-modules/plugins/metadata-store-jcr/src/main/resources/org/apache/archiva/metadata/repository/jcr/jcr-schema.cnd deleted file mode 100644 index 44073c2c8..000000000 --- a/archiva-modules/plugins/metadata-store-jcr/src/main/resources/org/apache/archiva/metadata/repository/jcr/jcr-schema.cnd +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * JCR OAK does not support same name siblings. Which means we have to - * setup unique keys for list entries. - */ -<archiva = 'http://archiva.apache.org/jcr'> -[archiva:base] abstract mixin - - id (string) - - jcr:lastModified (date) - -[archiva:repository] > archiva:base - + content (archiva:content) primary - + facets (nt:hierarchyNode) - -[archiva:content] > archiva:base - + * (archiva:folder) - -/* - * Namespaces and projects can have the same path, so we add the generic folder - * type as primary type. Namespace and project nodes are mixin types. - */ -[archiva:folder] > archiva:base - + * (archiva:folder) - -[archiva:namespace] > archiva:base mixin - - namespace (string) - + * (archiva:namespace) - + * (archiva:project) - -[archiva:project] > archiva:base mixin - - name (string) - + * (archiva:projectVersion) - -[archiva:meta_scm] mixin - - scm.connection (string) - - scm.developerConnection (string) - - scm.url (uri) - -[archiva:meta_ci] mixin - - ci.system (string) - - ci.url (uri) - -[archiva:meta_issue] mixin - - issue.system (string) - - issue.url (uri) - -[archiva:meta_organization] mixin - - org.name (string) - - org.url (uri) - -[archiva:license] > archiva:base - - index (long) - - name (string) - - url (uri) - -[archiva:mailinglist] > archiva:base - - index (long) - - name (string) - - archive (string) - - post (string) - - unsubscribe (string) - - subscribe (string) - - otherArchives (string) - -[archiva:dependency] > archiva:base - - namespace (string) - - projectId (string) - - version (string) - - artifactId (string) - - type (string) - - classifier (string) - - scope (string) - - systemPath (string) - - optional (boolean) - - link (path) - -[archiva:dependencies] > nt:hierarchyNode - + * (archiva:dependency) - -[archiva:checksums] > nt:hierarchyNode - - id (string) - + * (archiva:checksum) - -[archiva:checksum] - - type (string) - - value (string) - -[archiva:mailinglists] > nt:hierarchyNode - + * (archiva:mailinglist) - -[archiva:licenses] > nt:hierarchyNode - + * (archiva:license) - - -[archiva:projectVersion] > archiva:base, archiva:meta_scm, archiva:meta_ci, archiva:meta_issue, archiva:meta_organization - - name (string) - - description (string) - - url (uri) - - incomplete (boolean) - + * (archiva:artifact) - + licenses (archiva:licenses) - + mailinglists (archiva:mailinglists) - + dependencies (archiva:dependencies) - + * (archiva:facet) - - - -[archiva:artifact] > archiva:base - - whenGathered (date) - - size (long) - - version (string) - + checksums (archiva:checksums) - + * (archiva:facet) - -[archiva:facets] > nt:hierarchyNode - + * (archiva:facetIdContainer) - -[archiva:facetIdContainer] > archiva:base - + * (archiva:facet) - -[archiva:facet] > archiva:base - - archiva:facetId (string) - - archiva:name (string) - - * (string) - + * (archiva:facet) diff --git a/archiva-modules/plugins/metadata-store-jcr/src/main/resources/org/apache/archiva/metadata/repository/jcr/repository.xml b/archiva-modules/plugins/metadata-store-jcr/src/main/resources/org/apache/archiva/metadata/repository/jcr/repository.xml deleted file mode 100644 index b5e1336d7..000000000 --- a/archiva-modules/plugins/metadata-store-jcr/src/main/resources/org/apache/archiva/metadata/repository/jcr/repository.xml +++ /dev/null @@ -1,51 +0,0 @@ -<!-- - ~ Licensed to the Apache Software Foundation (ASF) under one - ~ or more contributor license agreements. See the NOTICE file - ~ distributed with this work for additional information - ~ regarding copyright ownership. The ASF licenses this file - ~ to you under the Apache License, Version 2.0 (the - ~ "License"); you may not use this file except in compliance - ~ with the License. You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, - ~ software distributed under the License is distributed on an - ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - ~ KIND, either express or implied. See the License for the - ~ specific language governing permissions and limitations - ~ under the License. - --> - -<!DOCTYPE Repository - PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 1.5//EN" - "http://jackrabbit.apache.org/dtd/repository-1.5.dtd"> - -<!-- START SNIPPET: default-repository --> -<Repository> - <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem"> - <param name="path" value="${rep.home}/repository"/> - </FileSystem> - <Security appName="Jackrabbit"> - <SecurityManager class="org.apache.jackrabbit.core.security.simple.SimpleSecurityManager" workspaceName="security"/> - <AccessManager class="org.apache.jackrabbit.core.security.simple.SimpleAccessManager"/> - <LoginModule class="org.apache.jackrabbit.core.security.simple.SimpleLoginModule"/> - </Security> - <Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default"/> - <Workspace name="${wsp.name}"> - <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem"> - <param name="path" value="${wsp.home}"/> - </FileSystem> - <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager"/> - <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex"> - <param name="path" value="${wsp.home}/index"/> - </SearchIndex> - </Workspace> - <Versioning rootPath="${rep.home}/version"> - <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem"> - <param name="path" value="${rep.home}/version"/> - </FileSystem> - <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager"/> - </Versioning> -</Repository> -<!-- END SNIPPET: default-repository --> diff --git a/archiva-modules/plugins/metadata-store-jcr/src/test/filtered-resources/META-INF/spring-context.xml b/archiva-modules/plugins/metadata-store-jcr/src/test/filtered-resources/META-INF/spring-context.xml deleted file mode 100644 index c07cc52d5..000000000 --- a/archiva-modules/plugins/metadata-store-jcr/src/test/filtered-resources/META-INF/spring-context.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ Licensed to the Apache Software Foundation (ASF) under one - ~ or more contributor license agreements. See the NOTICE file - ~ distributed with this work for additional information - ~ regarding copyright ownership. The ASF licenses this file - ~ to you under the Apache License, Version 2.0 (the - ~ "License"); you may not use this file except in compliance - ~ with the License. You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, - ~ software distributed under the License is distributed on an - ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - ~ KIND, either express or implied. See the License for the - ~ specific language governing permissions and limitations - ~ under the License. - --> - -<beans xmlns="http://www.springframework.org/schema/beans" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> - - -</beans>
\ No newline at end of file diff --git a/archiva-modules/plugins/metadata-store-jcr/src/test/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepositoryTest.java b/archiva-modules/plugins/metadata-store-jcr/src/test/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepositoryTest.java deleted file mode 100644 index 9f7bd8ca6..000000000 --- a/archiva-modules/plugins/metadata-store-jcr/src/test/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepositoryTest.java +++ /dev/null @@ -1,183 +0,0 @@ -package org.apache.archiva.metadata.repository.jcr; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import org.apache.archiva.metadata.model.ArtifactMetadata; -import org.apache.archiva.metadata.model.MetadataFacetFactory; -import org.apache.archiva.metadata.repository.AbstractMetadataRepositoryTest; -import org.apache.archiva.metadata.repository.DefaultMetadataResolver; -import org.apache.archiva.metadata.repository.MetadataRepositoryException; -import org.apache.archiva.metadata.repository.MetadataService; -import org.apache.archiva.metadata.repository.MetadataSessionException; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; - -import javax.jcr.RepositoryException; -import javax.jcr.Session; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Collection; -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * Using static sessionFactory and repository, because initialization is expensive if we rebuild the whole repository for - * each test. - */ -public class JcrMetadataRepositoryTest - extends AbstractMetadataRepositoryTest -{ - - private static JcrRepositorySessionFactory sessionFactory; - private static JcrMetadataRepository repository; - - @Override - public JcrMetadataRepository getRepository( ) - { - return repository; - } - - @Override - public JcrRepositorySessionFactory getSessionFactory( ) - { - return sessionFactory; - } - - @BeforeClass - public static void setupSpec( ) throws IOException, InvalidFileStoreVersionException - { - Path directory = Paths.get( "target/test-repositories" ); - if ( Files.exists( directory ) ) - { - org.apache.archiva.common.utils.FileUtils.deleteDirectory( directory ); - } - - List<MetadataFacetFactory> factories = createTestMetadataFacetFactories( ); - MetadataService metadataService = new MetadataService(); - metadataService.setMetadataFacetFactories( factories ); - JcrRepositorySessionFactory jcrSessionFactory = new JcrRepositorySessionFactory( ); - jcrSessionFactory.setMetadataResolver( new DefaultMetadataResolver( ) ); - jcrSessionFactory.setMetadataService( metadataService ); - - jcrSessionFactory.open( ); - sessionFactory = jcrSessionFactory; - repository = jcrSessionFactory.getMetadataRepository( ); - - } - - @Before - @Override - public void setUp() throws Exception - { - super.setUp(); - super.assertMaxTries=5; - super.assertRetrySleepMs = 500; - try( JcrRepositorySession session = (JcrRepositorySession) getSessionFactory().createSession() ) { - Session jcrSession = session.getJcrSession( ); - if (jcrSession.itemExists( "/repositories/test" )) - { - jcrSession.removeItem( "/repositories/test" ); - session.save( ); - } - } - } - - @AfterClass - public static void stopSpec( ) - throws Exception - { - if ( repository != null ) - { - try - { - repository.close( ); - } - catch ( Throwable e ) - { - // - } - } - if ( sessionFactory != null ) - { - try - { - sessionFactory.close( ); - } - catch ( Throwable e ) - { - // - } - } - } - - - @Test - public void testSearchArtifactsByKey( ) - throws Exception - { - try ( RepositorySession session = sessionFactory.createSession( ) ) - { - createArtifactWithData( session ); - } - - - tryAssert( ( ) -> { - try ( RepositorySession session = sessionFactory.createSession( ) ) - { - session.refreshAndDiscard( ); - Session jcrSession = ( (JcrRepositorySession) session ).getJcrSession( ); - assertThat(jcrSession.propertyExists( "/repositories/test/content/mytest/myproject/1.0/url" )).isTrue(); - - Collection<ArtifactMetadata> artifactsByProperty = repository.searchArtifacts( session, TEST_REPO_ID, "url", TEST_URL, false ); - assertThat( artifactsByProperty ).isNotNull( ).isNotEmpty( ); - } - } ); - - } - - - @Test - public void testSearchArtifactsByKeyExact() - throws Exception { - try (RepositorySession session = sessionFactory.createSession()) - { - createArtifactWithData( session ); - } - try (RepositorySession session = sessionFactory.createSession()) - { - session.refreshAndDiscard(); - tryAssert(() -> { - Session jcrSession = ( (JcrRepositorySession) session ).getJcrSession( ); - assertThat(jcrSession.propertyExists( "/repositories/test/content/mytest/myproject/1.0/url" )).isTrue(); - Collection<ArtifactMetadata> artifactsByProperty = repository.searchArtifacts( session, TEST_REPO_ID, "url", TEST_URL, true); - assertThat(artifactsByProperty).describedAs( "Artifact search by url=%s must give a result.", TEST_URL ).isNotNull().isNotEmpty(); - artifactsByProperty = repository.searchArtifacts( session, TEST_REPO_ID, "org.name", "pache", true ); - assertThat( artifactsByProperty ).describedAs( "Artifact search by text org.name='pache' must be empty" ).isNotNull( ).isEmpty( ); - } ); - } - } -} diff --git a/archiva-modules/plugins/metadata-store-jcr/src/test/java/org/apache/archiva/metadata/repository/stats/JcrRepositoryStatisticsGatheringTest.java b/archiva-modules/plugins/metadata-store-jcr/src/test/java/org/apache/archiva/metadata/repository/stats/JcrRepositoryStatisticsGatheringTest.java deleted file mode 100644 index c10103a16..000000000 --- a/archiva-modules/plugins/metadata-store-jcr/src/test/java/org/apache/archiva/metadata/repository/stats/JcrRepositoryStatisticsGatheringTest.java +++ /dev/null @@ -1,298 +0,0 @@ -package org.apache.archiva.metadata.repository.stats; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import junit.framework.TestCase; -import org.apache.archiva.metadata.model.MetadataFacetFactory; -import org.apache.archiva.metadata.repository.AbstractMetadataRepositoryTest; -import org.apache.archiva.metadata.repository.DefaultMetadataResolver; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.MetadataRepositoryException; -import org.apache.archiva.metadata.repository.MetadataService; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.metadata.repository.RepositorySessionFactory; -import org.apache.archiva.metadata.repository.jcr.JcrMetadataRepository; -import org.apache.archiva.metadata.repository.jcr.JcrRepositorySessionFactory; -import org.apache.archiva.metadata.repository.jcr.JcrRepositorySession; -import org.apache.archiva.metadata.repository.stats.model.DefaultRepositoryStatistics; -import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; -import org.apache.jackrabbit.commons.JcrUtils; -import org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.test.context.ContextConfiguration; - -import javax.jcr.ImportUUIDBehavior; -import javax.jcr.Node; -import javax.jcr.Repository; -import javax.jcr.RepositoryException; -import javax.jcr.Session; -import javax.jcr.nodetype.NodeTypeManager; -import javax.jcr.nodetype.NodeTypeTemplate; -import java.io.IOException; -import java.io.InputStream; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Calendar; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.zip.GZIPInputStream; - -@RunWith( ArchivaSpringJUnit4ClassRunner.class ) -@ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath*:/spring-context.xml" } ) -public class JcrRepositoryStatisticsGatheringTest - extends TestCase -{ - private static final Logger log = LoggerFactory.getLogger( JcrRepositoryStatisticsGatheringTest.class ); - private static final int TOTAL_FILE_COUNT = 1000; - - private static final int NEW_FILE_COUNT = 500; - - private static final String TEST_REPO = "test-repo"; - - static JcrMetadataRepository repository; - static JcrRepositorySessionFactory sessionFactory; - - Session jcrSession; - - private static Repository jcrRepository; - - Logger logger = LoggerFactory.getLogger( getClass() ); - private int assertRetrySleepMs = 500; - private int assertMaxTries = 5; - - @BeforeClass - public static void setupSpec() - throws IOException, InvalidFileStoreVersionException - { - Path directory = Paths.get( "target/test-repositories" ); - if ( Files.exists(directory) ) - { - org.apache.archiva.common.utils.FileUtils.deleteDirectory( directory ); - } - directory = Paths.get( "target/jcr" ); - if (Files.exists( directory )) { - org.apache.archiva.common.utils.FileUtils.deleteDirectory( directory ); - } - - List<MetadataFacetFactory> factories = AbstractMetadataRepositoryTest.createTestMetadataFacetFactories(); - - MetadataService metadataService = new MetadataService( ); - metadataService.setMetadataFacetFactories( factories ); - - JcrRepositorySessionFactory jcrSessionFactory = new JcrRepositorySessionFactory(); - jcrSessionFactory.setMetadataResolver(new DefaultMetadataResolver()); - jcrSessionFactory.setMetadataService(metadataService); - - jcrSessionFactory.open(); - sessionFactory = jcrSessionFactory; - repository = jcrSessionFactory.getMetadataRepository(); - } - - - @AfterClass - public static void stopSpec() { - try - { - repository.close(); - } - catch ( MetadataRepositoryException e ) - { - e.printStackTrace( ); - } - sessionFactory.close(); - } - - /* - * Used by tryAssert to allow to throw exceptions in the lambda expression. - */ - @FunctionalInterface - protected interface AssertFunction - { - void accept( ) throws Exception; - } - - protected void tryAssert( AssertFunction func ) throws Exception - { - tryAssert( func, assertMaxTries, assertRetrySleepMs ); - } - - - /* - * Runs the assert method until the assert is successful or the number of retries - * is reached. This is needed because the JCR Oak index update is asynchronous, so updates - * may not be visible immediately after the modification. - */ - private void tryAssert( AssertFunction func, int retries, int sleepMillis ) throws Exception - { - Throwable t = null; - int retry = retries; - while ( retry-- > 0 ) - { - try - { - func.accept( ); - return; - } - catch ( Exception | AssertionError e ) - { - t = e; - Thread.currentThread( ).sleep( sleepMillis ); - log.warn( "Retrying assert {}: {}", retry, e.getMessage( ) ); - } - } - log.warn( "Retries: {}, Exception: {}", retry, t.getMessage( ) ); - if ( retry <= 0 && t != null ) - { - if ( t instanceof RuntimeException ) - { - throw (RuntimeException) t; - } - else if ( t instanceof Exception ) - { - throw (Exception) t; - } - else if ( t instanceof Error ) - { - throw (Error) t; - } - } - } - - private static void registerMixinNodeType( NodeTypeManager nodeTypeManager, String type ) - throws RepositoryException - { - NodeTypeTemplate nodeType = nodeTypeManager.createNodeTypeTemplate(); - nodeType.setMixin( true ); - nodeType.setName( type ); - nodeTypeManager.registerNodeType( nodeType, false ); - } - - @After - public void tearDown() - throws Exception - { - if ( repository != null ) - { - try - { - repository.close( ); - } catch (Throwable e) { - // - } - } - if (sessionFactory!=null) { - try - { - sessionFactory.close( ); - } catch (Throwable e) { - // - } - } - super.tearDown(); - - } - - @Test - public void testJcrStatisticsQuery() - throws Exception - { - try(RepositorySession repSession = sessionFactory.createSession()) { - Calendar cal = Calendar.getInstance(); - Date endTime = cal.getTime(); - cal.add(Calendar.HOUR, -1); - Date startTime = cal.getTime(); - - loadContentIntoRepo(repSession, TEST_REPO); - loadContentIntoRepo( repSession, "another-repo"); - - DefaultRepositoryStatistics testedStatistics = new DefaultRepositoryStatistics(); - testedStatistics.setNewFileCount(NEW_FILE_COUNT); - testedStatistics.setTotalFileCount(TOTAL_FILE_COUNT); - testedStatistics.setScanStartTime(startTime); - testedStatistics.setScanEndTime(endTime); - - - DefaultRepositoryStatistics expectedStatistics = new DefaultRepositoryStatistics(); - expectedStatistics.setNewFileCount(NEW_FILE_COUNT); - expectedStatistics.setTotalFileCount(TOTAL_FILE_COUNT); - expectedStatistics.setScanEndTime(endTime); - expectedStatistics.setScanStartTime(startTime); - expectedStatistics.setTotalArtifactFileSize(95954585); - expectedStatistics.setTotalArtifactCount(269); - expectedStatistics.setTotalGroupCount(1); - expectedStatistics.setTotalProjectCount(43); - expectedStatistics.setTotalCountForType("zip", 1); - expectedStatistics.setTotalCountForType("gz", 1); // FIXME: should be tar.gz - expectedStatistics.setTotalCountForType("java-source", 10); - expectedStatistics.setTotalCountForType("jar", 108); - expectedStatistics.setTotalCountForType("xml", 3); - expectedStatistics.setTotalCountForType("war", 2); - expectedStatistics.setTotalCountForType("pom", 144); - expectedStatistics.setRepositoryId(TEST_REPO); - - tryAssert( () -> { - repository.populateStatistics(repSession, repository, TEST_REPO, testedStatistics); - - logger.info("getTotalCountForType: {}", testedStatistics.getTotalCountForType()); - - assertEquals(NEW_FILE_COUNT, testedStatistics.getNewFileCount()); - assertEquals(TOTAL_FILE_COUNT, testedStatistics.getTotalFileCount()); - assertEquals(endTime, testedStatistics.getScanEndTime()); - assertEquals(startTime, testedStatistics.getScanStartTime()); - assertEquals(269, testedStatistics.getTotalArtifactCount()); - assertEquals(1, testedStatistics.getTotalGroupCount()); - assertEquals(43, testedStatistics.getTotalProjectCount()); - assertEquals(1, testedStatistics.getTotalCountForType("zip")); - assertEquals(1, testedStatistics.getTotalCountForType("gz")); - assertEquals(10, testedStatistics.getTotalCountForType("java-source")); - assertEquals(108, testedStatistics.getTotalCountForType("jar")); - assertEquals(3, testedStatistics.getTotalCountForType("xml")); - assertEquals(2, testedStatistics.getTotalCountForType("war")); - assertEquals(144, testedStatistics.getTotalCountForType("pom")); - assertEquals(10, testedStatistics.getTotalCountForType("java-source")); - assertEquals(95954585, testedStatistics.getTotalArtifactFileSize()); - }); - - } - } - - private void loadContentIntoRepo( RepositorySession repoSession, String repoId ) - throws RepositoryException, IOException, MetadataRepositoryException - { - jcrSession = ((JcrRepositorySession) repoSession).getJcrSession(); - Node n = JcrUtils.getOrAddNode( jcrSession.getRootNode( ), "repositories" ); - n = JcrUtils.getOrAddNode( n, repoId ); - n = JcrUtils.getOrAddNode( n, "content" ); - n = JcrUtils.getOrAddNode( n, "org" ); - n = JcrUtils.getOrAddNode( n, "apache" ); - - InputStream inputStream = getClass( ).getResourceAsStream( "/artifacts.xml" ); - jcrSession.importXML( n.getPath( ), inputStream, ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW ); - jcrSession.save( ); - } -} diff --git a/archiva-modules/plugins/metadata-store-jcr/src/test/repository.xml b/archiva-modules/plugins/metadata-store-jcr/src/test/repository.xml deleted file mode 100644 index 625570e92..000000000 --- a/archiva-modules/plugins/metadata-store-jcr/src/test/repository.xml +++ /dev/null @@ -1,51 +0,0 @@ -<!-- - ~ Licensed to the Apache Software Foundation (ASF) under one - ~ or more contributor license agreements. See the NOTICE file - ~ distributed with this work for additional information - ~ regarding copyright ownership. The ASF licenses this file - ~ to you under the Apache License, Version 2.0 (the - ~ "License"); you may not use this file except in compliance - ~ with the License. You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, - ~ software distributed under the License is distributed on an - ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - ~ KIND, either express or implied. See the License for the - ~ specific language governing permissions and limitations - ~ under the License. - --> - -<!DOCTYPE Repository PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 1.6//EN" - "http://jackrabbit.apache.org/dtd/repository-1.6.dtd"> - -<Repository> - <FileSystem class="org.apache.jackrabbit.core.fs.mem.MemoryFileSystem"/> - <!--<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem"> - <param name="path" value="${rep.home}/repository"/> -</FileSystem> --> - <Security appName="Jackrabbit"> - <SecurityManager class="org.apache.jackrabbit.core.security.simple.SimpleSecurityManager" workspaceName="security"/> - <AccessManager class="org.apache.jackrabbit.core.security.simple.SimpleAccessManager"/> - <LoginModule class="org.apache.jackrabbit.core.security.simple.SimpleLoginModule"/> - </Security> - <Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default"/> - <Workspace name="${wsp.name}"> - <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem"> - <param name="path" value="${wsp.home}"/> - </FileSystem> - <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager"/> - <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex"> - <param name="path" value="${wsp.home}/index"/> - </SearchIndex> - </Workspace> - <Versioning rootPath="${rep.home}/version"> - <FileSystem class="org.apache.jackrabbit.core.fs.mem.MemoryFileSystem"/> - <PersistenceManager class="org.apache.jackrabbit.core.persistence.mem.InMemPersistenceManager"/> - <!--<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem"> - <param name="path" value="${rep.home}/version"/> - </FileSystem> - <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager"/>--> - </Versioning> -</Repository> diff --git a/archiva-modules/plugins/metadata-store-jcr/src/test/resources/artifacts.xml b/archiva-modules/plugins/metadata-store-jcr/src/test/resources/artifacts.xml deleted file mode 100644 index b2ad9764b..000000000 --- a/archiva-modules/plugins/metadata-store-jcr/src/test/resources/artifacts.xml +++ /dev/null @@ -1,7869 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ ---> -<sv:node sv:name="archiva" - xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:archiva="http://archiva.apache.org/jcr/" - xmlns:sv="http://www.jcp.org/jcr/sv/1.0" - xmlns:nt="http://www.jcp.org/jcr/nt/1.0" > - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:namespace</sv:value> - </sv:property> - <sv:property sv:name="namespace" sv:type="String"> - <sv:value>org.apache.archiva</sv:value> - </sv:property> - <sv:node sv:name="archiva"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T10:46:50.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>34947</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:14.917+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:29:18.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>35426</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:14.960+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-1.2.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-06-10T18:23:38.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>40252</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:14.964+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T15:57:10.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>40425</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:14.967+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.3"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-1.3.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-02-18T20:35:01.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>40537</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.3</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:14.970+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-applet"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-applet-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:34:24.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>11953</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:14.973+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-applet-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:34:21.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3204</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:14.976+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-applet-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:16:21.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>11953</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:14.979+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-applet-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:16:16.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3206</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:14.982+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-applet-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T19:33:36.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>12027</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:14.984+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-applet-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T19:33:34.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3206</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:14.987+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-artifact-converter"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-artifact-converter-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:27:16.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>19632</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:14.989+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-artifact-converter-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:27:09.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2574</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:14.993+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-artifact-converter-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:08:06.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>19637</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:14.995+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-artifact-converter-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:07:58.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2576</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:14.998+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-artifact-converter-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T19:23:06.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>19878</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.000+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-artifact-converter-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T19:23:05.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2729</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.002+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-artifact-reports"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-artifact-reports-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:16:16.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>21452</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.005+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-artifact-reports-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:16:13.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2368</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.007+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-artifact-reports-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:54:39.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>21458</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.009+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-artifact-reports-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:54:35.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2370</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.012+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-artifact-reports-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T17:04:56.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>21661</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.014+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-artifact-reports-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T17:04:54.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2510</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.017+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-base"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-base-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T10:46:43.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1749</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.020+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-base-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:29:09.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1751</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.022+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-base-1.2.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-06-10T18:23:36.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1751</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.025+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-base-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T15:56:58.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1751</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.027+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.3"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-base-1.3.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-02-18T20:34:59.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1749</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.3</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.030+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-checksum"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-checksum-1.1-sources.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-01-16T15:52:58.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>11445</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.032+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="classifier" sv:type="String"> - <sv:value>sources</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>java-source</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-checksum-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T10:46:41.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>13854</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.035+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-checksum-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T10:46:37.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1773</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.037+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-checksum-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:29:07.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>13857</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.039+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-checksum-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:29:02.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1775</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.041+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-checksum-1.2.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-06-10T18:24:09.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>13884</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.043+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-checksum-1.2.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-06-10T18:23:49.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1915</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.046+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-checksum-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T15:56:56.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>13885</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.048+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-checksum-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T15:56:12.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1915</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.050+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.3"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-checksum-1.3.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-02-18T20:35:03.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>13958</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.3</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.052+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-checksum-1.3.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-02-18T20:34:58.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2092</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.3</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.054+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-common"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-common-1.1-sources.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-01-16T15:54:12.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>16685</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.056+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="classifier" sv:type="String"> - <sv:value>sources</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>java-source</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-common-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T10:47:45.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>17791</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.059+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-common-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T10:47:41.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2718</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.061+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-common-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:30:12.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>17796</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.063+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-common-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:30:08.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2720</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.065+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-common-1.2.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-06-10T18:24:03.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>17803</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.067+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-common-1.2.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-06-10T18:23:40.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2726</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.069+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-common-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T16:25:52.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>17806</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.071+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-common-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T16:24:31.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2726</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.074+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.3"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-common-1.3.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-03-02T15:26:51.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>17803</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.3</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.076+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-common-1.3.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-03-02T15:26:41.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2724</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.3</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.078+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-configuration"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-configuration-1.1-sources.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-01-16T15:53:38.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>57320</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.080+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="classifier" sv:type="String"> - <sv:value>sources</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>java-source</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-configuration-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T10:55:54.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>69950</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.083+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-configuration-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T10:55:50.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3607</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.085+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-configuration-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:32:56.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>69953</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.088+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-configuration-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:32:52.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3609</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.090+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-configuration-1.2.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-06-10T18:24:08.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>69684</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.092+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-configuration-1.2.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-06-10T18:23:46.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>4236</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.095+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-configuration-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T16:28:22.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>69703</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.097+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-configuration-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T16:28:20.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>4236</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.100+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.3"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-configuration-1.3.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-03-02T15:26:53.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>69989</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.3</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.102+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-configuration-1.3.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-03-02T15:26:44.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>4234</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.3</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.104+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-consumer-api"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-consumer-api-1.1-sources.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-01-16T15:55:35.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>17731</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.106+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="classifier" sv:type="String"> - <sv:value>sources</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>java-source</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-consumer-api-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T10:58:48.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>13582</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.108+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-consumer-api-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T10:58:42.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1648</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.110+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-consumer-api-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:36:04.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>13585</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.112+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-consumer-api-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:36:00.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1650</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.115+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-consumer-api-1.2.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-06-10T18:24:06.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>12360</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.117+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-consumer-api-1.2.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-06-10T18:23:44.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1716</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.119+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-consumer-api-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T16:30:37.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>12362</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.120+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-consumer-api-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T16:30:19.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1716</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.122+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.3"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-consumer-api-1.3.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-03-02T15:26:51.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>12321</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.3</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.124+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-consumer-api-1.3.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-03-02T15:26:42.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1641</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.3</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.126+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-consumers"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-consumers-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T10:58:50.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1705</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.128+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-consumers-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:36:06.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1707</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.130+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-consumers-1.2.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-06-10T18:23:45.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1713</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.132+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-consumers-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T16:30:43.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1713</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.134+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.3"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-consumers-1.3.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-03-02T15:26:43.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1667</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.3</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.136+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-converter"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-converter-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:28:28.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>14538</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.138+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-converter-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:28:24.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2061</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.140+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-converter-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:09:33.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>14545</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.142+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-converter-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:09:28.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2063</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.144+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-converter-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T19:29:16.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>14882</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.146+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-converter-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T19:26:56.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2203</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.148+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-core-consumers"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-core-consumers-1.1-sources.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-01-16T16:04:15.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>30477</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.150+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="classifier" sv:type="String"> - <sv:value>sources</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>java-source</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-core-consumers-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:13:03.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>37462</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.152+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-core-consumers-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:12:59.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2472</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.154+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-core-consumers-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:51:14.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>37167</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.156+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-core-consumers-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:51:10.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2474</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.158+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-core-consumers-1.2.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-06-10T18:27:02.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>37087</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.159+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-core-consumers-1.2.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-06-10T18:27:00.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2361</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.161+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-core-consumers-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T16:55:38.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>37143</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.163+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-core-consumers-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T16:55:36.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2361</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.165+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-database"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-database-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:08:15.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>70851</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.167+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-database-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:08:09.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3523</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.169+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-database-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:45:23.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>70968</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.171+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-database-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:45:17.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3525</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.173+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-database-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T16:59:35.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>76862</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.175+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-database-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T16:59:33.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3454</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.176+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-database-consumers"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-database-consumers-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:17:47.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>22668</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.178+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-database-consumers-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:17:43.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2353</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.180+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-database-consumers-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:56:14.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>22680</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.182+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-database-consumers-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:56:10.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2355</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.184+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-database-consumers-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T17:05:50.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>23305</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.186+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-database-consumers-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T17:05:20.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2495</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.188+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-dependency-graph"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-dependency-graph-1.1-sources.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-01-16T15:55:12.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>75027</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.190+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="classifier" sv:type="String"> - <sv:value>sources</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>java-source</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-dependency-graph-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:02:09.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>72880</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.198+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-dependency-graph-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:02:03.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2173</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.200+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-dependency-graph-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:39:01.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>72884</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.202+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-dependency-graph-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:38:56.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2175</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.204+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-dependency-graph-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T19:16:44.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>76437</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.205+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-dependency-graph-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T19:15:28.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2463</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.207+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-dependency-tree-consumer"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-dependency-tree-consumer-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:21:30.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>13608</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.209+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-dependency-tree-consumer-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:21:27.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1626</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.211+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-dependency-tree-consumer-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:00:17.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>13614</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.212+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-dependency-tree-consumer-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:00:00.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1628</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.214+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-dependency-tree-consumer-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T19:14:39.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>13690</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.216+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-dependency-tree-consumer-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T19:14:35.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1768</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.217+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-indexer"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-indexer-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:10:52.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>58205</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.219+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-indexer-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:10:48.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2788</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.221+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-indexer-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:48:56.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>58253</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.222+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-indexer-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:48:52.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2790</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.224+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-indexer-1.2.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-08-15T16:08:03.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>20528</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.226+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-indexer-1.2.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-08-15T16:07:56.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3178</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.227+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-indexer-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T17:06:46.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>20533</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.229+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-indexer-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T17:06:45.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3178</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.230+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-jetty"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.2.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-jetty-1.2.1-bin.zip"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-12-21T22:23:20.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>27161374</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.232+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="classifier" sv:type="String"> - <sv:value>bin</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>zip</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-jetty-1.2.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-12-21T22:21:31.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>10107</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.234+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.3.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-jetty-1.3.1-bin.tar.gz"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-08-03T16:41:15.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>29546739</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.3.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.236+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="classifier" sv:type="String"> - <sv:value>bin.tar</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>gz</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-jetty-1.3.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-08-03T16:39:23.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>8987</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.3.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.237+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-lucene-consumers"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-lucene-consumers-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:19:22.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>22221</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.239+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-lucene-consumers-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:19:18.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2102</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.241+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-lucene-consumers-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:57:47.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>22174</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.242+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-lucene-consumers-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:57:42.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2104</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.244+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-lucene-consumers-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T17:10:06.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>12615</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.246+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-lucene-consumers-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T17:10:04.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2499</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.247+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-metadata-reports"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-metadata-reports-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:29:48.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>10005</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.249+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-metadata-reports-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:29:43.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2167</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.251+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-metadata-reports-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:11:21.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>10014</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.253+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-metadata-reports-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:11:16.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2169</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.254+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-model"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-model-1.1-sources.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-01-16T15:55:17.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>64097</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.256+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="classifier" sv:type="String"> - <sv:value>sources</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>java-source</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-model-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T10:57:15.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>158429</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.258+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-model-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T10:57:09.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>5385</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.260+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-model-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:34:25.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>158435</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.261+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-model-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:34:19.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>5387</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.263+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-model-1.2.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-06-10T18:24:03.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>151823</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.265+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-model-1.2.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-06-10T18:23:35.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>5909</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.267+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-model-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T16:53:36.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>151841</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.268+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-model-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T16:53:34.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>5907</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.270+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.3"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-model-1.3.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-03-02T15:26:50.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>157804</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.3</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.272+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-model-1.3.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-03-02T15:26:41.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>6773</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.3</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.273+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-modules"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-modules-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T10:46:46.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>7490</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.275+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-modules-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:29:13.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>7492</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.277+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-modules-1.2.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-06-10T18:23:37.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>7492</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.278+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-modules-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T15:57:01.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>7492</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.280+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.3"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-modules-1.3.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-02-18T20:35:00.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>7490</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.3</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.282+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-parent"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="3"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-parent-3-site.xml"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-06-14T12:29:21.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1219</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>3</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.284+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="classifier" sv:type="String"> - <sv:value>site</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>xml</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-parent-3.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-06-13T11:50:04.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>14332</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>3</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.286+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="5"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-parent-5-site.xml"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-02-12T14:56:51.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1219</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>5</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.288+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="classifier" sv:type="String"> - <sv:value>site</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>xml</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-parent-5.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-02-12T14:54:50.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>15687</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>5</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.290+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="6"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-parent-6-site.xml"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-06-17T16:47:34.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1219</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>6</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.292+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="classifier" sv:type="String"> - <sv:value>site</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>xml</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-parent-6.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-06-17T14:50:55.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>16063</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>6</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.294+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-policies"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-policies-1.1-sources.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-01-16T15:52:10.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>27577</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.295+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="classifier" sv:type="String"> - <sv:value>sources</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>java-source</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-policies-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T10:54:31.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>25499</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.298+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-policies-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T10:54:27.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2886</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.299+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-policies-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:31:34.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>25977</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.301+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-policies-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:31:29.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2888</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.303+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-policies-1.2.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-06-10T18:24:09.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>26100</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.305+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-policies-1.2.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-06-10T18:23:48.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3271</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.306+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-policies-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T16:27:27.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>26111</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.308+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-policies-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T16:27:26.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3268</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.310+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.3"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-policies-1.3.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-03-02T15:26:54.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>26106</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.3</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.312+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-policies-1.3.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-03-02T15:26:45.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3266</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.3</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.313+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-project-reports"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-project-reports-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:31:02.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>10569</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.315+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-project-reports-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:30:58.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2165</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.317+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-project-reports-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:12:42.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>10579</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.319+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-project-reports-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:12:37.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2167</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.321+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-proxy"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-proxy-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:23:57.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>24853</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.322+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-proxy-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:23:54.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3262</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.324+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-proxy-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:03:31.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>26864</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.326+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-proxy-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:03:24.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3642</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.328+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-proxy-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T19:18:22.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>27384</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.330+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-proxy-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T19:17:43.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3910</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.332+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-report-manager"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-report-manager-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:14:46.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>11485</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.333+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-report-manager-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:14:42.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2030</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.335+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-report-manager-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:53:07.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>11497</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.336+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-report-manager-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:53:03.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2032</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.338+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-report-manager-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T17:04:30.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>16774</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.340+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-report-manager-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T17:04:28.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2323</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.341+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-reporting"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-reporting-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:14:49.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1475</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.343+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-reporting-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:53:09.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1477</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.345+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-reporting-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T17:04:31.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1477</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.346+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-repository-layer"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-repository-layer-1.1-sources.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-01-16T15:52:35.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>113443</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.348+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="classifier" sv:type="String"> - <sv:value>sources</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>java-source</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-repository-layer-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:04:12.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>121592</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.350+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-repository-layer-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:04:05.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3591</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.351+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-repository-layer-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:41:08.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>121601</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.353+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-repository-layer-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:41:01.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3593</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.355+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-repository-layer-1.2.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-06-10T18:24:05.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>128299</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.356+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-repository-layer-1.2.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-06-10T18:23:41.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3589</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.358+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-repository-layer-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T16:54:51.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>129168</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.359+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-repository-layer-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T16:54:49.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3589</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.361+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.3"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-repository-layer-1.3.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-03-02T15:26:48.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>129243</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.3</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.362+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-repository-layer-1.3.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-03-02T15:26:39.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3459</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.3</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.364+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-rss"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-rss-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:37:03.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>16737</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.365+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-rss-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:36:59.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1438</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.367+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-rss-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:19:28.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>16793</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.369+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-rss-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:19:24.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1440</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.370+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-rss-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T19:37:32.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>16837</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.372+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-rss-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T19:37:19.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1631</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.373+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-scheduled"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-scheduled-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:32:33.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>23138</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.375+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-scheduled-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:32:29.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3788</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.377+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-scheduled-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:14:18.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>23863</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.378+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-scheduled-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:14:14.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3790</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.380+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-scheduled-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T17:08:52.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>32894</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.381+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-scheduled-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T17:07:52.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>4036</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.383+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-security"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-security-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:35:20.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>23545</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.384+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-security-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:35:17.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2923</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.385+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-security-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:17:27.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>23838</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.387+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-security-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:17:22.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2925</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.388+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-security-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T19:36:28.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>21062</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.390+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-security-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T19:36:27.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>3127</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.391+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-signature-consumers"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-signature-consumers-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:20:36.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>6326</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.392+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-signature-consumers-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:20:32.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1227</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.394+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-signature-consumers-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:59:11.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>6331</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.395+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-signature-consumers-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:59:07.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1229</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.397+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-signature-consumers-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T17:10:44.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>6330</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.398+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-signature-consumers-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T17:10:43.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1229</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.399+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-transaction"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-transaction-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:25:58.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>14444</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.401+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-transaction-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:25:34.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2039</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.402+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-transaction-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:06:20.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>14448</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.403+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-transaction-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:06:11.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2041</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.405+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-transaction-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T19:22:36.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>14920</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.406+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-transaction-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T19:22:35.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2326</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.408+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-web"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-web-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:34:26.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1578</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.409+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-web-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:16:22.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1580</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.410+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-web-1.2.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-08-15T16:07:56.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1609</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.412+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-web-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T19:33:36.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1609</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.414+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-webapp"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-webapp-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-20T12:50:47.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>18681</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.415+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-webapp-1.1.war"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-20T12:52:47.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>16873347</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.417+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>war</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-webapp-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T21:01:12.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>19540</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.418+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-webapp-1.2.2.war"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T21:02:30.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>17295558</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.420+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>war</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-webdav"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-webdav-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:42:43.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>51511</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.421+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-webdav-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:42:39.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>4479</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.423+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-webdav-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:24:57.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>52236</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.424+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-webdav-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T13:24:48.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>4481</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.426+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-webdav-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T20:54:50.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>53801</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.427+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-webdav-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T20:54:48.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>4857</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.428+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-xml-tools"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-xml-tools-1.1-sources.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-01-16T15:53:32.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>16150</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.430+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="classifier" sv:type="String"> - <sv:value>sources</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>java-source</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-xml-tools-1.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:00:10.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>20957</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.431+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-xml-tools-1.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-08-11T11:00:00.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2810</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.433+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.1.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-xml-tools-1.1.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:37:24.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>20963</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.434+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-xml-tools-1.1.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2008-10-09T12:37:20.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2812</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.1.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.435+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-xml-tools-1.2.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-06-10T18:24:06.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>20818</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.436+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-xml-tools-1.2.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-06-10T18:23:42.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2074</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.438+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-xml-tools-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T16:54:07.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>20818</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.439+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-xml-tools-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T16:54:05.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2074</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.440+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.3"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-xml-tools-1.3.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-03-02T15:26:54.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>20814</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.3</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.442+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-xml-tools-1.3.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-03-02T15:26:46.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2072</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.3</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.443+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-xmlrpc"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.2.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-xmlrpc-1.2.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-08-15T16:07:55.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1604</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.444+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-xmlrpc-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T19:38:45.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1604</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.445+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-xmlrpc-api"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.2.1"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-xmlrpc-api-1.2.1.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-08-15T16:08:03.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>14021</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.447+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-xmlrpc-api-1.2.1.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2009-08-15T16:07:55.000+10:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>832</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.1</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.448+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-xmlrpc-api-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T19:38:45.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>14026</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.449+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-xmlrpc-api-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T19:38:43.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>832</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.451+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-xmlrpc-client"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-xmlrpc-client-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T21:08:27.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>11038</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.452+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-xmlrpc-client-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T21:08:26.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2910</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.453+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-xmlrpc-security"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-xmlrpc-security-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T20:22:34.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>14249</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.454+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-xmlrpc-security-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T20:22:32.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>2375</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.455+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-xmlrpc-services"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>nt:unstructured</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> - <sv:value>archiva:project</sv:value> - </sv:property> - <sv:node sv:name="1.2.2"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:projectVersion</sv:value> - </sv:property> - <sv:node sv:name="archiva-xmlrpc-services-1.2.2.jar"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T20:49:48.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>17544</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.456+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jar</sv:value> - </sv:property> - </sv:node> - </sv:node> - <sv:node sv:name="archiva-xmlrpc-services-1.2.2.pom"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:artifact</sv:value> - </sv:property> - <sv:property sv:name="jcr:lastModified" sv:type="Date"> - <sv:value>2010-01-20T20:49:47.000+11:00</sv:value> - </sv:property> - <sv:property sv:name="size" sv:type="Long"> - <sv:value>1801</sv:value> - </sv:property> - <sv:property sv:name="version" sv:type="String"> - <sv:value>1.2.2</sv:value> - </sv:property> - <sv:property sv:name="whenGathered" sv:type="Date"> - <sv:value>2010-12-30T19:21:15.457+11:00</sv:value> - </sv:property> - <sv:node sv:name="org.apache.archiva.metadata.repository.storage.maven2.artifact"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>archiva:facet</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>pom</sv:value> - </sv:property> - </sv:node> - </sv:node> - </sv:node> - </sv:node> -</sv:node>
\ No newline at end of file diff --git a/archiva-modules/plugins/metadata-store-jcr/src/test/resources/log4j2-test.xml b/archiva-modules/plugins/metadata-store-jcr/src/test/resources/log4j2-test.xml deleted file mode 100644 index b9911476e..000000000 --- a/archiva-modules/plugins/metadata-store-jcr/src/test/resources/log4j2-test.xml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!-- - ~ Licensed to the Apache Software Foundation (ASF) under one - ~ or more contributor license agreements. See the NOTICE file - ~ distributed with this work for additional information - ~ regarding copyright ownership. The ASF licenses this file - ~ to you under the Apache License, Version 2.0 (the - ~ "License"); you may not use this file except in compliance - ~ with the License. You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, - ~ software distributed under the License is distributed on an - ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - ~ KIND, either express or implied. See the License for the - ~ specific language governing permissions and limitations - ~ under the License. - --> - - -<configuration status="debug"> - - <appenders> - <Console name="console" target="SYSTEM_OUT"> - <!--PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/--> - <PatternLayout pattern="%highlight{%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n}" /> - </Console> - - </appenders> - <loggers> - <logger name="org.apache.jackrabbit" level="trace"/> - <logger name="org.apache.jackrabbit.oak.segment" level="info" /> - <logger name="org.apache.jackrabbit.oak.cache.CacheLIRS" level="info"/> - <logger name="org.apache.archiva.metadata" level="debug" /> - <root level="info" includeLocation="true"> - <appender-ref ref="console"/> - </root> - </loggers> -</configuration>
\ No newline at end of file diff --git a/archiva-modules/plugins/oak-jcr-lucene/.gitignore b/archiva-modules/plugins/oak-jcr-lucene/.gitignore deleted file mode 100644 index 916e17c09..000000000 --- a/archiva-modules/plugins/oak-jcr-lucene/.gitignore +++ /dev/null @@ -1 +0,0 @@ -dependency-reduced-pom.xml diff --git a/archiva-modules/plugins/oak-jcr-lucene/pom.xml b/archiva-modules/plugins/oak-jcr-lucene/pom.xml deleted file mode 100644 index 63be95aff..000000000 --- a/archiva-modules/plugins/oak-jcr-lucene/pom.xml +++ /dev/null @@ -1,216 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ Licensed to the Apache Software Foundation (ASF) under one - ~ or more contributor license agreements. See the NOTICE file - ~ distributed with this work for additional information - ~ regarding copyright ownership. The ASF licenses this file - ~ to you under the Apache License, Version 2.0 (the - ~ "License"); you may not use this file except in compliance - ~ with the License. You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ Unless required by applicable law or agreed to in writing, - ~ software distributed under the License is distributed on an - ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - ~ KIND, either express or implied. See the License for the - ~ specific language governing permissions and limitations - ~ under the License. - --> - -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <artifactId>plugins</artifactId> - <groupId>org.apache.archiva</groupId> - <version>3.0.0-SNAPSHOT</version> - </parent> - <modelVersion>4.0.0</modelVersion> - - <artifactId>oak-jcr-lucene</artifactId> - - <dependencies> - <dependency> - <groupId>org.apache.jackrabbit</groupId> - <artifactId>oak-lucene</artifactId> - <version>${jcr-oak.version}</version> - <exclusions> - <exclusion> - <groupId>org.apache.lucene</groupId> - <artifactId>lucene-analyzers-common</artifactId> - </exclusion> - <exclusion> - <groupId>org.apache.lucene</groupId> - <artifactId>lucene-core</artifactId> - </exclusion> - <exclusion> - <groupId>org.apache.lucene</groupId> - <artifactId>lucene-highlighter</artifactId> - </exclusion> - <exclusion> - <groupId>org.apache.lucene</groupId> - <artifactId>lucene-memory</artifactId> - </exclusion> - <exclusion> - <groupId>org.apache.lucene</groupId> - <artifactId>lucene-queries</artifactId> - </exclusion> - <exclusion> - <groupId>org.apache.lucene</groupId> - <artifactId>lucene-queryparser</artifactId> - </exclusion> - <exclusion> - <groupId>org.apache.lucene</groupId> - <artifactId>lucene-sandbox</artifactId> - </exclusion> - <exclusion> - <groupId>org.apache.lucene</groupId> - <artifactId>lucene-suggest</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.apache.jackrabbit</groupId> - <artifactId>oak-api</artifactId> - </dependency> - <dependency> - <groupId>org.apache.jackrabbit</groupId> - <artifactId>oak-core-spi</artifactId> - </dependency> - <dependency> - <groupId>org.apache.jackrabbit</groupId> - <artifactId>oak-store-spi</artifactId> - </dependency> - <dependency> - <groupId>org.apache.jackrabbit</groupId> - <artifactId>oak-query-spi</artifactId> - </dependency> - <dependency> - <groupId>org.apache.jackrabbit</groupId> - <artifactId>oak-core</artifactId> - </dependency> - <dependency> - <groupId>org.apache.jackrabbit</groupId> - <artifactId>oak-store-document</artifactId> - </dependency> - <dependency> - <groupId>org.apache.jackrabbit</groupId> - <artifactId>oak-search</artifactId> - </dependency> - </dependencies> - - - <build> - - <pluginManagement> - <plugins> - <plugin> - <groupId>org.apache.rat</groupId> - <artifactId>apache-rat-plugin</artifactId> - <configuration> - <excludes> - <exclude>dependency-reduced-pom.xml</exclude> - </excludes> - </configuration> - </plugin> - </plugins> - </pluginManagement> - - <plugins> - - <!-- download source code in Eclipse, best practice --> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-eclipse-plugin</artifactId> - <version>2.9</version> - <configuration> - <downloadSources>true</downloadSources> - <downloadJavadocs>false</downloadJavadocs> - </configuration> - </plugin> - - <!-- Set a compiler level --> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <configuration> - <source>${jdk.version}</source> - <target>${jdk.version}</target> - </configuration> - </plugin> - - <!-- Maven Shade Plugin --> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-shade-plugin</artifactId> - <version>3.2.4</version> - <executions> - <!-- Run shade goal on package phase --> - <execution> - <phase>package</phase> - <goals> - <goal>shade</goal> - </goals> - <configuration> - <filters> - <filter> - <artifact>*:*</artifact> - <excludes> - <exclude>META-INF/NOTICE</exclude> - <exclude>META-INF/NOTICE.TXT</exclude> - <exclude>META-INF/NOTICE.txt</exclude> - <exclude>META-INF/MANIFEST.MF</exclude> - <exclude>LICENSE.TXT</exclude> - </excludes> - </filter> - </filters> - <artifactSet> - <excludes> - <exclude>org.apache.jackrabbit:jackrabbit-data</exclude> - <exclude>org.apache.jackrabbit:jackrabbit-jcr-commons</exclude> - <exclude>org.apache.jackrabbit:oak-api</exclude> - <exclude>org.apache.jackrabbit:oak-blob</exclude> - <exclude>org.apache.jackrabbit:oak-blob-plugins</exclude> - <exclude>org.apache.jackrabbit:oak-commons</exclude> - <exclude>org.apache.jackrabbit:oak-core</exclude> - <exclude>org.apache.jackrabbit:oak-core-spi</exclude> - <exclude>org.apache.jackrabbit:oak-jackrabbit-api</exclude> - <exclude>org.apache.jackrabbit:oak-query-spi</exclude> - <exclude>org.apache.jackrabbit:oak-search</exclude> - <exclude>org.apache.jackrabbit:oak-security-spi</exclude> - <exclude>org.apache.jackrabbit:oak-store-document</exclude> - <exclude>org.apache.jackrabbit:oak-store-spi</exclude> - <exclude>org.apache.tika:tika-core</exclude> - <exclude>org.osgi:org.osgi.annotation</exclude> - <exclude>org.osgi:org.osgi.service.component.annotations</exclude> - <exclude>org.osgi:org.osgi.service.metatype.annotations</exclude> - <exclude>org.slf4j:jcl-over-slf4j</exclude> - <exclude>org.slf4j:slf4j-api</exclude> - <exclude>commons-codec:commons-codec</exclude> - <exclude>commons-io:commons-io</exclude> - <exclude>com.google.guava:guava</exclude> - <exclude>javax.jcr:jcr</exclude> - </excludes> - </artifactSet> - <relocations> - <relocation> - <pattern>org.apache.lucene</pattern> - <shadedPattern>shaded_oak.org.apache.lucene</shadedPattern> - </relocation> - <relocation> - <pattern>org.tartarus.snowball</pattern> - <shadedPattern>shaded_oak.org.tartarus.snowball</shadedPattern> - </relocation> - </relocations> - <transformers> - <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/> - </transformers> - </configuration> - </execution> - </executions> - </plugin> - - </plugins> - </build> - -</project>
\ No newline at end of file diff --git a/archiva-modules/plugins/pom.xml b/archiva-modules/plugins/pom.xml index b5d0712a6..a44a5117e 100644 --- a/archiva-modules/plugins/pom.xml +++ b/archiva-modules/plugins/pom.xml @@ -33,15 +33,11 @@ </properties> <modules> - <module>metadata-store-file</module> <module>repository-statistics</module> <module>problem-reports</module> <module>audit</module> <module>stage-repository-merge</module> <module>generic-metadata-support</module> - <module>metadata-store-jcr</module> - <module>metadata-store-cassandra</module> - <module>oak-jcr-lucene</module> </modules> </project> |