aboutsummaryrefslogtreecommitdiffstats
path: root/archiva-modules/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'archiva-modules/plugins')
-rw-r--r--archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java4
-rw-r--r--archiva-modules/plugins/metadata-store-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java6
-rw-r--r--archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrConstants.java5
-rw-r--r--archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java2171
-rw-r--r--archiva-modules/plugins/metadata-store-jcr/src/main/resources/org/apache/archiva/metadata/repository/jcr/jcr-schema.cnd33
5 files changed, 961 insertions, 1258 deletions
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
index 7a020efa8..84343b760 100644
--- 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
@@ -1317,7 +1317,7 @@ public class CassandraMetadataRepository
addInsertion( dependencyMutator, keyDependency, cfDependency, ARTIFACT_ID.toString(), dependency.getArtifactId() );
- addInsertion( dependencyMutator, keyDependency, cfDependency, GROUP_ID.toString(), dependency.getGroupId() );
+ addInsertion( dependencyMutator, keyDependency, cfDependency, GROUP_ID.toString(), dependency.getNamespace() );
addInsertion( dependencyMutator, keyDependency, cfDependency, VERSION.toString(), dependency.getVersion() );
@@ -1371,7 +1371,7 @@ public class CassandraMetadataRepository
dependency.setArtifactId( columnFamilyResult.getString( ARTIFACT_ID.toString() ) );
- dependency.setGroupId( columnFamilyResult.getString( GROUP_ID.toString() ) );
+ dependency.setNamespace( columnFamilyResult.getString( GROUP_ID.toString() ) );
dependency.setVersion( columnFamilyResult.getString( VERSION.toString() ) );
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
index a5e63a279..2ff7ba388 100644
--- 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
@@ -218,12 +218,12 @@ public class FileMetadataRepository
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.getGroupId());
+ 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.getGroupId(), dependency.getArtifactId(),
+ updateProjectReference(repoId, dependency.getNamespace(), dependency.getArtifactId(),
dependency.getVersion(), reference);
i++;
@@ -948,7 +948,7 @@ public class FileMetadataRepository
if (dependencyArtifactId != null) {
Dependency dependency = new Dependency();
dependency.setArtifactId(dependencyArtifactId);
- dependency.setGroupId(properties.getProperty("dependency." + i + ".groupId"));
+ dependency.setNamespace(properties.getProperty("dependency." + i + ".groupId"));
dependency.setClassifier(properties.getProperty("dependency." + i + ".classifier"));
dependency.setOptional(
Boolean.valueOf(properties.getProperty("dependency." + i + ".optional")));
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
index 330c06028..a52f9c10c 100644
--- 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
@@ -44,7 +44,12 @@ public interface JcrConstants
String MIXIN_META_ORGANIZATION = "archiva:meta_organization";
String MIXIN_META_LICENSE = "archiva:meta_license";
String MIXIN_META_MAILINGLIST = "archiva:meta_mailinglist";
+ 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";
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
index 15d301322..9260c542c 100644
--- 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
@@ -24,13 +24,7 @@ import org.apache.archiva.checksum.ChecksumAlgorithm;
import org.apache.archiva.metadata.QueryParameter;
import org.apache.archiva.metadata.model.*;
import org.apache.archiva.metadata.model.maven2.MavenArtifactFacet;
-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.*;
import org.apache.archiva.metadata.repository.stats.model.RepositoryStatistics;
import org.apache.archiva.metadata.repository.stats.model.RepositoryStatisticsProvider;
import org.apache.commons.lang.StringUtils;
@@ -42,23 +36,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.annotation.ParametersAreNonnullByDefault;
-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 javax.jcr.*;
+import javax.jcr.query.*;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
@@ -67,6 +46,7 @@ import java.util.*;
import java.util.Map.Entry;
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;
@@ -79,43 +59,40 @@ import static org.apache.archiva.metadata.repository.jcr.JcrConstants.*;
*/
@ParametersAreNonnullByDefault
public class JcrMetadataRepository
- extends AbstractMetadataRepository implements MetadataRepository, RepositoryStatisticsProvider
-{
+ 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)";
+ + "] 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].[";
+ + "] 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].[";
+ + "] 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 Logger log = LoggerFactory.getLogger(JcrMetadataRepository.class);
private Repository repository;
- public JcrMetadataRepository( MetadataService metadataService, Repository repository )
- throws RepositoryException
- {
- super( metadataService );
+ public JcrMetadataRepository(MetadataService metadataService, Repository repository)
+ throws RepositoryException {
+ super(metadataService);
this.repository = repository;
}
- public static void initializeNodeTypes( Session session )
- throws RepositoryException
- {
+ 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)
@@ -126,224 +103,221 @@ public class JcrMetadataRepository
Workspace workspace = session.getWorkspace();
NamespaceRegistry registry = workspace.getNamespaceRegistry();
- if ( !Arrays.asList( registry.getPrefixes() ).contains( "archiva" ) )
- {
- registry.registerNamespace( "archiva", "http://archiva.apache.org/jcr/" );
+ 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( );
+ 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();
+ if (repositorySession instanceof JcrRepositorySession) {
+ return ((JcrRepositorySession) repositorySession).getJcrSession();
} else {
- throw new MetadataRepositoryException( "The given session object is not a JcrSession instance: " + repositorySession.getClass( ).getName( ) );
+ 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() );
+ 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 );
+ 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 );
+ 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
- {
+ 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() );
+ getOrAddArtifactNode(jcrSession, repositoryId, namespace, projectId, projectVersion, artifactMeta.getId());
- node.setProperty( "id", artifactMeta.getId( ) );
+ node.setProperty("id", artifactMeta.getId());
Calendar cal = GregorianCalendar.from(artifactMeta.getFileLastModified());
- node.setProperty( JCR_LAST_MODIFIED, cal );
+ node.setProperty(JCR_LAST_MODIFIED, cal);
cal = GregorianCalendar.from(artifactMeta.getWhenGathered());
- node.setProperty( "whenGathered", cal );
+ node.setProperty("whenGathered", cal);
- node.setProperty( "size", artifactMeta.getSize() );
+ node.setProperty("size", artifactMeta.getSize());
- int idx=0;
- Node cslistNode = getOrAddNodeByPath( node, "checksums", CHECKSUMS_FOLDER_TYPE, true );
+ 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 )) {
+ 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( ) );
+ 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() );
+ 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 )
- {
+ for (String facetId : metadataService.getSupportedFacets()) {
+ MetadataFacet metadataFacet = artifactMeta.getFacet(facetId);
+ if (metadataFacet == null) {
continue;
}
- if ( node.hasNode( facetId ) )
- {
- node.getNode( facetId ).remove();
+ if (node.hasNode(facetId)) {
+ node.getNode(facetId).remove();
}
- if ( metadataFacet != null )
- {
+ if (metadataFacet != null) {
// recreate, to ensure properties are removed
- Node n = node.addNode( facetId, FACET_NODE_TYPE);
- n.setProperty( "facetId", facetId );
+ 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() );
+ for (Map.Entry<String, String> entry : metadataFacet.toProperties().entrySet()) {
+ n.setProperty(entry.getKey(), entry.getValue());
}
}
}
- }
- catch ( RepositoryException e )
- {
- throw new MetadataRepositoryException( e.getMessage(), e );
+ } 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
- {
+ 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() );
+ 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() );
+ 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;
- for ( License license : versionMetadata.getLicenses() )
- {
- versionNode.setProperty( "license." + i + ".name", license.getName() );
- versionNode.setProperty( "license." + i + ".url", license.getUrl() );
+ 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;
- for ( MailingList mailingList : versionMetadata.getMailingLists() )
- {
- versionNode.setProperty( "mailingList." + i + ".archive", mailingList.getMainArchiveUrl() );
- versionNode.setProperty( "mailingList." + i + ".name", mailingList.getName() );
- versionNode.setProperty( "mailingList." + i + ".post", mailingList.getPostAddress() );
- versionNode.setProperty( "mailingList." + i + ".unsubscribe", mailingList.getUnsubscribeAddress() );
- versionNode.setProperty( "mailingList." + i + ".subscribe", mailingList.getSubscribeAddress() );
- versionNode.setProperty( "mailingList." + i + ".otherArchives",
- join( mailingList.getOtherArchives() ) );
+ 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);
- if ( !versionMetadata.getDependencies().isEmpty() )
- {
- Node dependenciesNode = JcrUtils.getOrAddNode( versionNode, "dependencies" );
-
- for ( Dependency dependency : versionMetadata.getDependencies() )
- {
+ 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 group ID to namespace
// 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.getGroupId() + ";" + dependency.getArtifactId() + "-" + dependency.getVersion();
- if ( dependency.getClassifier() != null )
- {
+ 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 );
-
- // FIXME: remove temp code just to make it keep working
- n.setProperty( "groupId", dependency.getGroupId() );
- 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() );
+ 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());
+ 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.
@@ -360,150 +334,114 @@ public class JcrMetadataRepository
}
}
- for ( MetadataFacet facet : versionMetadata.getFacetList() )
- {
+ for (MetadataFacet facet : versionMetadata.getFacetList()) {
// recreate, to ensure properties are removed
- if ( versionNode.hasNode( facet.getFacetId() ) )
- {
- versionNode.getNode( facet.getFacetId() ).remove();
+ if (versionNode.hasNode(facet.getFacetId())) {
+ versionNode.getNode(facet.getFacetId()).remove();
}
- Node n = versionNode.addNode( facet.getFacetId(), FACET_NODE_TYPE );
+ Node n = versionNode.addNode(facet.getFacetId(), FACET_NODE_TYPE);
- for ( Map.Entry<String, String> entry : facet.toProperties().entrySet() )
- {
- n.setProperty( entry.getKey(), entry.getValue() );
+ for (Map.Entry<String, String> entry : facet.toProperties().entrySet()) {
+ n.setProperty(entry.getKey(), entry.getValue());
}
}
- }
- catch ( RepositoryException e )
- {
- throw new MetadataRepositoryException( e.getMessage(), e );
+ } 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 );
+ 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 );
+ 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
- {
+ 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 );
+ String namespacePath = getNamespacePath(repositoryId, namespace);
- if ( root.hasNode( namespacePath ) )
- {
- Iterator<Node> nodeIterator = JcrUtils.getChildNodes( root.getNode( namespacePath ) ).iterator();
- while ( nodeIterator.hasNext() )
- {
+ 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_NODE_TYPE ) && projectId.equals( node.getName() ) )
- {
+ if (node.isNodeType(org.apache.archiva.metadata.repository.jcr.JcrConstants.PROJECT_NODE_TYPE) && projectId.equals(node.getName())) {
node.remove();
}
}
}
- }
- catch ( RepositoryException e )
- {
- throw new MetadataRepositoryException( e.getMessage(), e );
+ } 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 ) );
+ 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 )
- {
+ } catch (PathNotFoundException e) {
// ignored - the facet doesn't exist, so return false
return false;
- }
- catch ( RepositoryException e )
- {
- throw new MetadataRepositoryException( e.getMessage(), e );
+ } 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 );
+ public List<String> getMetadataFacets(RepositorySession session, String repositoryId, String facetId)
+ throws MetadataRepositoryException {
+ final Session jcrSession = getSession(session);
List<String> facets = new ArrayList<>();
- try
- {
+ 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 ) );
+ 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 )
- {
+ 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 );
+ } catch (RepositoryException e) {
+ throw new MetadataRepositoryException(e.getMessage(), e);
}
return facets;
}
- private <T> Spliterator<T> createResultSpliterator(QueryResult result, Function<Row, T> converter) throws MetadataRepositoryException
- {
+ private <T> Spliterator<T> createResultSpliterator(QueryResult result, Function<Row, T> converter) throws MetadataRepositoryException {
final RowIterator rowIterator;
- try
- {
+ try {
rowIterator = result.getRows();
+ } catch (RepositoryException e) {
+ throw new MetadataRepositoryException(e.getMessage(), e);
}
- catch ( RepositoryException e )
- {
- throw new MetadataRepositoryException( e.getMessage( ), e );
- }
- return new Spliterator<T>( )
- {
+ return new Spliterator<T>() {
@Override
- public boolean tryAdvance( Consumer<? super T> action )
- {
+ public boolean tryAdvance(Consumer<? super T> action) {
while (rowIterator.hasNext()) {
- T item = converter.apply( rowIterator.nextRow() );
- if (item!=null)
- {
- action.accept( item );
+ T item = converter.apply(rowIterator.nextRow());
+ if (item != null) {
+ action.accept(item);
return true;
}
}
@@ -511,27 +449,24 @@ public class JcrMetadataRepository
}
@Override
- public Spliterator<T> trySplit( )
- {
+ public Spliterator<T> trySplit() {
return null;
}
@Override
- public long estimateSize( )
- {
+ public long estimateSize() {
return 0;
}
@Override
- public int characteristics( )
- {
- return ORDERED+NONNULL;
+ public int characteristics() {
+ return ORDERED + NONNULL;
}
};
}
private StringBuilder appendQueryParams(StringBuilder query, String selector, String defaultProperty, QueryParameter queryParameter) {
- if (queryParameter.getSortFields().size()==0) {
+ if (queryParameter.getSortFields().size() == 0) {
query.append(" ORDER BY [").append(selector).append("].[").append(defaultProperty).append("]");
if (queryParameter.isAscending()) {
query.append(" ASC");
@@ -552,94 +487,77 @@ public class JcrMetadataRepository
return query;
}
- private <T extends MetadataFacet> Function<Row, Optional<T>> getFacetFromRowFunc( MetadataFacetFactory<T> factory, String repositoryId ) {
+ 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 ) );
+ 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( );
+ return Optional.empty();
}
- }
- catch ( RepositoryException e )
- {
- log.error( "Exception encountered {}", e.getMessage( ) );
+ } 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 );
+ 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);
+ 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 ) )
- {
+ 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
- {
+ if (n.hasNodes()) {
+ recurse(facets, name, n);
+ } else {
// strip leading / first
- facets.add( name.substring( 1 ) );
+ 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 );
+ 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
- {
+ 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 ) );
+ Node node = root.getNode(getFacetPath(repositoryId, facetId, name));
- if ( getSupportedFacets().size()==0)
- {
+ if (getSupportedFacets().size() == 0) {
return null;
}
- return createFacetFromNode( factory, node, repositoryId, name );
- }
- catch ( PathNotFoundException e )
- {
+ 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 );
+ } catch (RepositoryException e) {
+ throw new MetadataRepositoryException(e.getMessage(), e);
}
return null;
}
@@ -649,148 +567,119 @@ public class JcrMetadataRepository
}
private <T extends MetadataFacet> T createFacetFromNode(final MetadataFacetFactory<T> factory, final Node node,
- final String repositoryId, final String name ) throws RepositoryException
- {
- if ( factory != null )
- {
+ final String repositoryId, final String name) throws RepositoryException {
+ if (factory != null) {
T metadataFacet;
- if (repositoryId!=null) {
- metadataFacet = factory.createMetadataFacet( repositoryId, name );
+ if (repositoryId != null) {
+ metadataFacet = factory.createMetadataFacet(repositoryId, name);
} else {
metadataFacet = factory.createMetadataFacet();
}
Map<String, String> map = new HashMap<>();
- for ( Property property : JcrUtils.getProperties( node ) )
- {
+ for (Property property : JcrUtils.getProperties(node)) {
String p = property.getName();
- if ( !p.startsWith( "jcr:" ) )
- {
- map.put( p, property.getString() );
+ if (!p.startsWith("jcr:")) {
+ map.put(p, property.getString());
}
}
- metadataFacet.fromProperties( map );
+ 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);
+ 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 );
+ 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( ) );
+ 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() );
+ 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 );
+ } 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
- {
+ 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_NODE_TYPE ) )
- {
+ String path = getNamespacePath(repositoryId, projectId);
+ if (root.hasNode(path)) {
+ Node node = root.getNode(path);
+ if (node.isNodeType(NAMESPACE_NODE_TYPE)) {
node.remove();
}
}
- }
- catch ( RepositoryException e )
- {
- throw new MetadataRepositoryException( e.getMessage(), e );
+ } 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
- {
+ 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();
+ String path = getFacetPath(repositoryId, facetId);
+ if (root.hasNode(path)) {
+ root.getNode(path).remove();
}
- }
- catch ( RepositoryException e )
- {
- throw new MetadataRepositoryException( e.getMessage(), e );
+ } 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
- {
+ 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
- {
+ 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() );
+ while (!node.hasNodes());
}
- }
- catch ( RepositoryException e )
- {
- throw new MetadataRepositoryException( e.getMessage(), e );
+ } catch (RepositoryException e) {
+ throw new MetadataRepositoryException(e.getMessage(), e);
}
}
private StringBuilder buildArtifactByDateRangeQuery(String repoId, ZonedDateTime startTime, ZonedDateTime endTime,
QueryParameter queryParameter) {
- StringBuilder q = getArtifactQuery( repoId );
+ StringBuilder q = getArtifactQuery(repoId);
- if ( startTime != null )
- {
+ if (startTime != null) {
q.append(" AND [artifact].[whenGathered] >= $start");
}
- if ( endTime != null )
- {
+ if (endTime != null) {
q.append(" AND [artifact].[whenGathered] <= $end");
}
appendQueryParams(q, "artifact", "whenGathered", queryParameter);
@@ -820,25 +709,20 @@ public class JcrMetadataRepository
}
@Override
- public List<ArtifactMetadata> getArtifactsByDateRange(RepositorySession session, String repoId, ZonedDateTime startTime, ZonedDateTime endTime, QueryParameter queryParameter )
- throws MetadataRepositoryException
- {
- final Session jcrSession = getSession( session );
+ 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
- {
+ try {
QueryResult result = queryArtifactByDateRange(jcrSession, repoId, startTime, endTime, queryParameter);
artifacts = new ArrayList<>();
- for ( Node n : JcrUtils.getNodes( result ) )
- {
- artifacts.add( getArtifactFromNode( repoId, n ) );
+ for (Node n : JcrUtils.getNodes(result)) {
+ artifacts.add(getArtifactFromNode(repoId, n));
}
- }
- catch ( RepositoryException e )
- {
- throw new MetadataRepositoryException( e.getMessage(), e );
+ } catch (RepositoryException e) {
+ throw new MetadataRepositoryException(e.getMessage(), e);
}
return artifacts;
}
@@ -846,7 +730,7 @@ public class JcrMetadataRepository
private Function<Row, Optional<ArtifactMetadata>> getArtifactFromRowFunc(final String repositoryId) {
return (Row row) -> {
try {
- return Optional.of( getArtifactFromNode(repositoryId, row.getNode("artifact")) );
+ return Optional.of(getArtifactFromNode(repositoryId, row.getNode("artifact")));
} catch (RepositoryException e) {
return Optional.empty();
}
@@ -854,504 +738,425 @@ public class JcrMetadataRepository
}
@Override
- public Stream<ArtifactMetadata> getArtifactByDateRangeStream( RepositorySession session, String repositoryId, ZonedDateTime startTime, ZonedDateTime endTime, QueryParameter queryParameter) throws MetadataRepositoryException
- {
- final Session jcrSession = getSession( session );
+ 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 );
+ 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 );
+ 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();
+ String q = getArtifactQuery(repositoryId).append(" AND ([artifact].[checksums/*/value] = $checksum)").toString();
- try
- {
- Query query = jcrSession.getWorkspace().getQueryManager().createQuery( q, Query.JCR_SQL2 );
+ try {
+ Query query = jcrSession.getWorkspace().getQueryManager().createQuery(q, Query.JCR_SQL2);
ValueFactory valueFactory = jcrSession.getValueFactory();
- query.bindValue( "checksum", valueFactory.createValue( checksum ) );
+ query.bindValue("checksum", valueFactory.createValue(checksum));
QueryResult result = query.execute();
artifacts = new ArrayList<>();
- for ( Node n : JcrUtils.getNodes( result ) )
- {
- artifacts.add( getArtifactFromNode( repositoryId, n ) );
+ for (Node n : JcrUtils.getNodes(result)) {
+ artifacts.add(getArtifactFromNode(repositoryId, n));
}
- }
- catch ( RepositoryException e )
- {
- throw new MetadataRepositoryException( e.getMessage(), e );
+ } 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(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
- {
+ 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 ) + "')";
+ if (repositoryId != null && checkPath) {
+ q += " AND ISDESCENDANTNODE(artifact,'/" + getRepositoryContentPath(repositoryId) + "')";
}
- log.info( "Running JCR Query: {}", q );
+ log.info("Running JCR Query: {}", q);
- try
- {
- QueryResult result = runNativeJcrQuery( jcrSession, q, bindingParam );
+ try {
+ QueryResult result = runNativeJcrQuery(jcrSession, q, bindingParam);
artifacts = new ArrayList<>();
RowIterator rows = result.getRows();
- while ( rows.hasNext() )
- {
+ while (rows.hasNext()) {
Row row = rows.nextRow();
- Node node = row.getNode( "artifact" );
- artifacts.add( getArtifactFromNode( repositoryId, node ) );
+ Node node = row.getNode("artifact");
+ artifacts.add(getArtifactFromNode(repositoryId, node));
}
+ } catch (RepositoryException e) {
+ throw new MetadataRepositoryException(e.getMessage(), e);
}
- 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() );
+ 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) 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
- {
+ 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<>( );
+ 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 );
+ 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 );
+ 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 );
+ 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 );
+ } 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();
- return runJcrQuery( jcrSession, repositoryId, q, ImmutableMap.of( "value", value ) );
+ 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();
+ return runJcrQuery(jcrSession, repositoryId, q, ImmutableMap.of("value", value));
}
@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( );
- return runJcrQuery( jcrSession, repositoryId, q, ImmutableMap.of( "value", value ) );
+ 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();
+ return runJcrQuery(jcrSession, repositoryId, q, ImmutableMap.of("value", value));
}
@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();
- return runJcrQuery( jcrSession, repositoryId, q, ImmutableMap.of( "value", value ) );
+ 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();
+ return runJcrQuery(jcrSession, repositoryId, q, ImmutableMap.of("value", value));
}
@Override
- public void removeRepository( RepositorySession session, String repositoryId )
- throws MetadataRepositoryException
- {
- final Session jcrSession = getSession( session );
- try
- {
+ 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();
+ String path = getRepositoryPath(repositoryId);
+ if (root.hasNode(path)) {
+ root.getNode(path).remove();
}
- }
- catch ( RepositoryException e )
- {
- throw new MetadataRepositoryException( e.getMessage(), e );
+ } 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 );
+ public List<ArtifactMetadata> getArtifacts(RepositorySession session, String repositoryId)
+ throws MetadataRepositoryException {
+ final Session jcrSession = getSession(session);
List<ArtifactMetadata> artifacts;
- String q = getArtifactQuery( repositoryId ).toString();
+ String q = getArtifactQuery(repositoryId).toString();
- try
- {
- Query query = jcrSession.getWorkspace().getQueryManager().createQuery( q, Query.JCR_SQL2 );
+ 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 ) );
+ 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 );
+ } 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);
+ 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
- {
+ 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() );
+ try {
+ jcrSession = getSession(session);
+ } catch (MetadataRepositoryException e) {
+ throw new MetadataResolutionException(e.getMessage());
}
ProjectMetadata metadata = null;
- try
- {
+ try {
Node root = jcrSession.getRootNode();
// basically just checking it exists
- String path = getProjectPath( repositoryId, namespace, projectId );
- if ( root.hasNode( path ) )
- {
+ String path = getProjectPath(repositoryId, namespace, projectId);
+ if (root.hasNode(path)) {
metadata = new ProjectMetadata();
- metadata.setId( projectId );
- metadata.setNamespace( namespace );
+ metadata.setId(projectId);
+ metadata.setNamespace(namespace);
}
- }
- catch ( RepositoryException e )
- {
- throw new MetadataResolutionException( e.getMessage(), e );
+ } 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
- {
+ 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() );
+ try {
+ jcrSession = getSession(session);
+ } catch (MetadataRepositoryException e) {
+ throw new MetadataResolutionException(e.getMessage());
}
ProjectVersionMetadata versionMetadata;
- try
- {
+ try {
Node root = jcrSession.getRootNode();
- String path = getProjectVersionPath( repositoryId, namespace, projectId, projectVersion );
- if ( !root.hasNode( path ) )
- {
+ String path = getProjectVersionPath(repositoryId, namespace, projectId, projectVersion);
+ if (!root.hasNode(path)) {
return null;
}
- Node node = root.getNode( path );
+ 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.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() );
+ 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 )
- {
+ 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 );
+ 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 )
- {
+ 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 );
+ 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 )
- {
+ 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 );
+ 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 )
- {
+ 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 );
- }
-
- boolean done = false;
- int i = 0;
- while ( !done )
- {
- String licenseName = getPropertyString( node, "license." + i + ".name" );
- String licenseUrl = getPropertyString( node, "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 = getPropertyString( node, "mailingList." + i + ".name" );
- if ( mailingListName != null )
- {
- MailingList mailingList = new MailingList();
- mailingList.setName( mailingListName );
- mailingList.setMainArchiveUrl( getPropertyString( node, "mailingList." + i + ".archive" ) );
- String n = "mailingList." + i + ".otherArchives";
- if ( node.hasProperty( n ) )
- {
- mailingList.setOtherArchives( Arrays.asList( getPropertyString( node, n ).split( "," ) ) );
- }
- else
- {
- mailingList.setOtherArchives( Collections.<String>emptyList() );
- }
- mailingList.setPostAddress( getPropertyString( node, "mailingList." + i + ".post" ) );
- mailingList.setSubscribeAddress( getPropertyString( node, "mailingList." + i + ".subscribe" ) );
- mailingList.setUnsubscribeAddress( getPropertyString( node, "mailingList." + i + ".unsubscribe" ) );
- versionMetadata.addMailingList( mailingList );
- }
- else
- {
- done = true;
- }
- i++;
- }
-
- if ( node.hasNode( "dependencies" ) )
- {
- Node dependenciesNode = node.getNode( "dependencies" );
- for ( Node n : JcrUtils.getChildNodes( dependenciesNode ) )
- {
- if ( n.isNodeType( DEPENDENCY_NODE_TYPE ) )
- {
+ 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.setArtifactId( getPropertyString( n, "artifactId" ) );
- dependency.setGroupId( getPropertyString( n, "groupId" ) );
- 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" ) );
- dependency.setVersion( getPropertyString( n, "version" ) );
- versionMetadata.addDependency( dependency );
+ 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 );
+ 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 ) )
- {
+ 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
- {
+ 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 );
+ metadata.addFacet(facet);
}
}
}
}
@Override
- public List<String> getArtifactVersions( RepositorySession session, String repositoryId, String namespace, String projectId,
- String projectVersion )
- throws MetadataResolutionException
- {
+ 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() );
+ try {
+ jcrSession = getSession(session);
+ } catch (MetadataRepositoryException e) {
+ throw new MetadataResolutionException(e.getMessage());
}
Set<String> versions = new LinkedHashSet<String>();
- try
- {
+ try {
Node root = jcrSession.getRootNode();
- Node node = root.getNode( getProjectVersionPath( repositoryId, namespace, projectId, projectVersion ) );
+ Node node = root.getNode(getProjectVersionPath(repositoryId, namespace, projectId, projectVersion));
- for ( Node n : JcrUtils.getChildNodes( node ) )
- {
- versions.add( n.getProperty( "version" ).getString() );
+ for (Node n : JcrUtils.getChildNodes(node)) {
+ versions.add(n.getProperty("version").getString());
}
- }
- catch ( PathNotFoundException e )
- {
+ } catch (PathNotFoundException e) {
// ignore repo not found for now
- }
- catch ( RepositoryException e )
- {
- throw new MetadataResolutionException( e.getMessage(), e );
+ } catch (RepositoryException e) {
+ throw new MetadataResolutionException(e.getMessage(), e);
}
- return new ArrayList<>( versions );
+ return new ArrayList<>(versions);
}
@Override
- public List<ProjectVersionReference> getProjectReferences( RepositorySession session, String repositoryId, String namespace,
- String projectId, String projectVersion )
- throws MetadataResolutionException
- {
+ 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() );
+ 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 [groupId]='" + namespace + "' AND [artifactId]='" + projectId + "'";
- if ( projectVersion != null )
- {
+ + "/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 );
+ try {
+ Query query = jcrSession.getWorkspace().getQueryManager().createQuery(q, Query.JCR_SQL2);
QueryResult result = query.execute();
- for ( Node n : JcrUtils.getNodes( result ) )
- {
+ for (Node n : JcrUtils.getNodes(result)) {
n = n.getParent(); // dependencies grouping element
n = n.getParent(); // project version
@@ -1361,104 +1166,82 @@ public class JcrMetadataRepository
String usedByProject = n.getName();
n = n.getParent(); // namespace
- String usedByNamespace = n.getProperty( "namespace" ).getString();
+ 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 );
+ 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 );
+ } 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 );
+ 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
- {
+ public List<String> getChildNamespaces(RepositorySession session, String repositoryId, String baseNamespace)
+ throws MetadataResolutionException {
String path = baseNamespace != null
- ? getNamespacePath( repositoryId, baseNamespace )
- : getRepositoryContentPath( repositoryId );
+ ? getNamespacePath(repositoryId, baseNamespace)
+ : getRepositoryContentPath(repositoryId);
- try
- {
- return getNodeNames( getSession(session), path, NAMESPACE_NODE_TYPE );
- }
- catch ( MetadataRepositoryException e )
- {
- throw new MetadataResolutionException( e.getMessage( ) );
+ try {
+ return getNodeNames(getSession(session), path, NAMESPACE_NODE_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_NODE_TYPE );
- }
- catch ( MetadataRepositoryException e )
- {
- throw new MetadataResolutionException( e.getMessage( ) );
+ 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_NODE_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( ) );
+ 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 );
+ public void removeTimestampedArtifact(RepositorySession session, ArtifactMetadata artifactMetadata, String baseVersion)
+ throws MetadataRepositoryException {
+ final Session jcrSession = getSession(session);
String repositoryId = artifactMetadata.getRepositoryId();
- try
- {
+ 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() ) )
- {
+ 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();
}
}
@@ -1466,10 +1249,8 @@ public class JcrMetadataRepository
}
}
}
- }
- catch ( RepositoryException e )
- {
- throw new MetadataRepositoryException( e.getMessage(), e );
+ } catch (RepositoryException e) {
+ throw new MetadataRepositoryException(e.getMessage(), e);
}
@@ -1477,142 +1258,111 @@ public class JcrMetadataRepository
@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 );
+ 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 );
+ Node nodeAtPath = root.getNode(path);
- for ( Node node : JcrUtils.getChildNodes( nodeAtPath ) )
- {
- if ( node.isNodeType( PROJECT_VERSION_NODE_TYPE ) && StringUtils.equals( projectVersion,
- node.getName() ) )
- {
+ 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 );
+ } 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
- {
+ 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();
+ String path = getArtifactPath(repositoryId, namespace, projectId, projectVersion, id);
+ if (root.hasNode(path)) {
+ root.getNode(path).remove();
}
// remove version
- path = getProjectPath( repositoryId, namespace, projectId );
+ path = getProjectPath(repositoryId, namespace, projectId);
- Node nodeAtPath = root.getNode( path );
+ Node nodeAtPath = root.getNode(path);
- for ( Node node : JcrUtils.getChildNodes( nodeAtPath ) )
- {
- if ( node.isNodeType( PROJECT_VERSION_NODE_TYPE ) //
- && StringUtils.equals( node.getName(), projectVersion ) )
- {
+ 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 );
+ } 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
- {
+ 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 ) )
- {
+ 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 );
+ } 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
- {
+ 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( ) );
+ try {
+ jcrSession = getSession(session);
+ } catch (MetadataRepositoryException e) {
+ throw new MetadataResolutionException(e.getMessage());
}
List<ArtifactMetadata> artifacts = new ArrayList<>();
- try
- {
+ try {
Node root = jcrSession.getRootNode();
- String path = getProjectVersionPath( repositoryId, namespace, projectId, projectVersion );
+ String path = getProjectVersionPath(repositoryId, namespace, projectId, projectVersion);
- if ( root.hasNode( path ) )
- {
- Node node = root.getNode( path );
+ 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 ) );
+ 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 );
+ } catch (RepositoryException e) {
+ throw new MetadataResolutionException(e.getMessage(), e);
}
return artifacts;
@@ -1621,8 +1371,7 @@ public class JcrMetadataRepository
@Override
public void close()
- throws MetadataRepositoryException
- {
+ throws MetadataRepositoryException {
}
@@ -1630,335 +1379,307 @@ public class JcrMetadataRepository
* 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 );
+ 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 );
+ 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)";
+ 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))
- {
+ " 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;
- result.addAll(runJcrQuery( jcrSession, repositoryId, q1, ImmutableMap.of( "value", text ), false ));
+ "SELECT * FROM [" + PROJECT_VERSION_NODE_TYPE
+ + "] AS projectVersion LEFT OUTER JOIN [" + ARTIFACT_NODE_TYPE
+ + "] AS artifact ON ISCHILDNODE(artifact, projectVersion) WHERE " + projectVersionCondition + descendantCondition;
+ result.addAll(runJcrQuery(jcrSession, repositoryId, q1, ImmutableMap.of("value", text), 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;
- result.addAll( runJcrQuery( jcrSession, repositoryId, q2, ImmutableMap.of( "value", text ), false ) );
+ "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;
+ result.addAll(runJcrQuery(jcrSession, repositoryId, q2, ImmutableMap.of("value", text), false));
return result;
}
- private ArtifactMetadata getArtifactFromNode( String repositoryId, Node artifactNode )
- throws RepositoryException
- {
+ 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 );
+ 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() );
+ 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(JCR_LAST_MODIFIED)) {
+ artifact.setFileLastModified(artifactNode.getProperty(JCR_LAST_MODIFIED).getDate().getTimeInMillis());
}
- if ( artifactNode.hasProperty( "whenGathered" ) )
- {
+ if (artifactNode.hasProperty("whenGathered")) {
Calendar cal = artifactNode.getProperty("whenGathered").getDate();
- artifact.setWhenGathered( ZonedDateTime.ofInstant(cal.toInstant(), cal.getTimeZone().toZoneId()));
+ artifact.setWhenGathered(ZonedDateTime.ofInstant(cal.toInstant(), cal.getTimeZone().toZoneId()));
}
- if ( artifactNode.hasProperty( "size" ) )
- {
- artifact.setSize( artifactNode.getProperty( "size" ).getLong() );
+ if (artifactNode.hasProperty("size")) {
+ artifact.setSize(artifactNode.getProperty("size").getLong());
}
- Node cslistNode = getOrAddNodeByPath( artifactNode, "checksums" );
- NodeIterator csNodeIt = cslistNode.getNodes( "*" );
+ 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 );
+ Node csNode = csNodeIt.nextNode();
+ if (csNode.isNodeType(CHECKSUM_NODE_TYPE)) {
+ addChecksum(artifact, csNode);
}
}
- retrieveFacetProperties( artifact, artifactNode );
+ 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 );
+ 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 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
- {
+ private List<String> getNodeNames(Session jcrSession, String path, String nodeType)
+ throws MetadataResolutionException {
List<String> names = new ArrayList<>();
- try
- {
+ try {
Node root = jcrSession.getRootNode();
- Node nodeAtPath = root.getNode( path );
+ Node nodeAtPath = root.getNode(path);
- for ( Node node : JcrUtils.getChildNodes( nodeAtPath ) )
- {
- if ( node.isNodeType( nodeType ) )
- {
- names.add( node.getName() );
+ for (Node node : JcrUtils.getChildNodes(nodeAtPath)) {
+ if (node.isNodeType(nodeType)) {
+ names.add(node.getName());
}
}
- }
- catch ( PathNotFoundException e )
- {
+ } catch (PathNotFoundException e) {
// ignore repo not found for now
- }
- catch ( RepositoryException e )
- {
- throw new MetadataResolutionException( e.getMessage(), e );
+ } catch (RepositoryException e) {
+ throw new MetadataResolutionException(e.getMessage(), e);
}
return names;
}
- private static String getRepositoryPath( String repositoryId )
- {
+ private static String getRepositoryPath(String repositoryId) {
return "repositories/" + repositoryId;
}
- private static String getRepositoryContentPath( String repositoryId )
- {
- return getRepositoryPath( repositoryId ) + "/content";
+ 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 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 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 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 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 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)
+ throws RepositoryException {
+ return getOrAddNodeByPath(baseNode, name, null);
}
- private Node getOrAddNodeByPath( Node baseNode, String name, String nodeType ) throws RepositoryException {
+ 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 );
+ 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 );
+ 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 );
+ node = JcrUtils.getOrAddNode(node, n);
+ if (nodeType != null && !node.isNodeType(nodeType)) {
+ node.addMixin(nodeType);
}
}
- if (!node.hasProperty( "id" )) {
- node.setProperty( "id", n );
+ 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 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 );
+ 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, JcrConstants.NT_UNSTRUCTURED );
- if (!node.isNodeType( org.apache.archiva.metadata.repository.jcr.JcrConstants.REPOSITORY_NODE_TYPE )) {
- node.addMixin( org.apache.archiva.metadata.repository.jcr.JcrConstants.REPOSITORY_NODE_TYPE );
+ Node node = JcrUtils.getOrAddNode(root, "repositories");
+ log.debug("Repositories " + node);
+ node = JcrUtils.getOrAddNode(node, repositoryId, JcrConstants.NT_UNSTRUCTURED);
+ if (!node.isNodeType(org.apache.archiva.metadata.repository.jcr.JcrConstants.REPOSITORY_NODE_TYPE)) {
+ node.addMixin(org.apache.archiva.metadata.repository.jcr.JcrConstants.REPOSITORY_NODE_TYPE);
}
- if (!node.hasProperty( "id" )) {
- node.setProperty( "id", repositoryId );
+ 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" );
+ private Node getOrAddRepositoryContentNode(Session jcrSession, String repositoryId)
+ throws RepositoryException {
+ Node node = getOrAddRepositoryNode(jcrSession, repositoryId);
+ return JcrUtils.getOrAddNode(node, "content");
}
- private Node getOrAddNamespaceNode( Session jcrSession, String repositoryId, String namespace )
- throws RepositoryException
- {
- Node repo = getOrAddRepositoryContentNode( jcrSession, repositoryId );
- return getOrAddNodeByPath( repo, namespace.replace( '.', '/' ), NAMESPACE_NODE_TYPE );
+ private Node getOrAddNamespaceNode(Session jcrSession, String repositoryId, String namespace)
+ throws RepositoryException {
+ Node repo = getOrAddRepositoryContentNode(jcrSession, repositoryId);
+ return getOrAddNodeByPath(repo, namespace.replace('.', '/'), NAMESPACE_NODE_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 );
- if (!node.isNodeType( org.apache.archiva.metadata.repository.jcr.JcrConstants.PROJECT_NODE_TYPE ))
- {
- node.addMixin( org.apache.archiva.metadata.repository.jcr.JcrConstants.PROJECT_NODE_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);
+ if (!node.isNodeType(org.apache.archiva.metadata.repository.jcr.JcrConstants.PROJECT_NODE_TYPE)) {
+ node.addMixin(org.apache.archiva.metadata.repository.jcr.JcrConstants.PROJECT_NODE_TYPE);
}
- if (!node.hasProperty( "id" ))
- {
- node.setProperty( "id", projectId );
+ 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, JcrConstants.NT_UNSTRUCTURED);
- if (!projectVersionNode.isNodeType( PROJECT_VERSION_NODE_TYPE ))
- {
- projectVersionNode.addMixin( PROJECT_VERSION_NODE_TYPE );
- }
- if (!projectVersionNode.hasProperty( "id" ))
- {
- projectVersionNode.setProperty( "id", projectVersion );
+ 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 );
+ 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 );
+ 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 static Calendar createCalendar( ZonedDateTime time )
- {
+ private Node findArtifactNode(Session jcrSession, String namespace, String projectId,
+ String projectVersion, String id) throws RepositoryException {
+
+
+ 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() )
- {
+ private String join(Collection<String> ids) {
+ if (ids != null && !ids.isEmpty()) {
StringBuilder s = new StringBuilder();
- for ( String id : ids )
- {
- s.append( id );
- s.append( "," );
+ for (String id : ids) {
+ s.append(id);
+ s.append(",");
}
- return s.substring( 0, s.length() - 1 );
+ 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 ) )
- {
+ 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" );
+ "The statistics population is only possible for JcrMetdataRepository implementations");
}
- Session session = getSession( repositorySession );
+ Session session = getSession(repositorySession);
// TODO: these may be best as running totals, maintained by observations on the properties in JCR
- try
- {
+ try {
QueryManager queryManager = session.getWorkspace().getQueryManager();
// TODO: Check, if this is still the case - Switched to Jackrabbit OAK with archiva 3.0
@@ -1969,166 +1690,134 @@ public class JcrMetadataRepository
// 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 );
+ 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 ) )
- {
+ for (Row row : JcrUtils.getRows(queryResult)) {
Node n = row.getNode();
- log.debug( "Result node {}", n );
- totalSize += row.getValue( "size" ).getLong();
+ 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
- {
+ 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 );
+ 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() );
+ 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: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 );
+ "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() ) );
+ 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 )
- {
+ 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( );
+ 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( );
+ 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
- {
+ 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 {
+ jcrSession = getSession(session);
+ } catch (MetadataRepositoryException e) {
+ throw new MetadataResolutionException(e.getMessage());
}
- try
- {
+ 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( ) );
+ 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( );
+ return Stream.empty();
}
- }
- catch ( RepositoryException e )
- {
- throw new MetadataResolutionException( e.getMessage(), e );
+ } 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
- {
+ 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 );
+ try {
+ jcrSession = getSession(session);
+ } catch (MetadataRepositoryException e) {
+ throw new MetadataResolutionException(e.getMessage(), e);
}
List<ArtifactMetadata> artifacts;
- String q = getArtifactQuery( repositoryId ).toString();
+ String q = getArtifactQuery(repositoryId).toString();
- try
- {
- Query query = jcrSession.getWorkspace().getQueryManager().createQuery( q, Query.JCR_SQL2 );
+ 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( ) );
+ 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 );
+ } catch (RepositoryException | MetadataRepositoryException e) {
+ throw new MetadataResolutionException(e.getMessage(), e);
}
}
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
index bf753fc36..6c267abef 100644
--- 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
@@ -59,31 +59,33 @@
- org.name (string)
- org.url (uri)
-[archiva:meta_license] > archiva:base mixin
+[archiva:license] > archiva:base
- index (long)
- - license.name (string)
- - license.url (uri)
+ - name (string)
+ - url (uri)
-[archiva:meta_mailinglist] > archiva:base
+[archiva:mailinglist] > archiva:base
- index (long)
- name (string)
- archive (string)
- post (string)
- unsubscribe (string)
- subscribe (string)
- - otherArchives (string) multiple
+ - otherArchives (string)
[archiva:dependency] > archiva:base
- - groupId (string)
- - artifactId (string)
+ - namespace (string)
+ - projectId (string)
- version (string)
+ - artifactId (string)
- type (string)
- classifier (string)
- scope (string)
- systemPath (string)
- optional (boolean)
+ - link (path)
-[archiva:dependencies] mixin
+[archiva:dependencies] > nt:hierarchyNode
+ * (archiva:dependency)
[archiva:checksums] > nt:hierarchyNode
@@ -94,15 +96,22 @@
- type (string)
- value (string)
-[archiva:projectVersion] > archiva:base, archiva:meta_scm, archiva:meta_ci, archiva:meta_issue, archiva:meta_organization mixin
+[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)
- + * (archiva:meta_license)
- + * (archiva:meta_mailinglist)
- + * (archiva:dependencies)
+ + licenses (archiva:licenses)
+ + mailinglists (archiva:mailinglists)
+ + dependencies (archiva:dependencies)
+ * (archiva:facet)