You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by ap...@apache.org on 2006/12/17 17:48:28 UTC

svn commit: r488005 - in /struts/sandbox/trunk/tiles/tiles-core/src: main/java/org/apache/tiles/definition/ test/java/org/apache/tiles/definition/

Author: apetrelli
Date: Sun Dec 17 08:48:28 2006
New Revision: 488005

URL: http://svn.apache.org/viewvc?view=rev&rev=488005
Log:
Fixed a problem in localized definitions inside definitions.

Modified:
    struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/definition/ComponentDefinitions.java
    struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/definition/ComponentDefinitionsImpl.java
    struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/definition/TestComponentDefinitions.java

Modified: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/definition/ComponentDefinitions.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/definition/ComponentDefinitions.java?view=diff&rev=488005&r1=488004&r2=488005
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/definition/ComponentDefinitions.java (original)
+++ struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/definition/ComponentDefinitions.java Sun Dec 17 08:48:28 2006
@@ -65,7 +65,7 @@
      * @throws NoSuchDefinitionException if a ComponentDefinition extends from
      *                                   one that doesn't exist.
      */
-    public void addDefinitions(Map defsMap, Locale locale) throws NoSuchDefinitionException;
+    public void addDefinitions(Map<String, ComponentDefinition> defsMap, Locale locale) throws NoSuchDefinitionException;
 
     /**
      * Returns a ComponentDefinition object that matches the given name and locale.

Modified: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/definition/ComponentDefinitionsImpl.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/definition/ComponentDefinitionsImpl.java?view=diff&rev=488005&r1=488004&r2=488005
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/definition/ComponentDefinitionsImpl.java (original)
+++ struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/definition/ComponentDefinitionsImpl.java Sun Dec 17 08:48:28 2006
@@ -48,14 +48,14 @@
     /**
      * The locale-specific set of definitions objects.
      */
-    private Map<Locale, Map> localeSpecificDefinitions;
+    private Map<Locale, Map<String, ComponentDefinition>> localeSpecificDefinitions;
 
     /**
      * Creates a new instance of ComponentDefinitionsImpl
      */
     public ComponentDefinitionsImpl() {
         baseDefinitions = new HashMap<String, ComponentDefinition>();
-        localeSpecificDefinitions = new HashMap<Locale, Map>();
+        localeSpecificDefinitions = new HashMap<Locale, Map<String, ComponentDefinition>>();
     }
 
     /**
@@ -89,7 +89,7 @@
      * @param defsMap The new definitions to add.
      * @param locale  The locale to add the definitions to.
      */
-    public void addDefinitions(Map defsMap, Locale locale) throws NoSuchDefinitionException {
+    public void addDefinitions(Map<String, ComponentDefinition> defsMap, Locale locale) throws NoSuchDefinitionException {
         localeSpecificDefinitions.put(locale, defsMap);
         resolveAttributeDependencies(locale);
         resolveInheritances(locale);
@@ -135,11 +135,9 @@
     public void resolveInheritances(Locale locale) throws NoSuchDefinitionException {
         resolveInheritances();
 
-        Map map = (Map) localeSpecificDefinitions.get(locale);
+        Map<String, ComponentDefinition> map = localeSpecificDefinitions.get(locale);
         if (map != null) {
-            Iterator i = map.values().iterator();
-            while (i.hasNext()) {
-                ComponentDefinition definition = (ComponentDefinition) i.next();
+            for (ComponentDefinition definition : map.values()) {
                 resolveInheritance(definition, locale);
             }  // end loop
         }
@@ -150,7 +148,7 @@
      */
     public void reset() {
         this.baseDefinitions = new HashMap<String, ComponentDefinition>();
-        this.localeSpecificDefinitions = new HashMap<Locale, Map>();
+        this.localeSpecificDefinitions = new HashMap<Locale, Map<String, ComponentDefinition>>();
     }
 
     /**
@@ -168,6 +166,7 @@
                     ComponentDefinition subDef =
                         getDefinitionByAttribute(attr);
                     attr.setAttributes(subDef.getAttributes());
+                    attr.setType("definition");
                 }
             }
         }
@@ -189,32 +188,19 @@
 
     public void resolveAttributeDependencies(Locale locale) {
         resolveAttributeDependencies(); // FIXME Is it necessary?
-        Map defsMap = (Map) localeSpecificDefinitions.get(locale);
+        Map<String, ComponentDefinition> defsMap = localeSpecificDefinitions.get(locale);
         if (defsMap == null) {
             return;
         }
 
-        Iterator i = defsMap.values().iterator();
-
-        while (i.hasNext()) {
-            ComponentDefinition def = (ComponentDefinition) i.next();
-            Map attributes = def.getAttributes();
-            Iterator j = attributes.values().iterator();
-            while (j.hasNext()) {
-                ComponentAttribute attr = (ComponentAttribute) j.next();
-                if (attr.getType() != null) {
-                    if (attr.getType().equalsIgnoreCase("definition") ||
-                        attr.getType().equalsIgnoreCase("instance")) {
-                        ComponentDefinition subDef = getDefinitionByAttribute(
-                            attr, locale);
-                        attr.setValue(subDef);
-                    }
-                } else {
-                    ComponentDefinition subDef = getDefinitionByAttribute(attr,
-                        locale);
-                    if (subDef != null) {
-                        attr.setValue(subDef);
-                    }
+        for (ComponentDefinition def : defsMap.values()) {
+            Map<String, ComponentAttribute> attributes = def.getAttributes();
+            for (ComponentAttribute attr : attributes.values()) {
+                if (isDefinitionType(attr)) {
+                    ComponentDefinition subDef =
+                        getDefinitionByAttribute(attr, locale);
+                    attr.setAttributes(subDef.getAttributes());
+                    attr.setType("definition");
                 }
             }
         }

Modified: struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/definition/TestComponentDefinitions.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/definition/TestComponentDefinitions.java?view=diff&rev=488005&r1=488004&r2=488005
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/definition/TestComponentDefinitions.java (original)
+++ struts/sandbox/trunk/tiles/tiles-core/src/test/java/org/apache/tiles/definition/TestComponentDefinitions.java Sun Dec 17 08:48:28 2006
@@ -266,19 +266,15 @@
         
         Object newAttr = newDef.getAttribute("attr1");
         assertNotNull("Dependent attribute not found.", newAttr);
-        assertTrue("Dependent attribute incorrect type.", 
-                newAttr instanceof ComponentDefinition);
         
         newDef = definitions.getDefinition("parent.notype.def1");
         assertNotNull("Parent definition not found.", newDef);
         
         newAttr = newDef.getAttribute("attr1");
         assertNotNull("Dependent attribute not found.", newAttr);
-        assertTrue("Dependent attribute incorrect type.", 
-                newAttr instanceof ComponentDefinition);
         
         assertEquals("Incorrect dependent attribute name.", "tiles.def2",
-                ((ComponentDefinition) newAttr).getName());
+                newAttr);
         
         // Part of the test for locale-specific definitions.
         newDef = definitions.getDefinition("parent.def1", Locale.ITALIAN);
@@ -286,8 +282,6 @@
         
         newAttr = newDef.getAttribute("attr1");
         assertNotNull("Dependent attribute not found.", newAttr);
-        assertTrue("Dependent attribute incorrect type.", 
-                newAttr instanceof ComponentDefinition);
         
         newDef = definitions.getDefinition("parent.notype.def1",
         		Locale.ITALIAN);
@@ -295,10 +289,8 @@
         
         newAttr = newDef.getAttribute("attr1");
         assertNotNull("Dependent attribute not found.", newAttr);
-        assertTrue("Dependent attribute incorrect type.", 
-                newAttr instanceof ComponentDefinition);
         
         assertEquals("Incorrect dependent attribute name.", "tiles.def2",
-                ((ComponentDefinition) newAttr).getName());
+                newAttr);
     }
 }