Author: jverhaeg(a)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;
}