Author: adrianc
Date: Mon Jan 11 03:39:08 2010
New Revision: 897746
URL: http://svn.apache.org/viewvc?rev=897746&view=rev
Log:
Code cleanups, reorganization, no functional change.
Added:
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/TreeBuilder.java
(with props)
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/TreeWalker.java
(with props)
Modified:
ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/AbstractExecutionContext.java
ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/ExecutionContext.java
ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/ThreadContext.java
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/AccessControllerImpl.java
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/ArtifactPath.java
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/AuthorizationManagerImpl.java
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/PermissionTreeBuilder.java
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/PermissionsGatherer.java
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/TreeStringBuilder.java
Modified:
ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/AbstractExecutionContext.java
URL:
http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/AbstractExecutionContext.java?rev=897746&r1=897745&r2=897746&view=diff
==============================================================================
---
ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/AbstractExecutionContext.java
(original)
+++
ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/AbstractExecutionContext.java
Mon Jan 11 03:39:08 2010
@@ -32,6 +32,8 @@
public abstract class AbstractExecutionContext implements ExecutionContext {
public static final String module =
AbstractExecutionContext.class.getName();
+ public static final String PATH_ROOT_NODE_NAME = "ofbiz";
+ public static final String PATH_ELEMENT_SEPARATOR = "/";
protected final FastList<ExecutionArtifact> artifactStack =
FastList.newInstance();
protected String currencyUom = null;
@@ -66,14 +68,25 @@
}
public String getExecutionPath() {
- StringBuilder sb = new StringBuilder("ofbiz");
+ StringBuilder sb = new StringBuilder(PATH_ROOT_NODE_NAME);
for (ExecutionArtifact artifact : this.artifactStack) {
- sb.append("/");
+ sb.append(PATH_ELEMENT_SEPARATOR);
sb.append(artifact.getName() == null ? "null" :
artifact.getName());
}
return sb.toString();
}
+ public String[] getExecutionPathAsArray() {
+ String[] strArray = new String[this.artifactStack.size() + 1];
+ strArray[0] = PATH_ROOT_NODE_NAME;
+ int index = 1;
+ for (ExecutionArtifact artifact : this.artifactStack) {
+ strArray[index] = artifact.getName();
+ index++;
+ }
+ return strArray;
+ }
+
public Locale getLocale() {
return this.locale;
}
Modified:
ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/ExecutionContext.java
URL:
http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/ExecutionContext.java?rev=897746&r1=897745&r2=897746&view=diff
==============================================================================
---
ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/ExecutionContext.java
(original)
+++
ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/ExecutionContext.java
Mon Jan 11 03:39:08 2010
@@ -64,13 +64,21 @@
*/
public String getCurrencyUom();
- /** Returns the current execution path. Artifacts in the path are separated
+ /** Returns the current execution path. Artifact names are separated
* with a forward slash.
*
* @return The current execution path
*/
public String getExecutionPath();
+ /** Returns the current execution path as an array of strings.
+ * Each array element contains an Artifact name, with the
+ * first element containing the path root.
+ *
+ * @return The current execution path as an array
+ */
+ public String[] getExecutionPathAsArray();
+
/** Returns the current <code>Locale</code>.
*
* @return The current <code>Locale</code>
Modified:
ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/ThreadContext.java
URL:
http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/ThreadContext.java?rev=897746&r1=897745&r2=897746&view=diff
==============================================================================
---
ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/ThreadContext.java
(original)
+++
ofbiz/branches/executioncontext20091231/framework/api/src/org/ofbiz/api/context/ThreadContext.java
Mon Jan 11 03:39:08 2010
@@ -64,6 +64,10 @@
return executionContext.get().getExecutionPath();
}
+ public static String[] getExecutionPathAsArray() {
+ return executionContext.get().getExecutionPathAsArray();
+ }
+
public static Locale getLocale() {
return executionContext.get().getLocale();
}
Modified:
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/AccessControllerImpl.java
URL:
http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/AccessControllerImpl.java?rev=897746&r1=897745&r2=897746&view=diff
==============================================================================
---
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/AccessControllerImpl.java
(original)
+++
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/AccessControllerImpl.java
Mon Jan 11 03:39:08 2010
@@ -31,9 +31,9 @@
import org.ofbiz.base.util.UtilProperties;
import org.ofbiz.entity.util.EntityListIterator;
import org.ofbiz.service.DispatchContext;
-import org.ofbiz.service.ThreadContext;
import org.ofbiz.service.LocalDispatcher;
import org.ofbiz.service.ModelService;
+import org.ofbiz.service.ThreadContext;
/** An implementation of the <code>AccessController</code> interface. */
public class AccessControllerImpl implements AccessController {
@@ -47,8 +47,8 @@
protected boolean disabled = false;
protected AccessControllerImpl(PathNode node) {
- this.permissionsGatherer = new PermissionsGatherer(node);
this.permission = new
OFBizPermission(ThreadContext.getUserLogin().getString("userLoginId"));
+ this.permissionsGatherer = new PermissionsGatherer(node,
this.permission);
this.verbose =
"true".equals(UtilProperties.getPropertyValue("api.properties",
"authorizationManager.verbose"));
this.disabled =
"true".equals(UtilProperties.getPropertyValue("api.properties",
"authorizationManager.disabled"));
if (this.verbose) {
@@ -56,26 +56,6 @@
}
}
- public void checkPermission(Permission permission) throws
AccessControlException {
- if (this.verbose) {
- Debug.logInfo("Checking permission: " +
ThreadContext.getExecutionPath() + "[" + permission + "]", module);
- }
- this.permission.reset();
- this.permissionsGatherer.gatherPermissions(new
ArtifactPath(ThreadContext.getExecutionPath()), this.permission);
- if (this.verbose) {
- Debug.logInfo("Found permission(s): " +
ThreadContext.getUserLogin().getString("userLoginId") +
- "@" + ThreadContext.getExecutionPath() + "[" +
this.permission + "]", module);
- }
- if (this.disabled) {
- return;
- }
- if (this.permission.implies(permission) &&
this.hasServicePermission()) {
- return;
- }
- throw new
AccessControlException(ThreadContext.getUserLogin().getString("userLoginId") +
- "@" + ThreadContext.getExecutionPath() + "[" + permission +
"]");
- }
-
public <E> List<E> applyFilters(List<E> list) {
if (this.permission.getFilterNames().size() > 0) {
return new SecurityAwareList<E>(list,
this.permission.getFilterNames());
@@ -94,6 +74,25 @@
return listIterator;
}
+ public void checkPermission(Permission permission) throws
AccessControlException {
+ if (this.verbose) {
+ Debug.logInfo("Checking permission: " +
ThreadContext.getExecutionPath() + "[" + permission + "]", module);
+ }
+ this.permissionsGatherer.gatherPermissions(new
ArtifactPath(ThreadContext.getExecutionPathAsArray()));
+ if (this.verbose) {
+ Debug.logInfo("Found permission(s): " +
ThreadContext.getUserLogin().getString("userLoginId") +
+ "@" + ThreadContext.getExecutionPath() + "[" +
this.permission + "]", module);
+ }
+ if (this.disabled) {
+ return;
+ }
+ if (this.permission.implies(permission) &&
this.hasServicePermission()) {
+ return;
+ }
+ throw new
AccessControlException(ThreadContext.getUserLogin().getString("userLoginId") +
+ "@" + ThreadContext.getExecutionPath() + "[" + permission +
"]");
+ }
+
protected boolean hasServicePermission() {
try {
if (this.permission.getServiceNames().size() == 0) {
Modified:
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/ArtifactPath.java
URL:
http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/ArtifactPath.java?rev=897746&r1=897745&r2=897746&view=diff
==============================================================================
---
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/ArtifactPath.java
(original)
+++
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/ArtifactPath.java
Mon Jan 11 03:39:08 2010
@@ -24,11 +24,12 @@
import javolution.text.TextBuilder;
import javolution.util.FastList;
+import org.ofbiz.api.context.AbstractExecutionContext;
+
/** Artifact path class. */
public class ArtifactPath implements Iterator<String> {
- public static final ArtifactPath PATH_ROOT = new ArtifactPath("ofbiz");
- public static final String ELEMENT_SEPARATOR = "/";
+ public static final ArtifactPath PATH_ROOT = new
ArtifactPath(AbstractExecutionContext.PATH_ROOT_NODE_NAME);
protected int currentIndex = 0;
protected final String[] pathElementArray;
@@ -36,7 +37,7 @@
protected final TextBuilder stringBuilder = TextBuilder.newInstance();
public ArtifactPath(String artifactPath) {
- this.pathElementArray = artifactPath.split(ELEMENT_SEPARATOR);
+ this.pathElementArray =
artifactPath.split(AbstractExecutionContext.PATH_ELEMENT_SEPARATOR);
}
public ArtifactPath(String[] pathElementArray) {
@@ -50,7 +51,7 @@
this.stringBuilder.clear();
for (int i = this.currentIndex; i < this.pathElementArray.length; i++)
{
if (i != this.currentIndex) {
- stringBuilder.append(ELEMENT_SEPARATOR);
+
stringBuilder.append(AbstractExecutionContext.PATH_ELEMENT_SEPARATOR);
}
stringBuilder.append(this.pathElementArray[i]);
}
Modified:
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/AuthorizationManagerImpl.java
URL:
http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/AuthorizationManagerImpl.java?rev=897746&r1=897745&r2=897746&view=diff
==============================================================================
---
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/AuthorizationManagerImpl.java
(original)
+++
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/AuthorizationManagerImpl.java
Mon Jan 11 03:39:08 2010
@@ -18,18 +18,21 @@
*******************************************************************************/
package org.ofbiz.context;
+import java.security.AccessControlException;
import java.security.Permission;
+import java.sql.Timestamp;
import java.util.List;
import org.ofbiz.api.authorization.AccessController;
import org.ofbiz.api.authorization.AuthorizationManagerException;
import org.ofbiz.api.authorization.BasicPermissions;
import org.ofbiz.api.authorization.AuthorizationManager;
+import org.ofbiz.entity.util.EntityUtil;
import org.ofbiz.entity.Delegator;
import org.ofbiz.entity.GenericEntityException;
import org.ofbiz.entity.GenericValue;
import org.ofbiz.entity.condition.EntityCondition;
-//import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.UtilMisc;
import org.ofbiz.base.util.cache.UtilCache;
import org.ofbiz.security.OFBizSecurity;
@@ -74,6 +77,7 @@
}
return accessController;
}
+
protected static void processGroupPermissions(String groupId, PathNode
node, Delegator delegator) throws AuthorizationManagerException {
try {
// Process this group's memberships first
@@ -90,7 +94,7 @@
}
protected static void setPermissions(String id, PathNode node,
List<GenericValue> permissionValues) throws AuthorizationManagerException {
- PermissionTreeBuilder builder = new PermissionTreeBuilder();
+ PermissionTreeBuilder builder = new PermissionTreeBuilder(node);
for (GenericValue value : permissionValues) {
String artifactPathString = value.getString("artifactPath");
OFBizPermission target = new OFBizPermission(id + "@" +
artifactPathString);
@@ -111,7 +115,7 @@
throw new AuthorizationManagerException("Invalid
permission: " + pair[0]);
}
}
- builder.buildPermissionTree(node, new
ArtifactPath(artifactPathString), target);
+ builder.build(new ArtifactPath(artifactPathString), target);
}
}
Modified:
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/PermissionTreeBuilder.java
URL:
http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/PermissionTreeBuilder.java?rev=897746&r1=897745&r2=897746&view=diff
==============================================================================
---
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/PermissionTreeBuilder.java
(original)
+++
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/PermissionTreeBuilder.java
Mon Jan 11 03:39:08 2010
@@ -18,34 +18,19 @@
*******************************************************************************/
package org.ofbiz.context;
-import javolution.util.FastMap;
-
import org.ofbiz.context.PathNode.BranchNode;
-import org.ofbiz.context.PathNode.SubstitutionNode;
-import org.ofbiz.context.PathNode.WildCardNode;
-public class PermissionTreeBuilder implements PathNodeVisitor {
+public class PermissionTreeBuilder extends TreeBuilder {
- protected ArtifactPath artifactPath;
protected OFBizPermission permission;
- public void buildPermissionTree(PathNode node, ArtifactPath artifactPath,
OFBizPermission permission) {
- this.artifactPath = artifactPath;
- this.permission = permission;
- node.accept(this);
+ public PermissionTreeBuilder(PathNode node) {
+ super(node);
}
- protected void setChildNodePermissions(PathNode node, String key) {
- if (node.childNodes == null) {
- node.childNodes = FastMap.newInstance();
- }
- key = key.toUpperCase();
- PathNode childNode = node.childNodes.get(key);
- if (childNode == null) {
- childNode = PathNode.getInstance(this.artifactPath);
- node.childNodes.put(key, childNode);
- }
- childNode.accept(this);
+ public void build(ArtifactPath artifactPath, OFBizPermission permission) {
+ this.permission = permission;
+ super.build(artifactPath);
}
@Override
@@ -58,36 +43,6 @@
}
return;
}
- String key = this.artifactPath.next();
- if (PathNode.SUBSTITUTION_CHARACTER.equals(key)) {
- if (node.substitutionNode == null) {
- node.substitutionNode = new SubstitutionNode();
- }
- node.substitutionNode.accept(this);
- return;
- }
- if (PathNode.WILDCARD_CHARACTER.equals(key)) {
- if (node.wildCardNode == null) {
- node.wildCardNode = new WildCardNode();
- }
- node.wildCardNode.accept(this);
- return;
- }
- this.setChildNodePermissions(node, key);
- }
-
- @Override
- public void visit(SubstitutionNode node) {
- if (this.artifactPath.hasNext()) {
- this.setChildNodePermissions(node, this.artifactPath.next());
- }
- }
-
- @Override
- public void visit(WildCardNode node) {
- if (this.artifactPath.hasNext()) {
- this.artifactPath.next();
- this.setChildNodePermissions(node,
this.artifactPath.getCurrentPath());
- }
+ super.visit(node);
}
}
Modified:
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/PermissionsGatherer.java
URL:
http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/PermissionsGatherer.java?rev=897746&r1=897745&r2=897746&view=diff
==============================================================================
---
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/PermissionsGatherer.java
(original)
+++
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/PermissionsGatherer.java
Mon Jan 11 03:39:08 2010
@@ -18,74 +18,24 @@
*******************************************************************************/
package org.ofbiz.context;
-import java.util.Map;
-
import org.ofbiz.context.PathNode.BranchNode;
-import org.ofbiz.context.PathNode.SubstitutionNode;
-import org.ofbiz.context.PathNode.WildCardNode;
-
-public class PermissionsGatherer implements PathNodeVisitor {
- protected ArtifactPath artifactPath;
- protected final PathNode node;
- protected OFBizPermission permission;
- public PermissionsGatherer(PathNode node) {
- this.node = node;
- }
+public class PermissionsGatherer extends TreeWalker {
+ protected final OFBizPermission permission;
- public void gatherPermissions(ArtifactPath artifactPath, OFBizPermission
permission) {
- this.artifactPath = artifactPath;
+ public PermissionsGatherer(PathNode node, OFBizPermission permission) {
+ super(node);
this.permission = permission;
- this.node.accept(this);
}
- protected void getChildNodePermissions(PathNode node, String key) {
- if (node.childNodes != null) {
- PathNode childNode = node.childNodes.get(key.toUpperCase());
- if (childNode != null) {
- childNode.accept(this);
- }
- }
+ public void gatherPermissions(ArtifactPath artifactPath) {
+ this.permission.reset();
+ super.walkTree(artifactPath);
}
@Override
public void visit(BranchNode node) {
this.permission.accumulatePermissions(node.permission);
- if (this.artifactPath.hasNext()) {
- String key = this.artifactPath.next();
- if (node.substitutionNode != null) {
- this.artifactPath.saveState();
- node.substitutionNode.accept(this);
- this.artifactPath.restoreState();
- }
- if (node.wildCardNode != null) {
- this.artifactPath.saveState();
- node.wildCardNode.accept(this);
- this.artifactPath.restoreState();
- }
- this.getChildNodePermissions(node, key);
- }
- }
-
- @Override
- public void visit(SubstitutionNode node) {
- if (this.artifactPath.hasNext()) {
- this.getChildNodePermissions(node, this.artifactPath.next());
- }
+ super.visit(node);
}
-
- @Override
- public void visit(WildCardNode node) {
- if (this.artifactPath.hasNext() && node.childNodes != null) {
- this.artifactPath.next();
- String currentPath =
this.artifactPath.getCurrentPath().toUpperCase();
- for (Map.Entry<String, PathNode> entry :
node.childNodes.entrySet()) {
- if (currentPath.endsWith(entry.getKey())) {
- entry.getValue().accept(this);
- return;
- }
- }
- }
- }
-
}
Added:
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/TreeBuilder.java
URL:
http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/TreeBuilder.java?rev=897746&view=auto
==============================================================================
---
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/TreeBuilder.java
(added)
+++
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/TreeBuilder.java
Mon Jan 11 03:39:08 2010
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+
*******************************************************************************/
+package org.ofbiz.context;
+
+import javolution.util.FastMap;
+
+import org.ofbiz.context.PathNode.BranchNode;
+import org.ofbiz.context.PathNode.SubstitutionNode;
+import org.ofbiz.context.PathNode.WildCardNode;
+
+public class TreeBuilder implements PathNodeVisitor {
+
+ protected final PathNode node;
+ protected ArtifactPath artifactPath;
+
+ public TreeBuilder(PathNode node) {
+ this.node = node;
+ }
+
+ public void build(ArtifactPath artifactPath) {
+ this.artifactPath = artifactPath;
+ this.node.accept(this);
+ }
+
+ protected void addChildNode(PathNode node, String key) {
+ if (node.childNodes == null) {
+ node.childNodes = FastMap.newInstance();
+ }
+ key = key.toUpperCase();
+ PathNode childNode = node.childNodes.get(key);
+ if (childNode == null) {
+ childNode = PathNode.getInstance(this.artifactPath);
+ node.childNodes.put(key, childNode);
+ }
+ childNode.accept(this);
+ }
+
+ @Override
+ public void visit(BranchNode node) {
+ if (!this.artifactPath.hasNext()) {
+ return;
+ }
+ String key = this.artifactPath.next();
+ if (PathNode.SUBSTITUTION_CHARACTER.equals(key)) {
+ if (node.substitutionNode == null) {
+ node.substitutionNode = new SubstitutionNode();
+ }
+ node.substitutionNode.accept(this);
+ return;
+ }
+ if (PathNode.WILDCARD_CHARACTER.equals(key)) {
+ if (node.wildCardNode == null) {
+ node.wildCardNode = new WildCardNode();
+ }
+ node.wildCardNode.accept(this);
+ return;
+ }
+ this.addChildNode(node, key);
+ }
+
+ @Override
+ public void visit(SubstitutionNode node) {
+ if (this.artifactPath.hasNext()) {
+ this.addChildNode(node, this.artifactPath.next());
+ }
+ }
+
+ @Override
+ public void visit(WildCardNode node) {
+ if (this.artifactPath.hasNext()) {
+ this.artifactPath.next();
+ this.addChildNode(node, this.artifactPath.getCurrentPath());
+ }
+ }
+}
Propchange:
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/TreeBuilder.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/TreeBuilder.java
------------------------------------------------------------------------------
svn:keywords = Date Rev Author URL Id
Propchange:
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/TreeBuilder.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/TreeStringBuilder.java
URL:
http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/TreeStringBuilder.java?rev=897746&r1=897745&r2=897746&view=diff
==============================================================================
---
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/TreeStringBuilder.java
(original)
+++
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/TreeStringBuilder.java
Mon Jan 11 03:39:08 2010
@@ -61,8 +61,7 @@
}
this.stringBuilder.append("[");
this.stringBuilder.append(node.permission);
- this.stringBuilder.append("]");
- this.stringBuilder.append("\n");
+ this.stringBuilder.append("]\n");
}
if (node.substitutionNode != null) {
node.substitutionNode.accept(this);
Added:
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/TreeWalker.java
URL:
http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/TreeWalker.java?rev=897746&view=auto
==============================================================================
---
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/TreeWalker.java
(added)
+++
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/TreeWalker.java
Mon Jan 11 03:39:08 2010
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+
*******************************************************************************/
+package org.ofbiz.context;
+
+import java.util.Map;
+
+import org.ofbiz.context.PathNode.BranchNode;
+import org.ofbiz.context.PathNode.SubstitutionNode;
+import org.ofbiz.context.PathNode.WildCardNode;
+
+public class TreeWalker implements PathNodeVisitor {
+ protected ArtifactPath artifactPath;
+ protected final PathNode node;
+
+ public TreeWalker(PathNode node) {
+ this.node = node;
+ }
+
+ @Override
+ public void visit(BranchNode node) {
+ if (this.artifactPath.hasNext()) {
+ String key = this.artifactPath.next();
+ if (node.substitutionNode != null) {
+ this.artifactPath.saveState();
+ node.substitutionNode.accept(this);
+ this.artifactPath.restoreState();
+ }
+ if (node.wildCardNode != null) {
+ this.artifactPath.saveState();
+ node.wildCardNode.accept(this);
+ this.artifactPath.restoreState();
+ }
+ this.visitChildNode(node, key);
+ }
+ }
+
+ @Override
+ public void visit(SubstitutionNode node) {
+ if (this.artifactPath.hasNext()) {
+ this.visitChildNode(node, this.artifactPath.next());
+ }
+ }
+
+ @Override
+ public void visit(WildCardNode node) {
+ if (this.artifactPath.hasNext() && node.childNodes != null) {
+ this.artifactPath.next();
+ String currentPath =
this.artifactPath.getCurrentPath().toUpperCase();
+ for (Map.Entry<String, PathNode> entry :
node.childNodes.entrySet()) {
+ if (currentPath.endsWith(entry.getKey())) {
+ entry.getValue().accept(this);
+ return;
+ }
+ }
+ }
+ }
+
+ protected void visitChildNode(PathNode node, String key) {
+ if (node.childNodes != null) {
+ PathNode childNode = node.childNodes.get(key.toUpperCase());
+ if (childNode != null) {
+ childNode.accept(this);
+ }
+ }
+ }
+
+ public void walkTree(ArtifactPath artifactPath) {
+ this.artifactPath = artifactPath;
+ this.node.accept(this);
+ }
+
+}
Propchange:
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/TreeWalker.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/TreeWalker.java
------------------------------------------------------------------------------
svn:keywords = Date Rev Author URL Id
Propchange:
ofbiz/branches/executioncontext20091231/framework/context/src/org/ofbiz/context/TreeWalker.java
------------------------------------------------------------------------------
svn:mime-type = text/plain