You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ad...@apache.org on 2015/01/02 20:26:30 UTC

svn commit: r1649096 - in /ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree: ModelTree.java TreeFactory.java

Author: adrianc
Date: Fri Jan  2 19:26:30 2015
New Revision: 1649096

URL: http://svn.apache.org/r1649096
Log:
First pass at making tree widget thread-safe. This is a WIP.

Modified:
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/TreeFactory.java

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java?rev=1649096&r1=1649095&r2=1649096&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java Fri Jan  2 19:26:30 2015
@@ -71,19 +71,17 @@ public class ModelTree extends ModelWidg
 
     public static final String module = ModelTree.class.getName();
 
-    protected String defaultEntityName;
-    protected String defaultRenderStyle;
-    protected FlexibleStringExpander defaultWrapStyleExdr;
-    protected FlexibleStringExpander expandCollapseRequestExdr;
-    protected boolean forceChildCheck;
+    private final String defaultEntityName;
+    private final String defaultRenderStyle;
+    private final FlexibleStringExpander defaultWrapStyleExdr;
+    private final FlexibleStringExpander expandCollapseRequestExdr;
+    private final boolean forceChildCheck;
     private final String location;
-    protected List<ModelNode> nodeList = new ArrayList<ModelNode>();
-    protected Map<String, ModelNode> nodeMap = new HashMap<String, ModelNode>();
-    protected int openDepth;
-    protected int postTrailOpenDepth;
-    protected String rootNodeName;
-    protected FlexibleStringExpander trailNameExdr;
-    protected String treeLocation;
+    private final Map<String, ModelNode> nodeMap;
+    private final int openDepth;
+    private final int postTrailOpenDepth;
+    private final String rootNodeName;
+    private final FlexibleStringExpander trailNameExdr;
 
     // ===== CONSTRUCTORS =====
     /** Default Constructor */
@@ -92,38 +90,51 @@ public class ModelTree extends ModelWidg
         super(treeElement);
         this.location = location;
         this.rootNodeName = treeElement.getAttribute("root-node-name");
-        this.defaultRenderStyle = UtilFormatOut.checkEmpty(treeElement.getAttribute("default-render-style"), "simple");
+        String defaultRenderStyle = UtilFormatOut.checkEmpty(treeElement.getAttribute("default-render-style"), "simple");
         // A temporary hack to accommodate those who might still be using "render-style" instead of "default-render-style"
-        if (UtilValidate.isEmpty(this.defaultRenderStyle) || this.defaultRenderStyle.equals("simple")) {
+        if (UtilValidate.isEmpty(defaultRenderStyle) || defaultRenderStyle.equals("simple")) {
             String rStyle = treeElement.getAttribute("render-style");
             if (UtilValidate.isNotEmpty(rStyle))
-                this.defaultRenderStyle = rStyle;
+                defaultRenderStyle = rStyle;
         }
+        this.defaultRenderStyle = defaultRenderStyle;
         this.defaultWrapStyleExdr = FlexibleStringExpander.getInstance(treeElement.getAttribute("default-wrap-style"));
         this.expandCollapseRequestExdr = FlexibleStringExpander.getInstance(treeElement.getAttribute("expand-collapse-request"));
         this.trailNameExdr = FlexibleStringExpander.getInstance(UtilFormatOut.checkEmpty(treeElement.getAttribute("trail-name"),
                 "trail"));
         this.forceChildCheck = !"false".equals(treeElement.getAttribute("force-child-check"));
         this.defaultEntityName = treeElement.getAttribute("entity-name");
-        try {
-            openDepth = Integer.parseInt(treeElement.getAttribute("open-depth"));
-        } catch (NumberFormatException e) {
-            openDepth = 0;
+        int openDepth = 0;
+        if (treeElement.hasAttribute("open-depth")) {
+            try {
+                openDepth = Integer.parseInt(treeElement.getAttribute("open-depth"));
+            } catch (NumberFormatException e) {
+                throw new IllegalArgumentException("Invalid open-depth attribute value for the tree definition with name: "
+                        + getName());
+            }
         }
-        try {
-            postTrailOpenDepth = Integer.parseInt(treeElement.getAttribute("post-trail-open-depth"));
-        } catch (NumberFormatException e) {
-            postTrailOpenDepth = 999;
+        this.openDepth = openDepth;
+        int postTrailOpenDepth = 999;
+        if (treeElement.hasAttribute("post-trail-open-depth")) {
+            try {
+                postTrailOpenDepth = Integer.parseInt(treeElement.getAttribute("post-trail-open-depth"));
+            } catch (NumberFormatException e) {
+                throw new IllegalArgumentException(
+                        "Invalid post-trail-open-depth attribute value for the tree definition with name: " + getName());
+            }
+        }
+        this.postTrailOpenDepth = postTrailOpenDepth;
+        List<? extends Element> nodeElements = UtilXml.childElementList(treeElement, "node");
+        if (nodeElements.size() == 0) {
+            throw new IllegalArgumentException("No node elements found for the tree definition with name: " + getName());
         }
+        Map<String, ModelNode> nodeMap = new HashMap<String, ModelNode>();
         for (Element nodeElementEntry : UtilXml.childElementList(treeElement, "node")) {
             ModelNode node = new ModelNode(nodeElementEntry, this);
             String nodeName = node.getName();
-            nodeList.add(node);
             nodeMap.put(nodeName, node);
         }
-        if (nodeList.size() == 0) {
-            throw new IllegalArgumentException("No node elements found for the tree definition with name: " + getName());
-        }
+        this.nodeMap = Collections.unmodifiableMap(nodeMap);
     }
 
     @Override
@@ -133,7 +144,7 @@ public class ModelTree extends ModelWidg
 
     @Override
     public String getBoundaryCommentName() {
-        return treeLocation + "#" + getName();
+        return location + "#" + getName();
     }
 
     public String getDefaultEntityName() {
@@ -241,7 +252,7 @@ public class ModelTree extends ModelWidg
         }
     }
 
-    public String getDefaultPkName( Map<String, Object> context) {
+    public String getDefaultPkName(Map<String, Object> context) {
         ModelEntity modelEntity = WidgetWorker.getDelegator(context).getModelEntity(this.defaultEntityName);
         if (modelEntity.getPksSize() == 1) {
             ModelField modelField = modelEntity.getOnlyPk();
@@ -250,10 +261,6 @@ public class ModelTree extends ModelWidg
         return null;
     }
 
-    public void setTreeLocation(String treeLocation) {
-        this.treeLocation = treeLocation;
-    }
-
     public static class ModelNode extends ModelWidget {
 
         private final List<ModelWidgetAction> actions;

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/TreeFactory.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/TreeFactory.java?rev=1649096&r1=1649095&r2=1649096&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/TreeFactory.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/TreeFactory.java Fri Jan  2 19:26:30 2015
@@ -79,7 +79,6 @@ public class TreeFactory {
             Element rootElement = treeFileDoc.getDocumentElement();
             for (Element treeElement: UtilXml.childElementList(rootElement, "tree")) {
                 ModelTree modelTree = new ModelTree(treeElement, treeLocation);
-                modelTree.setTreeLocation(treeLocation);
                 modelTreeMap.put(modelTree.getName(), modelTree);
             }
         }