You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by dd...@apache.org on 2006/11/09 17:56:45 UTC

svn commit: r472977 - in /struts/sandbox/trunk/tiles: tiles-api/src/main/java/org/apache/tiles/mgmt/ tiles-core/src/main/java/org/apache/tiles/impl/mgmt/ tiles-core/src/main/java/org/apache/tiles/taglib/definition/

Author: ddewolf
Date: Thu Nov  9 08:56:44 2006
New Revision: 472977

URL: http://svn.apache.org/viewvc?view=rev&rev=472977
Log:
Implementing definition tag. Very close to fixing all tags.

Removed:
    struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/taglib/definition/DefinitionTagSupport.java
Modified:
    struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/mgmt/TileDefinition.java
    struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachingTilesContainer.java
    struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/taglib/definition/DefinitionTag.java

Modified: struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/mgmt/TileDefinition.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/mgmt/TileDefinition.java?view=diff&rev=472977&r1=472976&r2=472977
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/mgmt/TileDefinition.java (original)
+++ struts/sandbox/trunk/tiles/tiles-api/src/main/java/org/apache/tiles/mgmt/TileDefinition.java Thu Nov  9 08:56:44 2006
@@ -22,6 +22,7 @@
 import org.apache.tiles.ComponentAttribute;
 
 import java.util.Map;
+import java.util.HashMap;
 
 /**
  * Data transfer object used for registering new
@@ -57,6 +58,10 @@
      */
     protected String preparer = null;
 
+
+    public TileDefinition() {
+        attributes = new HashMap<String, ComponentAttribute>();
+    }
 
     /**
      * Access method for the name property.

Modified: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachingTilesContainer.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachingTilesContainer.java?view=diff&rev=472977&r1=472976&r2=472977
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachingTilesContainer.java (original)
+++ struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/impl/mgmt/CachingTilesContainer.java Thu Nov  9 08:56:44 2006
@@ -20,7 +20,10 @@
 package org.apache.tiles.impl.mgmt;
 
 import org.apache.tiles.TilesException;
+import org.apache.tiles.context.TilesRequestContext;
 import org.apache.tiles.definition.ComponentDefinition;
+import org.apache.tiles.definition.DefinitionsFactoryException;
+import org.apache.tiles.definition.DefinitionsFactory;
 import org.apache.tiles.impl.BasicTilesContainer;
 import org.apache.tiles.mgmt.TileDefinition;
 import org.apache.tiles.mgmt.MutableTilesContainer;
@@ -44,4 +47,19 @@
         mgr.addDefinition(def);
     }
 
+    protected ComponentDefinition getDefinition(String definition,
+                                                TilesRequestContext context)
+        throws DefinitionsFactoryException {
+        return mgr.getDefinition(definition, context);
+    }
+
+
+    public DefinitionsFactory getDefinitionsFactory() {
+        return mgr.getFactory();
+    }
+
+    public void setDefinitionsFactory(DefinitionsFactory definitionsFactory) {
+        super.setDefinitionsFactory(definitionsFactory);
+        mgr.setFactory(definitionsFactory);
+    }
 }

Modified: struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/taglib/definition/DefinitionTag.java
URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/taglib/definition/DefinitionTag.java?view=diff&rev=472977&r1=472976&r2=472977
==============================================================================
--- struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/taglib/definition/DefinitionTag.java (original)
+++ struts/sandbox/trunk/tiles/tiles-core/src/main/java/org/apache/tiles/taglib/definition/DefinitionTag.java Thu Nov  9 08:56:44 2006
@@ -23,9 +23,13 @@
 import org.apache.tiles.taglib.PutTag;
 import org.apache.tiles.ComponentAttribute;
 import org.apache.tiles.TilesContainer;
+import org.apache.tiles.TilesException;
+import org.apache.tiles.mgmt.MutableTilesContainer;
+import org.apache.tiles.mgmt.TileDefinition;
 import org.apache.tiles.access.TilesAccess;
 
 import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
 import java.util.Map;
 import java.util.HashMap;
 
@@ -36,34 +40,21 @@
  *
  * @version $Rev$ $Date$
  */
-public class DefinitionTag extends DefinitionTagSupport
+public class DefinitionTag extends TagSupport
     implements PutTagParent {
 
-    /* JSP Tag attributes */
-    /**
-     * TileDefinition identifier.
-     */
-    private String name = null;
 
-    /**
-     * Scope into which definition will be saved.
-     */
-    private String scope = null;
+    private String name;
+    private String template;
+    private String extend;
+    private String role;
+    private String preparer;
 
-    /**
-     * Extends attribute value.
-     */
-    private String extendsDefinition = null;
-
-    private TilesContainer container;
 
+    private MutableTilesContainer container;
     private Map<String, ComponentAttribute> attributes;
 
 
-    public DefinitionTag() {
-        attributes = new HashMap<String, ComponentAttribute>();
-    }
-
     public String getName() {
         return name;
     }
@@ -72,24 +63,60 @@
         this.name = name;
     }
 
-    public String getScope() {
-        return scope;
+    public String getTemplate() {
+        return template;
+    }
+
+    public void setTemplate(String template) {
+        this.template = template;
+    }
+
+    public String getExtends() {
+        return extend;
+    }
+
+    public void setExtends(String extend) {
+        this.extend = extend;
+    }
+
+    public String getRole() {
+        return role;
     }
 
-    public void setScope(String scope) {
-        this.scope = scope;
+    public void setRole(String role) {
+        this.role = role;
     }
 
-    public String getExtendsDefinition() {
-        return extendsDefinition;
+    public String getPreparer() {
+        return preparer;
     }
 
-    public void setExtendsDefinition(String extendsDefinition) {
-        this.extendsDefinition = extendsDefinition;
+    public void setPreparer(String preparer) {
+        this.preparer = preparer;
     }
 
-    public int doStartTag() {
-        container = TilesAccess.getContainer(pageContext.getServletContext());
+    public void release() {
+        super.release();
+        name = null;
+        template = null;
+        extend = null;
+        role = null;
+        preparer = null;
+        attributes.clear();
+    }
+
+    public int doStartTag() throws JspException {
+        attributes = new HashMap<String, ComponentAttribute>();
+
+        TilesContainer c =
+            TilesAccess.getContainer(pageContext.getServletContext());
+
+        if(!(c instanceof MutableTilesContainer)) {
+            throw new JspException("Unable to define definition for a " +
+                "container which does not implement MutableTilesContainer");
+        }
+
+        container = (MutableTilesContainer)c;
         return EVAL_BODY_INCLUDE;
     }
 
@@ -98,9 +125,19 @@
      *
      * @return
      */
-    public int doEndTag() {
-        for(Map.Entry<String, ComponentAttribute> entry : attributes.entrySet()) {
-//            container.addDefinition(entry.getKey(), entry.getValue());
+    public int doEndTag() throws JspException {
+        TileDefinition d = new TileDefinition();
+        d.setName(name);
+        d.setTemplate(template);
+        d.setExtends(extend);
+        d.setRole(role);
+        d.setPreparer(preparer);
+        d.getAttributes().putAll(attributes);
+        
+        try {
+            container.register(d);
+        } catch (TilesException e) {
+            throw new JspException("Unable to add definition. " ,e);
         }
         return EVAL_PAGE;
     }
@@ -109,17 +146,11 @@
      * Reset member values for reuse. This method calls super.release(),
      * which invokes TagSupport.release(), which typically does nothing.
      */
-    public void release() {
-        super.release();
-        name = null;
-        scope = null;
-        extendsDefinition = null;
-        attributes.clear();
-    }
 
     public void processNestedTag(PutTag nestedTag) throws JspException {
         ComponentAttribute attr = new ComponentAttribute(nestedTag.getValue(),
             nestedTag.getRole(), nestedTag.getType());
+        attr.setName(nestedTag.getName());
         attributes.put(nestedTag.getName(), attr);
     }
 }