Author: olamy
Date: Mon Mar 24 01:35:54 2014
New Revision: 1580688

URL: http://svn.apache.org/r1580688
Log:
use an utility methods to prevent npe when column values does not exist for a 
row

Modified:
    
archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java
    
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java
    
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraUtils.java

Modified: 
archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java?rev=1580688&r1=1580687&r2=1580688&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java
 (original)
+++ 
archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java
 Mon Mar 24 01:35:54 2014
@@ -424,14 +424,16 @@ public abstract class AbstractMetadataRe
         repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, 
TEST_PROJECT, metadata );
 
         metadata = repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, 
TEST_PROJECT, TEST_PROJECT_VERSION );
-        assertEquals( Collections.<String>emptyList(), new ArrayList<String>( 
metadata.getFacetIds() ) );
+
+        Assertions.assertThat( metadata.getFacetIds() ).isNotNull().isEmpty();
 
         metadata = new ProjectVersionMetadata();
         metadata.setId( TEST_PROJECT_VERSION );
         repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, 
TEST_PROJECT, metadata );
 
         metadata = repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, 
TEST_PROJECT, TEST_PROJECT_VERSION );
-        assertEquals( Collections.<String>emptyList(), new ArrayList<String>( 
metadata.getFacetIds() ) );
+        Assertions.assertThat( metadata.getFacetIds() ).isNotNull().isEmpty();
+
     }
 
     @Test

Modified: 
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java?rev=1580688&r1=1580687&r2=1580688&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java
 (original)
+++ 
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java
 Mon Mar 24 01:35:54 2014
@@ -72,7 +72,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import static 
org.apache.archiva.metadata.repository.cassandra.CassandraUtils.column;
+import static 
org.apache.archiva.metadata.repository.cassandra.CassandraUtils.*;
 
 /**
  * @author Olivier Lamy
@@ -161,8 +161,7 @@ public class CassandraMetadataRepository
             try
             {
                 MutationResult mutationResult = HFactory.createMutator( 
keyspace, StringSerializer.get() ) //
-                    .addInsertion( repositoryId, //
-                                   cf, //
+                    .addInsertion( repositoryId, cf,
                                    CassandraUtils.column( "repositoryName", 
repository.getName() ) ) //
                     .execute();
                 return repository;
@@ -220,12 +219,8 @@ public class CassandraMetadataRepository
                 namespace = new Namespace( namespaceId, repository );
                 HFactory.createMutator( keyspace, StringSerializer.get() )
                     //  values
-                    .addInsertion( key, //
-                                   cf, //
-                                   CassandraUtils.column( "name", 
namespace.getName() ) ) //
-                    .addInsertion( key, //
-                                   cf, //
-                                   CassandraUtils.column( "repositoryName", 
repository.getName() ) ) //
+                    .addInsertion( key, cf, CassandraUtils.column( "name", 
namespace.getName() ) ) //
+                    .addInsertion( key, cf, CassandraUtils.column( 
"repositoryName", repository.getName() ) ) //
                     .execute();
             }
 
@@ -254,8 +249,8 @@ public class CassandraMetadataRepository
         if ( result.get().getCount() > 0 )
         {
             ColumnSlice<String, String> columnSlice = 
result.get().getList().get( 0 ).getColumnSlice();
-            return new Namespace( columnSlice.getColumnByName( "name" 
).getValue(), //
-                                  new Repository( columnSlice.getColumnByName( 
"repositoryName" ).getValue() ) );
+            return new Namespace( getStringValue( columnSlice, "name" ), //
+                                  new Repository( getStringValue( columnSlice, 
"repositoryName" ) ) );
 
         }
         return null;
@@ -441,7 +436,7 @@ public class CassandraMetadataRepository
 
             for ( Row<String, String, String> row : cResult.get() )
             {
-                repoIds.add( row.getColumnSlice().getColumnByName( 
"repositoryName" ).getValue() );
+                repoIds.add( getStringValue( row.getColumnSlice(), 
"repositoryName" ) );
             }
 
             return repoIds;
@@ -458,12 +453,10 @@ public class CassandraMetadataRepository
     public Collection<String> getRootNamespaces( final String repoId )
         throws MetadataResolutionException
     {
+        StringSerializer ss = StringSerializer.get();
         Keyspace keyspace = cassandraArchivaManager.getKeyspace();
         QueryResult<OrderedRows<String, String, String>> result = HFactory //
-            .createRangeSlicesQuery( keyspace, //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get() ) //
+            .createRangeSlicesQuery( keyspace, ss, ss, ss ) //
             .setColumnFamily( cassandraArchivaManager.getNamespaceFamilyName() 
) //
             .setColumnNames( "name" ) //
             .addEqualsExpression( "repositoryName", repoId ) //
@@ -473,8 +466,7 @@ public class CassandraMetadataRepository
 
         for ( Row<String, String, String> row : result.get() )
         {
-            namespaces.add(
-                StringUtils.substringBefore( 
row.getColumnSlice().getColumnByName( "name" ).getValue(), "." ) );
+            namespaces.add( StringUtils.substringBefore( getStringValue( 
row.getColumnSlice(), "name" ), "." ) );
         }
 
         return namespaces;
@@ -485,12 +477,10 @@ public class CassandraMetadataRepository
     public Collection<String> getNamespaces( final String repoId, final String 
namespaceId )
         throws MetadataResolutionException
     {
+        StringSerializer ss = StringSerializer.get();
         Keyspace keyspace = cassandraArchivaManager.getKeyspace();
         QueryResult<OrderedRows<String, String, String>> result = HFactory //
-            .createRangeSlicesQuery( keyspace, //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get() ) //
+            .createRangeSlicesQuery( keyspace, ss, ss, ss ) //
             .setColumnFamily( cassandraArchivaManager.getNamespaceFamilyName() 
) //
             .setColumnNames( "name" ) //
             .addEqualsExpression( "repositoryName", repoId ) //
@@ -500,9 +490,9 @@ public class CassandraMetadataRepository
 
         for ( Row<String, String, String> row : result.get() )
         {
-            String currentNamespace = row.getColumnSlice().getColumnByName( 
"name" ).getValue();
-            if ( StringUtils.startsWith( currentNamespace, namespaceId ) && ( 
StringUtils.length( currentNamespace )
-                > StringUtils.length( namespaceId ) ) )
+            String currentNamespace = getStringValue( row.getColumnSlice(), 
"name" );
+            if ( StringUtils.startsWith( currentNamespace, namespaceId ) //
+                && ( StringUtils.length( currentNamespace ) > 
StringUtils.length( namespaceId ) ) )
             {
                 // store after namespaceId '.' but before next '.'
                 // call org namespace org.apache.maven.shared -> stored apache
@@ -524,12 +514,10 @@ public class CassandraMetadataRepository
     public List<String> getNamespaces( final String repoId )
         throws MetadataResolutionException
     {
+        StringSerializer ss = StringSerializer.get();
         Keyspace keyspace = cassandraArchivaManager.getKeyspace();
         QueryResult<OrderedRows<String, String, String>> result = HFactory //
-            .createRangeSlicesQuery( keyspace, //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get() ) //
+            .createRangeSlicesQuery( keyspace, ss, ss, ss ) //
             .setColumnFamily( cassandraArchivaManager.getNamespaceFamilyName() 
) //
             .setColumnNames( "name" ) //
             .addEqualsExpression( "repositoryName", repoId ) //
@@ -539,7 +527,7 @@ public class CassandraMetadataRepository
 
         for ( Row<String, String, String> row : result.get() )
         {
-            namespaces.add( row.getColumnSlice().getColumnByName( "name" 
).getValue() );
+            namespaces.add( getStringValue( row.getColumnSlice(), "name" ) );
         }
 
         return namespaces;
@@ -551,12 +539,10 @@ public class CassandraMetadataRepository
         throws MetadataRepositoryException
     {
         Keyspace keyspace = cassandraArchivaManager.getKeyspace();
+        StringSerializer ss = StringSerializer.get();
 
         QueryResult<OrderedRows<String, String, String>> result = HFactory //
-            .createRangeSlicesQuery( keyspace, //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get() ) //
+            .createRangeSlicesQuery( keyspace, ss, ss, ss ) //
             .setColumnFamily( cassandraArchivaManager.getProjectFamilyName() ) 
//
             .setColumnNames( "projectId" ) //
             .addEqualsExpression( "repositoryName", repositoryId ) //
@@ -579,15 +565,9 @@ public class CassandraMetadataRepository
             String cf = cassandraArchivaManager.getProjectFamilyName();
             projectTemplate.createMutator()
                 //  values
-                .addInsertion( key, //
-                               cf, //
-                               CassandraUtils.column( "projectId", 
projectMetadata.getId() ) ) //
-                .addInsertion( key, //
-                               cf, //
-                               CassandraUtils.column( "repositoryName", 
repositoryId ) ) //
-                .addInsertion( key, //
-                               cf, //
-                               CassandraUtils.column( "namespaceId", 
projectMetadata.getNamespace() ) )//
+                .addInsertion( key, cf, CassandraUtils.column( "projectId", 
projectMetadata.getId() ) ) //
+                .addInsertion( key, cf, CassandraUtils.column( 
"repositoryName", repositoryId ) ) //
+                .addInsertion( key, cf, CassandraUtils.column( "namespaceId", 
projectMetadata.getNamespace() ) )//
                 .execute();
         }
     }
@@ -598,12 +578,9 @@ public class CassandraMetadataRepository
     {
 
         Keyspace keyspace = cassandraArchivaManager.getKeyspace();
-
+        StringSerializer ss = StringSerializer.get();
         QueryResult<OrderedRows<String, String, String>> result = HFactory //
-            .createRangeSlicesQuery( keyspace, //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get() ) //
+            .createRangeSlicesQuery( keyspace, ss, ss, ss ) //
             .setColumnFamily( cassandraArchivaManager.getProjectFamilyName() ) 
//
             .setColumnNames( "projectId" ) //
             .addEqualsExpression( "repositoryName", repoId ) //
@@ -614,7 +591,7 @@ public class CassandraMetadataRepository
 
         for ( Row<String, String, String> row : result.get() )
         {
-            projects.add( row.getColumnSlice().getColumnByName( "projectId" 
).getValue() );
+            projects.add( getStringValue( row.getColumnSlice(), "projectId" ) 
);
         }
 
         return projects;
@@ -625,7 +602,7 @@ public class CassandraMetadataRepository
         throws MetadataRepositoryException
     {
         Keyspace keyspace = cassandraArchivaManager.getKeyspace();
-
+        StringSerializer ss = StringSerializer.get();
         String key = new Project.KeyBuilder() //
             .withProjectId( projectId ) //
             .withNamespace( new Namespace( namespaceId, new Repository( 
repositoryId ) ) ) //
@@ -638,10 +615,7 @@ public class CassandraMetadataRepository
         this.projectTemplate.deleteRow( key );
 
         QueryResult<OrderedRows<String, String, String>> result = HFactory //
-            .createRangeSlicesQuery( keyspace, //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get() ) //
+            .createRangeSlicesQuery( keyspace, ss, ss, ss ) //
             .setColumnFamily( 
cassandraArchivaManager.getProjectVersionMetadataModelFamilyName() ) //
             .setColumnNames( "id" ) //
             .addEqualsExpression( "repositoryName", repositoryId ) //
@@ -688,12 +662,9 @@ public class CassandraMetadataRepository
     {
 
         Keyspace keyspace = cassandraArchivaManager.getKeyspace();
-
+        StringSerializer ss = StringSerializer.get();
         QueryResult<OrderedRows<String, String, String>> result = HFactory //
-            .createRangeSlicesQuery( keyspace, //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get() ) //
+            .createRangeSlicesQuery( keyspace, ss, ss, ss ) //
             .setColumnFamily( 
cassandraArchivaManager.getProjectVersionMetadataModelFamilyName() ) //
             .setColumnNames( "id" ) //
             .addEqualsExpression( "repositoryName", repoId ) //
@@ -712,7 +683,7 @@ public class CassandraMetadataRepository
 
         for ( Row<String, String, String> orderedRows : result.get() )
         {
-            versions.add( orderedRows.getColumnSlice().getColumnByName( "id" 
).getValue() );
+            versions.add( getStringValue( orderedRows.getColumnSlice(), "id" ) 
);
         }
 
         return versions;
@@ -725,12 +696,9 @@ public class CassandraMetadataRepository
     {
 
         Keyspace keyspace = cassandraArchivaManager.getKeyspace();
-
+        StringSerializer ss = StringSerializer.get();
         QueryResult<OrderedRows<String, String, String>> result = HFactory //
-            .createRangeSlicesQuery( keyspace, //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get() ) //
+            .createRangeSlicesQuery( keyspace, ss, ss, ss ) //
             .setColumnFamily( cassandraArchivaManager.getProjectFamilyName() ) 
//
             .setColumnNames( "projectId" ) //
             .addEqualsExpression( "repositoryName", repoId ) //
@@ -758,17 +726,18 @@ public class CassandraMetadataRepository
     protected ProjectVersionMetadataModel map( ColumnSlice<String, String> 
columnSlice )
     {
         ProjectVersionMetadataModel projectVersionMetadataModel = new 
ProjectVersionMetadataModel();
-        projectVersionMetadataModel.setId( columnSlice.getColumnByName( "id" 
).getValue() );
-        projectVersionMetadataModel.setDescription( 
columnSlice.getColumnByName( "description" ).getValue() );
-        projectVersionMetadataModel.setName( columnSlice.getColumnByName( 
"name" ).getValue() );
-        projectVersionMetadataModel.setNamespace(
-            new Namespace( columnSlice.getColumnByName( "namespaceId" 
).getValue(), //
-                           new Repository( columnSlice.getColumnByName( 
"repositoryName" ).getValue() ) )
+        projectVersionMetadataModel.setId( getStringValue( columnSlice, "id" ) 
);
+        projectVersionMetadataModel.setDescription( getStringValue( 
columnSlice, "description" ) );
+        projectVersionMetadataModel.setName( getStringValue( columnSlice, 
"name" ) );
+        projectVersionMetadataModel.setNamespace( new Namespace( 
getStringValue( columnSlice, "namespaceId" ), //
+                                                                 new 
Repository(
+                                                                     
getStringValue( columnSlice, "repositoryName" ) )
+                                                  )
         );
         projectVersionMetadataModel.setIncomplete(
-            Boolean.parseBoolean( columnSlice.getColumnByName( "incomplete" 
).getValue() ) );
-        projectVersionMetadataModel.setProjectId( columnSlice.getColumnByName( 
"projectId" ).getValue() );
-        projectVersionMetadataModel.setUrl( columnSlice.getColumnByName( "url" 
).getValue() );
+            Boolean.parseBoolean( getStringValue( columnSlice, "incomplete" ) 
) );
+        projectVersionMetadataModel.setProjectId( getStringValue( columnSlice, 
"projectId" ) );
+        projectVersionMetadataModel.setUrl( getStringValue( columnSlice, "url" 
) );
         return projectVersionMetadataModel;
     }
 
@@ -801,12 +770,11 @@ public class CassandraMetadataRepository
             throw new MetadataRepositoryException( e.getMessage(), e );
         }
 
+        StringSerializer ss = StringSerializer.get();
+
         Keyspace keyspace = cassandraArchivaManager.getKeyspace();
         QueryResult<OrderedRows<String, String, String>> result = HFactory //
-            .createRangeSlicesQuery( keyspace, //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get() ) //
+            .createRangeSlicesQuery( keyspace, ss, ss, ss ) //
             .setColumnFamily( 
cassandraArchivaManager.getProjectVersionMetadataModelFamilyName() ) //
             .setColumnNames( "id" ) //
             .addEqualsExpression( "repositoryName", repositoryId ) //
@@ -847,40 +815,24 @@ public class CassandraMetadataRepository
             String cf = 
cassandraArchivaManager.getProjectVersionMetadataModelFamilyName();
             Mutator<String> mutator = 
projectVersionMetadataModelTemplate.createMutator()
                 //  values
-                .addInsertion( key, //
-                               cf, //
-                               column( "projectId", projectId ) ) //
-                .addInsertion( key, //
-                               cf, //
-                               column( "repositoryName", repositoryId ) ) //
-                .addInsertion( key, //
-                               cf, //
-                               column( "namespaceId", namespaceId ) )//
-                .addInsertion( key, //
-                               cf, //
-                               column( "id", versionMetadata.getVersion() ) ); 
//
+                .addInsertion( key, cf, column( "projectId", projectId ) ) //
+                .addInsertion( key, cf, column( "repositoryName", repositoryId 
) ) //
+                .addInsertion( key, cf, column( "namespaceId", namespaceId ) 
)//
+                .addInsertion( key, cf, column( "id", 
versionMetadata.getVersion() ) ); //
             if ( versionMetadata.getDescription() != null )
             {
-                mutator = mutator.addInsertion( key, //
-                                                cf, //
-                                                column( "description", 
versionMetadata.getDescription() ) );
+                mutator = mutator.addInsertion( key, cf, column( 
"description", versionMetadata.getDescription() ) );
             }
 
             if ( versionMetadata.getName() != null )
             {
-                mutator = mutator.addInsertion( key, //
-                                                cf, //
-                                                column( "name", 
versionMetadata.getName() ) );
-            }
-            mutator = mutator.addInsertion( key, //
-                                            cf, //
-                                            column( "incomplete",
-                                                    Boolean.toString( 
versionMetadata.isIncomplete() ) ) );
+                mutator = mutator.addInsertion( key, cf, column( "name", 
versionMetadata.getName() ) );
+            }
+            mutator = mutator.addInsertion( key, cf, column( "incomplete",
+                                                             Boolean.toString( 
versionMetadata.isIncomplete() ) ) );
             if ( versionMetadata.getUrl() != null )
             {
-                mutator = mutator.addInsertion( key, //
-                                                cf, //
-                                                column( "url", 
versionMetadata.getUrl() ) );
+                mutator = mutator.addInsertion( key, cf, column( "url", 
versionMetadata.getUrl() ) );
             }
 
             MutationResult mutationResult = mutator.execute();
@@ -1310,12 +1262,9 @@ public class CassandraMetadataRepository
         throws MetadataResolutionException
     {
         Keyspace keyspace = cassandraArchivaManager.getKeyspace();
-
+        StringSerializer ss = StringSerializer.get();
         QueryResult<OrderedRows<String, String, String>> result = HFactory //
-            .createRangeSlicesQuery( keyspace, //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get() ) //
+            .createRangeSlicesQuery( keyspace, ss, ss, ss ) //
             .setColumnFamily( 
cassandraArchivaManager.getArtifactMetadataModelFamilyName() ) //
             .setColumnNames( "version" ) //
             .addEqualsExpression( "repositoryName", repoId ) //
@@ -1327,7 +1276,7 @@ public class CassandraMetadataRepository
 
         for ( Row<String, String, String> row : result.get() )
         {
-            versions.add( row.getColumnSlice().getColumnByName( "version" 
).getValue() );
+            versions.add( getStringValue( row.getColumnSlice(), "version" ) );
         }
 
         return versions;
@@ -1471,12 +1420,9 @@ public class CassandraMetadataRepository
     {
 
         Keyspace keyspace = cassandraArchivaManager.getKeyspace();
-
+        StringSerializer ss = StringSerializer.get();
         QueryResult<OrderedRows<String, String, String>> result = HFactory //
-            .createRangeSlicesQuery( keyspace, //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get() ) //
+            .createRangeSlicesQuery( keyspace, ss, ss, ss ) //
             .setColumnFamily( 
cassandraArchivaManager.getMetadataFacetModelFamilyName() ) //
             .setColumnNames( "name" ) //
             .addEqualsExpression( "repositoryName", repositoryId ) //
@@ -1487,7 +1433,7 @@ public class CassandraMetadataRepository
 
         for ( Row<String, String, String> row : result.get() )
         {
-            facets.add( row.getColumnSlice().getColumnByName( "name" 
).getValue() );
+            facets.add( getStringValue( row.getColumnSlice(), "name" ) );
         }
         return facets;
     }
@@ -1511,12 +1457,9 @@ public class CassandraMetadataRepository
         }
 
         Keyspace keyspace = cassandraArchivaManager.getKeyspace();
-
+        StringSerializer ss = StringSerializer.get();
         QueryResult<OrderedRows<String, String, String>> result = HFactory //
-            .createRangeSlicesQuery( keyspace, //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get() ) //
+            .createRangeSlicesQuery( keyspace, ss, ss, ss ) //
             .setColumnFamily( 
cassandraArchivaManager.getMetadataFacetModelFamilyName() ) //
             .setColumnNames( "key", "value" ) //
             .addEqualsExpression( "repositoryName", repositoryId ) //
@@ -1529,8 +1472,7 @@ public class CassandraMetadataRepository
         for ( Row<String, String, String> row : result.get() )
         {
             ColumnSlice<String, String> columnSlice = row.getColumnSlice();
-            map.put( columnSlice.getColumnByName( "key" ).getValue(),
-                     columnSlice.getColumnByName( "value" ).getValue() );
+            map.put( getStringValue( columnSlice, "key" ), getStringValue( 
columnSlice, "value" ) );
         }
         metadataFacet.fromProperties( map );
         return metadataFacet;
@@ -1658,12 +1600,9 @@ public class CassandraMetadataRepository
         throws MetadataRepositoryException
     {
         Keyspace keyspace = cassandraArchivaManager.getKeyspace();
-
+        StringSerializer ss = StringSerializer.get();
         QueryResult<OrderedRows<String, String, String>> result = HFactory //
-            .createRangeSlicesQuery( keyspace, //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get() ) //
+            .createRangeSlicesQuery( keyspace, ss, ss, ss ) //
             .setColumnFamily( 
cassandraArchivaManager.getMetadataFacetModelFamilyName() ) //
             .setColumnNames( "key", "value" ) //
             .addEqualsExpression( "repositoryName", repositoryId ) //
@@ -1682,12 +1621,9 @@ public class CassandraMetadataRepository
         throws MetadataRepositoryException
     {
         Keyspace keyspace = cassandraArchivaManager.getKeyspace();
-
+        StringSerializer ss = StringSerializer.get();
         QueryResult<OrderedRows<String, String, String>> result = HFactory //
-            .createRangeSlicesQuery( keyspace, //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get() ) //
+            .createRangeSlicesQuery( keyspace, ss, ss, ss ) //
             .setColumnFamily( 
cassandraArchivaManager.getMetadataFacetModelFamilyName() ) //
             .setColumnNames( "key", "value" ) //
             .addEqualsExpression( "repositoryName", repositoryId ) //
@@ -1708,12 +1644,10 @@ public class CassandraMetadataRepository
     {
 
         Keyspace keyspace = cassandraArchivaManager.getKeyspace();
-
+        StringSerializer ss = StringSerializer.get();
+        LongSerializer ls = LongSerializer.get();
         RangeSlicesQuery<String, String, Long> query = HFactory //
-            .createRangeSlicesQuery( keyspace, //
-                                     StringSerializer.get(), //
-                                     StringSerializer.get(), //
-                                     LongSerializer.get() ) //
+            .createRangeSlicesQuery( keyspace, ss, ss, ls ) //
             .setColumnFamily( 
cassandraArchivaManager.getArtifactMetadataModelFamilyName() ) //
             .setColumnNames( "namespaceId", "size", "id", "fileLastModified", 
"md5", "project", "projectVersion",
                              "repositoryName", "version", "whenGathered", 
"sha1" ); //
@@ -1730,9 +1664,6 @@ public class CassandraMetadataRepository
 
         List<ArtifactMetadata> artifactMetadatas = new 
ArrayList<ArtifactMetadata>( result.get().getCount() );
 
-        LongSerializer ls = LongSerializer.get();
-        StringSerializer ss = StringSerializer.get();
-
         for ( Row<String, String, Long> row : result.get() )
         {
             ColumnSlice<String, Long> columnSlice = row.getColumnSlice();
@@ -1741,23 +1672,21 @@ public class CassandraMetadataRepository
             if ( StringUtils.equals( repositoryName, repositoryId ) )
             {
                 ArtifactMetadata artifactMetadata = new ArtifactMetadata();
-                artifactMetadata.setNamespace(
-                    ss.fromByteBuffer( columnSlice.getColumnByName( 
"namespaceId" ).getValueBytes() ) );
-                artifactMetadata.setSize( ls.fromByteBuffer( 
columnSlice.getColumnByName( "size" ).getValueBytes() ) );
-                artifactMetadata.setId( ss.fromByteBuffer( 
columnSlice.getColumnByName( "id" ).getValueBytes() ) );
-                artifactMetadata.setFileLastModified(
-                    ls.fromByteBuffer( columnSlice.getColumnByName( 
"fileLastModified" ).getValueBytes() ) );
-                artifactMetadata.setMd5( ss.fromByteBuffer( 
columnSlice.getColumnByName( "md5" ).getValueBytes() ) );
-                artifactMetadata.setProject(
-                    ss.fromByteBuffer( columnSlice.getColumnByName( "project" 
).getValueBytes() ) );
-                artifactMetadata.setProjectVersion(
-                    ss.fromByteBuffer( columnSlice.getColumnByName( 
"projectVersion" ).getValueBytes() ) );
+                artifactMetadata.setNamespace( getAsStringValue( columnSlice, 
"namespaceId" ) );
+                artifactMetadata.setSize( getLongValue( columnSlice, "size" ) 
);
+                artifactMetadata.setId( getAsStringValue( columnSlice, "id" ) 
);
+                artifactMetadata.setFileLastModified( getLongValue( 
columnSlice, "fileLastModified" ) );
+                artifactMetadata.setMd5( getAsStringValue( columnSlice, "md5" 
) );
+                artifactMetadata.setProject( getAsStringValue( columnSlice, 
"project" ) );
+                artifactMetadata.setProjectVersion( getAsStringValue( 
columnSlice, "projectVersion" ) );
                 artifactMetadata.setRepositoryId( repositoryName );
-                artifactMetadata.setSha1( ss.fromByteBuffer( 
columnSlice.getColumnByName( "sha1" ).getValueBytes() ) );
-                artifactMetadata.setVersion(
-                    ss.fromByteBuffer( columnSlice.getColumnByName( "version" 
).getValueBytes() ) );
-                artifactMetadata.setWhenGathered(
-                    new Date( ls.fromByteBuffer( columnSlice.getColumnByName( 
"whenGathered" ).getValueBytes() ) ) );
+                artifactMetadata.setSha1( getAsStringValue( columnSlice, 
"sha1" ) );
+                artifactMetadata.setVersion( getAsStringValue( columnSlice, 
"version" ) );
+                Long whenGathered = getLongValue( columnSlice, "whenGathered" 
);
+                if ( whenGathered != null )
+                {
+                    artifactMetadata.setWhenGathered( new Date( whenGathered ) 
);
+                }
                 artifactMetadatas.add( artifactMetadata );
             }
         }
@@ -2071,23 +2000,21 @@ public class CassandraMetadataRepository
         {
             ColumnSlice<String, String> columnSlice = row.getColumnSlice();
             ArtifactMetadata artifactMetadata = new ArtifactMetadata();
-            artifactMetadata.setNamespace(
-                ss.fromByteBuffer( columnSlice.getColumnByName( "namespaceId" 
).getValueBytes() ) );
-            artifactMetadata.setSize( ls.fromByteBuffer( 
columnSlice.getColumnByName( "size" ).getValueBytes() ) );
-            artifactMetadata.setId( ss.fromByteBuffer( 
columnSlice.getColumnByName( "id" ).getValueBytes() ) );
-            artifactMetadata.setFileLastModified(
-                ls.fromByteBuffer( columnSlice.getColumnByName( 
"fileLastModified" ).getValueBytes() ) );
-            artifactMetadata.setMd5( ss.fromByteBuffer( 
columnSlice.getColumnByName( "md5" ).getValueBytes() ) );
-            artifactMetadata.setProject(
-                ss.fromByteBuffer( columnSlice.getColumnByName( "project" 
).getValueBytes() ) );
-            artifactMetadata.setProjectVersion(
-                ss.fromByteBuffer( columnSlice.getColumnByName( 
"projectVersion" ).getValueBytes() ) );
+            artifactMetadata.setNamespace( getStringValue( columnSlice, 
"namespaceId" ) );
+            artifactMetadata.setSize( getAsLongValue( columnSlice, "size" ) );
+            artifactMetadata.setId( getStringValue( columnSlice, "id" ) );
+            artifactMetadata.setFileLastModified( getAsLongValue( columnSlice, 
"fileLastModified" ) );
+            artifactMetadata.setMd5( getStringValue( columnSlice, "md5" ) );
+            artifactMetadata.setProject( getStringValue( columnSlice, 
"project" ) );
+            artifactMetadata.setProjectVersion( getStringValue( columnSlice, 
"projectVersion" ) );
             artifactMetadata.setRepositoryId( repoId );
-            artifactMetadata.setSha1( ss.fromByteBuffer( 
columnSlice.getColumnByName( "sha1" ).getValueBytes() ) );
-            artifactMetadata.setVersion(
-                ss.fromByteBuffer( columnSlice.getColumnByName( "version" 
).getValueBytes() ) );
-            artifactMetadata.setWhenGathered(
-                new Date( ls.fromByteBuffer( columnSlice.getColumnByName( 
"whenGathered" ).getValueBytes() ) ) );
+            artifactMetadata.setSha1( getStringValue( columnSlice, "sha1" ) );
+            artifactMetadata.setVersion( getStringValue( columnSlice, 
"version" ) );
+            Long whenGathered = getAsLongValue( columnSlice, "whenGathered" );
+            if ( whenGathered != null )
+            {
+                artifactMetadata.setWhenGathered( new Date( whenGathered ) );
+            }
             artifactMetadatas.add( artifactMetadata );
         }
 
@@ -2113,13 +2040,11 @@ public class CassandraMetadataRepository
         {
             ColumnSlice<String, String> columnSlice = row.getColumnSlice();
             MetadataFacetModel metadataFacetModel = new MetadataFacetModel();
-            metadataFacetModel.setFacetId(
-                ss.fromByteBuffer( columnSlice.getColumnByName( "facetId" 
).getValueBytes() ) );
-            metadataFacetModel.setName( ss.fromByteBuffer( 
columnSlice.getColumnByName( "name" ).getValueBytes() ) );
-            metadataFacetModel.setValue( ss.fromByteBuffer( 
columnSlice.getColumnByName( "value" ).getValueBytes() ) );
-            metadataFacetModel.setKey( ss.fromByteBuffer( 
columnSlice.getColumnByName( "key" ).getValueBytes() ) );
-            metadataFacetModel.setProjectVersion(
-                ss.fromByteBuffer( columnSlice.getColumnByName( 
"projectVersion" ).getValueBytes() ) );
+            metadataFacetModel.setFacetId( getStringValue( columnSlice, 
"facetId" ) );
+            metadataFacetModel.setName( getStringValue( columnSlice, "name" ) 
);
+            metadataFacetModel.setValue( getStringValue( columnSlice, "value" 
) );
+            metadataFacetModel.setKey( getStringValue( columnSlice, "key" ) );
+            metadataFacetModel.setProjectVersion( getStringValue( columnSlice, 
"projectVersion" ) );
             metadataFacetModels.add( metadataFacetModel );
         }
 

Modified: 
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraUtils.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraUtils.java?rev=1580688&r1=1580687&r2=1580688&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraUtils.java
 (original)
+++ 
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraUtils.java
 Mon Mar 24 01:35:54 2014
@@ -19,10 +19,14 @@ package org.apache.archiva.metadata.repo
  * under the License.
  */
 
+import me.prettyprint.cassandra.serializers.LongSerializer;
 import me.prettyprint.cassandra.serializers.SerializerTypeInferer;
+import me.prettyprint.cassandra.serializers.StringSerializer;
 import me.prettyprint.hector.api.Serializer;
+import me.prettyprint.hector.api.beans.ColumnSlice;
 import me.prettyprint.hector.api.beans.HColumn;
 import me.prettyprint.hector.api.factory.HFactory;
+import org.apache.commons.lang.StringUtils;
 
 /**
  * @author Olivier Lamy
@@ -70,6 +74,52 @@ public class CassandraUtils
                                       (Serializer<B>) 
SerializerTypeInferer.getSerializer( value ) );
     }
 
+    public static String getStringValue( ColumnSlice<String, String> 
columnSlice, String columnName )
+    {
+        if ( StringUtils.isNotEmpty( columnName ) )
+        {
+            return null;
+        }
+
+        HColumn<String, String> hColumn = columnSlice.getColumnByName( 
columnName );
+        return hColumn == null ? null : hColumn.getValue();
+    }
+
+    public static Long getLongValue( ColumnSlice<String, Long> columnSlice, 
String columnName )
+    {
+        if ( StringUtils.isNotEmpty( columnName ) )
+        {
+            return null;
+        }
+
+        HColumn<String, Long> hColumn = columnSlice.getColumnByName( 
columnName );
+        return hColumn == null ? null : hColumn.getValue();
+    }
+
+    public static String getAsStringValue( ColumnSlice<String, Long> 
columnSlice, String columnName )
+    {
+        StringSerializer ss = StringSerializer.get();
+        if ( StringUtils.isNotEmpty( columnName ) )
+        {
+            return null;
+        }
+
+        HColumn<String, Long> hColumn = columnSlice.getColumnByName( 
columnName );
+        return hColumn == null ? null : ss.fromByteBuffer( 
hColumn.getValueBytes() );
+    }
+
+    public static Long getAsLongValue( ColumnSlice<String, String> 
columnSlice, String columnName )
+    {
+        LongSerializer ls = LongSerializer.get();
+        if ( StringUtils.isNotEmpty( columnName ) )
+        {
+            return null;
+        }
+
+        HColumn<String, String> hColumn = columnSlice.getColumnByName( 
columnName );
+        return hColumn == null ? null : ls.fromByteBuffer( 
hColumn.getValueBytes() );
+    }
+
     private CassandraUtils()
     {
         // no-op


Reply via email to