You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by oz...@apache.org on 2004/05/04 14:06:27 UTC
cvs commit: jakarta-slide/src/share/org/apache/slide/common Namespace.java
ozeigermann 2004/05/04 05:06:27
Modified: src/share/org/apache/slide/store Store.java
AbstractStore.java
src/share/org/apache/slide/common Namespace.java
Added: src/share/org/apache/slide/store SequenceStore.java
Log:
- Introduces a new store interfaces SequenceStore for sequences
- Adds this interface to the Store interface
- Adapts AbstractStore to implement the extended Store interface
- Allows configuration of the SequenceStore in Domain.xml in Namespace class
Revision Changes Path
1.10 +9 -5 jakarta-slide/src/share/org/apache/slide/store/Store.java
Index: Store.java
===================================================================
RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/store/Store.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- Store.java 11 Feb 2004 11:30:18 -0000 1.9
+++ Store.java 4 May 2004 12:06:26 -0000 1.10
@@ -32,7 +32,7 @@
* @version $Revision$
*/
public interface Store extends ContentStore, LockStore, NodeStore,
- RevisionDescriptorStore, RevisionDescriptorsStore, SecurityStore {
+ RevisionDescriptorStore, RevisionDescriptorsStore, SecurityStore, SequenceStore {
// ------------------------------------------------------ Interface Methods
@@ -113,6 +113,10 @@
*/
void setContentIndexer(IndexStore contentStore);
+ /**
+ * Sets the sequence store associated with this store.
+ */
+ void setSequenceStore(SequenceStore sequenceStore);
/**
* Returns true if binding is supported an enabled for this store
1.40 +56 -4 jakarta-slide/src/share/org/apache/slide/store/AbstractStore.java
Index: AbstractStore.java
===================================================================
RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/store/AbstractStore.java,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- AbstractStore.java 25 Feb 2004 10:04:29 -0000 1.39
+++ AbstractStore.java 4 May 2004 12:06:26 -0000 1.40
@@ -123,6 +123,11 @@
protected IndexStore contentIndexer;
/**
+ * Sequence store
+ */
+ protected SequenceStore sequenceStore = null;
+
+ /**
* Active resource manager list.
*/
protected Service resourceManagers[] = new Service[0];
@@ -526,7 +531,54 @@
return propertiesIndexer;
}
+ /**
+ * Set the sequence store associated with this store.
+ */
+ public void setSequenceStore(SequenceStore store) {
+ sequenceStore = store;
+ }
+ //
+ // sequence methods
+ //
+
+ /**
+ * @see org.apache.slide.store.SequenceStore#isSequenceSupported()
+ */
+ public boolean isSequenceSupported() {
+ return (sequenceStore != null && sequenceStore.isSequenceSupported());
+ }
+
+ /**
+ * @see org.apache.slide.store.SequenceStore#sequenceExists(java.lang.String)
+ */
+ public boolean sequenceExists(String sequenceName) throws ServiceAccessException {
+ if (!isSequenceSupported()) {
+ throw new ServiceAccessException(this, "Sequences not supported");
+ }
+ return sequenceStore.sequenceExists(sequenceName);
+ }
+
+ /**
+ * @see org.apache.slide.store.SequenceStore#createSequence(java.lang.String)
+ */
+ public boolean createSequence(String sequenceName) throws ServiceAccessException {
+ if (!isSequenceSupported()) {
+ throw new ServiceAccessException(this, "Sequences not supported");
+ }
+ return sequenceStore.createSequence(sequenceName);
+ }
+
+ /**
+ * @see org.apache.slide.store.SequenceStore#nextSequenceValue(java.lang.String)
+ */
+ public long nextSequenceValue(String sequenceName) throws ServiceAccessException {
+ if (!isSequenceSupported()) {
+ throw new ServiceAccessException(this, "Sequences not supported");
+ }
+ return sequenceStore.nextSequenceValue(sequenceName);
+ }
+
/**
* Retrive an object from the Descriptors Store.
*
1.1 jakarta-slide/src/share/org/apache/slide/store/SequenceStore.java
Index: SequenceStore.java
===================================================================
/*
* $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/store/SequenceStore.java,v 1.1 2004/05/04 12:06:26 ozeigermann Exp $
* $Revision: 1.1 $
* $Date: 2004/05/04 12:06:26 $
*
* ====================================================================
*
* Copyright 1999-2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.slide.store;
import org.apache.slide.common.Service;
import org.apache.slide.common.ServiceAccessException;
/**
* Store for sequence support. A sequence is an entity that provides unique numbers.
* A store supports sequences when it implements this interface and the method
* {@link isSupported} returns <code>true</code>.
*
* @author <a href="mailto:ozeigermann@c1-fse.de">Oliver Zeigermann</a>
* @version $Revision: 1.1 $
*/
public interface SequenceStore extends Service {
/**
* Checks if this store instance actually supports sequences. It may seem clear
* this store supports sequences as it implements this interface, but a request to the
* underlying persistence store might be needed to dynamically find out.
*
* @return <code>true</code> if the store supports sequences, <code>false</code> otherwise
*/
public boolean isSequenceSupported();
/**
* Checks if the sequence already exists.
*
* @param sequenceName the name of the sequence you want to check
* @return <code>true</code> if the sequence already exists, <code>false</code> otherwise
* @throws ServiceAccessException if anything goes wrong while accessing the sequence
*/
public boolean sequenceExists(String sequenceName) throws ServiceAccessException;
/**
* Creates a sequence if it does not already exist.
*
* @param sequenceName the name of the sequence you want to create
* @return <code>true</code> if the sequence has been created, <code>false</code> if it already existed
* @throws ServiceAccessException if anything goes wrong while accessing the sequence
*/
public boolean createSequence(String sequenceName) throws ServiceAccessException;
/**
* Gets the next value of the sequence. Note that the sequence may not deliver consecutive
* or continuous values. The only thing that is assured is the value will be unique
* in the scope of the sequence, i.e. this method will never return the
* same value for the same sequence. A sequence of valid values <em>might</em> be
* <pre>1,2,3,4,5...</pre>, but it might just as well be
* <pre>10,787875845,1,2,434</pre>.
* However, it may not be
* <pre>1,2,1,3</pre>.
* as a sequence must never return the same value twice or more times.
*
* @param sequenceNamethe name of the sequence you want the next value for
* @return the next value of the sequence
* @throws ServiceAccessException if anything goes wrong while accessing the sequence
*/
public long nextSequenceValue(String sequenceName) throws ServiceAccessException;
}
1.62 +15 -5 jakarta-slide/src/share/org/apache/slide/common/Namespace.java
Index: Namespace.java
===================================================================
RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/common/Namespace.java,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -r1.61 -r1.62
--- Namespace.java 27 Apr 2004 12:55:57 -0000 1.61
+++ Namespace.java 4 May 2004 12:06:27 -0000 1.62
@@ -40,6 +40,7 @@
import org.apache.slide.store.RevisionDescriptorStore;
import org.apache.slide.store.RevisionDescriptorsStore;
import org.apache.slide.store.SecurityStore;
+import org.apache.slide.store.SequenceStore;
import org.apache.slide.store.Store;
import org.apache.slide.structure.ObjectAlreadyExistsException;
import org.apache.slide.structure.SubjectNode;
@@ -103,7 +104,7 @@
public static final String CONTENT_STORE = "contentstore";
public static final String PROPERTIES_INDEX_STORE = "propertiesindexer";
public static final String CONTENT_INDEX_STORE = "contentindexer";
-
+ public static final String SEQUENCE_STORE = "sequencestore";
/**
@@ -416,6 +417,12 @@
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);
@@ -969,6 +976,9 @@
// load default indexer, if no indexer defined
+ // Loading sequence store (if any)
+ getChildStore (storeDefinition, SEQUENCE_STORE, currentStoreChildStores, storeParameters);
+
childStores.put(storeName, currentStoreChildStores);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org
Re: cvs commit: jakarta-slide/src/share/org/apache/slide/common Namespace.java
Posted by Oliver Zeigermann <oz...@c1-fse.de>.
This is my first step to add a sequence concept to Slide stores. I had
to extende the Store interface. Hope this does not break anything
external. I am open to other suggestions on how to integrate this into
Slide without changing interfaces.
Oliver
ozeigermann@apache.org wrote:
> ozeigermann 2004/05/04 05:06:27
>
> Modified: src/share/org/apache/slide/store Store.java
> AbstractStore.java
> src/share/org/apache/slide/common Namespace.java
> Added: src/share/org/apache/slide/store SequenceStore.java
> Log:
> - Introduces a new store interfaces SequenceStore for sequences
> - Adds this interface to the Store interface
> - Adapts AbstractStore to implement the extended Store interface
> - Allows configuration of the SequenceStore in Domain.xml in Namespace class
>
> Revision Changes Path
> 1.10 +9 -5 jakarta-slide/src/share/org/apache/slide/store/Store.java
>
> Index: Store.java
> ===================================================================
> RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/store/Store.java,v
> retrieving revision 1.9
> retrieving revision 1.10
> diff -u -r1.9 -r1.10
> --- Store.java 11 Feb 2004 11:30:18 -0000 1.9
> +++ Store.java 4 May 2004 12:06:26 -0000 1.10
> @@ -32,7 +32,7 @@
> * @version $Revision$
> */
> public interface Store extends ContentStore, LockStore, NodeStore,
> - RevisionDescriptorStore, RevisionDescriptorsStore, SecurityStore {
> + RevisionDescriptorStore, RevisionDescriptorsStore, SecurityStore, SequenceStore {
>
>
> // ------------------------------------------------------ Interface Methods
> @@ -113,6 +113,10 @@
> */
> void setContentIndexer(IndexStore contentStore);
>
> + /**
> + * Sets the sequence store associated with this store.
> + */
> + void setSequenceStore(SequenceStore sequenceStore);
>
> /**
> * Returns true if binding is supported an enabled for this store
>
>
>
> 1.40 +56 -4 jakarta-slide/src/share/org/apache/slide/store/AbstractStore.java
>
> Index: AbstractStore.java
> ===================================================================
> RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/store/AbstractStore.java,v
> retrieving revision 1.39
> retrieving revision 1.40
> diff -u -r1.39 -r1.40
> --- AbstractStore.java 25 Feb 2004 10:04:29 -0000 1.39
> +++ AbstractStore.java 4 May 2004 12:06:26 -0000 1.40
> @@ -123,6 +123,11 @@
> protected IndexStore contentIndexer;
>
> /**
> + * Sequence store
> + */
> + protected SequenceStore sequenceStore = null;
> +
> + /**
> * Active resource manager list.
> */
> protected Service resourceManagers[] = new Service[0];
> @@ -526,7 +531,54 @@
> return propertiesIndexer;
> }
>
> + /**
> + * Set the sequence store associated with this store.
> + */
> + public void setSequenceStore(SequenceStore store) {
> + sequenceStore = store;
> + }
>
> + //
> + // sequence methods
> + //
> +
> + /**
> + * @see org.apache.slide.store.SequenceStore#isSequenceSupported()
> + */
> + public boolean isSequenceSupported() {
> + return (sequenceStore != null && sequenceStore.isSequenceSupported());
> + }
> +
> + /**
> + * @see org.apache.slide.store.SequenceStore#sequenceExists(java.lang.String)
> + */
> + public boolean sequenceExists(String sequenceName) throws ServiceAccessException {
> + if (!isSequenceSupported()) {
> + throw new ServiceAccessException(this, "Sequences not supported");
> + }
> + return sequenceStore.sequenceExists(sequenceName);
> + }
> +
> + /**
> + * @see org.apache.slide.store.SequenceStore#createSequence(java.lang.String)
> + */
> + public boolean createSequence(String sequenceName) throws ServiceAccessException {
> + if (!isSequenceSupported()) {
> + throw new ServiceAccessException(this, "Sequences not supported");
> + }
> + return sequenceStore.createSequence(sequenceName);
> + }
> +
> + /**
> + * @see org.apache.slide.store.SequenceStore#nextSequenceValue(java.lang.String)
> + */
> + public long nextSequenceValue(String sequenceName) throws ServiceAccessException {
> + if (!isSequenceSupported()) {
> + throw new ServiceAccessException(this, "Sequences not supported");
> + }
> + return sequenceStore.nextSequenceValue(sequenceName);
> + }
> +
> /**
> * Retrive an object from the Descriptors Store.
> *
>
>
>
> 1.1 jakarta-slide/src/share/org/apache/slide/store/SequenceStore.java
>
> Index: SequenceStore.java
> ===================================================================
> /*
> * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/store/SequenceStore.java,v 1.1 2004/05/04 12:06:26 ozeigermann Exp $
> * $Revision: 1.1 $
> * $Date: 2004/05/04 12:06:26 $
> *
> * ====================================================================
> *
> * Copyright 1999-2004 The Apache Software Foundation
> *
> * Licensed under the Apache License, Version 2.0 (the "License");
> * you may not use this file except in compliance with the License.
> * You may obtain a copy of the License at
> *
> * http://www.apache.org/licenses/LICENSE-2.0
> *
> * Unless required by applicable law or agreed to in writing, software
> * distributed under the License is distributed on an "AS IS" BASIS,
> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> * See the License for the specific language governing permissions and
> * limitations under the License.
> *
> */
>
> package org.apache.slide.store;
>
> import org.apache.slide.common.Service;
> import org.apache.slide.common.ServiceAccessException;
>
> /**
> * Store for sequence support. A sequence is an entity that provides unique numbers.
> * A store supports sequences when it implements this interface and the method
> * {@link isSupported} returns <code>true</code>.
> *
> * @author <a href="mailto:ozeigermann@c1-fse.de">Oliver Zeigermann</a>
> * @version $Revision: 1.1 $
> */
> public interface SequenceStore extends Service {
>
> /**
> * Checks if this store instance actually supports sequences. It may seem clear
> * this store supports sequences as it implements this interface, but a request to the
> * underlying persistence store might be needed to dynamically find out.
> *
> * @return <code>true</code> if the store supports sequences, <code>false</code> otherwise
> */
> public boolean isSequenceSupported();
>
> /**
> * Checks if the sequence already exists.
> *
> * @param sequenceName the name of the sequence you want to check
> * @return <code>true</code> if the sequence already exists, <code>false</code> otherwise
> * @throws ServiceAccessException if anything goes wrong while accessing the sequence
> */
> public boolean sequenceExists(String sequenceName) throws ServiceAccessException;
>
> /**
> * Creates a sequence if it does not already exist.
> *
> * @param sequenceName the name of the sequence you want to create
> * @return <code>true</code> if the sequence has been created, <code>false</code> if it already existed
> * @throws ServiceAccessException if anything goes wrong while accessing the sequence
> */
> public boolean createSequence(String sequenceName) throws ServiceAccessException;
>
> /**
> * Gets the next value of the sequence. Note that the sequence may not deliver consecutive
> * or continuous values. The only thing that is assured is the value will be unique
> * in the scope of the sequence, i.e. this method will never return the
> * same value for the same sequence. A sequence of valid values <em>might</em> be
> * <pre>1,2,3,4,5...</pre>, but it might just as well be
> * <pre>10,787875845,1,2,434</pre>.
> * However, it may not be
> * <pre>1,2,1,3</pre>.
> * as a sequence must never return the same value twice or more times.
> *
> * @param sequenceNamethe name of the sequence you want the next value for
> * @return the next value of the sequence
> * @throws ServiceAccessException if anything goes wrong while accessing the sequence
> */
> public long nextSequenceValue(String sequenceName) throws ServiceAccessException;
> }
>
>
>
> 1.62 +15 -5 jakarta-slide/src/share/org/apache/slide/common/Namespace.java
>
> Index: Namespace.java
> ===================================================================
> RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/common/Namespace.java,v
> retrieving revision 1.61
> retrieving revision 1.62
> diff -u -r1.61 -r1.62
> --- Namespace.java 27 Apr 2004 12:55:57 -0000 1.61
> +++ Namespace.java 4 May 2004 12:06:27 -0000 1.62
> @@ -40,6 +40,7 @@
> import org.apache.slide.store.RevisionDescriptorStore;
> import org.apache.slide.store.RevisionDescriptorsStore;
> import org.apache.slide.store.SecurityStore;
> +import org.apache.slide.store.SequenceStore;
> import org.apache.slide.store.Store;
> import org.apache.slide.structure.ObjectAlreadyExistsException;
> import org.apache.slide.structure.SubjectNode;
> @@ -103,7 +104,7 @@
> public static final String CONTENT_STORE = "contentstore";
> public static final String PROPERTIES_INDEX_STORE = "propertiesindexer";
> public static final String CONTENT_INDEX_STORE = "contentindexer";
> -
> + public static final String SEQUENCE_STORE = "sequencestore";
>
>
> /**
> @@ -416,6 +417,12 @@
>
> 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);
>
> @@ -969,6 +976,9 @@
>
> // load default indexer, if no indexer defined
>
> + // Loading sequence store (if any)
> + getChildStore (storeDefinition, SEQUENCE_STORE, currentStoreChildStores, storeParameters);
> +
> childStores.put(storeName, currentStoreChildStores);
>
> }
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: slide-dev-help@jakarta.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org