Hashtable childStores)
throws ServiceRegistrationFailedException,
ServiceParameterErrorException, ServiceParameterMissingException {
if (!stores.containsKey(scope)) {
try {
Store store = (Store) storeClass.newInstance();
store.setName(storeName);
store.setParameters(parameters);
stores.put(scope, store);
// assign NodeStore
NodeStore nodeStore =
(NodeStore) dereferenceStore (NODE_STORE, childStores);
store.setNodeStore (nodeStore);
// assign SecurityStore
SecurityStore securityStore =
(SecurityStore) dereferenceStore (SECURITY_STORE, childStores);
store.setSecurityStore (securityStore);
// assign LockStore
LockStore lockStore =
(LockStore) dereferenceStore (LOCK_STORE, childStores);
store.setLockStore (lockStore);
// assign RevisionDescriptorsStore
RevisionDescriptorsStore revisionDescriptorsStore =
(RevisionDescriptorsStore) dereferenceStore
(REVISION_DESCRIPTORS_STORE, childStores);
store.setRevisionDescriptorsStore (revisionDescriptorsStore);
// assign RevisionDescriptorStore
RevisionDescriptorStore revisionDescriptorStore =
(RevisionDescriptorStore) dereferenceStore
(REVISION_DESCRIPTOR_STORE, childStores);
store.setRevisionDescriptorStore (revisionDescriptorStore);
// assign ContentStore
ContentStore contentStore =
(ContentStore) dereferenceStore (CONTENT_STORE, childStores);
store.setContentStore (contentStore);
// assign PropertiesIndexStore
IndexStore propertiesIndexer =
(IndexStore) dereferenceStore (PROPERTIES_INDEX_STORE, childStores);
// if not configured, take the default indexer
if (propertiesIndexer == null) {
propertiesIndexer = new DefaultIndexer (revisionDescriptorStore);
childStores.put (PROPERTIES_INDEX_STORE, propertiesIndexer);
}
store.setPropertiesIndexer (propertiesIndexer);
// assign ContentIndexStore
IndexStore contentIndexer =
(IndexStore) dereferenceStore (CONTENT_INDEX_STORE, childStores);
// if not configured, take the default indexer
if (contentIndexer == null) {
contentIndexer = new DefaultIndexer (contentStore);
childStores.put (CONTENT_INDEX_STORE, contentIndexer);
}
store.setContentIndexer (contentIndexer);
// assign SequenceStore
SequenceStore sequenceStore =
(SequenceStore) dereferenceStore (SEQUENCE_STORE, childStores);
store.setSequenceStore(sequenceStore);
// set the scope in the father and child stores
store.setScope(scope);
// call the create_store_listener
notifyStoreCreated( this.name, scope.toString(), storeName );
} catch(InstantiationException e) {