fix getNamespaces with sparse depth
git-svn-id: https://svn.apache.org/repos/asf/archiva/sandbox/trunk@1489849 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java b/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java
index fc21795..bed7e54 100644
--- a/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java
+++ b/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java
@@ -460,7 +460,7 @@
{
try
{
- final Set<Namespace> namespaces = new HashSet<Namespace>();
+ final Set<String> namespaces = new HashSet<String>();
namespaceEntityManager.visitAll( new Function<Namespace, Boolean>()
{
@@ -471,23 +471,17 @@
if ( namespace != null && namespace.getRepository() != null && StringUtils.equalsIgnoreCase( repoId,
namespace.getRepository().getId() ) )
{
- if ( !StringUtils.contains( namespace.getName(), "." ) )
+ String name = namespace.getName();
+ if ( StringUtils.isNotEmpty( name ) )
{
- namespaces.add( namespace );
+ namespaces.add( StringUtils.substringBefore( name, "." ) );
}
}
return Boolean.TRUE;
}
} );
- List<String> namespaceNames = new ArrayList<String>( namespaces.size() );
-
- for ( Namespace namespace : namespaces )
- {
- namespaceNames.add( namespace.getName() );
- }
-
- return namespaceNames;
+ return namespaces;
}
catch ( PersistenceException e )
{
@@ -501,7 +495,7 @@
{
try
{
- final Set<Namespace> namespaces = new HashSet<Namespace>();
+ final Set<String> namespaces = new HashSet<String>();
namespaceEntityManager.visitAll( new Function<Namespace, Boolean>()
{
@@ -517,21 +511,23 @@
if ( StringUtils.startsWith( currentNamespace, namespaceId ) && (
StringUtils.length( currentNamespace ) > StringUtils.length( namespaceId ) ) )
{
- namespaces.add( namespace );
+ // store after namespaceId '.' but before next '.'
+ // call org namespace org.apache.maven.shared -> stored apache
+
+ String calledNamespace =
+ StringUtils.endsWith( namespaceId, "." ) ? namespaceId : namespaceId + ".";
+ String storedNamespace = StringUtils.substringAfter( currentNamespace, calledNamespace );
+
+ storedNamespace = StringUtils.substringBefore( storedNamespace, "." );
+
+ namespaces.add( storedNamespace );
}
}
return Boolean.TRUE;
}
} );
- List<String> namespaceNames = new ArrayList<String>( namespaces.size() );
-
- for ( Namespace namespace : namespaces )
- {
- namespaceNames.add( namespace.getName() );
- }
-
- return namespaceNames;
+ return namespaces;
}
catch ( PersistenceException e )
{