[dna-commits] DNA SVN: r244 - in trunk: dna-spi/src/main/java/org/jboss/dna/spi/graph/connection and 1 other directories.

dna-commits at lists.jboss.org dna-commits at lists.jboss.org
Fri Jun 6 17:19:46 EDT 2008


Author: rhauch
Date: 2008-06-06 17:19:46 -0400 (Fri, 06 Jun 2008)
New Revision: 244

Modified:
   trunk/connectors/dna-connector-jbosscache/src/main/java/org/jboss/dna/connector/jbosscache/JBossCacheConnection.java
   trunk/connectors/dna-connector-jbosscache/src/main/java/org/jboss/dna/connector/jbosscache/JBossCacheSource.java
   trunk/dna-spi/src/main/java/org/jboss/dna/spi/graph/connection/RepositoryConnection.java
   trunk/dna-spi/src/main/java/org/jboss/dna/spi/graph/connection/RepositoryConnectionPool.java
   trunk/dna-spi/src/main/java/org/jboss/dna/spi/graph/connection/RepositorySource.java
   trunk/dna-spi/src/main/java/org/jboss/dna/spi/graph/connection/RepositorySourceException.java
   trunk/dna-spi/src/test/java/org/jboss/dna/spi/graph/connection/MockRepositorySource.java
Log:
DNA-67: Create graph API for federation engine
http://jira.jboss.org/jira/browse/DNA-67

Moved the "getDefaultCachePolicy" from RepositorySource to RepositoryConnection.

Modified: trunk/connectors/dna-connector-jbosscache/src/main/java/org/jboss/dna/connector/jbosscache/JBossCacheConnection.java
===================================================================
--- trunk/connectors/dna-connector-jbosscache/src/main/java/org/jboss/dna/connector/jbosscache/JBossCacheConnection.java	2008-06-06 21:18:50 UTC (rev 243)
+++ trunk/connectors/dna-connector-jbosscache/src/main/java/org/jboss/dna/connector/jbosscache/JBossCacheConnection.java	2008-06-06 21:19:46 UTC (rev 244)
@@ -30,6 +30,7 @@
 import org.jboss.cache.Cache;
 import org.jboss.cache.Fqn;
 import org.jboss.cache.Node;
+import org.jboss.dna.spi.cache.CachePolicy;
 import org.jboss.dna.spi.graph.Name;
 import org.jboss.dna.spi.graph.Path;
 import org.jboss.dna.spi.graph.Property;
@@ -97,6 +98,13 @@
     /**
      * {@inheritDoc}
      */
+    public CachePolicy getDefaultCachePolicy() {
+        return source.getDefaultCachePolicy();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
     public XAResource getXAResource() {
         return null;
     }

Modified: trunk/connectors/dna-connector-jbosscache/src/main/java/org/jboss/dna/connector/jbosscache/JBossCacheSource.java
===================================================================
--- trunk/connectors/dna-connector-jbosscache/src/main/java/org/jboss/dna/connector/jbosscache/JBossCacheSource.java	2008-06-06 21:18:50 UTC (rev 243)
+++ trunk/connectors/dna-connector-jbosscache/src/main/java/org/jboss/dna/connector/jbosscache/JBossCacheSource.java	2008-06-06 21:19:46 UTC (rev 244)
@@ -113,7 +113,9 @@
     }
 
     /**
-     * {@inheritDoc}
+     * Get the default cache policy for this source, or null if the global default cache policy should be used
+     * 
+     * @return the default cache policy, or null if this source has no explicit default cache policy
      */
     public CachePolicy getDefaultCachePolicy() {
         return defaultCachePolicy;

Modified: trunk/dna-spi/src/main/java/org/jboss/dna/spi/graph/connection/RepositoryConnection.java
===================================================================
--- trunk/dna-spi/src/main/java/org/jboss/dna/spi/graph/connection/RepositoryConnection.java	2008-06-06 21:18:50 UTC (rev 243)
+++ trunk/dna-spi/src/main/java/org/jboss/dna/spi/graph/connection/RepositoryConnection.java	2008-06-06 21:19:46 UTC (rev 244)
@@ -23,6 +23,7 @@
 
 import java.util.concurrent.TimeUnit;
 import javax.transaction.xa.XAResource;
+import org.jboss.dna.spi.cache.CachePolicy;
 import org.jboss.dna.spi.graph.commands.GraphCommand;
 
 /**
@@ -31,6 +32,7 @@
  * These connections need not support concurrent operations by multiple threads, since the federation engine never uses them this
  * way.
  * </p>
+ * 
  * @author Randall Hauch
  */
 public interface RepositoryConnection {
@@ -38,6 +40,7 @@
     /**
      * Get the name for this repository source. This value should be the same as that {@link RepositorySource#getName() returned}
      * by the same {@link RepositorySource} that created this connection.
+     * 
      * @return the identifier; never null or empty
      */
     String getSourceName();
@@ -45,12 +48,14 @@
     /**
      * Return the transactional resource associated with this connection. The transaction manager will use this resource to manage
      * the participation of this connection in a distributed transaction.
+     * 
      * @return the XA resource, or null if this connection is not aware of distributed transactions
      */
     XAResource getXAResource();
 
     /**
      * Ping the underlying system to determine if the connection is still valid and alive.
+     * 
      * @param time the length of time to wait before timing out
      * @param unit the time unit to use; may not be null
      * @return true if this connection is still valid and can still be used, or false otherwise
@@ -60,12 +65,21 @@
 
     /**
      * Set the listener that is to receive notifications to changes to content within this source.
+     * 
      * @param listener the new listener, or null if no component is interested in the change notifications
      */
     void setListener( RepositorySourceListener listener );
 
     /**
+     * Get the default cache policy for this repository. If none is provided, a global cache policy will be used.
+     * 
+     * @return the default cache policy
+     */
+    CachePolicy getDefaultCachePolicy();
+
+    /**
      * Execute the supplied commands against this repository source.
+     * 
      * @param env the environment in which the commands are being executed; never null
      * @param commands the commands to be executed; never null
      * @throws RepositorySourceException if there is a problem loading the node data
@@ -75,6 +89,7 @@
 
     /**
      * Close this connection to signal that it is no longer needed and that any accumulated resources are to be released.
+     * 
      * @throws InterruptedException if the thread has been interrupted while the close was in progress
      */
     void close() throws InterruptedException;

Modified: trunk/dna-spi/src/main/java/org/jboss/dna/spi/graph/connection/RepositoryConnectionPool.java
===================================================================
--- trunk/dna-spi/src/main/java/org/jboss/dna/spi/graph/connection/RepositoryConnectionPool.java	2008-06-06 21:18:50 UTC (rev 243)
+++ trunk/dna-spi/src/main/java/org/jboss/dna/spi/graph/connection/RepositoryConnectionPool.java	2008-06-06 21:19:46 UTC (rev 244)
@@ -43,6 +43,7 @@
 import org.jboss.dna.common.util.LogContext;
 import org.jboss.dna.common.util.Logger;
 import org.jboss.dna.spi.SpiI18n;
+import org.jboss.dna.spi.cache.CachePolicy;
 import org.jboss.dna.spi.graph.commands.GraphCommand;
 
 /**
@@ -52,6 +53,21 @@
 public class RepositoryConnectionPool implements RepositoryConnectionFactory {
 
     /**
+     * The core pool size for default-constructed pools is {@value}.
+     */
+    public static final int DEFAULT_CORE_POOL_SIZE = 1;
+
+    /**
+     * The maximum pool size for default-constructed pools is {@value}.
+     */
+    public static final int DEFAULT_MAXIMUM_POOL_SIZE = 10;
+
+    /**
+     * The keep-alive time for connections in default-constructed pools is {@value} seconds.
+     */
+    public static final long DEFAULT_KEEP_ALIVE_TIME_IN_SECONDS = 30;
+
+    /**
      * Permission for checking shutdown
      */
     private static final RuntimePermission shutdownPerm = new RuntimePermission("modifyThread");
@@ -146,7 +162,20 @@
     private final Logger logger = Logger.getLogger(this.getClass());
 
     /**
+     * Create the pool to use the supplied connection factory, which is typically a {@link RepositorySource}. This constructor
+     * uses the {@link #DEFAULT_CORE_POOL_SIZE default core pool size}, {@link #DEFAULT_MAXIMUM_POOL_SIZE default maximum pool
+     * size}, and {@link #DEFAULT_KEEP_ALIVE_TIME_IN_SECONDS default keep-alive time (in seconds)}.
+     * 
+     * @param connectionFactory the factory for connections
+     * @throws IllegalArgumentException if the connection factory is null or any of the supplied arguments are invalid
+     */
+    public RepositoryConnectionPool( RepositoryConnectionFactory connectionFactory ) {
+        this(connectionFactory, DEFAULT_CORE_POOL_SIZE, DEFAULT_MAXIMUM_POOL_SIZE, DEFAULT_KEEP_ALIVE_TIME_IN_SECONDS, TimeUnit.SECONDS);
+    }
+
+    /**
      * Create the pool to use the supplied connection factory, which is typically a {@link RepositorySource}.
+     * 
      * @param connectionFactory the factory for connections
      * @param corePoolSize the number of connections to keep in the pool, even if they are idle.
      * @param maximumPoolSize the maximum number of connections to allow in the pool.
@@ -226,6 +255,7 @@
      * Sets the time limit for which connections may remain idle before being closed. If there are more than the core number of
      * connections currently in the pool, after waiting this amount of time without being used, excess threads will be terminated.
      * This overrides any value set in the constructor.
+     * 
      * @param time the time to wait. A time value of zero will cause excess connections to terminate immediately after being
      * returned.
      * @param unit the time unit of the time argument
@@ -240,6 +270,7 @@
     /**
      * Returns the connection keep-alive time, which is the amount of time which connections in excess of the core pool size may
      * remain idle before being closed.
+     * 
      * @param unit the desired time unit of the result
      * @return the time limit
      * @see #setKeepAliveTime
@@ -259,6 +290,7 @@
     /**
      * Sets the maximum allowed number of connections. This overrides any value set in the constructor. If the new value is
      * smaller than the current value, excess existing but unused connections will be closed.
+     * 
      * @param maximumPoolSize the new maximum
      * @throws IllegalArgumentException if maximumPoolSize less than zero or the {@link #getCorePoolSize() core pool size}
      * @see #getMaximumPoolSize
@@ -284,6 +316,7 @@
 
     /**
      * Returns the core number of connections.
+     * 
      * @return the core number of connections
      * @see #setCorePoolSize(int)
      */
@@ -295,6 +328,7 @@
      * Sets the core number of connections. This overrides any value set in the constructor. If the new value is smaller than the
      * current value, excess existing and unused connections will be closed. If larger, new connections will, if needed, be
      * created.
+     * 
      * @param corePoolSize the new core size
      * @throws RepositorySourceException if there was an error obtaining the new connection
      * @throws InterruptedException if the thread was interrupted during the operation
@@ -328,7 +362,9 @@
     // -------------------------------------------------
 
     /**
-     * Returns the current number of connections in the pool.
+     * Returns the current number of connections in the pool, including those that are checked out (in use) and those that are not
+     * being used.
+     * 
      * @return the number of connections
      */
     public int getPoolSize() {
@@ -336,7 +372,8 @@
     }
 
     /**
-     * Returns the approximate number of connections that have been checked out from the pool.
+     * Returns the approximate number of connections that are currently checked out from the pool.
+     * 
      * @return the number of checked-out connections
      */
     public int getInUseCount() {
@@ -351,6 +388,7 @@
 
     /**
      * Get the total number of connections that have been created by this pool.
+     * 
      * @return the total number of connections created by this pool
      */
     public long getTotalConnectionsCreated() {
@@ -359,6 +397,7 @@
 
     /**
      * Get the total number of times connections have been {@link #getConnection()} used.
+     * 
      * @return the total number
      */
     public long getTotalConnectionsUsed() {
@@ -371,6 +410,7 @@
 
     /**
      * Call the supplied operation, using a connection from this pool.
+     * 
      * @param <T> the return type for the operation
      * @param operation the operation to be run using a connection in this pool
      * @return the results from the operation
@@ -378,7 +418,7 @@
      * @throws InterruptedException if the thread was interrupted during the operation
      * @throws IllegalArgumentException if the operation is null
      * @see #callable(RepositoryOperation)
-     * @see #callables(Collection)
+     * @see #callables(Iterable)
      * @see #callables(RepositoryOperation...)
      */
     public <T> T call( RepositoryOperation<T> operation ) throws RepositorySourceException, InterruptedException {
@@ -399,11 +439,12 @@
 
     /**
      * Return a callable object that, when run, performs the supplied repository operation against a connection in this pool.
+     * 
      * @param <T> the return type for the operation
      * @param operation the operation to be run using a connection in this pool
      * @return the callable
      * @see #call(RepositoryOperation)
-     * @see #callables(Collection)
+     * @see #callables(Iterable)
      * @see #callables(RepositoryOperation...)
      */
     public <T> Callable<T> callable( final RepositoryOperation<T> operation ) {
@@ -413,6 +454,7 @@
 
             /**
              * Execute by getting a connection from this pool, running the client, and return the connection to the pool.
+             * 
              * @return the operation's result
              * @throws Exception
              */
@@ -425,12 +467,13 @@
     /**
      * Return a collection of callable objects that, when run, perform the supplied repository operations against connections in
      * this pool.
+     * 
      * @param <T> the return type for the operations
      * @param operations the operations to be run using connection from this pool
      * @return the collection of callables
      * @see #call(RepositoryOperation)
      * @see #callable(RepositoryOperation)
-     * @see #callables(Collection)
+     * @see #callables(Iterable)
      */
     public <T> List<Callable<T>> callables( RepositoryOperation<T>... operations ) {
         List<Callable<T>> callables = new ArrayList<Callable<T>>();
@@ -443,6 +486,7 @@
     /**
      * Return a collection of callable objects that, when run, perform the supplied repository operations against connections in
      * this pool.
+     * 
      * @param <T> the return type for the operations
      * @param operations the operations to be run using connection from this pool
      * @return the collection of callables
@@ -450,7 +494,7 @@
      * @see #callable(RepositoryOperation)
      * @see #callables(RepositoryOperation...)
      */
-    public <T> List<Callable<T>> callables( Collection<RepositoryOperation<T>> operations ) {
+    public <T> List<Callable<T>> callables( Iterable<RepositoryOperation<T>> operations ) {
         List<Callable<T>> callables = new ArrayList<Callable<T>>();
         for (final RepositoryOperation<T> operation : operations) {
             callables.add(callable(operation));
@@ -466,6 +510,7 @@
      * Starts a core connection, causing it to idly wait for use. This overrides the default policy of starting core connections
      * only when they are {@link #getConnection() needed}. This method will return <tt>false</tt> if all core connections have
      * already been started.
+     * 
      * @return true if a connection was started
      * @throws RepositorySourceException if there was an error obtaining the new connection
      * @throws InterruptedException if the thread was interrupted during the operation
@@ -483,6 +528,7 @@
     /**
      * Starts all core connections, causing them to idly wait for use. This overrides the default policy of starting core
      * connections only when they are {@link #getConnection() needed}.
+     * 
      * @return the number of connections started.
      * @throws RepositorySourceException if there was an error obtaining the new connection
      * @throws InterruptedException if the thread was interrupted during the operation
@@ -500,9 +546,11 @@
     /**
      * Initiates an orderly shutdown in which connections that are currently in use are allowed to be used and closed as normal,
      * but no new connections will be created. Invocation has no additional effect if already shut down.
-     * @throws SecurityException if a security manager exists and shutting down this ConnectionPool may manipulate threads that
-     * the caller is not permitted to modify because it does not hold {@link java.lang.RuntimePermission}<tt>("modifyThread")</tt>,
-     * or the security manager's <tt>checkAccess</tt> method denies access.
+     * 
+     * @throws SecurityException if a security manager exists and shutting down this pool may manipulate threads that the caller
+     * is not permitted to modify because it does not hold {@link java.lang.RuntimePermission}<tt>("modifyThread")</tt>, or
+     * the security manager's <tt>checkAccess</tt> method denies access.
+     * @see #shutdownNow()
      */
     public void shutdown() {
         // Fail if caller doesn't have modifyThread permission. We
@@ -548,14 +596,12 @@
     }
 
     /**
-     * Attempts to stop all actively executing tasks, halts the processing of waiting tasks, and returns a list of the tasks that
-     * were awaiting execution.
-     * <p>
-     * This implementation cancels tasks via {@link Thread#interrupt}, so if any tasks mask or fail to respond to interrupts,
-     * they may never terminate.
-     * @throws SecurityException if a security manager exists and shutting down this ExecutorService may manipulate threads that
-     * the caller is not permitted to modify because it does not hold {@link java.lang.RuntimePermission}<tt>("modifyThread")</tt>,
-     * or the security manager's <tt>checkAccess</tt> method denies access.
+     * Attempts to close all connections, including those connections currently in use, and prevent the use of other connections.
+     * 
+     * @throws SecurityException if a security manager exists and shutting down this pool may manipulate threads that the caller
+     * is not permitted to modify because it does not hold {@link java.lang.RuntimePermission}<tt>("modifyThread")</tt>, or
+     * the security manager's <tt>checkAccess</tt> method denies access.
+     * @see #shutdown()
      */
     public void shutdownNow() {
         // Almost the same code as shutdown()
@@ -608,25 +654,67 @@
         if (fullyTerminated) terminated();
     }
 
+    /**
+     * Return whether this connection pool is running and is able to {@link #getConnection() provide connections}. Note that this
+     * method is effectively <code>!isShutdown()</code>.
+     * 
+     * @return true if this pool is running, or false otherwise
+     * @see #isShutdown()
+     * @see #isTerminated()
+     * @see #isTerminating()
+     */
+    public boolean isRunning() {
+        return runState == RUNNING;
+    }
+
+    /**
+     * Return whether this connection pool is in the process of shutting down or has already been shut down. A result of
+     * <code>true</code> signals that the pool may no longer be used. Note that this method is effectively
+     * <code>!isRunning()</code>.
+     * 
+     * @return true if this pool has been shut down, or false otherwise
+     * @see #isShutdown()
+     * @see #isTerminated()
+     * @see #isTerminating()
+     */
     public boolean isShutdown() {
         return runState != RUNNING;
     }
 
     /**
-     * Returns true if this executor is in the process of terminating after <tt>shutdown</tt> or <tt>shutdownNow</tt> but has
-     * not completely terminated. This method may be useful for debugging. A return of <tt>true</tt> reported a sufficient
-     * period after shutdown may indicate that submitted tasks have ignored or suppressed interruption, causing this executor not
-     * to properly terminate.
-     * @return true if terminating but not yet terminated.
+     * Returns true if this pool is in the process of terminating after {@link #shutdown()} or {@link #shutdownNow()} has been
+     * called but has not completely terminated. This method may be useful for debugging. A return of <tt>true</tt> reported a
+     * sufficient period after shutdown may indicate that submitted tasks have ignored or suppressed interruption, causing this
+     * executor not to properly terminate.
+     * 
+     * @return true if terminating but not yet terminated, or false otherwise
+     * @see #isTerminated()
      */
     public boolean isTerminating() {
         return runState == STOP;
     }
 
+    /**
+     * Return true if this pool has completed its termination and no longer has any open connections.
+     * 
+     * @return true if terminated, or false otherwise
+     * @see #isTerminating()
+     */
     public boolean isTerminated() {
         return runState == TERMINATED;
     }
 
+    /**
+     * Method that can be called after {@link #shutdown()} or {@link #shutdownNow()} to wait until all connections in use at the
+     * time those methods were called have been closed normally. This method accepts a maximum time duration, after which it will
+     * return even if all connections have not been closed.
+     * 
+     * @param timeout the maximum time to wait for all connections to be closed and returned to the pool
+     * @param unit the time unit for <code>timeout</code>
+     * @return true if the pool was terminated in the supplied time (or was already terminated), or false if the timeout occurred
+     * before all the connections were closed
+     * @throws InterruptedException if the thread was interrupted
+     */
     public boolean awaitTermination( long timeout, TimeUnit unit ) throws InterruptedException {
         long nanos = unit.toNanos(timeout);
         final ReentrantLock mainLock = this.mainLock;
@@ -645,14 +733,14 @@
     }
 
     /**
-     * Method invoked when the Executor has terminated. Default implementation does nothing. Note: To properly nest multiple
+     * Method invoked when the pool has terminated. Default implementation does nothing. Note: To properly nest multiple
      * overridings, subclasses should generally invoke <tt>super.terminated</tt> within this method.
      */
     protected void terminated() {
     }
 
     /**
-     * Invokes <tt>shutdown</tt> when this executor is no longer referenced.
+     * Invokes <tt>shutdown</tt> when this pool is no longer referenced.
      */
     @Override
     protected void finalize() {
@@ -743,6 +831,7 @@
 
     /**
      * This method is automatically called by the {@link ConnectionWrapper} when it is {@link ConnectionWrapper#close() closed}.
+     * 
      * @param wrapper the wrapper to the connection that is being returned to the pool
      */
     protected void returnConnection( ConnectionWrapper wrapper ) {
@@ -786,6 +875,7 @@
 
     /**
      * Validate the supplied connection, returning the connection if valid or null if the connection is not valid.
+     * 
      * @param connection the connection to be validated; may not be null
      * @return the validated connection, or null if the connection did not validate and was removed from the pool
      */
@@ -814,6 +904,7 @@
      * connection would violate the {@link #maximumPoolSize maximum pool size} nor does it add the new connection to the
      * {@link #availableConnections available connections} (as the caller may want it immediately), but it does increment the
      * {@link #poolSize pool size}.
+     * 
      * @return the connection wrapper with a new connection
      * @throws RepositorySourceException if there was an error obtaining the new connection
      * @throws InterruptedException if the thread was interrupted during the operation
@@ -829,6 +920,7 @@
     /**
      * Close a connection that is in the pool but no longer in the {@link #availableConnections available connections}. This
      * method does decrement the {@link #poolSize pool size}.
+     * 
      * @param wrapper the wrapper for the connection to be closed
      * @throws InterruptedException if the thread was interrupted during the operation
      */
@@ -957,6 +1049,14 @@
         /**
          * {@inheritDoc}
          */
+        public CachePolicy getDefaultCachePolicy() {
+            if (closed) throw new IllegalStateException(SpiI18n.closedConnectionMayNotBeUsed.text());
+            return this.original.getDefaultCachePolicy();
+        }
+
+        /**
+         * {@inheritDoc}
+         */
         public void execute( ExecutionEnvironment env, GraphCommand... commands ) throws RepositorySourceException, InterruptedException {
             if (closed) throw new IllegalStateException(SpiI18n.closedConnectionMayNotBeUsed.text());
             this.original.execute(env, commands);

Modified: trunk/dna-spi/src/main/java/org/jboss/dna/spi/graph/connection/RepositorySource.java
===================================================================
--- trunk/dna-spi/src/main/java/org/jboss/dna/spi/graph/connection/RepositorySource.java	2008-06-06 21:18:50 UTC (rev 243)
+++ trunk/dna-spi/src/main/java/org/jboss/dna/spi/graph/connection/RepositorySource.java	2008-06-06 21:19:46 UTC (rev 244)
@@ -23,7 +23,6 @@
 
 import java.io.Serializable;
 import javax.naming.Referenceable;
-import org.jboss.dna.spi.cache.CachePolicy;
 
 /**
  * A repository source is a description of a resource that can be used to access or store repository information. This class
@@ -39,6 +38,7 @@
  * {@link Referenceable} and {@link Serializable} so that such objects can be stored in any JNDI naming context and enable proper
  * system recovery,
  * </p>
+ * 
  * @author Randall Hauch
  */
 public interface RepositorySource extends RepositoryConnectionFactory, Referenceable, Serializable {
@@ -47,6 +47,7 @@
      * Get the maximum number of retries that may be performed on a given operation when using
      * {@link #getConnection() connections} created by this source. This value does not constitute a minimum number of retries; in
      * fact, the connection user is not required to retry any operations.
+     * 
      * @return the maximum number of allowable retries, or 0 if the source has no limit
      */
     int getRetryLimit();
@@ -55,14 +56,9 @@
      * Set the maximum number of retries that may be performed on a given operation when using
      * {@link #getConnection() connections} created by this source. This value does not constitute a minimum number of retries; in
      * fact, the connection user is not required to retry any operations.
+     * 
      * @param limit the maximum number of allowable retries, or 0 if the source has no limit
      */
     void setRetryLimit( int limit );
 
-    /**
-     * Get the default cache policy for this source. If none is provided, a global cache policy will be used.
-     * @return the default cache policy
-     */
-    CachePolicy getDefaultCachePolicy();
-
 }

Modified: trunk/dna-spi/src/main/java/org/jboss/dna/spi/graph/connection/RepositorySourceException.java
===================================================================
--- trunk/dna-spi/src/main/java/org/jboss/dna/spi/graph/connection/RepositorySourceException.java	2008-06-06 21:18:50 UTC (rev 243)
+++ trunk/dna-spi/src/main/java/org/jboss/dna/spi/graph/connection/RepositorySourceException.java	2008-06-06 21:19:46 UTC (rev 244)
@@ -70,4 +70,12 @@
         return this.sourceName;
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public String toString() {
+        return super.toString();
+    }
+
 }

Modified: trunk/dna-spi/src/test/java/org/jboss/dna/spi/graph/connection/MockRepositorySource.java
===================================================================
--- trunk/dna-spi/src/test/java/org/jboss/dna/spi/graph/connection/MockRepositorySource.java	2008-06-06 21:18:50 UTC (rev 243)
+++ trunk/dna-spi/src/test/java/org/jboss/dna/spi/graph/connection/MockRepositorySource.java	2008-06-06 21:19:46 UTC (rev 244)
@@ -75,9 +75,6 @@
         this.retryLimit.set(limit);
     }
 
-    /**
-     * {@inheritDoc}
-     */
     public CachePolicy getDefaultCachePolicy() {
         return defaultCachePolicy;
     }
@@ -170,6 +167,13 @@
         /**
          * {@inheritDoc}
          */
+        public CachePolicy getDefaultCachePolicy() {
+            return MockRepositorySource.this.getDefaultCachePolicy();
+        }
+
+        /**
+         * {@inheritDoc}
+         */
         public XAResource getXAResource() {
             return this.xaResource.get();
         }




More information about the dna-commits mailing list