Author: rhauch
Date: 2008-11-13 00:31:21 -0500 (Thu, 13 Nov 2008)
New Revision: 622
Modified:
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connectors/RepositorySourceCapabilities.java
trunk/dna-graph/src/test/java/org/jboss/dna/graph/connectors/SimpleRepositorySource.java
trunk/dna-graph/src/test/java/org/jboss/dna/graph/connectors/TimeDelayingRepositorySource.java
trunk/extensions/dna-connector-federation/src/main/java/org/jboss/dna/connector/federation/FederatedRepositorySource.java
trunk/extensions/dna-connector-inmemory/src/main/java/org/jboss/dna/connector/inmemory/InMemoryRepositorySource.java
trunk/extensions/dna-connector-jbosscache/src/main/java/org/jboss/dna/connector/jbosscache/JBossCacheSource.java
trunk/extensions/dna-connector-svn/src/main/java/org/jboss/dna/connector/svn/SVNRepositorySource.java
Log:
Changed RepositorySourceCapabilities from an interface to a concrete class, allowing
connector to use (or extend) the capabilities so that future additions to this class are
automatically inherited by connectors. Also changed all connector implementations and
test classes.
Modified:
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connectors/RepositorySourceCapabilities.java
===================================================================
---
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connectors/RepositorySourceCapabilities.java 2008-11-12
22:12:46 UTC (rev 621)
+++
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connectors/RepositorySourceCapabilities.java 2008-11-13
05:31:21 UTC (rev 622)
@@ -21,24 +21,82 @@
*/
package org.jboss.dna.graph.connectors;
+import net.jcip.annotations.Immutable;
+
/**
- * The capabilities of a {@link RepositorySource}.
+ * The capabilities of a {@link RepositorySource}. This class can be used as is, or
subclassed to define more complex behavior.
*
+ * @see RepositorySource#getCapabilities()
* @author Randall Hauch
*/
-public interface RepositorySourceCapabilities {
+@Immutable
+public class RepositorySourceCapabilities {
/**
+ * The default support for same-name-siblings is {@value} .
+ */
+ public static final boolean DEFAULT_SUPPORT_SAME_NAME_SIBLINGS = true;
+
+ /**
+ * The default support for updates is {@value} .
+ */
+ public static final boolean DEFAULT_SUPPORT_UPDATES = false;
+
+ /**
+ * The default support for updates is {@value} .
+ */
+ public static final boolean DEFAULT_SUPPORT_EVENTS = false;
+
+ private boolean sameNameSiblings;
+ private boolean updates;
+ private boolean events;
+
+ /**
+ * Create a capabilities object using the defaults, .
+ */
+ public RepositorySourceCapabilities() {
+ this(DEFAULT_SUPPORT_SAME_NAME_SIBLINGS, DEFAULT_SUPPORT_UPDATES,
DEFAULT_SUPPORT_EVENTS);
+ }
+
+ public RepositorySourceCapabilities( boolean supportsSameNameSiblings,
+ boolean supportsUpdates ) {
+ this(supportsSameNameSiblings, supportsUpdates, DEFAULT_SUPPORT_EVENTS);
+ }
+
+ public RepositorySourceCapabilities( boolean supportsSameNameSiblings,
+ boolean supportsUpdates,
+ boolean supportsEvents ) {
+ this.sameNameSiblings = supportsSameNameSiblings;
+ this.updates = supportsUpdates;
+ this.events = supportsEvents;
+ }
+
+ /**
* Return whether the source supports same name siblings. If not, then no two
siblings may share the same name.
*
* @return true if same name siblings are supported, or false otherwise
*/
- boolean supportsSameNameSiblings();
+ public boolean supportsSameNameSiblings() {
+ return sameNameSiblings;
+ }
/**
- * Return whether the source supports updates.
+ * Return whether the source supports updates. This may be true, even though a
particular connection made on behalf of a user
+ * may not have any update privileges. In other words, returning
<code>false</code> implies that no connections would allow
+ * updates to the content.
*
* @return true if updates are supported, or false if the source only supports
reads.
*/
- boolean supportsUpdates();
+ public boolean supportsUpdates() {
+ return updates;
+ }
+
+ /**
+ * Return whether the source supports events through {@link
RepositorySourceListener}s.
+ *
+ * @return true if events are supported, or false if the source is not capable of
generating events
+ */
+ public boolean supportsEvents() {
+ return events;
+ }
}
Modified:
trunk/dna-graph/src/test/java/org/jboss/dna/graph/connectors/SimpleRepositorySource.java
===================================================================
---
trunk/dna-graph/src/test/java/org/jboss/dna/graph/connectors/SimpleRepositorySource.java 2008-11-12
22:12:46 UTC (rev 621)
+++
trunk/dna-graph/src/test/java/org/jboss/dna/graph/connectors/SimpleRepositorySource.java 2008-11-13
05:31:21 UTC (rev 622)
@@ -63,6 +63,9 @@
* The default limit is {@value} for retrying {@link RepositoryConnection connection}
calls to the underlying source.
*/
public static final int DEFAULT_RETRY_LIMIT = 0;
+
+ protected static final RepositorySourceCapabilities CAPABILITIES = new
RepositorySourceCapabilities(true, true);
+
private String repositoryName;
private String name;
private final AtomicInteger retryLimit = new AtomicInteger(DEFAULT_RETRY_LIMIT);
@@ -193,19 +196,9 @@
* @see org.jboss.dna.graph.connectors.RepositorySource#getCapabilities()
*/
public RepositorySourceCapabilities getCapabilities() {
- return new Capabilities();
+ return CAPABILITIES;
}
- protected class Capabilities implements RepositorySourceCapabilities {
- public boolean supportsSameNameSiblings() {
- return true;
- }
-
- public boolean supportsUpdates() {
- return true;
- }
- }
-
/**
* {@inheritDoc}
*
Modified:
trunk/dna-graph/src/test/java/org/jboss/dna/graph/connectors/TimeDelayingRepositorySource.java
===================================================================
---
trunk/dna-graph/src/test/java/org/jboss/dna/graph/connectors/TimeDelayingRepositorySource.java 2008-11-12
22:12:46 UTC (rev 621)
+++
trunk/dna-graph/src/test/java/org/jboss/dna/graph/connectors/TimeDelayingRepositorySource.java 2008-11-13
05:31:21 UTC (rev 622)
@@ -52,6 +52,8 @@
*/
public static final int DEFAULT_RETRY_LIMIT = 0;
+ protected static final RepositorySourceCapabilities CAPABILITIES = new
RepositorySourceCapabilities(true, true);
+
private String name;
private final AtomicInteger connectionsOpenedCount = new AtomicInteger(0);
private final AtomicInteger connectionsClosedCount = new AtomicInteger(0);
@@ -236,19 +238,9 @@
* @see org.jboss.dna.graph.connectors.RepositorySource#getCapabilities()
*/
public RepositorySourceCapabilities getCapabilities() {
- return new Capabilities();
+ return CAPABILITIES;
}
- protected class Capabilities implements RepositorySourceCapabilities {
- public boolean supportsSameNameSiblings() {
- return true;
- }
-
- public boolean supportsUpdates() {
- return true;
- }
- }
-
public class Connection implements RepositoryConnection {
private final String connectionName;
Modified:
trunk/extensions/dna-connector-federation/src/main/java/org/jboss/dna/connector/federation/FederatedRepositorySource.java
===================================================================
---
trunk/extensions/dna-connector-federation/src/main/java/org/jboss/dna/connector/federation/FederatedRepositorySource.java 2008-11-12
22:12:46 UTC (rev 621)
+++
trunk/extensions/dna-connector-federation/src/main/java/org/jboss/dna/connector/federation/FederatedRepositorySource.java 2008-11-13
05:31:21 UTC (rev 622)
@@ -81,6 +81,8 @@
public static final String DEFAULT_CONFIGURATION_SOURCE_PATH = "/";
+ protected static final RepositorySourceCapabilities CAPABILITIES = new
RepositorySourceCapabilities(true, true);
+
protected static final String REPOSITORY_NAME = "repositoryName";
protected static final String SOURCE_NAME = "sourceName";
protected static final String USERNAME = "username";
@@ -711,17 +713,6 @@
* @see org.jboss.dna.graph.connectors.RepositorySource#getCapabilities()
*/
public RepositorySourceCapabilities getCapabilities() {
- return new Capabilities();
+ return CAPABILITIES;
}
-
- protected class Capabilities implements RepositorySourceCapabilities {
- public boolean supportsSameNameSiblings() {
- return true;
- }
-
- public boolean supportsUpdates() {
- return true;
- }
- }
-
}
Modified:
trunk/extensions/dna-connector-inmemory/src/main/java/org/jboss/dna/connector/inmemory/InMemoryRepositorySource.java
===================================================================
---
trunk/extensions/dna-connector-inmemory/src/main/java/org/jboss/dna/connector/inmemory/InMemoryRepositorySource.java 2008-11-12
22:12:46 UTC (rev 621)
+++
trunk/extensions/dna-connector-inmemory/src/main/java/org/jboss/dna/connector/inmemory/InMemoryRepositorySource.java 2008-11-13
05:31:21 UTC (rev 622)
@@ -65,6 +65,8 @@
*/
public static final int DEFAULT_RETRY_LIMIT = 0;
+ protected static final RepositorySourceCapabilities CAPABILITIES = new
RepositorySourceCapabilities(true, true);
+
protected static final String ROOT_NODE_UUID = "rootNodeUuid";
protected static final String SOURCE_NAME = "sourceName";
protected static final String DEFAULT_CACHE_POLICY = "defaultCachePolicy";
@@ -315,16 +317,6 @@
* @see org.jboss.dna.graph.connectors.RepositorySource#getCapabilities()
*/
public RepositorySourceCapabilities getCapabilities() {
- return new Capabilities();
+ return CAPABILITIES;
}
-
- protected class Capabilities implements RepositorySourceCapabilities {
- public boolean supportsSameNameSiblings() {
- return true;
- }
-
- public boolean supportsUpdates() {
- return true;
- }
- }
}
Modified:
trunk/extensions/dna-connector-jbosscache/src/main/java/org/jboss/dna/connector/jbosscache/JBossCacheSource.java
===================================================================
---
trunk/extensions/dna-connector-jbosscache/src/main/java/org/jboss/dna/connector/jbosscache/JBossCacheSource.java 2008-11-12
22:12:46 UTC (rev 621)
+++
trunk/extensions/dna-connector-jbosscache/src/main/java/org/jboss/dna/connector/jbosscache/JBossCacheSource.java 2008-11-13
05:31:21 UTC (rev 622)
@@ -82,6 +82,8 @@
public static final int DEFAULT_RETRY_LIMIT = 0;
public static final String DEFAULT_UUID_PROPERTY_NAME = DnaLexicon.UUID.getString();
+ protected static final RepositorySourceCapabilities CAPABILITIES = new
RepositorySourceCapabilities(true, true);
+
protected static final String ROOT_NODE_UUID = "rootNodeUuid";
protected static final String SOURCE_NAME = "sourceName";
protected static final String DEFAULT_CACHE_POLICY = "defaultCachePolicy";
@@ -551,16 +553,6 @@
* @see org.jboss.dna.graph.connectors.RepositorySource#getCapabilities()
*/
public RepositorySourceCapabilities getCapabilities() {
- return new Capabilities();
+ return CAPABILITIES;
}
-
- protected class Capabilities implements RepositorySourceCapabilities {
- public boolean supportsSameNameSiblings() {
- return true;
- }
-
- public boolean supportsUpdates() {
- return true;
- }
- }
}
Modified:
trunk/extensions/dna-connector-svn/src/main/java/org/jboss/dna/connector/svn/SVNRepositorySource.java
===================================================================
---
trunk/extensions/dna-connector-svn/src/main/java/org/jboss/dna/connector/svn/SVNRepositorySource.java 2008-11-12
22:12:46 UTC (rev 621)
+++
trunk/extensions/dna-connector-svn/src/main/java/org/jboss/dna/connector/svn/SVNRepositorySource.java 2008-11-13
05:31:21 UTC (rev 622)
@@ -76,6 +76,9 @@
* The default limit is {@value} for retrying {@link RepositoryConnection connection}
calls to the underlying source.
*/
public static final int DEFAULT_RETRY_LIMIT = 0;
+
+ protected static final RepositorySourceCapabilities CAPABILITIES = new
RepositorySourceCapabilities(false, true);
+
public static final String DEFAULT_UUID_PROPERTY_NAME = DnaLexicon.UUID.getString();
protected static final String SOURCE_NAME = "sourceName";
@@ -275,7 +278,7 @@
* @see org.jboss.dna.graph.connectors.RepositorySource#getCapabilities()
*/
public RepositorySourceCapabilities getCapabilities() {
- return new Capabilities();
+ return CAPABILITIES;
}
/**
@@ -456,13 +459,4 @@
return null;
}
- protected class Capabilities implements RepositorySourceCapabilities {
- public boolean supportsSameNameSiblings() {
- return false;
- }
-
- public boolean supportsUpdates() {
- return true;
- }
- }
}