001package org.apache.archiva.metadata.repository.cassandra; 002 003/* 004 * Licensed to the Apache Software Foundation (ASF) under one 005 * or more contributor license agreements. See the NOTICE file 006 * distributed with this work for additional information 007 * regarding copyright ownership. The ASF licenses this file 008 * to you under the Apache License, Version 2.0 (the 009 * "License"); you may not use this file except in compliance 010 * with the License. You may obtain a copy of the License at 011 * 012 * http://www.apache.org/licenses/LICENSE-2.0 013 * 014 * Unless required by applicable law or agreed to in writing, 015 * software distributed under the License is distributed on an 016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 017 * KIND, either express or implied. See the License for the 018 * specific language governing permissions and limitations 019 * under the License. 020 */ 021 022import static org.apache.archiva.metadata.repository.cassandra.model.ColumnNames.*; 023 024import me.prettyprint.cassandra.model.BasicColumnDefinition; 025import me.prettyprint.cassandra.model.ConfigurableConsistencyLevel; 026import me.prettyprint.cassandra.serializers.StringSerializer; 027import me.prettyprint.cassandra.service.CassandraHostConfigurator; 028import me.prettyprint.cassandra.service.ThriftKsDef; 029import me.prettyprint.hector.api.Cluster; 030import me.prettyprint.hector.api.HConsistencyLevel; 031import me.prettyprint.hector.api.Keyspace; 032import me.prettyprint.hector.api.ddl.ColumnFamilyDefinition; 033import me.prettyprint.hector.api.ddl.ColumnIndexType; 034import me.prettyprint.hector.api.ddl.ComparatorType; 035import me.prettyprint.hector.api.factory.HFactory; 036import org.apache.archiva.metadata.repository.RepositorySessionFactoryBean; 037import org.apache.commons.lang.StringUtils; 038import org.slf4j.Logger; 039import org.slf4j.LoggerFactory; 040import org.springframework.beans.factory.annotation.Value; 041import org.springframework.context.ApplicationContext; 042import org.springframework.stereotype.Service; 043 044import javax.annotation.PostConstruct; 045import javax.annotation.PreDestroy; 046import javax.inject.Inject; 047import java.util.ArrayList; 048import java.util.List; 049 050/** 051 * FIXME make all configuration not hardcoded :-) 052 * 053 * @author Olivier Lamy 054 * @since 2.0.0 055 */ 056@Service("archivaEntityManagerFactory#cassandra") 057public class DefaultCassandraArchivaManager 058 implements CassandraArchivaManager 059{ 060 061 private Logger logger = LoggerFactory.getLogger( getClass() ); 062 063 @Inject 064 private ApplicationContext applicationContext; 065 066 private static final String CLUSTER_NAME = "archiva"; 067 068 private static final String KEYSPACE_NAME = "ArchivaKeySpace"; 069 070 private boolean started; 071 072 private Cluster cluster; 073 074 private Keyspace keyspace; 075 076 // configurable??? 077 private String repositoryFamilyName = "repository"; 078 079 private String namespaceFamilyName = "namespace"; 080 081 private String projectFamilyName = PROJECT.toString(); 082 083 private String projectVersionMetadataFamilyName = "projectversionmetadata"; 084 085 private String artifactMetadataFamilyName = "artifactmetadata"; 086 087 private String metadataFacetFamilyName = "metadatafacet"; 088 089 private String mailingListFamilyName = "mailinglist"; 090 091 private String licenseFamilyName = "license"; 092 093 private String dependencyFamilyName = "dependency"; 094 095 @Value("${cassandra.host}") 096 private String cassandraHost; 097 098 @Value("${cassandra.port}") 099 private String cassandraPort; 100 101 @Value("${cassandra.maxActive}") 102 private int maxActive; 103 104 @Value("${cassandra.readConsistencyLevel}") 105 private String readConsistencyLevel; 106 107 @Value("${cassandra.writeConsistencyLevel}") 108 private String writeConsistencyLevel; 109 110 @Value("${cassandra.replicationFactor}") 111 private int replicationFactor; 112 113 @Value("${cassandra.keyspace.name}") 114 private String keyspaceName; 115 116 @Value("${cassandra.cluster.name}") 117 private String clusterName; 118 119 @Inject 120 private RepositorySessionFactoryBean repositorySessionFactoryBean; 121 122 @PostConstruct 123 public void initialize() 124 { 125 // skip initialisation if not cassandra 126 if ( !StringUtils.equals( repositorySessionFactoryBean.getId(), "cassandra" ) ) 127 { 128 return; 129 } 130 final CassandraHostConfigurator configurator = 131 new CassandraHostConfigurator( cassandraHost + ":" + cassandraPort ); 132 configurator.setMaxActive( maxActive ); 133 //configurator.setCassandraThriftSocketTimeout( ); 134 135 cluster = HFactory.getOrCreateCluster( clusterName, configurator ); 136 137 final ConfigurableConsistencyLevel consistencyLevelPolicy = new ConfigurableConsistencyLevel(); 138 consistencyLevelPolicy.setDefaultReadConsistencyLevel( HConsistencyLevel.valueOf( readConsistencyLevel ) ); 139 consistencyLevelPolicy.setDefaultWriteConsistencyLevel( HConsistencyLevel.valueOf( writeConsistencyLevel ) ); 140 keyspace = HFactory.createKeyspace( keyspaceName, cluster, consistencyLevelPolicy ); 141 142 List<ColumnFamilyDefinition> cfds = new ArrayList<>(); 143 144 // namespace table 145 { 146 147 final ColumnFamilyDefinition namespace = 148 HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), // 149 getNamespaceFamilyName(), // 150 ComparatorType.UTF8TYPE ); 151 cfds.add( namespace ); 152 153 // creating indexes for cql query 154 155 BasicColumnDefinition nameColumn = new BasicColumnDefinition(); 156 nameColumn.setName( StringSerializer.get().toByteBuffer( NAME.toString() ) ); 157 nameColumn.setIndexName( NAME.toString() ); 158 nameColumn.setIndexType( ColumnIndexType.KEYS ); 159 nameColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 160 namespace.addColumnDefinition( nameColumn ); 161 162 BasicColumnDefinition repositoryIdColumn = new BasicColumnDefinition(); 163 repositoryIdColumn.setName( StringSerializer.get().toByteBuffer( REPOSITORY_NAME.toString() ) ); 164 repositoryIdColumn.setIndexName( REPOSITORY_NAME.toString() ); 165 repositoryIdColumn.setIndexType( ColumnIndexType.KEYS ); 166 repositoryIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 167 namespace.addColumnDefinition( repositoryIdColumn ); 168 } 169 170 // repository table 171 { 172 final ColumnFamilyDefinition repository = 173 HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), // 174 getRepositoryFamilyName(), // 175 ComparatorType.UTF8TYPE ); 176 177 cfds.add( repository ); 178 179 BasicColumnDefinition nameColumn = new BasicColumnDefinition(); 180 nameColumn.setName( StringSerializer.get().toByteBuffer( REPOSITORY_NAME.toString() ) ); 181 nameColumn.setIndexName( REPOSITORY_NAME.toString() ); 182 nameColumn.setIndexType( ColumnIndexType.KEYS ); 183 nameColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 184 repository.addColumnDefinition( nameColumn ); 185 } 186 187 // project table 188 { 189 190 final ColumnFamilyDefinition project = HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), // 191 getProjectFamilyName(), // 192 ComparatorType.UTF8TYPE ); 193 cfds.add( project ); 194 195 // creating indexes for cql query 196 197 BasicColumnDefinition projectIdColumn = new BasicColumnDefinition(); 198 projectIdColumn.setName( StringSerializer.get().toByteBuffer( PROJECT_ID.toString() ) ); 199 projectIdColumn.setIndexName( PROJECT_ID.toString() ); 200 projectIdColumn.setIndexType( ColumnIndexType.KEYS ); 201 projectIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 202 project.addColumnDefinition( projectIdColumn ); 203 204 BasicColumnDefinition repositoryIdColumn = new BasicColumnDefinition(); 205 repositoryIdColumn.setName( StringSerializer.get().toByteBuffer( REPOSITORY_NAME.toString() ) ); 206 repositoryIdColumn.setIndexName( REPOSITORY_NAME.toString() ); 207 repositoryIdColumn.setIndexType( ColumnIndexType.KEYS ); 208 repositoryIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 209 project.addColumnDefinition( repositoryIdColumn ); 210 211 BasicColumnDefinition namespaceIdColumn = new BasicColumnDefinition(); 212 namespaceIdColumn.setName( StringSerializer.get().toByteBuffer( NAMESPACE_ID.toString() ) ); 213 namespaceIdColumn.setIndexName( NAMESPACE_ID.toString() ); 214 namespaceIdColumn.setIndexType( ColumnIndexType.KEYS ); 215 namespaceIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 216 project.addColumnDefinition( namespaceIdColumn ); 217 } 218 219 //projectversionmetadatamodel 220 { 221 222 final ColumnFamilyDefinition projectVersionMetadataModel = 223 HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), // 224 getProjectVersionMetadataFamilyName(), // 225 ComparatorType.UTF8TYPE ); 226 cfds.add( projectVersionMetadataModel ); 227 228 // creating indexes for cql query 229 230 BasicColumnDefinition namespaceIdColumn = new BasicColumnDefinition(); 231 namespaceIdColumn.setName( StringSerializer.get().toByteBuffer( NAMESPACE_ID.toString() ) ); 232 namespaceIdColumn.setIndexName( NAMESPACE_ID.toString() ); 233 namespaceIdColumn.setIndexType( ColumnIndexType.KEYS ); 234 namespaceIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 235 projectVersionMetadataModel.addColumnDefinition( namespaceIdColumn ); 236 237 BasicColumnDefinition repositoryNameColumn = new BasicColumnDefinition(); 238 repositoryNameColumn.setName( StringSerializer.get().toByteBuffer( REPOSITORY_NAME.toString() ) ); 239 repositoryNameColumn.setIndexName( REPOSITORY_NAME.toString() ); 240 repositoryNameColumn.setIndexType( ColumnIndexType.KEYS ); 241 repositoryNameColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 242 projectVersionMetadataModel.addColumnDefinition( repositoryNameColumn ); 243 244 BasicColumnDefinition idColumn = new BasicColumnDefinition(); 245 idColumn.setName( StringSerializer.get().toByteBuffer( ID.toString() ) ); 246 idColumn.setIndexName( ID.toString() ); 247 idColumn.setIndexType( ColumnIndexType.KEYS ); 248 idColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 249 projectVersionMetadataModel.addColumnDefinition( idColumn ); 250 251 BasicColumnDefinition projectIdColumn = new BasicColumnDefinition(); 252 projectIdColumn.setName( StringSerializer.get().toByteBuffer( PROJECT_ID.toString() ) ); 253 projectIdColumn.setIndexName( PROJECT_ID.toString() ); 254 projectIdColumn.setIndexType( ColumnIndexType.KEYS ); 255 projectIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 256 projectVersionMetadataModel.addColumnDefinition( projectIdColumn ); 257 258 } 259 260 // artifactmetadatamodel table 261 { 262 263 final ColumnFamilyDefinition artifactMetadataModel = 264 HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), // 265 getArtifactMetadataFamilyName(), // 266 ComparatorType.UTF8TYPE ); 267 cfds.add( artifactMetadataModel ); 268 269 // creating indexes for cql query 270 271 BasicColumnDefinition idColumn = new BasicColumnDefinition(); 272 idColumn.setName( StringSerializer.get().toByteBuffer( ID.toString() ) ); 273 idColumn.setIndexName( ID.toString() ); 274 idColumn.setIndexType( ColumnIndexType.KEYS ); 275 idColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 276 artifactMetadataModel.addColumnDefinition( idColumn ); 277 278 BasicColumnDefinition repositoryNameColumn = new BasicColumnDefinition(); 279 repositoryNameColumn.setName( StringSerializer.get().toByteBuffer( REPOSITORY_NAME.toString() ) ); 280 repositoryNameColumn.setIndexName( REPOSITORY_NAME.toString() ); 281 repositoryNameColumn.setIndexType( ColumnIndexType.KEYS ); 282 repositoryNameColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 283 artifactMetadataModel.addColumnDefinition( repositoryNameColumn ); 284 285 BasicColumnDefinition namespaceIdColumn = new BasicColumnDefinition(); 286 namespaceIdColumn.setName( StringSerializer.get().toByteBuffer( NAMESPACE_ID.toString() ) ); 287 namespaceIdColumn.setIndexName( NAMESPACE_ID.toString() ); 288 namespaceIdColumn.setIndexType( ColumnIndexType.KEYS ); 289 namespaceIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 290 artifactMetadataModel.addColumnDefinition( namespaceIdColumn ); 291 292 BasicColumnDefinition projectColumn = new BasicColumnDefinition(); 293 projectColumn.setName( StringSerializer.get().toByteBuffer( PROJECT.toString() ) ); 294 projectColumn.setIndexName( PROJECT.toString() ); 295 projectColumn.setIndexType( ColumnIndexType.KEYS ); 296 projectColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 297 artifactMetadataModel.addColumnDefinition( projectColumn ); 298 299 BasicColumnDefinition projectVersionColumn = new BasicColumnDefinition(); 300 projectVersionColumn.setName( StringSerializer.get().toByteBuffer( PROJECT_VERSION.toString() ) ); 301 projectVersionColumn.setIndexName( PROJECT_VERSION.toString() ); 302 projectVersionColumn.setIndexType( ColumnIndexType.KEYS ); 303 projectVersionColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 304 artifactMetadataModel.addColumnDefinition( projectVersionColumn ); 305 306 BasicColumnDefinition versionColumn = new BasicColumnDefinition(); 307 versionColumn.setName( StringSerializer.get().toByteBuffer( VERSION.toString() ) ); 308 versionColumn.setIndexName( VERSION.toString() ); 309 versionColumn.setIndexType( ColumnIndexType.KEYS ); 310 versionColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 311 artifactMetadataModel.addColumnDefinition( versionColumn ); 312 313 BasicColumnDefinition whenGatheredColumn = new BasicColumnDefinition(); 314 whenGatheredColumn.setName( StringSerializer.get().toByteBuffer( WHEN_GATHERED.toString() ) ); 315 whenGatheredColumn.setIndexName( WHEN_GATHERED.toString() ); 316 whenGatheredColumn.setIndexType( ColumnIndexType.KEYS ); 317 whenGatheredColumn.setValidationClass( ComparatorType.LONGTYPE.getClassName() ); 318 artifactMetadataModel.addColumnDefinition( whenGatheredColumn ); 319 320 BasicColumnDefinition sha1Column = new BasicColumnDefinition(); 321 sha1Column.setName( StringSerializer.get().toByteBuffer( SHA1.toString() ) ); 322 sha1Column.setIndexName( SHA1.toString() ); 323 sha1Column.setIndexType( ColumnIndexType.KEYS ); 324 sha1Column.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 325 artifactMetadataModel.addColumnDefinition( sha1Column ); 326 327 BasicColumnDefinition md5Column = new BasicColumnDefinition(); 328 md5Column.setName( StringSerializer.get().toByteBuffer( MD5.toString() ) ); 329 md5Column.setIndexName( MD5.toString() ); 330 md5Column.setIndexType( ColumnIndexType.KEYS ); 331 md5Column.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 332 artifactMetadataModel.addColumnDefinition( md5Column ); 333 334 335 } 336 337 // metadatafacetmodel table 338 { 339 final ColumnFamilyDefinition metadataFacetModel = 340 HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), // 341 getMetadataFacetFamilyName(), // 342 ComparatorType.UTF8TYPE ); 343 cfds.add( metadataFacetModel ); 344 345 // creating indexes for cql query 346 347 BasicColumnDefinition facetIdColumn = new BasicColumnDefinition(); 348 facetIdColumn.setName( StringSerializer.get().toByteBuffer( FACET_ID.toString() ) ); 349 facetIdColumn.setIndexName( FACET_ID.toString() ); 350 facetIdColumn.setIndexType( ColumnIndexType.KEYS ); 351 facetIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 352 metadataFacetModel.addColumnDefinition( facetIdColumn ); 353 354 BasicColumnDefinition repositoryNameColumn = new BasicColumnDefinition(); 355 repositoryNameColumn.setName( StringSerializer.get().toByteBuffer( REPOSITORY_NAME.toString() ) ); 356 repositoryNameColumn.setIndexName( REPOSITORY_NAME.toString() ); 357 repositoryNameColumn.setIndexType( ColumnIndexType.KEYS ); 358 repositoryNameColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 359 metadataFacetModel.addColumnDefinition( repositoryNameColumn ); 360 361 BasicColumnDefinition nameColumn = new BasicColumnDefinition(); 362 nameColumn.setName( StringSerializer.get().toByteBuffer( NAME.toString() ) ); 363 nameColumn.setIndexName( NAME.toString() ); 364 nameColumn.setIndexType( ColumnIndexType.KEYS ); 365 nameColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 366 metadataFacetModel.addColumnDefinition( nameColumn ); 367 368 BasicColumnDefinition namespaceColumn = new BasicColumnDefinition(); 369 namespaceColumn.setName( StringSerializer.get().toByteBuffer( NAMESPACE_ID.toString() ) ); 370 namespaceColumn.setIndexName( NAMESPACE_ID.toString() ); 371 namespaceColumn.setIndexType( ColumnIndexType.KEYS ); 372 namespaceColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 373 metadataFacetModel.addColumnDefinition( namespaceColumn ); 374 375 BasicColumnDefinition projectIdColumn = new BasicColumnDefinition(); 376 projectIdColumn.setName( StringSerializer.get().toByteBuffer( PROJECT_ID.toString() ) ); 377 projectIdColumn.setIndexName( PROJECT_ID.toString() ); 378 projectIdColumn.setIndexType( ColumnIndexType.KEYS ); 379 projectIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 380 metadataFacetModel.addColumnDefinition( projectIdColumn ); 381 382 BasicColumnDefinition projectVersionColumn = new BasicColumnDefinition(); 383 projectVersionColumn.setName( StringSerializer.get().toByteBuffer( PROJECT_VERSION.toString() ) ); 384 projectVersionColumn.setIndexName( PROJECT_VERSION.toString() ); 385 projectVersionColumn.setIndexType( ColumnIndexType.KEYS ); 386 projectVersionColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 387 metadataFacetModel.addColumnDefinition( projectVersionColumn ); 388 389 } 390 391 // mailinglist table 392 { 393 final ColumnFamilyDefinition mailingListCf = 394 HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), // 395 getMailingListFamilyName(), // 396 ComparatorType.UTF8TYPE ); 397 398 BasicColumnDefinition projectVersionMetadataModel_key = new BasicColumnDefinition(); 399 projectVersionMetadataModel_key.setName( StringSerializer.get().toByteBuffer( "projectVersionMetadataModel.key" ) ); 400 projectVersionMetadataModel_key.setIndexName( "projectVersionMetadataModel_key" ); 401 projectVersionMetadataModel_key.setIndexType( ColumnIndexType.KEYS ); 402 projectVersionMetadataModel_key.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 403 mailingListCf.addColumnDefinition( projectVersionMetadataModel_key ); 404 405 cfds.add( mailingListCf ); 406 407 // creating indexes for cql query 408 409 } 410 411 // license table 412 { 413 final ColumnFamilyDefinition licenseCf = 414 HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), // 415 getLicenseFamilyName(), // 416 ComparatorType.UTF8TYPE ); 417 418 BasicColumnDefinition projectVersionMetadataModel_key = new BasicColumnDefinition(); 419 projectVersionMetadataModel_key.setName( StringSerializer.get().toByteBuffer( "projectVersionMetadataModel.key" ) ); 420 projectVersionMetadataModel_key.setIndexName( "projectVersionMetadataModel_key" ); 421 projectVersionMetadataModel_key.setIndexType( ColumnIndexType.KEYS ); 422 projectVersionMetadataModel_key.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 423 licenseCf.addColumnDefinition( projectVersionMetadataModel_key ); 424 425 cfds.add( licenseCf ); 426 427 // creating indexes for cql query 428 429 } 430 431 // dependency table 432 { 433 final ColumnFamilyDefinition dependencyCf = 434 HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), // 435 getDependencyFamilyName(), // 436 ComparatorType.UTF8TYPE ); 437 cfds.add( dependencyCf ); 438 439 // creating indexes for cql query 440 441 BasicColumnDefinition groupIdColumn = new BasicColumnDefinition(); 442 groupIdColumn.setName( StringSerializer.get().toByteBuffer( GROUP_ID.toString() ) ); 443 groupIdColumn.setIndexName( "groupIdIdx" ); 444 groupIdColumn.setIndexType( ColumnIndexType.KEYS ); 445 groupIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 446 dependencyCf.addColumnDefinition( groupIdColumn ); 447 448 BasicColumnDefinition projectVersionMetadataModel_key = new BasicColumnDefinition(); 449 projectVersionMetadataModel_key.setName( StringSerializer.get().toByteBuffer( "projectVersionMetadataModel.key" ) ); 450 projectVersionMetadataModel_key.setIndexName( "projectVersionMetadataModel_key" ); 451 projectVersionMetadataModel_key.setIndexType( ColumnIndexType.KEYS ); 452 projectVersionMetadataModel_key.setValidationClass( ComparatorType.UTF8TYPE.getClassName() ); 453 dependencyCf.addColumnDefinition( projectVersionMetadataModel_key ); 454 455 } 456 457 // TODO take care of update new table!! 458 { // ensure keyspace exists, here if the keyspace doesn't exist we suppose nothing exist 459 if ( cluster.describeKeyspace( keyspaceName ) == null ) 460 { 461 logger.info( "Creating Archiva Cassandra '" + keyspaceName + "' keyspace." ); 462 cluster.addKeyspace( HFactory.createKeyspaceDefinition( keyspaceName, // 463 ThriftKsDef.DEF_STRATEGY_CLASS, // 464 replicationFactor, // 465 cfds ) 466 ); 467 } 468 } 469 470 } 471 472 @Override 473 public void start() 474 { 475 } 476 477 @PreDestroy 478 @Override 479 public void shutdown() 480 { 481 } 482 483 484 @Override 485 public boolean started() 486 { 487 return started; 488 } 489 490 491 @Override 492 public Keyspace getKeyspace() 493 { 494 return keyspace; 495 } 496 497 @Override 498 public Cluster getCluster() 499 { 500 return cluster; 501 } 502 503 @Override 504 public String getRepositoryFamilyName() 505 { 506 return repositoryFamilyName; 507 } 508 509 @Override 510 public String getNamespaceFamilyName() 511 { 512 return namespaceFamilyName; 513 } 514 515 @Override 516 public String getProjectFamilyName() 517 { 518 return projectFamilyName; 519 } 520 521 @Override 522 public String getProjectVersionMetadataFamilyName() 523 { 524 return projectVersionMetadataFamilyName; 525 } 526 527 @Override 528 public String getArtifactMetadataFamilyName() 529 { 530 return artifactMetadataFamilyName; 531 } 532 533 @Override 534 public String getMetadataFacetFamilyName() 535 { 536 return metadataFacetFamilyName; 537 } 538 539 @Override 540 public String getMailingListFamilyName() 541 { 542 return mailingListFamilyName; 543 } 544 545 @Override 546 public String getLicenseFamilyName() 547 { 548 return licenseFamilyName; 549 } 550 551 @Override 552 public String getDependencyFamilyName() 553 { 554 return dependencyFamilyName; 555 } 556}