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);
}
}