Author: rhauch
Date: 2009-05-21 12:44:06 -0400 (Thu, 21 May 2009)
New Revision: 917
Modified:
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/federation/FederatedRepositoryConnection.java
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/federation/FederatedRepositorySource.java
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/federation/ForkRequestProcessor.java
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/federation/JoinMirrorRequestProcessor.java
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/federation/JoinRequestProcessor.java
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/inmemory/InMemoryRepositoryConnection.java
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/inmemory/InMemoryRequestProcessor.java
trunk/dna-graph/src/main/java/org/jboss/dna/graph/observe/Changes.java
trunk/dna-graph/src/main/java/org/jboss/dna/graph/request/CloneWorkspaceRequest.java
trunk/dna-graph/src/main/java/org/jboss/dna/graph/request/CreateWorkspaceRequest.java
trunk/dna-graph/src/main/java/org/jboss/dna/graph/request/DestroyWorkspaceRequest.java
trunk/dna-graph/src/main/java/org/jboss/dna/graph/request/processor/LoggingRequestProcessor.java
trunk/dna-graph/src/main/java/org/jboss/dna/graph/request/processor/RequestProcessor.java
trunk/dna-graph/src/test/java/org/jboss/dna/graph/GraphTest.java
trunk/dna-graph/src/test/java/org/jboss/dna/graph/connector/MockRepositoryRequestProcessor.java
trunk/dna-graph/src/test/java/org/jboss/dna/graph/connector/federation/FederatedRepositoryConnectionTest.java
trunk/dna-graph/src/test/java/org/jboss/dna/graph/connector/federation/JoinRequestProcessorTest.java
trunk/extensions/dna-connector-federation/src/main/java/org/jboss/dna/connector/federation/FederatingRequestProcessor.java
trunk/extensions/dna-connector-filesystem/src/main/java/org/jboss/dna/connector/filesystem/FileSystemRequestProcessor.java
trunk/extensions/dna-connector-jbosscache/src/main/java/org/jboss/dna/connector/jbosscache/JBossCacheConnection.java
trunk/extensions/dna-connector-jbosscache/src/main/java/org/jboss/dna/connector/jbosscache/JBossCacheRequestProcessor.java
trunk/extensions/dna-connector-jbosscache/src/main/java/org/jboss/dna/connector/jbosscache/JBossCacheSource.java
trunk/extensions/dna-connector-jbosscache/src/test/java/org/jboss/dna/connector/jbosscache/JBossCacheRequestProcessorTest.java
trunk/extensions/dna-connector-jdbc-metadata/src/main/java/org/jboss/dna/connector/jdbc/JdbcRequestProcesor.java
trunk/extensions/dna-connector-store-jpa/src/main/java/org/jboss/dna/connector/store/jpa/JpaConnection.java
trunk/extensions/dna-connector-store-jpa/src/main/java/org/jboss/dna/connector/store/jpa/JpaSource.java
trunk/extensions/dna-connector-store-jpa/src/main/java/org/jboss/dna/connector/store/jpa/Model.java
trunk/extensions/dna-connector-store-jpa/src/main/java/org/jboss/dna/connector/store/jpa/model/basic/BasicModel.java
trunk/extensions/dna-connector-store-jpa/src/main/java/org/jboss/dna/connector/store/jpa/model/basic/BasicRequestProcessor.java
trunk/extensions/dna-connector-store-jpa/src/test/java/org/jboss/dna/connector/store/jpa/ModelTest.java
trunk/extensions/dna-connector-store-jpa/src/test/java/org/jboss/dna/connector/store/jpa/model/basic/BasicModelTest.java
trunk/extensions/dna-connector-svn/src/main/java/org/jboss/dna/connector/svn/SVNRepositoryRequestProcessor.java
Log:
DNA-252 Complete support for events to the connector framework
Changed the connectors to publish their change requests as events, if the
RepositoryContext provides an Observer reference.
Modified:
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/federation/FederatedRepositoryConnection.java
===================================================================
---
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/federation/FederatedRepositoryConnection.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/federation/FederatedRepositoryConnection.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -37,6 +37,7 @@
import org.jboss.dna.graph.cache.CachePolicy;
import org.jboss.dna.graph.connector.RepositoryConnection;
import org.jboss.dna.graph.connector.RepositorySourceException;
+import org.jboss.dna.graph.observe.Observer;
import org.jboss.dna.graph.property.DateTime;
import org.jboss.dna.graph.request.CompositeRequest;
import org.jboss.dna.graph.request.Request;
@@ -76,11 +77,14 @@
private final FederatedRepository repository;
private final Stopwatch stopwatch;
private final Logger logger;
+ private final Observer observer;
- FederatedRepositoryConnection( FederatedRepository repository ) {
+ FederatedRepositoryConnection( FederatedRepository repository,
+ Observer observer ) {
this.repository = repository;
this.logger = Logger.getLogger(getClass());
this.stopwatch = logger.isTraceEnabled() ? new Stopwatch() : null;
+ this.observer = observer;
}
/**
@@ -208,7 +212,7 @@
//
----------------------------------------------------------------------------------------------------
// Step 2: Join the results of the source-specific (forked) requests back
into the submitted requests
//
----------------------------------------------------------------------------------------------------
- JoinRequestProcessor join = new JoinRequestProcessor(repository, context,
nowInUtc);
+ JoinRequestProcessor join = new JoinRequestProcessor(repository, context,
observer, nowInUtc);
try {
if (awaitAllSubtasks) {
join.process(requests);
Modified:
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/federation/FederatedRepositorySource.java
===================================================================
---
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/federation/FederatedRepositorySource.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/federation/FederatedRepositorySource.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -57,6 +57,7 @@
import org.jboss.dna.graph.connector.RepositorySource;
import org.jboss.dna.graph.connector.RepositorySourceCapabilities;
import org.jboss.dna.graph.connector.RepositorySourceException;
+import org.jboss.dna.graph.observe.Observer;
import org.jboss.dna.graph.property.NamespaceRegistry;
import org.jboss.dna.graph.property.Path;
import org.jboss.dna.graph.property.Property;
@@ -309,7 +310,8 @@
config = this.configuration;
}
}
- return new FederatedRepositoryConnection(config);
+ Observer observer = this.context != null ? this.context.getObserver() : null;
+ return new FederatedRepositoryConnection(config, observer);
}
/**
Modified:
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/federation/ForkRequestProcessor.java
===================================================================
---
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/federation/ForkRequestProcessor.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/federation/ForkRequestProcessor.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -497,7 +497,7 @@
ExecutionContext context,
DateTime now,
Queue<FederatedRequest> federatedRequestQueue ) {
- super(repository.getSourceName(), context, now);
+ super(repository.getSourceName(), context, null, now);
this.repository = repository;
this.executor = this.repository.getExecutor();
this.connectionFactory = this.repository.getConnectionFactory();
Modified:
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/federation/JoinMirrorRequestProcessor.java
===================================================================
---
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/federation/JoinMirrorRequestProcessor.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/federation/JoinMirrorRequestProcessor.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -28,6 +28,7 @@
import org.jboss.dna.graph.ExecutionContext;
import org.jboss.dna.graph.Location;
import org.jboss.dna.graph.cache.CachePolicy;
+import org.jboss.dna.graph.observe.Observer;
import org.jboss.dna.graph.property.DateTime;
import org.jboss.dna.graph.property.Name;
import org.jboss.dna.graph.property.Property;
@@ -67,9 +68,10 @@
JoinMirrorRequestProcessor( String sourceName,
ExecutionContext context,
+ Observer observer,
DateTime now,
CachePolicy defaultCachePolicy ) {
- super(sourceName, context, now, defaultCachePolicy);
+ super(sourceName, context, observer, now, defaultCachePolicy);
}
@@ -171,7 +173,8 @@
*/
@Override
public void process( ReadNextBlockOfChildrenRequest request ) {
- ReadNextBlockOfChildrenRequest source =
(ReadNextBlockOfChildrenRequest)federatedRequest.getFirstProjectedRequest().getRequest();
+ ReadNextBlockOfChildrenRequest source =
(ReadNextBlockOfChildrenRequest)federatedRequest.getFirstProjectedRequest()
+
.getRequest();
if (checkErrorOrCancel(request, source)) return;
request.setActualLocationOfStartingAfterNode(source.getActualLocationOfStartingAfterNode());
for (Location childInSource : source.getChildren()) {
Modified:
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/federation/JoinRequestProcessor.java
===================================================================
---
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/federation/JoinRequestProcessor.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/federation/JoinRequestProcessor.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -35,6 +35,7 @@
import org.jboss.dna.graph.GraphI18n;
import org.jboss.dna.graph.Location;
import org.jboss.dna.graph.connector.federation.FederatedRequest.ProjectedRequest;
+import org.jboss.dna.graph.observe.Observer;
import org.jboss.dna.graph.property.DateTime;
import org.jboss.dna.graph.property.Name;
import org.jboss.dna.graph.property.Path;
@@ -81,16 +82,18 @@
*
* @param repository the federated repository configuration; never null
* @param context the execution context in which this processor is executing; may not
be null
+ * @param observer the observer for change events; may be null
* @param now the timestamp representing the current time in UTC; may not be null
*/
public JoinRequestProcessor( FederatedRepository repository,
ExecutionContext context,
+ Observer observer,
DateTime now ) {
- super(repository.getSourceName(), context, now,
repository.getDefaultCachePolicy());
+ super(repository.getSourceName(), context, observer, now,
repository.getDefaultCachePolicy());
// this.repository = repository;
this.propertyFactory = context.getPropertyFactory();
this.pathFactory = context.getValueFactories().getPathFactory();
- this.mirrorProcessor = new JoinMirrorRequestProcessor(repository.getSourceName(),
context, now,
+ this.mirrorProcessor = new JoinMirrorRequestProcessor(repository.getSourceName(),
context, observer, now,
repository.getDefaultCachePolicy());
}
Modified:
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/inmemory/InMemoryRepositoryConnection.java
===================================================================
---
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/inmemory/InMemoryRepositoryConnection.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/inmemory/InMemoryRepositoryConnection.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -102,7 +102,7 @@
sw.start();
}
// Do any commands update/write?
- RequestProcessor processor = new InMemoryRequestProcessor(context,
this.repository);
+ RequestProcessor processor = new InMemoryRequestProcessor(context,
this.repository, this.source.getRepositoryContext());
Lock lock = request.isReadOnly() ? repository.getLock().readLock() :
repository.getLock().writeLock();
lock.lock();
Modified:
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/inmemory/InMemoryRequestProcessor.java
===================================================================
---
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/inmemory/InMemoryRequestProcessor.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/inmemory/InMemoryRequestProcessor.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -37,6 +37,7 @@
import org.jboss.dna.graph.GraphI18n;
import org.jboss.dna.graph.JcrLexicon;
import org.jboss.dna.graph.Location;
+import org.jboss.dna.graph.connector.RepositoryContext;
import org.jboss.dna.graph.property.Name;
import org.jboss.dna.graph.property.Path;
import org.jboss.dna.graph.property.PathFactory;
@@ -70,8 +71,9 @@
private final InMemoryRepository repository;
protected InMemoryRequestProcessor( ExecutionContext context,
- InMemoryRepository repository ) {
- super(repository.getSourceName(), context);
+ InMemoryRepository repository,
+ RepositoryContext repositoryContext ) {
+ super(repository.getSourceName(), context, repositoryContext != null ?
repositoryContext.getObserver() : null);
this.repository = repository;
pathFactory = context.getValueFactories().getPathFactory();
propertyFactory = context.getPropertyFactory();
@@ -133,6 +135,7 @@
Location oldLocation = getActualLocation(request.from().getPath(), node);
Location newLocation = Location.create(newPath, newNode.getUuid());
request.setActualLocations(oldLocation, newLocation);
+ record(request);
}
@Override
@@ -149,6 +152,7 @@
Path lowestExisting = workspace.getLowestExistingPath(parent);
request.setError(new PathNotFoundException(request.under(), lowestExisting,
GraphI18n.inMemoryNodeDoesNotExist.text(parent)));
+ return;
}
UUID uuid = null;
for (Property property : request.properties()) {
@@ -193,6 +197,7 @@
}
Location actualLocation = getActualLocation(path, node);
request.setActualLocationOfNode(actualLocation);
+ record(request);
}
@Override
@@ -204,6 +209,7 @@
workspace.removeNode(getExecutionContext(), node);
Location actualLocation = getActualLocation(request.at().getPath(), node);
request.setActualLocationOfNode(actualLocation);
+ record(request);
}
@Override
@@ -222,6 +228,7 @@
Location oldLocation = getActualLocation(request.from().getPath(), node);
Location newLocation = Location.create(newPath, newParent.getUuid());
request.setActualLocations(oldLocation, newLocation);
+ record(request);
}
@Override
@@ -243,6 +250,7 @@
}
Location actualLocation = getActualLocation(request.on().getPath(), node);
request.setActualLocationOfNode(actualLocation);
+ record(request);
}
/**
@@ -263,6 +271,7 @@
InMemoryNode root = workspace.getRoot();
request.setActualRootLocation(Location.create(pathFactory.createRootPath(),
root.getUuid()));
request.setActualWorkspaceName(workspace.getName());
+ record(request);
}
}
@@ -273,7 +282,12 @@
*/
@Override
public void process( DestroyWorkspaceRequest request ) {
- if (!repository.destroyWorkspace(request.workspaceName())) {
+ InMemoryRepository.Workspace workspace =
repository.getWorkspace(getExecutionContext(), request.workspaceName());
+ if (workspace != null) {
+ InMemoryNode root = workspace.getRoot();
+ request.setActualRootLocation(Location.create(pathFactory.createRootPath(),
root.getUuid()));
+ record(request);
+ } else {
String msg =
GraphI18n.workspaceDoesNotExistInRepository.text(request.workspaceName(),
repository.getSourceName());
request.setError(new InvalidWorkspaceException(msg));
}
@@ -353,6 +367,7 @@
InMemoryNode root = target.getRoot();
request.setActualRootLocation(Location.create(pathFactory.createRootPath(),
root.getUuid()));
request.setActualWorkspaceName(target.getName());
+ record(request);
}
}
Modified: trunk/dna-graph/src/main/java/org/jboss/dna/graph/observe/Changes.java
===================================================================
--- trunk/dna-graph/src/main/java/org/jboss/dna/graph/observe/Changes.java 2009-05-20
21:38:18 UTC (rev 916)
+++ trunk/dna-graph/src/main/java/org/jboss/dna/graph/observe/Changes.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -45,6 +45,13 @@
private final DateTime timestamp;
private final List<ChangeRequest> changeRequests;
+ public Changes( Subject subject,
+ String sourceName,
+ DateTime timestamp,
+ List<ChangeRequest> requests ) {
+ this("", subject, sourceName, timestamp, requests);
+ }
+
public Changes( String processId,
Subject subject,
String sourceName,
Modified:
trunk/dna-graph/src/main/java/org/jboss/dna/graph/request/CloneWorkspaceRequest.java
===================================================================
---
trunk/dna-graph/src/main/java/org/jboss/dna/graph/request/CloneWorkspaceRequest.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/dna-graph/src/main/java/org/jboss/dna/graph/request/CloneWorkspaceRequest.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -26,6 +26,7 @@
import org.jboss.dna.common.util.CheckArg;
import org.jboss.dna.common.util.HashCode;
import org.jboss.dna.graph.Location;
+import org.jboss.dna.graph.property.Path;
import org.jboss.dna.graph.request.CreateWorkspaceRequest.CreateConflictBehavior;
/**
@@ -33,7 +34,7 @@
* the {@link #targetConflictBehavior() target conflict behavior} defines the behavior to
be followed. If the workspace being
* cloned does not exist, the {@link #cloneConflictBehavior() clone conflict behavior}
defines the behavior to be followed.
*/
-public final class CloneWorkspaceRequest extends Request {
+public final class CloneWorkspaceRequest extends ChangeRequest {
private static final long serialVersionUID = 1L;
@@ -228,4 +229,25 @@
public String toString() {
return "clone workspace \"" + nameOfWorkspaceToBeCloned() +
"\" as workspace \"" + desiredNameOfTargetWorkspace() +
"\"";
}
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.jboss.dna.graph.request.ChangeRequest#changedLocation()
+ */
+ @Override
+ public Location changedLocation() {
+ return actualLocationOfRoot;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.jboss.dna.graph.request.ChangeRequest#changes(java.lang.String,
org.jboss.dna.graph.property.Path)
+ */
+ @Override
+ public boolean changes( String workspace,
+ Path path ) {
+ return actualWorkspaceName != null &&
actualWorkspaceName.equals(workspace);
+ }
}
Modified:
trunk/dna-graph/src/main/java/org/jboss/dna/graph/request/CreateWorkspaceRequest.java
===================================================================
---
trunk/dna-graph/src/main/java/org/jboss/dna/graph/request/CreateWorkspaceRequest.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/dna-graph/src/main/java/org/jboss/dna/graph/request/CreateWorkspaceRequest.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -25,12 +25,13 @@
import org.jboss.dna.common.util.CheckArg;
import org.jboss.dna.graph.Location;
+import org.jboss.dna.graph.property.Path;
/**
* Request that a new workspace be created with the supplied name. The request also
specifies the desired
* {@link #conflictBehavior() behavior} for the recipient if a workspace already exists
with the name.
*/
-public final class CreateWorkspaceRequest extends Request {
+public final class CreateWorkspaceRequest extends ChangeRequest {
private static final long serialVersionUID = 1L;
@@ -189,4 +190,25 @@
public String toString() {
return "create new workspace \"" + desiredNameOfNewWorkspace() +
"\"";
}
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.jboss.dna.graph.request.ChangeRequest#changedLocation()
+ */
+ @Override
+ public Location changedLocation() {
+ return actualLocationOfRoot;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.jboss.dna.graph.request.ChangeRequest#changes(java.lang.String,
org.jboss.dna.graph.property.Path)
+ */
+ @Override
+ public boolean changes( String workspace,
+ Path path ) {
+ return actualWorkspaceName != null &&
actualWorkspaceName.equals(workspace);
+ }
}
Modified:
trunk/dna-graph/src/main/java/org/jboss/dna/graph/request/DestroyWorkspaceRequest.java
===================================================================
---
trunk/dna-graph/src/main/java/org/jboss/dna/graph/request/DestroyWorkspaceRequest.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/dna-graph/src/main/java/org/jboss/dna/graph/request/DestroyWorkspaceRequest.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -24,15 +24,18 @@
package org.jboss.dna.graph.request;
import org.jboss.dna.common.util.CheckArg;
+import org.jboss.dna.graph.Location;
+import org.jboss.dna.graph.property.Path;
/**
* Request that an existing workspace with the supplied name be destroyed.
*/
-public final class DestroyWorkspaceRequest extends Request {
+public final class DestroyWorkspaceRequest extends ChangeRequest {
private static final long serialVersionUID = 1L;
private final String workspaceName;
+ private Location actualLocationOfRoot;
/**
* Create a request to destroy an existing workspace.
@@ -55,6 +58,26 @@
}
/**
+ * Get the actual location of the root node in the new workspace, or null if the
workspace was not (yet) created.
+ *
+ * @return the actual location of the root node in the new workspace, or null if the
workspace was not (yet) created
+ */
+ public Location getActualLocationOfRoot() {
+ return actualLocationOfRoot;
+ }
+
+ /**
+ * Set the actual location of the root node in the new workspace.
+ *
+ * @param actualLocationOfRoot the actual location of the workspace's root node.
+ * @throws IllegalStateException if the request is frozen
+ */
+ public void setActualRootLocation( Location actualLocationOfRoot ) {
+ checkNotFrozen();
+ this.actualLocationOfRoot = actualLocationOfRoot;
+ }
+
+ /**
* {@inheritDoc}
*
* @see org.jboss.dna.graph.request.Request#isReadOnly()
@@ -99,4 +122,25 @@
public String toString() {
return "destroy workspace \"" + workspaceName() +
"\"";
}
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.jboss.dna.graph.request.ChangeRequest#changedLocation()
+ */
+ @Override
+ public Location changedLocation() {
+ return actualLocationOfRoot;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.jboss.dna.graph.request.ChangeRequest#changes(java.lang.String,
org.jboss.dna.graph.property.Path)
+ */
+ @Override
+ public boolean changes( String workspace,
+ Path path ) {
+ return workspaceName().equals(workspace);
+ }
}
Modified:
trunk/dna-graph/src/main/java/org/jboss/dna/graph/request/processor/LoggingRequestProcessor.java
===================================================================
---
trunk/dna-graph/src/main/java/org/jboss/dna/graph/request/processor/LoggingRequestProcessor.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/dna-graph/src/main/java/org/jboss/dna/graph/request/processor/LoggingRequestProcessor.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -69,7 +69,7 @@
public LoggingRequestProcessor( RequestProcessor delegate,
Logger logger,
Logger.Level level ) {
- super(delegate.getSourceName(), delegate.getExecutionContext());
+ super(delegate.getSourceName(), delegate.getExecutionContext(), null);
CheckArg.isNotNull(logger, "logger");
this.delegate = delegate;
this.logger = logger;
Modified:
trunk/dna-graph/src/main/java/org/jboss/dna/graph/request/processor/RequestProcessor.java
===================================================================
---
trunk/dna-graph/src/main/java/org/jboss/dna/graph/request/processor/RequestProcessor.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/dna-graph/src/main/java/org/jboss/dna/graph/request/processor/RequestProcessor.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -35,12 +35,15 @@
import org.jboss.dna.graph.Location;
import org.jboss.dna.graph.cache.CachePolicy;
import org.jboss.dna.graph.connector.RepositorySourceException;
+import org.jboss.dna.graph.observe.Changes;
+import org.jboss.dna.graph.observe.Observer;
import org.jboss.dna.graph.property.DateTime;
import org.jboss.dna.graph.property.Name;
import org.jboss.dna.graph.property.Path;
import org.jboss.dna.graph.property.Property;
import org.jboss.dna.graph.property.ReferentialIntegrityException;
import org.jboss.dna.graph.request.CacheableRequest;
+import org.jboss.dna.graph.request.ChangeRequest;
import org.jboss.dna.graph.request.CloneWorkspaceRequest;
import org.jboss.dna.graph.request.CompositeRequest;
import org.jboss.dna.graph.request.CopyBranchRequest;
@@ -82,20 +85,25 @@
private final String sourceName;
private final DateTime nowInUtc;
private final CachePolicy defaultCachePolicy;
+ private final List<ChangeRequest> changes;
+ private final Observer observer;
protected RequestProcessor( String sourceName,
- ExecutionContext context ) {
- this(sourceName, context, null, null);
+ ExecutionContext context,
+ Observer observer ) {
+ this(sourceName, context, observer, null, null);
}
protected RequestProcessor( String sourceName,
ExecutionContext context,
+ Observer observer,
DateTime now ) {
- this(sourceName, context, now, null);
+ this(sourceName, context, observer, now, null);
}
protected RequestProcessor( String sourceName,
ExecutionContext context,
+ Observer observer,
DateTime now,
CachePolicy defaultCachePolicy ) {
CheckArg.isNotEmpty(sourceName, "sourceName");
@@ -104,9 +112,23 @@
this.sourceName = sourceName;
this.nowInUtc = now != null ? now :
context.getValueFactories().getDateFactory().createUtc();
this.defaultCachePolicy = defaultCachePolicy;
+ this.changes = observer != null ? new LinkedList<ChangeRequest>() : null;
+ this.observer = observer;
}
/**
+ * Record the supplied change request for publishing through the event mechanism.
+ *
+ * @param request the completed change request; may not be null
+ */
+ protected void record( ChangeRequest request ) {
+ assert request != null;
+ assert !request.isCancelled();
+ assert !request.hasError();
+ if (changes != null) changes.add(request);
+ }
+
+ /**
* Get the name of the source against which this processor is executing.
*
* @return the repository source name; never null or empty
@@ -761,7 +783,11 @@
* Close this processor, allowing it to clean up any open resources.
*/
public void close() {
- // do nothing
+ // Publish any changes ...
+ if (observer != null && !this.changes.isEmpty()) {
+ Changes changes = new Changes(context.getSubject(), getSourceName(),
getNowInUtc(), this.changes);
+ observer.notify(changes);
+ }
}
/**
Modified: trunk/dna-graph/src/test/java/org/jboss/dna/graph/GraphTest.java
===================================================================
--- trunk/dna-graph/src/test/java/org/jboss/dna/graph/GraphTest.java 2009-05-20 21:38:18
UTC (rev 916)
+++ trunk/dna-graph/src/test/java/org/jboss/dna/graph/GraphTest.java 2009-05-21 16:44:06
UTC (rev 917)
@@ -1058,7 +1058,7 @@
@SuppressWarnings( "synthetic-access" )
class Processor extends RequestProcessor {
protected Processor() {
- super(sourceName, context);
+ super(sourceName, context, null);
}
@Override
Modified:
trunk/dna-graph/src/test/java/org/jboss/dna/graph/connector/MockRepositoryRequestProcessor.java
===================================================================
---
trunk/dna-graph/src/test/java/org/jboss/dna/graph/connector/MockRepositoryRequestProcessor.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/dna-graph/src/test/java/org/jboss/dna/graph/connector/MockRepositoryRequestProcessor.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -64,7 +64,7 @@
public MockRepositoryRequestProcessor( String sourceName,
ExecutionContext context,
Queue<Request> processed ) {
- super(sourceName, context);
+ super(sourceName, context, null);
assert processed != null;
this.processed = processed;
}
Modified:
trunk/dna-graph/src/test/java/org/jboss/dna/graph/connector/federation/FederatedRepositoryConnectionTest.java
===================================================================
---
trunk/dna-graph/src/test/java/org/jboss/dna/graph/connector/federation/FederatedRepositoryConnectionTest.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/dna-graph/src/test/java/org/jboss/dna/graph/connector/federation/FederatedRepositoryConnectionTest.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -50,7 +50,7 @@
@Before
public void beforeEach() {
MockitoAnnotations.initMocks(this);
- connection = new FederatedRepositoryConnection(repository);
+ connection = new FederatedRepositoryConnection(repository, null);
}
@Test
Modified:
trunk/dna-graph/src/test/java/org/jboss/dna/graph/connector/federation/JoinRequestProcessorTest.java
===================================================================
---
trunk/dna-graph/src/test/java/org/jboss/dna/graph/connector/federation/JoinRequestProcessorTest.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/dna-graph/src/test/java/org/jboss/dna/graph/connector/federation/JoinRequestProcessorTest.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -338,7 +338,7 @@
protected JoinRequestProcessorWithUnknownHandler( FederatedRepository
repository,
ExecutionContext context,
DateTime now ) {
- super(repository, context, now);
+ super(repository, context, null, now);
}
@Override
Modified:
trunk/extensions/dna-connector-federation/src/main/java/org/jboss/dna/connector/federation/FederatingRequestProcessor.java
===================================================================
---
trunk/extensions/dna-connector-federation/src/main/java/org/jboss/dna/connector/federation/FederatingRequestProcessor.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/extensions/dna-connector-federation/src/main/java/org/jboss/dna/connector/federation/FederatingRequestProcessor.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -116,7 +116,7 @@
Map<String, FederatedWorkspace> workspaces,
FederatedWorkspace defaultWorkspace,
RepositoryConnectionFactory connectionFactory ) {
- super(sourceName, context);
+ super(sourceName, context, null);
CheckArg.isNotEmpty(workspaces, "workspaces");
CheckArg.isNotNull(connectionFactory, "connectionFactory");
this.workspaces = workspaces;
Modified:
trunk/extensions/dna-connector-filesystem/src/main/java/org/jboss/dna/connector/filesystem/FileSystemRequestProcessor.java
===================================================================
---
trunk/extensions/dna-connector-filesystem/src/main/java/org/jboss/dna/connector/filesystem/FileSystemRequestProcessor.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/extensions/dna-connector-filesystem/src/main/java/org/jboss/dna/connector/filesystem/FileSystemRequestProcessor.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -100,7 +100,7 @@
ExecutionContext context,
FilenameFilter filenameFilter,
boolean updatesAllowed ) {
- super(sourceName, context);
+ super(sourceName, context, null);
assert defaultWorkspace != null;
assert defaultWorkspace.exists();
assert defaultWorkspace.canRead();
@@ -391,9 +391,7 @@
*/
@Override
public void process( CloneWorkspaceRequest request ) {
- if (!updatesAllowed) {
- request.setError(new
InvalidRequestException(FileSystemI18n.sourceIsReadOnly.text(getSourceName())));
- }
+ updatesAllowed(request);
}
/**
@@ -416,6 +414,7 @@
request.setActualWorkspaceName(getCanonicalWorkspaceName(directory));
request.setActualRootLocation(Location.create(pathFactory().createRootPath()));
availableWorkspaceNames.add(workspaceName);
+ record(request);
} else {
request.setError(new
InvalidWorkspaceException(FileSystemI18n.workspaceDoesNotExist.text(workspaceName)));
}
@@ -436,6 +435,9 @@
// This doesn't delete the file/directory; rather, it just remove the
workspace from the available set ...
if (!this.availableWorkspaceNames.remove(workspaceName)) {
request.setError(new
InvalidWorkspaceException(FileSystemI18n.workspaceDoesNotExist.text(workspaceName)));
+ } else {
+
request.setActualRootLocation(Location.create(pathFactory().createRootPath()));
+ record(request);
}
}
Modified:
trunk/extensions/dna-connector-jbosscache/src/main/java/org/jboss/dna/connector/jbosscache/JBossCacheConnection.java
===================================================================
---
trunk/extensions/dna-connector-jbosscache/src/main/java/org/jboss/dna/connector/jbosscache/JBossCacheConnection.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/extensions/dna-connector-jbosscache/src/main/java/org/jboss/dna/connector/jbosscache/JBossCacheConnection.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -29,6 +29,7 @@
import org.jboss.dna.graph.cache.CachePolicy;
import org.jboss.dna.graph.connector.RepositoryConnection;
import org.jboss.dna.graph.connector.RepositorySourceException;
+import org.jboss.dna.graph.observe.Observer;
import org.jboss.dna.graph.request.Request;
import org.jboss.dna.graph.request.processor.RequestProcessor;
@@ -94,7 +95,8 @@
*/
public void execute( final ExecutionContext context,
final Request request ) throws RepositorySourceException {
- RequestProcessor processor = new JBossCacheRequestProcessor(getSourceName(),
context, workspaces,
+ Observer observer = source.getObserver();
+ RequestProcessor processor = new JBossCacheRequestProcessor(getSourceName(),
context, observer, workspaces,
source.getNameOfDefaultWorkspace(),
source.isCreatingWorkspacesAllowed());
try {
Modified:
trunk/extensions/dna-connector-jbosscache/src/main/java/org/jboss/dna/connector/jbosscache/JBossCacheRequestProcessor.java
===================================================================
---
trunk/extensions/dna-connector-jbosscache/src/main/java/org/jboss/dna/connector/jbosscache/JBossCacheRequestProcessor.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/extensions/dna-connector-jbosscache/src/main/java/org/jboss/dna/connector/jbosscache/JBossCacheRequestProcessor.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -40,6 +40,7 @@
import org.jboss.dna.graph.ExecutionContext;
import org.jboss.dna.graph.Location;
import org.jboss.dna.graph.connector.RepositorySourceException;
+import org.jboss.dna.graph.observe.Observer;
import org.jboss.dna.graph.property.Name;
import org.jboss.dna.graph.property.Path;
import org.jboss.dna.graph.property.PathFactory;
@@ -85,16 +86,18 @@
/**
* @param sourceName the name of the source in which this processor is operating
* @param context the execution context in which this processor operates
+ * @param observer the observer to which events should be published; may be null if
the events are not be published
* @param workspaces the manager for the workspaces
* @param defaultWorkspaceName the name of the default workspace; never null
* @param creatingWorkspacesAllowed true if clients can create new workspaces, or
false otherwise
*/
JBossCacheRequestProcessor( String sourceName,
ExecutionContext context,
+ Observer observer,
JBossCacheWorkspaces workspaces,
String defaultWorkspaceName,
boolean creatingWorkspacesAllowed ) {
- super(sourceName, context);
+ super(sourceName, context, observer);
assert workspaces != null;
assert defaultWorkspaceName != null;
this.workspaces = workspaces;
@@ -180,6 +183,7 @@
}
Path nodePath = pathFactory.create(parent, newSegment);
request.setActualLocationOfNode(Location.create(nodePath));
+ record(request);
}
@Override
@@ -211,6 +215,7 @@
node.put(propName, value);
}
request.setActualLocationOfNode(Location.create(nodePath));
+ record(request);
}
@Override
@@ -247,6 +252,7 @@
Path newPath = pathFactory.create(newParentPath, newSegment);
request.setActualLocations(Location.create(nodePath), Location.create(newPath));
+ record(request);
}
@Override
@@ -263,6 +269,7 @@
if (cache.removeNode(node.getFqn())) {
removeFromChildList(cache, parent, nameOfRemovedNode,
getExecutionContext());
request.setActualLocationOfNode(Location.create(nodePath));
+ record(request);
} else {
String msg =
JBossCacheConnectorI18n.unableToDeleteBranch.text(getSourceName(), request.inWorkspace(),
nodePath);
request.setError(new RepositorySourceException(msg));
@@ -296,6 +303,7 @@
Path newPath = pathFactory.create(newParentPath, newSegment);
request.setActualLocations(Location.create(nodePath), Location.create(newPath));
+ record(request);
}
/**
@@ -363,6 +371,7 @@
}
request.setActualRootLocation(Location.create(pathFactory.createRootPath()));
request.setActualWorkspaceName(workspaceName);
+ record(request);
}
/**
@@ -412,6 +421,7 @@
// Copy the list of child segments in the root (this maintains the order of the
children) ...
Path.Segment[] childNames =
(Path.Segment[])fromRoot.get(JBossCacheLexicon.CHILD_PATH_SEGMENT_LIST);
intoRoot.put(JBossCacheLexicon.CHILD_PATH_SEGMENT_LIST, childNames);
+ record(request);
}
/**
@@ -421,10 +431,14 @@
*/
@Override
public void process( DestroyWorkspaceRequest request ) {
- if (!this.workspaces.removeWorkspace(request.workspaceName())) {
- String msg =
JBossCacheConnectorI18n.workspaceDoesNotExist.text(request.workspaceName());
+ Cache<Name, Object> fromCache =
workspaces.getWorkspace(request.workspaceName(), false);
+ if (fromCache == null) {
+ String msg =
JBossCacheConnectorI18n.workspaceDoesNotExist.text(getSourceName(),
request.workspaceName());
request.setError(new InvalidWorkspaceException(msg));
+ return;
}
+ request.setActualRootLocation(Location.create(pathFactory.createRootPath()));
+ record(request);
}
//
----------------------------------------------------------------------------------------------------------------
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 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/extensions/dna-connector-jbosscache/src/main/java/org/jboss/dna/connector/jbosscache/JBossCacheSource.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -58,6 +58,7 @@
import org.jboss.dna.graph.connector.RepositorySource;
import org.jboss.dna.graph.connector.RepositorySourceCapabilities;
import org.jboss.dna.graph.connector.RepositorySourceException;
+import org.jboss.dna.graph.observe.Observer;
import org.jboss.dna.graph.property.Name;
/**
@@ -115,6 +116,7 @@
private volatile RepositorySourceCapabilities capabilities = new
RepositorySourceCapabilities(true, true, false, true, false);
private transient JBossCacheWorkspaces workspaces;
private transient Context jndiContext;
+ private transient RepositoryContext repositoryContext;
/**
* Create a repository source instance.
@@ -128,6 +130,7 @@
* @see
org.jboss.dna.graph.connector.RepositorySource#initialize(org.jboss.dna.graph.connector.RepositoryContext)
*/
public void initialize( RepositoryContext context ) throws RepositorySourceException
{
+ this.repositoryContext = context;
}
/**
@@ -476,6 +479,17 @@
return new JBossCacheConnection(this, this.workspaces);
}
+ /**
+ * @return repositoryContext
+ */
+ protected RepositoryContext getRepositoryContext() {
+ return repositoryContext;
+ }
+
+ protected Observer getObserver() {
+ return repositoryContext != null ? repositoryContext.getObserver() : null;
+ }
+
protected Context getContext() {
return this.jndiContext;
}
Modified:
trunk/extensions/dna-connector-jbosscache/src/test/java/org/jboss/dna/connector/jbosscache/JBossCacheRequestProcessorTest.java
===================================================================
---
trunk/extensions/dna-connector-jbosscache/src/test/java/org/jboss/dna/connector/jbosscache/JBossCacheRequestProcessorTest.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/extensions/dna-connector-jbosscache/src/test/java/org/jboss/dna/connector/jbosscache/JBossCacheRequestProcessorTest.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -71,7 +71,7 @@
initialWorkspaceNames.add("workspace2");
defaultWorkspaceName = initialWorkspaceNames.iterator().next();
workspaces = new JBossCacheWorkspaces("source", cacheFactory,
defaultConfigName, initialWorkspaceNames, jndi);
- processor = new JBossCacheRequestProcessor("source", context,
workspaces, defaultWorkspaceName, true);
+ processor = new JBossCacheRequestProcessor("source", context, null,
workspaces, defaultWorkspaceName, true);
pathFactory = context.getValueFactories().getPathFactory();
}
Modified:
trunk/extensions/dna-connector-jdbc-metadata/src/main/java/org/jboss/dna/connector/jdbc/JdbcRequestProcesor.java
===================================================================
---
trunk/extensions/dna-connector-jdbc-metadata/src/main/java/org/jboss/dna/connector/jdbc/JdbcRequestProcesor.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/extensions/dna-connector-jdbc-metadata/src/main/java/org/jboss/dna/connector/jdbc/JdbcRequestProcesor.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -66,7 +66,7 @@
ExecutionContext context,
Connection connection,
UUID rootNodeUuid ) {
- super(sourceName, context);
+ super(sourceName, context, null);
this.connection = connection;
this.rootNodeUuid = rootNodeUuid;
}
@@ -83,7 +83,7 @@
Connection connection,
UUID rootNodeUuid,
DateTime now ) {
- super(sourceName, context, now);
+ super(sourceName, context, null, now);
this.connection = connection;
this.rootNodeUuid = rootNodeUuid;
}
Modified:
trunk/extensions/dna-connector-store-jpa/src/main/java/org/jboss/dna/connector/store/jpa/JpaConnection.java
===================================================================
---
trunk/extensions/dna-connector-store-jpa/src/main/java/org/jboss/dna/connector/store/jpa/JpaConnection.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/extensions/dna-connector-store-jpa/src/main/java/org/jboss/dna/connector/store/jpa/JpaConnection.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -31,6 +31,7 @@
import org.jboss.dna.graph.cache.CachePolicy;
import org.jboss.dna.graph.connector.RepositoryConnection;
import org.jboss.dna.graph.connector.RepositorySourceException;
+import org.jboss.dna.graph.observe.Observer;
import org.jboss.dna.graph.request.Request;
import org.jboss.dna.graph.request.processor.RequestProcessor;
@@ -50,8 +51,10 @@
private final long largeValueMinimumSizeInBytes;
private final boolean compressData;
private final boolean enforceReferentialIntegrity;
+ private final Observer observer;
/*package*/JpaConnection( String sourceName,
+ Observer observer,
CachePolicy cachePolicy,
EntityManager entityManager,
Model model,
@@ -66,6 +69,7 @@
assert entityManager != null;
assert model != null;
assert rootNodeUuid != null;
+ this.observer = observer;
this.name = sourceName;
this.cachePolicy = cachePolicy; // may be null
this.entityManager = entityManager;
@@ -127,6 +131,7 @@
long size = largeValueMinimumSizeInBytes;
RequestProcessor proc = model.createRequestProcessor(name,
context,
+ observer,
entityManager,
rootNodeUuid,
nameOfDefaultWorkspace,
Modified:
trunk/extensions/dna-connector-store-jpa/src/main/java/org/jboss/dna/connector/store/jpa/JpaSource.java
===================================================================
---
trunk/extensions/dna-connector-store-jpa/src/main/java/org/jboss/dna/connector/store/jpa/JpaSource.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/extensions/dna-connector-store-jpa/src/main/java/org/jboss/dna/connector/store/jpa/JpaSource.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -58,6 +58,7 @@
import org.jboss.dna.graph.connector.RepositorySource;
import org.jboss.dna.graph.connector.RepositorySourceCapabilities;
import org.jboss.dna.graph.connector.RepositorySourceException;
+import org.jboss.dna.graph.observe.Observer;
/**
* The {@link RepositorySource} for the connector that stores content in a (custom)
relational database. This connector uses Java
@@ -929,7 +930,8 @@
if (entityManager == null) {
entityManager = entityManagerFactory.createEntityManager();
}
- return new JpaConnection(getName(), cachePolicy, entityManager, model, rootUuid,
defaultWorkspace,
+ Observer observer = repositoryContext != null ? repositoryContext.getObserver() :
null;
+ return new JpaConnection(getName(), observer, cachePolicy, entityManager, model,
rootUuid, defaultWorkspace,
getPredefinedWorkspaceNames(), largeValueSizeInBytes,
isCreatingWorkspacesAllowed(),
compressData, referentialIntegrityEnforced);
}
Modified:
trunk/extensions/dna-connector-store-jpa/src/main/java/org/jboss/dna/connector/store/jpa/Model.java
===================================================================
---
trunk/extensions/dna-connector-store-jpa/src/main/java/org/jboss/dna/connector/store/jpa/Model.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/extensions/dna-connector-store-jpa/src/main/java/org/jboss/dna/connector/store/jpa/Model.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -30,6 +30,7 @@
import org.jboss.dna.common.i18n.I18n;
import org.jboss.dna.common.util.CheckArg;
import org.jboss.dna.graph.ExecutionContext;
+import org.jboss.dna.graph.observe.Observer;
import org.jboss.dna.graph.request.processor.RequestProcessor;
/**
@@ -78,6 +79,7 @@
public abstract RequestProcessor createRequestProcessor( String sourceName,
ExecutionContext context,
+ Observer observer,
EntityManager
entityManager,
UUID rootNodeUuid,
String
nameOfDefaultWorkspace,
Modified:
trunk/extensions/dna-connector-store-jpa/src/main/java/org/jboss/dna/connector/store/jpa/model/basic/BasicModel.java
===================================================================
---
trunk/extensions/dna-connector-store-jpa/src/main/java/org/jboss/dna/connector/store/jpa/model/basic/BasicModel.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/extensions/dna-connector-store-jpa/src/main/java/org/jboss/dna/connector/store/jpa/model/basic/BasicModel.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -32,6 +32,7 @@
import org.jboss.dna.connector.store.jpa.model.common.NamespaceEntity;
import org.jboss.dna.connector.store.jpa.model.common.WorkspaceEntity;
import org.jboss.dna.graph.ExecutionContext;
+import org.jboss.dna.graph.observe.Observer;
import org.jboss.dna.graph.request.CopyBranchRequest;
import org.jboss.dna.graph.request.DeleteBranchRequest;
import org.jboss.dna.graph.request.MoveBranchRequest;
@@ -101,12 +102,13 @@
/**
* {@inheritDoc}
*
- * @see org.jboss.dna.connector.store.jpa.Model#createRequestProcessor(String,
ExecutionContext, EntityManager, UUID, String,
- * String[], long, boolean, boolean, boolean)
+ * @see org.jboss.dna.connector.store.jpa.Model#createRequestProcessor(String,
ExecutionContext, Observer, EntityManager,
+ * UUID, String, String[], long, boolean, boolean, boolean)
*/
@Override
public RequestProcessor createRequestProcessor( String sourceName,
ExecutionContext context,
+ Observer observer,
EntityManager entityManager,
UUID rootNodeUuid,
String nameOfDefaultWorkspace,
@@ -115,7 +117,7 @@
boolean creatingWorkspacesAllowed,
boolean compressData,
boolean enforceReferentialIntegrity )
{
- return new BasicRequestProcessor(sourceName, context, entityManager,
rootNodeUuid, nameOfDefaultWorkspace,
+ return new BasicRequestProcessor(sourceName, context, observer, entityManager,
rootNodeUuid, nameOfDefaultWorkspace,
predefinedWorkspaceNames,
largeValueMinimumSizeInBytes, creatingWorkspacesAllowed,
compressData, enforceReferentialIntegrity);
}
Modified:
trunk/extensions/dna-connector-store-jpa/src/main/java/org/jboss/dna/connector/store/jpa/model/basic/BasicRequestProcessor.java
===================================================================
---
trunk/extensions/dna-connector-store-jpa/src/main/java/org/jboss/dna/connector/store/jpa/model/basic/BasicRequestProcessor.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/extensions/dna-connector-store-jpa/src/main/java/org/jboss/dna/connector/store/jpa/model/basic/BasicRequestProcessor.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -66,6 +66,7 @@
import org.jboss.dna.graph.ExecutionContext;
import org.jboss.dna.graph.JcrLexicon;
import org.jboss.dna.graph.Location;
+import org.jboss.dna.graph.observe.Observer;
import org.jboss.dna.graph.property.Binary;
import org.jboss.dna.graph.property.Name;
import org.jboss.dna.graph.property.NameFactory;
@@ -132,6 +133,7 @@
/**
* @param sourceName
* @param context
+ * @param observer
* @param entityManager
* @param rootNodeUuid
* @param nameOfDefaultWorkspace
@@ -143,6 +145,7 @@
*/
public BasicRequestProcessor( String sourceName,
ExecutionContext context,
+ Observer observer,
EntityManager entityManager,
UUID rootNodeUuid,
String nameOfDefaultWorkspace,
@@ -151,7 +154,7 @@
boolean creatingWorkspacesAllowed,
boolean compressData,
boolean enforceReferentialIntegrity ) {
- super(sourceName, context);
+ super(sourceName, context, observer);
assert entityManager != null;
assert rootNodeUuid != null;
assert predefinedWorkspaceNames != null;
@@ -949,6 +952,7 @@
return;
}
if (actualLocation != null) request.setActualLocationOfNode(actualLocation);
+ record(request);
}
/**
@@ -1234,6 +1238,7 @@
return;
}
request.setActualLocations(actualFromLocation, actualToLocation);
+ record(request);
}
/**
@@ -1245,7 +1250,10 @@
public void process( DeleteBranchRequest request ) {
logger.trace(request.toString());
Location location = delete(request, request.at(), request.inWorkspace(), true);
- if (location != null) request.setActualLocationOfNode(location);
+ if (location != null) {
+ request.setActualLocationOfNode(location);
+ record(request);
+ }
}
/**
@@ -1257,7 +1265,10 @@
public void process( DeleteChildrenRequest request ) {
logger.trace(request.toString());
Location location = delete(request, request.at(), request.inWorkspace(), false);
- if (location != null) request.setActualLocationOfNode(location);
+ if (location != null) {
+ request.setActualLocationOfNode(location);
+ record(request);
+ }
}
protected Location delete( Request request,
@@ -1473,6 +1484,7 @@
return;
}
request.setActualLocations(actualOldLocation, actualNewLocation);
+ record(request);
}
/**
@@ -1523,6 +1535,7 @@
if (!creatingWorkspacesAllowed) {
String msg =
JpaConnectorI18n.unableToCreateWorkspaces.text(getSourceName());
request.setError(new InvalidRequestException(msg));
+ return;
}
Set<String> existingNames = workspaces.getWorkspaceNames();
int counter = 0;
@@ -1544,6 +1557,7 @@
// Create the root node ...
Location root = Location.create(pathFactory.createRootPath());
request.setActualRootLocation(getActualLocation(entity.getId(), root).location);
+ record(request);
}
/**
@@ -1557,6 +1571,7 @@
if (!creatingWorkspacesAllowed) {
String msg =
JpaConnectorI18n.unableToCreateWorkspaces.text(getSourceName());
request.setError(new InvalidRequestException(msg));
+ return;
}
Set<String> existingNames = workspaces.getWorkspaceNames();
String name = request.desiredNameOfTargetWorkspace();
@@ -1642,6 +1657,7 @@
// Finish up the request ...
Location root = Location.create(pathFactory.createRootPath(), rootNodeUuid);
request.setActualRootLocation(getActualLocation(intoWorkspace.getId(),
root).location);
+ record(request);
}
/**
@@ -1657,6 +1673,9 @@
Long workspaceId = workspace.getId();
assert workspaceId != null;
+ // Get the actual location of the root node ...
+ ActualLocation actual = getActualLocation(workspaceId,
Location.create(pathFactory.createRootPath()));
+
// Delete the workspace ...
workspaces.destroy(workspace.getName());
@@ -1675,6 +1694,10 @@
// Delete unused large values ...
LargeValueEntity.deleteUnused(entities);
+
+ // Finish the request ...
+ request.setActualRootLocation(actual.location);
+ record(request);
}
/**
Modified:
trunk/extensions/dna-connector-store-jpa/src/test/java/org/jboss/dna/connector/store/jpa/ModelTest.java
===================================================================
---
trunk/extensions/dna-connector-store-jpa/src/test/java/org/jboss/dna/connector/store/jpa/ModelTest.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/extensions/dna-connector-store-jpa/src/test/java/org/jboss/dna/connector/store/jpa/ModelTest.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -31,6 +31,7 @@
import org.hibernate.ejb.Ejb3Configuration;
import org.jboss.dna.common.i18n.I18n;
import org.jboss.dna.graph.ExecutionContext;
+import org.jboss.dna.graph.observe.Observer;
import org.jboss.dna.graph.request.processor.RequestProcessor;
import org.junit.Before;
import org.junit.Test;
@@ -107,6 +108,7 @@
@Override
public RequestProcessor createRequestProcessor( String sourceName,
ExecutionContext context,
+ Observer observer,
EntityManager entityManager,
UUID rootNodeUuid,
String nameOfDefaultWorkspace,
Modified:
trunk/extensions/dna-connector-store-jpa/src/test/java/org/jboss/dna/connector/store/jpa/model/basic/BasicModelTest.java
===================================================================
---
trunk/extensions/dna-connector-store-jpa/src/test/java/org/jboss/dna/connector/store/jpa/model/basic/BasicModelTest.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/extensions/dna-connector-store-jpa/src/test/java/org/jboss/dna/connector/store/jpa/model/basic/BasicModelTest.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -128,6 +128,7 @@
stub(manager.getTransaction()).toReturn(txn);
RequestProcessor proc = model.createRequestProcessor("test source",
context,
+ null,
manager,
UUID.randomUUID(),
"default
workspace",
Modified:
trunk/extensions/dna-connector-svn/src/main/java/org/jboss/dna/connector/svn/SVNRepositoryRequestProcessor.java
===================================================================
---
trunk/extensions/dna-connector-svn/src/main/java/org/jboss/dna/connector/svn/SVNRepositoryRequestProcessor.java 2009-05-20
21:38:18 UTC (rev 916)
+++
trunk/extensions/dna-connector-svn/src/main/java/org/jboss/dna/connector/svn/SVNRepositoryRequestProcessor.java 2009-05-21
16:44:06 UTC (rev 917)
@@ -103,7 +103,7 @@
ExecutionContext context,
SVNRepository repository,
boolean updatesAllowed ) {
- super(sourceName, context);
+ super(sourceName, context, null);
this.defaultNamespaceUri =
getExecutionContext().getNamespaceRegistry().getDefaultNamespaceUri();
this.updatesAllowed = updatesAllowed;
this.repository = repository;