You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jo...@apache.org on 2007/05/20 19:12:33 UTC

svn commit: r539896 - in /ofbiz/branches/release4.0/framework/widget/src/org/ofbiz/widget/menu: MenuFactory.java ModelMenu.java

Author: jonesde
Date: Sun May 20 10:12:32 2007
New Revision: 539896

URL: http://svn.apache.org/viewvc?view=rev&rev=539896
Log:
Applied fix from trunk for revision: 539894

Modified:
    ofbiz/branches/release4.0/framework/widget/src/org/ofbiz/widget/menu/MenuFactory.java
    ofbiz/branches/release4.0/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java

Modified: ofbiz/branches/release4.0/framework/widget/src/org/ofbiz/widget/menu/MenuFactory.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release4.0/framework/widget/src/org/ofbiz/widget/menu/MenuFactory.java?view=diff&rev=539896&r1=539895&r2=539896
==============================================================================
--- ofbiz/branches/release4.0/framework/widget/src/org/ofbiz/widget/menu/MenuFactory.java (original)
+++ ofbiz/branches/release4.0/framework/widget/src/org/ofbiz/widget/menu/MenuFactory.java Sun May 20 10:12:32 2007
@@ -30,6 +30,7 @@
 
 import org.ofbiz.base.location.FlexibleLocation;
 import org.ofbiz.base.util.UtilHttp;
+import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.base.util.UtilXml;
 import org.ofbiz.base.util.cache.UtilCache;
 import org.ofbiz.entity.GenericDelegator;
@@ -47,37 +48,9 @@
     
     public static final String module = MenuFactory.class.getName();
 
-    public static final UtilCache menuClassCache = new UtilCache("widget.menu.classResource", 0, 0, false);
     public static final UtilCache menuWebappCache = new UtilCache("widget.menu.webappResource", 0, 0, false);
     public static final UtilCache menuLocationCache = new UtilCache("widget.menu.locationResource", 0, 0, false);
     
-    public static ModelMenu getMenuFromClass(String resourceName, String menuName, GenericDelegator delegator, LocalDispatcher dispatcher) 
-            throws IOException, SAXException, ParserConfigurationException {
-        Map modelMenuMap = (Map) menuClassCache.get(resourceName);
-        if (modelMenuMap == null) {
-            synchronized (MenuFactory.class) {
-                modelMenuMap = (Map) menuClassCache.get(resourceName);
-                if (modelMenuMap == null) {
-                    ClassLoader loader = Thread.currentThread().getContextClassLoader();
-                    if (loader == null) {
-                        loader = MenuFactory.class.getClassLoader();
-                    }
-                    
-                    URL menuFileUrl = loader.getResource(resourceName);
-                    Document menuFileDoc = UtilXml.readXmlDocument(menuFileUrl, true);
-                    modelMenuMap = readMenuDocument(menuFileDoc, delegator, dispatcher);
-                    menuClassCache.put(resourceName, modelMenuMap);
-                }
-            }
-        }
-        
-        ModelMenu modelMenu = (ModelMenu) modelMenuMap.get(menuName);
-        if (modelMenu == null) {
-            throw new IllegalArgumentException("Could not find menu with name [" + menuName + "] in class resource [" + resourceName + "]");
-        }
-        return modelMenu;
-    }
-    
     public static ModelMenu getMenuFromWebappContext(String resourceName, String menuName, HttpServletRequest request) 
             throws IOException, SAXException, ParserConfigurationException {
         String webappName = UtilHttp.getApplicationName(request);
@@ -101,6 +74,10 @@
             }
         }
         
+        if (UtilValidate.isEmpty(modelMenuMap)) {
+            throw new IllegalArgumentException("Could not find menu file in webapp resource [" + resourceName + "] in the webapp [" + webappName + "]");
+        }
+        
         ModelMenu modelMenu = (ModelMenu) modelMenuMap.get(menuName);
         if (modelMenu == null) {
             throw new IllegalArgumentException("Could not find menu with name [" + menuName + "] in webapp resource [" + resourceName + "] in the webapp [" + webappName + "]");
@@ -144,10 +121,14 @@
                 }
             }
         }
+
+        if (UtilValidate.isEmpty(modelMenuMap)) {
+            throw new IllegalArgumentException("Could not find menu file in location [" + resourceName + "]");
+        }
         
         ModelMenu modelMenu = (ModelMenu) modelMenuMap.get(menuName);
         if (modelMenu == null) {
-            throw new IllegalArgumentException("Could not find menu with name [" + menuName + "] in class resource [" + resourceName + "]");
+            throw new IllegalArgumentException("Could not find menu with name [" + menuName + "] in location [" + resourceName + "]");
         }
         return modelMenu;
     }

Modified: ofbiz/branches/release4.0/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release4.0/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java?view=diff&rev=539896&r1=539895&r2=539896
==============================================================================
--- ofbiz/branches/release4.0/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java (original)
+++ ofbiz/branches/release4.0/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java Sun May 20 10:12:32 2007
@@ -108,13 +108,12 @@
         // check if there is a parent menu to inherit from
         String parentResource = menuElement.getAttribute("extends-resource");
         String parentMenu = menuElement.getAttribute("extends");
-        //TODO: Modify this to allow for extending a menu with the same name but different resource
-        if (parentMenu.length() > 0 && !parentMenu.equals(menuElement.getAttribute("name"))) {
+        if (parentMenu.length() > 0 && !(parentMenu.equals(menuElement.getAttribute("name")) && UtilValidate.isEmpty(parentResource))) {
             ModelMenu parent = null;
             // check if we have a resource name (part of the string before the ?)
-            if (parentResource.length() > 0) {
+            if (UtilValidate.isNotEmpty(parentResource)) {
                 try {
-                    parent = MenuFactory.getMenuFromClass(parentResource, parentMenu, delegator, dispatcher);
+                    parent = MenuFactory.getMenuFromLocation(parentResource, parentMenu, delegator, dispatcher);
                 } catch (Exception e) {
                     Debug.logError(e, "Failed to load parent menu definition '" + parentMenu + "' at resource '" + parentResource + "'", module);
                 }