[dna-commits] DNA SVN: r587 - in trunk: dna-graph/src/main/java/org/jboss/dna/graph/connectors and 4 other directories.

dna-commits at lists.jboss.org dna-commits at lists.jboss.org
Fri Oct 24 18:13:16 EDT 2008


Author: jverhaeg at redhat.com
Date: 2008-10-24 18:13:16 -0400 (Fri, 24 Oct 2008)
New Revision: 587

Modified:
   trunk/dna-graph/src/main/java/org/jboss/dna/graph/ExecutionContext.java
   trunk/dna-graph/src/main/java/org/jboss/dna/graph/ExecutionContexts.java
   trunk/dna-graph/src/main/java/org/jboss/dna/graph/connectors/BasicExecutionContext.java
   trunk/dna-graph/src/main/java/org/jboss/dna/graph/util/GraphImporter.java
   trunk/dna-graph/src/test/java/org/jboss/dna/graph/sequencers/MockSequencerContext.java
   trunk/dna-repository/src/main/java/org/jboss/dna/repository/sequencers/SequencerNodeContext.java
   trunk/dna-repository/src/main/java/org/jboss/dna/repository/sequencers/SequencingService.java
   trunk/dna-repository/src/main/java/org/jboss/dna/repository/util/BasicJcrExecutionContext.java
Log:
DNA_241: Made a thread-safe progress monitor accessible from execution contexts.

Modified: trunk/dna-graph/src/main/java/org/jboss/dna/graph/ExecutionContext.java
===================================================================
--- trunk/dna-graph/src/main/java/org/jboss/dna/graph/ExecutionContext.java	2008-10-24 21:38:30 UTC (rev 586)
+++ trunk/dna-graph/src/main/java/org/jboss/dna/graph/ExecutionContext.java	2008-10-24 22:13:16 UTC (rev 587)
@@ -25,6 +25,7 @@
 import javax.security.auth.Subject;
 import javax.security.auth.login.LoginContext;
 import org.jboss.dna.common.component.ClassLoaderFactory;
+import org.jboss.dna.common.monitor.ProgressMonitor;
 import org.jboss.dna.common.util.Logger;
 import org.jboss.dna.graph.properties.NamespaceRegistry;
 import org.jboss.dna.graph.properties.Property;
@@ -49,57 +50,64 @@
     AccessControlContext getAccessControlContext();
 
     /**
-     * @return the login context; may be <code>null</code>
+     * Return a logger associated with this context. This logger records only those activities within the context and provide a
+     * way to capture the context-specific activities. All log messages are also sent to the system logger, so classes that log
+     * via this mechanism should <i>not</i> also {@link Logger#getLogger(Class) obtain a system logger}.
+     * 
+     * @param clazz the class that is doing the logging
+     * @return the logger, named after <code>clazz</code>; never null
+     * @see #getLogger(String)
      */
-    LoginContext getLoginContext();
+    Logger getLogger( Class<?> clazz );
 
     /**
-     * Get the factories that should be used to create values for {@link Property properties}.
+     * Return a logger associated with this context. This logger records only those activities within the context and provide a
+     * way to capture the context-specific activities. All log messages are also sent to the system logger, so classes that log
+     * via this mechanism should <i>not</i> also {@link Logger#getLogger(Class) obtain a system logger}.
      * 
-     * @return the property value factory; never null
+     * @param name the name for the logger
+     * @return the logger, named after <code>clazz</code>; never null
+     * @see #getLogger(Class)
      */
-    ValueFactories getValueFactories();
+    Logger getLogger( String name );
 
     /**
+     * @return the login context; may be <code>null</code>
+     */
+    LoginContext getLoginContext();
+
+    /**
      * Get the namespace registry for this context.
      * 
-     * @return the namespace registry; never null
+     * @return the namespace registry; never <code>null</code>
      */
     NamespaceRegistry getNamespaceRegistry();
 
     /**
+     * Returns the thread-safe progress monitor associated with this execution context.
+     * 
+     * @return the progress monitor; never <code>null</code>;
+     */
+    ProgressMonitor getProgressMonitor();
+
+    /**
      * Get the factory for creating {@link Property} objects.
      * 
-     * @return the property factory; never null
+     * @return the property factory; never <code>null</code>
      */
     PropertyFactory getPropertyFactory();
 
     /**
      * Get the JAAS subject for which this context was created.
      * 
-     * @return the subject; never null
+     * @return the subject; never <code>null</code>
      */
     Subject getSubject();
 
     /**
-     * Return a logger associated with this context. This logger records only those activities within the context and provide a
-     * way to capture the context-specific activities. All log messages are also sent to the system logger, so classes that log
-     * via this mechanism should <i>not</i> also {@link Logger#getLogger(Class) obtain a system logger}.
+     * Get the factories that should be used to create values for {@link Property properties}.
      * 
-     * @param clazz the class that is doing the logging
-     * @return the logger, named after <code>clazz</code>; never null
-     * @see #getLogger(String)
+     * @return the property value factory; never null
      */
-    Logger getLogger( Class<?> clazz );
-
-    /**
-     * Return a logger associated with this context. This logger records only those activities within the context and provide a
-     * way to capture the context-specific activities. All log messages are also sent to the system logger, so classes that log
-     * via this mechanism should <i>not</i> also {@link Logger#getLogger(Class) obtain a system logger}.
-     * 
-     * @param name the name for the logger
-     * @return the logger, named after <code>clazz</code>; never null
-     * @see #getLogger(Class)
-     */
-    Logger getLogger( String name );
+    ValueFactories getValueFactories();
 }

Modified: trunk/dna-graph/src/main/java/org/jboss/dna/graph/ExecutionContexts.java
===================================================================
--- trunk/dna-graph/src/main/java/org/jboss/dna/graph/ExecutionContexts.java	2008-10-24 21:38:30 UTC (rev 586)
+++ trunk/dna-graph/src/main/java/org/jboss/dna/graph/ExecutionContexts.java	2008-10-24 22:13:16 UTC (rev 587)
@@ -24,6 +24,7 @@
 import java.security.AccessControlContext;
 import javax.security.auth.Subject;
 import javax.security.auth.login.LoginContext;
+import org.jboss.dna.common.monitor.ProgressMonitor;
 import org.jboss.dna.common.util.CheckArg;
 import org.jboss.dna.common.util.Logger;
 import org.jboss.dna.graph.properties.NameFactory;
@@ -187,6 +188,15 @@
         /**
          * {@inheritDoc}
          * 
+         * @see org.jboss.dna.graph.ExecutionContext#getProgressMonitor()
+         */
+        public ProgressMonitor getProgressMonitor() {
+            return delegate.getProgressMonitor();
+        }
+
+        /**
+         * {@inheritDoc}
+         * 
          * @see org.jboss.dna.graph.ExecutionContext#getPropertyFactory()
          */
         public PropertyFactory getPropertyFactory() {

Modified: trunk/dna-graph/src/main/java/org/jboss/dna/graph/connectors/BasicExecutionContext.java
===================================================================
--- trunk/dna-graph/src/main/java/org/jboss/dna/graph/connectors/BasicExecutionContext.java	2008-10-24 21:38:30 UTC (rev 586)
+++ trunk/dna-graph/src/main/java/org/jboss/dna/graph/connectors/BasicExecutionContext.java	2008-10-24 22:13:16 UTC (rev 587)
@@ -27,7 +27,8 @@
 import javax.security.auth.login.LoginContext;
 import org.jboss.dna.common.component.ClassLoaderFactory;
 import org.jboss.dna.common.component.StandardClassLoaderFactory;
-import org.jboss.dna.common.util.CheckArg;
+import org.jboss.dna.common.monitor.ProgressMonitor;
+import org.jboss.dna.common.monitor.SimpleProgressMonitor;
 import org.jboss.dna.common.util.Logger;
 import org.jboss.dna.graph.ExecutionContext;
 import org.jboss.dna.graph.properties.NamespaceRegistry;
@@ -50,59 +51,52 @@
     private final PropertyFactory propertyFactory;
     private final ValueFactories valueFactories;
     private final NamespaceRegistry namespaceRegistry;
+    private final ProgressMonitor progressMonitor;
 
     public BasicExecutionContext() {
-        this(new BasicNamespaceRegistry());
+        this(null, null, null, null, null, null);
     }
 
-    public BasicExecutionContext( NamespaceRegistry namespaceRegistry ) {
-        this(namespaceRegistry, null, null);
-    }
-
     public BasicExecutionContext( LoginContext loginContext ) {
-        this(loginContext, new BasicNamespaceRegistry());
+        this(loginContext, null, null, null, null, null);
     }
 
     public BasicExecutionContext( AccessControlContext accessControlContext ) {
-        this(accessControlContext, new BasicNamespaceRegistry());
+        this(null, accessControlContext, null, null, null, null);
     }
 
-    public BasicExecutionContext( LoginContext loginContext,
-                                  NamespaceRegistry namespaceRegistry ) {
-        this(loginContext, namespaceRegistry, null, null);
-    }
-
-    public BasicExecutionContext( AccessControlContext accessControlContext,
-                                  NamespaceRegistry namespaceRegistry ) {
-        this(accessControlContext, namespaceRegistry, null, null);
-    }
-
     public BasicExecutionContext( NamespaceRegistry namespaceRegistry,
                                   ValueFactories valueFactories,
-                                  PropertyFactory propertyFactory ) {
-        this(null, null, namespaceRegistry, valueFactories, propertyFactory);
+                                  PropertyFactory propertyFactory,
+                                  ProgressMonitor progressMonitor ) {
+        this(null, null, namespaceRegistry, valueFactories, propertyFactory, progressMonitor);
     }
 
     public BasicExecutionContext( LoginContext loginContext,
                                   NamespaceRegistry namespaceRegistry,
                                   ValueFactories valueFactories,
-                                  PropertyFactory propertyFactory ) {
-        this(loginContext, null, namespaceRegistry, valueFactories, propertyFactory);
+                                  PropertyFactory propertyFactory,
+                                  ProgressMonitor progressMonitor ) {
+        this(loginContext, null, namespaceRegistry, valueFactories, propertyFactory, progressMonitor);
     }
 
     public BasicExecutionContext( AccessControlContext accessControlContext,
                                   NamespaceRegistry namespaceRegistry,
                                   ValueFactories valueFactories,
-                                  PropertyFactory propertyFactory ) {
-        this(null, accessControlContext, namespaceRegistry, valueFactories, propertyFactory);
+                                  PropertyFactory propertyFactory,
+                                  ProgressMonitor progressMonitor ) {
+        this(null, accessControlContext, namespaceRegistry, valueFactories, propertyFactory, progressMonitor);
     }
 
+    /*
+     * This constructor exists to deal with mutually-exclusive parameters, such as LoginContext and AccessControlContext.
+     */
     private BasicExecutionContext( LoginContext loginContext,
                                    AccessControlContext accessControlContext,
                                    NamespaceRegistry namespaceRegistry,
                                    ValueFactories valueFactories,
-                                   PropertyFactory propertyFactory ) {
-        CheckArg.isNotNull(namespaceRegistry, "namespaceRegistry");
+                                   PropertyFactory propertyFactory,
+                                   ProgressMonitor progressMonitor ) {
         this.loginContext = loginContext;
         this.accessControlContext = accessControlContext;
         if (loginContext == null) {
@@ -110,9 +104,10 @@
         } else {
             this.subject = loginContext.getSubject();
         }
-        this.namespaceRegistry = namespaceRegistry;
-        this.valueFactories = valueFactories != null ? valueFactories : new StandardValueFactories(this.namespaceRegistry);
-        this.propertyFactory = propertyFactory != null ? propertyFactory : new BasicPropertyFactory(this.valueFactories);
+        this.namespaceRegistry = namespaceRegistry == null ? new BasicNamespaceRegistry() : namespaceRegistry;
+        this.valueFactories = valueFactories == null ? new StandardValueFactories(this.namespaceRegistry) : valueFactories;
+        this.propertyFactory = propertyFactory == null ? new BasicPropertyFactory(this.valueFactories) : propertyFactory;
+        this.progressMonitor = progressMonitor == null ? new SimpleProgressMonitor(null) : progressMonitor;
         this.classLoaderFactory = new StandardClassLoaderFactory();
     }
 
@@ -152,7 +147,16 @@
 
     /**
      * {@inheritDoc}
+     * 
+     * @see org.jboss.dna.graph.ExecutionContext#getProgressMonitor()
      */
+    public ProgressMonitor getProgressMonitor() {
+        return progressMonitor;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
     public PropertyFactory getPropertyFactory() {
         return propertyFactory;
     }

Modified: trunk/dna-graph/src/main/java/org/jboss/dna/graph/util/GraphImporter.java
===================================================================
--- trunk/dna-graph/src/main/java/org/jboss/dna/graph/util/GraphImporter.java	2008-10-24 21:38:30 UTC (rev 586)
+++ trunk/dna-graph/src/main/java/org/jboss/dna/graph/util/GraphImporter.java	2008-10-24 22:13:16 UTC (rev 587)
@@ -404,6 +404,15 @@
         /**
          * {@inheritDoc}
          * 
+         * @see org.jboss.dna.graph.ExecutionContext#getProgressMonitor()
+         */
+        public ProgressMonitor getProgressMonitor() {
+            return getContext().getProgressMonitor();
+        }
+
+        /**
+         * {@inheritDoc}
+         * 
          * @see org.jboss.dna.graph.ExecutionContext#getPropertyFactory()
          */
         public PropertyFactory getPropertyFactory() {

Modified: trunk/dna-graph/src/test/java/org/jboss/dna/graph/sequencers/MockSequencerContext.java
===================================================================
--- trunk/dna-graph/src/test/java/org/jboss/dna/graph/sequencers/MockSequencerContext.java	2008-10-24 21:38:30 UTC (rev 586)
+++ trunk/dna-graph/src/test/java/org/jboss/dna/graph/sequencers/MockSequencerContext.java	2008-10-24 22:13:16 UTC (rev 587)
@@ -26,6 +26,7 @@
 import javax.security.auth.Subject;
 import javax.security.auth.login.LoginContext;
 import net.jcip.annotations.Immutable;
+import org.jboss.dna.common.monitor.ProgressMonitor;
 import org.jboss.dna.common.util.Logger;
 import org.jboss.dna.graph.DnaLexicon;
 import org.jboss.dna.graph.properties.Name;
@@ -149,6 +150,15 @@
     /**
      * {@inheritDoc}
      * 
+     * @see org.jboss.dna.graph.ExecutionContext#getProgressMonitor()
+     */
+    public ProgressMonitor getProgressMonitor() {
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
      * @see org.jboss.dna.graph.ExecutionContext#getPropertyFactory()
      */
     public PropertyFactory getPropertyFactory() {

Modified: trunk/dna-repository/src/main/java/org/jboss/dna/repository/sequencers/SequencerNodeContext.java
===================================================================
--- trunk/dna-repository/src/main/java/org/jboss/dna/repository/sequencers/SequencerNodeContext.java	2008-10-24 21:38:30 UTC (rev 586)
+++ trunk/dna-repository/src/main/java/org/jboss/dna/repository/sequencers/SequencerNodeContext.java	2008-10-24 22:13:16 UTC (rev 587)
@@ -35,6 +35,7 @@
 import javax.security.auth.Subject;
 import javax.security.auth.login.LoginContext;
 import net.jcip.annotations.Immutable;
+import org.jboss.dna.common.monitor.ProgressMonitor;
 import org.jboss.dna.common.util.CheckArg;
 import org.jboss.dna.common.util.Logger;
 import org.jboss.dna.graph.properties.Name;
@@ -263,6 +264,15 @@
     /**
      * {@inheritDoc}
      * 
+     * @see org.jboss.dna.graph.ExecutionContext#getProgressMonitor()
+     */
+    public ProgressMonitor getProgressMonitor() {
+        return context.getProgressMonitor();
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
      * @see org.jboss.dna.graph.ExecutionContext#getPropertyFactory()
      */
     public PropertyFactory getPropertyFactory() {

Modified: trunk/dna-repository/src/main/java/org/jboss/dna/repository/sequencers/SequencingService.java
===================================================================
--- trunk/dna-repository/src/main/java/org/jboss/dna/repository/sequencers/SequencingService.java	2008-10-24 21:38:30 UTC (rev 586)
+++ trunk/dna-repository/src/main/java/org/jboss/dna/repository/sequencers/SequencingService.java	2008-10-24 22:13:16 UTC (rev 587)
@@ -72,6 +72,7 @@
  * content to extract or to generate structured information.
  * 
  * @author Randall Hauch
+ * @author John Verhaeg
  */
 public class SequencingService implements AdministeredService, NodeChangeListener {
 
@@ -640,7 +641,16 @@
 
         /**
          * {@inheritDoc}
+         * 
+         * @see org.jboss.dna.graph.ExecutionContext#getProgressMonitor()
          */
+        public ProgressMonitor getProgressMonitor() {
+            return delegate.getProgressMonitor();
+        }
+
+        /**
+         * {@inheritDoc}
+         */
         public PropertyFactory getPropertyFactory() {
             return this.delegate.getPropertyFactory();
         }

Modified: trunk/dna-repository/src/main/java/org/jboss/dna/repository/util/BasicJcrExecutionContext.java
===================================================================
--- trunk/dna-repository/src/main/java/org/jboss/dna/repository/util/BasicJcrExecutionContext.java	2008-10-24 21:38:30 UTC (rev 586)
+++ trunk/dna-repository/src/main/java/org/jboss/dna/repository/util/BasicJcrExecutionContext.java	2008-10-24 22:13:16 UTC (rev 587)
@@ -29,6 +29,7 @@
 
 /**
  * @author Randall Hauch
+ * @author John Verhaeg
  */
 public class BasicJcrExecutionContext extends BasicExecutionContext implements JcrExecutionContext {
 
@@ -36,20 +37,20 @@
     private final SessionFactory sessionFactory;
 
     public BasicJcrExecutionContext( SessionFactory sessionFactory,
-                                   String repositoryWorkspaceForNamespaceRegistry ) {
+                                     String repositoryWorkspaceForNamespaceRegistry ) {
         this(sessionFactory, new JcrNamespaceRegistry(sessionFactory, repositoryWorkspaceForNamespaceRegistry), null, null);
     }
 
     public BasicJcrExecutionContext( SessionFactory sessionFactory,
-                                   NamespaceRegistry namespaceRegistry ) {
+                                     NamespaceRegistry namespaceRegistry ) {
         this(sessionFactory, namespaceRegistry, null, null);
     }
 
     public BasicJcrExecutionContext( SessionFactory sessionFactory,
-                                   NamespaceRegistry namespaceRegistry,
-                                   ValueFactories valueFactories,
-                                   PropertyFactory propertyFactory ) {
-        super(namespaceRegistry, valueFactories, propertyFactory);
+                                     NamespaceRegistry namespaceRegistry,
+                                     ValueFactories valueFactories,
+                                     PropertyFactory propertyFactory ) {
+        super(namespaceRegistry, valueFactories, propertyFactory, null);
         CheckArg.isNotNull(sessionFactory, "session factory");
         this.sessionFactory = sessionFactory;
     }




More information about the dna-commits mailing list