Author: apetrelli
Date: Wed Feb 25 11:17:37 2009
New Revision: 747748

URL: http://svn.apache.org/viewvc?rev=747748&view=rev
Log:
TILES-373
Added "execute" method to models.

Modified:
    
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/AddAttributeModel.java
    
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/DefinitionModel.java
    
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/GetAsStringModel.java
    
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/InsertAttributeModel.java
    
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/InsertDefinitionModel.java
    
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/InsertTemplateModel.java
    
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/PutAttributeModel.java

Modified: 
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/AddAttributeModel.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/AddAttributeModel.java?rev=747748&r1=747747&r2=747748&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/AddAttributeModel.java
 (original)
+++ 
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/AddAttributeModel.java
 Wed Feb 25 11:17:37 2009
@@ -14,9 +14,22 @@
     
     public void end(Stack<Object> composeStack, Object value,
             String expression, String body, String role, String type) {
+        Attribute attribute = (Attribute) composeStack.pop();
+        addAttributeToList(attribute, composeStack, value, expression, body,
+                role, type);
+    }
+
+    public void execute(Stack<Object> composeStack, Object value,
+            String expression, String body, String role, String type) {
+        addAttributeToList(new Attribute(), composeStack, value, expression,
+                body, role, type);
+    }
+    
+    private void addAttributeToList(Attribute attribute,
+            Stack<Object> composeStack, Object value, String expression,
+            String body, String role, String type) {
         ListAttribute listAttribute = (ListAttribute) ComposeStackUtil
                 .findAncestorWithClass(composeStack, ListAttribute.class);
-        Attribute attribute = (Attribute) composeStack.pop();
         if(value != null) {
             attribute.setValue(value);
         } else if (attribute.getValue() == null && body != null) {

Modified: 
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/DefinitionModel.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/DefinitionModel.java?rev=747748&r1=747747&r2=747748&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/DefinitionModel.java
 (original)
+++ 
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/DefinitionModel.java
 Wed Feb 25 11:17:37 2009
@@ -10,6 +10,28 @@
 
     public void start(Stack<Object> composeStack, String name, String template,
             String role, String extendsParam, String preparer) {
+        Definition definition = createDefinition(name, template, role,
+                extendsParam, preparer);
+        composeStack.push(definition);
+    }
+    
+    public void end(MutableTilesContainer container,
+            Stack<Object> composeStack, String name, Object... requestItems) {
+        Definition definition = (Definition) composeStack.pop();
+        registerDefinition(definition, container, composeStack, requestItems);
+    }
+    
+    public void execute(MutableTilesContainer container,
+            Stack<Object> composeStack, String name, String template,
+            String role, String extendsParam, String preparer,
+            Object... requestItems) {
+        Definition definition = createDefinition(name, template, role,
+                extendsParam, preparer);
+        registerDefinition(definition, container, composeStack, requestItems);
+    }
+
+    private Definition createDefinition(String name, String template,
+            String role, String extendsParam, String preparer) {
         Definition definition = new Definition();
         definition.setName(name);
         Attribute templateAttribute = Attribute
@@ -18,12 +40,12 @@
         definition.setTemplateAttribute(templateAttribute);
         definition.setExtends(extendsParam);
         definition.setPreparer(preparer);
-        composeStack.push(definition);
+        return definition;
     }
-    
-    public void end(MutableTilesContainer container,
-            Stack<Object> composeStack, String name, Object... requestItems) {
-        Definition definition = (Definition) composeStack.pop();
+
+    private void registerDefinition(Definition definition,
+            MutableTilesContainer container, Stack<Object> composeStack,
+            Object... requestItems) {
         container.register(definition, requestItems);
         
         if (composeStack.isEmpty()) {

Modified: 
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/GetAsStringModel.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/GetAsStringModel.java?rev=747748&r1=747747&r2=747748&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/GetAsStringModel.java
 (original)
+++ 
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/GetAsStringModel.java
 Wed Feb 25 11:17:37 2009
@@ -23,20 +23,46 @@
             boolean ignore, String preparer, String role, Object defaultValue,
             String defaultValueRole, String defaultValueType, String name,
             Attribute value, Object... requestItems) {
+        Attribute attribute = resolveAttribute(container, ignore, preparer,
+                role, defaultValue, defaultValueRole, defaultValueType, name,
+                value, requestItems);
+        composeStack.push(attribute);
+    }
+    
+    public void end(Stack<Object> composeStack, TilesContainer container,
+            Writer writer, boolean ignore, Object... requestItems)
+            throws IOException {
+        Attribute attribute = (Attribute) composeStack.pop();
+        renderAttribute(attribute, container, writer, ignore, requestItems);
+    }
+
+    public void execute(TilesContainer container, Writer writer,
+            boolean ignore, String preparer, String role, Object defaultValue,
+            String defaultValueRole, String defaultValueType, String name,
+            Attribute value, Object... requestItems) throws IOException {
+        Attribute attribute = resolveAttribute(container, ignore, preparer,
+                role, defaultValue, defaultValueRole, defaultValueType, name,
+                value, requestItems);
+        renderAttribute(attribute, container, writer, ignore, requestItems);
+    }
+
+    private Attribute resolveAttribute(TilesContainer container,
+            boolean ignore, String preparer, String role, Object defaultValue,
+            String defaultValueRole, String defaultValueType, String name,
+            Attribute value, Object... requestItems) {
         if (preparer != null) {
             container.prepare(preparer, requestItems);
         }
         Attribute attribute = attributeResolver.computeAttribute(container,
                 value, name, role, ignore, defaultValue,
                 defaultValueRole, defaultValueType, requestItems);
-        composeStack.push(attribute);
         container.startContext(requestItems);
+        return attribute;
     }
-    
-    public void end(Stack<Object> composeStack, TilesContainer container,
+
+    private void renderAttribute(Attribute attribute, TilesContainer container,
             Writer writer, boolean ignore, Object... requestItems)
             throws IOException {
-        Attribute attribute = (Attribute) composeStack.pop();
         if (attribute == null && ignore) {
             return;
         }

Modified: 
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/InsertAttributeModel.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/InsertAttributeModel.java?rev=747748&r1=747747&r2=747748&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/InsertAttributeModel.java
 (original)
+++ 
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/InsertAttributeModel.java
 Wed Feb 25 11:17:37 2009
@@ -22,19 +22,44 @@
             boolean ignore, String preparer, String role, Object defaultValue,
             String defaultValueRole, String defaultValueType, String name,
             Attribute value, Object... requestItems) {
+        Attribute attribute = resolveAttribute(container, ignore, preparer,
+                role, defaultValue, defaultValueRole, defaultValueType, name,
+                value, requestItems);
+        composeStack.push(attribute);
+    }
+
+    public void end(Stack<Object> composeStack, TilesContainer container,
+            boolean ignore, Object... requestItems) throws IOException {
+        Attribute attribute = (Attribute) composeStack.pop();
+        renderAttribute(container, ignore, attribute, requestItems);
+    }
+
+    public void execute(TilesContainer container,
+            boolean ignore, String preparer, String role, Object defaultValue,
+            String defaultValueRole, String defaultValueType, String name,
+            Attribute value, Object... requestItems) throws IOException {
+        Attribute attribute = resolveAttribute(container, ignore, preparer,
+                role, defaultValue, defaultValueRole, defaultValueType, name,
+                value, requestItems);
+        renderAttribute(container, ignore, attribute, requestItems);
+    }
+
+    private Attribute resolveAttribute(TilesContainer container,
+            boolean ignore, String preparer, String role, Object defaultValue,
+            String defaultValueRole, String defaultValueType, String name,
+            Attribute value, Object... requestItems) {
         if (preparer != null) {
             container.prepare(preparer, requestItems);
         }
         Attribute attribute = attributeResolver.computeAttribute(container,
                 value, name, role, ignore, defaultValue,
                 defaultValueRole, defaultValueType, requestItems);
-        composeStack.push(attribute);
         container.startContext(requestItems);
+        return attribute;
     }
 
-    public void end(Stack<Object> composeStack, TilesContainer container,
-            boolean ignore, Object... requestItems) throws IOException {
-        Attribute attribute = (Attribute) composeStack.pop();
+    private void renderAttribute(TilesContainer container, boolean ignore,
+            Attribute attribute, Object... requestItems) throws IOException {
         try {
             if (attribute == null && ignore) {
                 return;

Modified: 
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/InsertDefinitionModel.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/InsertDefinitionModel.java?rev=747748&r1=747747&r2=747748&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/InsertDefinitionModel.java
 (original)
+++ 
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/InsertDefinitionModel.java
 Wed Feb 25 11:17:37 2009
@@ -26,4 +26,11 @@
             container.endContext(requestItems);
         }
     }
+    
+    public void execute(TilesContainer container, String definitionName,
+            String template, String role, String preparer,
+            Object... requestItems) {
+        start(container, requestItems);
+        end(container, definitionName, template, role, preparer, requestItems);
+    }
 }

Modified: 
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/InsertTemplateModel.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/InsertTemplateModel.java?rev=747748&r1=747747&r2=747748&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/InsertTemplateModel.java
 (original)
+++ 
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/InsertTemplateModel.java
 Wed Feb 25 11:17:37 2009
@@ -25,4 +25,10 @@
             container.endContext(requestItems);
         }
     }
+
+    public void execute(TilesContainer container, String template, String role,
+            String preparer, Object... requestItems) {
+        start(container, requestItems);
+        end(container, template, role, preparer, requestItems);
+    }
 }

Modified: 
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/PutAttributeModel.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/PutAttributeModel.java?rev=747748&r1=747747&r2=747748&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/PutAttributeModel.java
 (original)
+++ 
tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/PutAttributeModel.java
 Wed Feb 25 11:17:37 2009
@@ -17,6 +17,21 @@
             String name, Object value, String expression, String body,
             String role, String type, boolean cascade, Object... requestItems) 
{
         Attribute attribute = (Attribute) composeStack.pop();
+        putAttributeInParent(attribute, container, composeStack, name, value,
+                expression, body, role, type, cascade, requestItems);
+    }
+
+    public void execute(TilesContainer container, Stack<Object> composeStack,
+            String name, Object value, String expression, String body,
+            String role, String type, boolean cascade, Object... requestItems) 
{
+        putAttributeInParent(new Attribute(), container, composeStack, name,
+                value, expression, body, role, type, cascade, requestItems);
+    }
+    
+    private void putAttributeInParent(Attribute attribute,
+            TilesContainer container, Stack<Object> composeStack, String name,
+            Object value, String expression, String body, String role,
+            String type, boolean cascade, Object... requestItems) {
         AttributeContext attributeContext = null;
         if (!composeStack.isEmpty()) {
             Object obj = composeStack.peek();


Reply via email to