Author: rhauch
Date: 2010-01-06 18:50:22 -0500 (Wed, 06 Jan 2010)
New Revision: 1539
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/path/cache/InMemoryWorkspaceCache.java
Log:
Corrected several compiler warnings for potential null pointers. These warnings were
correct.
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 2010-01-06
23:49:59 UTC (rev 1538)
+++
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/federation/JoinRequestProcessor.java 2010-01-06
23:50:22 UTC (rev 1539)
@@ -838,9 +838,11 @@
@Override
public void process( CreateNodeRequest request ) {
ProjectedRequest projected = federatedRequest.getFirstProjectedRequest();
+ // Check the projection first ...
+ if (checkErrorOrCancel(request, federatedRequest)) return;
- Request projectedRequest = projected == null ? null : projected.getRequest();
- // Check the error first ...
+ Request projectedRequest = projected.getRequest();
+ // Check the error on the projected request ...
if (checkErrorOrCancel(request, projectedRequest)) return;
// No error, so project the results back to the federated repository ...
@@ -866,8 +868,10 @@
@Override
public void process( UpdatePropertiesRequest request ) {
ProjectedRequest projected = federatedRequest.getFirstProjectedRequest();
+ // Check the projection first ...
+ if (checkErrorOrCancel(request, federatedRequest)) return;
- UpdatePropertiesRequest source = projected == null ? null :
(UpdatePropertiesRequest)projected.getRequest();
+ UpdatePropertiesRequest source =
(UpdatePropertiesRequest)projected.getRequest();
if (checkErrorOrCancel(request, source)) return;
Location sourceLocation = source.getActualLocationOfNode();
request.setActualLocationOfNode(projectToFederated(request.on(),
projected.getProjection(), sourceLocation, request));
@@ -882,8 +886,10 @@
@Override
public void process( SetPropertyRequest request ) {
ProjectedRequest projected = federatedRequest.getFirstProjectedRequest();
+ // Check the projection first ...
+ if (checkErrorOrCancel(request, federatedRequest)) return;
- SetPropertyRequest source = projected == null ? null :
(SetPropertyRequest)projected.getRequest();
+ SetPropertyRequest source = (SetPropertyRequest)projected.getRequest();
if (checkErrorOrCancel(request, source)) return;
// Set the actual location and created flags ...
Location sourceLocation = source.getActualLocationOfNode();
@@ -899,8 +905,10 @@
@Override
public void process( RemovePropertyRequest request ) {
ProjectedRequest projected = federatedRequest.getFirstProjectedRequest();
+ // Check the projection first ...
+ if (checkErrorOrCancel(request, federatedRequest)) return;
- SetPropertyRequest source = projected == null ? null :
(SetPropertyRequest)projected.getRequest();
+ SetPropertyRequest source = (SetPropertyRequest)projected.getRequest();
if (checkErrorOrCancel(request, source)) return;
Location sourceLocation = source.getActualLocationOfNode();
request.setActualLocationOfNode(projectToFederated(request.from(),
projected.getProjection(), sourceLocation, request));
@@ -914,9 +922,11 @@
@Override
public void process( DeleteBranchRequest request ) {
ProjectedRequest projected = federatedRequest.getFirstProjectedRequest();
+ // Check the projection first ...
+ if (checkErrorOrCancel(request, federatedRequest)) return;
// Do an initial check to make sure that there was no error on the source that
prevented projection
- Request projectedSource = projected == null ? null : projected.getRequest();
+ Request projectedSource = projected.getRequest();
if (checkErrorOrCancel(request, projectedSource)) return;
// Go through the projected requests, and look for the top-most node ...
@@ -954,9 +964,11 @@
@Override
public void process( DeleteChildrenRequest request ) {
ProjectedRequest projected = federatedRequest.getFirstProjectedRequest();
+ // Check the projection first ...
+ if (checkErrorOrCancel(request, federatedRequest)) return;
// Do an initial check to make sure that there was no error on the source that
prevented projection
- Request projectedSource = projected == null ? null : projected.getRequest();
+ Request projectedSource = projected.getRequest();
if (checkErrorOrCancel(request, projectedSource)) return;
// Go through the projected requests, and look for the top-most node ...
@@ -986,8 +998,10 @@
@Override
public void process( RenameNodeRequest request ) {
ProjectedRequest projected = federatedRequest.getFirstProjectedRequest();
+ // Check the projection first ...
+ if (checkErrorOrCancel(request, federatedRequest)) return;
- RenameNodeRequest source = projected == null ? null :
(RenameNodeRequest)projected.getRequest();
+ RenameNodeRequest source = (RenameNodeRequest)projected.getRequest();
if (checkErrorOrCancel(request, source)) return;
Location locationBefore = source.getActualLocationBefore();
Location locationAfter = source.getActualLocationBefore();
@@ -1004,8 +1018,10 @@
@Override
public void process( CopyBranchRequest request ) {
ProjectedRequest projected = federatedRequest.getFirstProjectedRequest();
+ // Check the projection first ...
+ if (checkErrorOrCancel(request, federatedRequest)) return;
- CopyBranchRequest source = projected == null ? null :
(CopyBranchRequest)projected.getRequest();
+ CopyBranchRequest source = (CopyBranchRequest)projected.getRequest();
if (checkErrorOrCancel(request, source)) return;
Location locationBefore = source.getActualLocationBefore();
Location locationAfter = source.getActualLocationBefore();
@@ -1022,8 +1038,10 @@
@Override
public void process( CloneBranchRequest request ) {
ProjectedRequest projected = federatedRequest.getFirstProjectedRequest();
+ // Check the projection first ...
+ if (checkErrorOrCancel(request, federatedRequest)) return;
- CloneBranchRequest source = projected == null ? null :
(CloneBranchRequest)projected.getRequest();
+ CloneBranchRequest source = (CloneBranchRequest)projected.getRequest();
if (checkErrorOrCancel(request, source)) return;
Location locationBefore = source.getActualLocationBefore();
Location locationAfter = source.getActualLocationBefore();
@@ -1047,8 +1065,10 @@
@Override
public void process( MoveBranchRequest request ) {
ProjectedRequest projected = federatedRequest.getFirstProjectedRequest();
+ // Check the projection first ...
+ if (checkErrorOrCancel(request, federatedRequest)) return;
- MoveBranchRequest source = projected == null ? null :
(MoveBranchRequest)projected.getRequest();
+ MoveBranchRequest source = (MoveBranchRequest)projected.getRequest();
if (checkErrorOrCancel(request, source)) return;
Location locationBefore = source.getActualLocationBefore();
Location locationAfter = source.getActualLocationBefore();
@@ -1160,6 +1180,22 @@
}
protected boolean checkErrorOrCancel( Request request,
+ FederatedRequest federatedRequest ) {
+ if (federatedRequest.getFirstProjectedRequest() == null) {
+ Request original = federatedRequest.original();
+ if (original.hasError()) {
+ // No source requests had results ...
+ request.setError(original.getError());
+ return true;
+ }
+ assert original.isCancelled();
+ request.cancel();
+ return true;
+ }
+ return false;
+ }
+
+ protected boolean checkErrorOrCancel( Request request,
Request sourceRequest ) {
if (sourceRequest.hasError()) {
request.setError(sourceRequest.getError());
Modified:
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/path/cache/InMemoryWorkspaceCache.java
===================================================================
---
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/path/cache/InMemoryWorkspaceCache.java 2010-01-06
23:49:59 UTC (rev 1538)
+++
trunk/dna-graph/src/main/java/org/jboss/dna/graph/connector/path/cache/InMemoryWorkspaceCache.java 2010-01-06
23:50:22 UTC (rev 1539)
@@ -62,18 +62,18 @@
CacheEntry entry = nodesByPath.get(path);
if (entry == null) {
- statistics.misses.getAndIncrement();
+ statistics.incrementMisses();
return null;
}
PathNode node = entry.getNode();
if (node != null) {
- statistics.hits.getAndIncrement();
+ statistics.incrementHits();
return node;
}
nodesByPath.remove(path, entry);
- statistics.expirations.getAndIncrement();
+ statistics.incrementExpirations();
return null;
}
@@ -81,8 +81,8 @@
assert node != null;
if (!policy.shouldCache(node)) return;
-
- statistics.writes.getAndIncrement();
+
+ statistics.incrementWrites();
nodesByPath.put(node.getPath(), new CacheEntry(node));
}
@@ -104,13 +104,17 @@
this.statistics = null;
}
+ protected PathCachePolicy policy() {
+ return this.policy;
+ }
+
class CacheEntry {
private final SoftReference<PathNode> ref;
private final long expiryTime;
CacheEntry( PathNode node ) {
ref = new SoftReference<PathNode>(node);
- expiryTime = System.currentTimeMillis() + (policy.getTimeToLive() * 1000);
+ expiryTime = System.currentTimeMillis() + (policy().getTimeToLive() * 1000);
}
PathNode getNode() {
@@ -143,5 +147,21 @@
public long getExpirations() {
return expirations.get();
}
+
+ public long incrementWrites() {
+ return writes.getAndIncrement();
+ }
+
+ public long incrementHits() {
+ return hits.getAndIncrement();
+ }
+
+ public long incrementMisses() {
+ return misses.getAndIncrement();
+ }
+
+ public long incrementExpirations() {
+ return expirations.getAndIncrement();
+ }
}
}