You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tiles.apache.org by ap...@apache.org on 2008/02/23 12:20:34 UTC
svn commit: r630422 [1/2] - in /tiles/framework/trunk:
tiles-api/src/main/java/org/apache/tiles/
tiles-api/src/test/java/org/apache/tiles/
tiles-compat/src/test/java/org/apache/tiles/compat/definition/digester/
tiles-core/src/main/java/org/apache/tiles...
Author: apetrelli
Date: Sat Feb 23 03:20:20 2008
New Revision: 630422
URL: http://svn.apache.org/viewvc?rev=630422&view=rev
Log:
TILES-189
Created the "renderer" string property in Attribute.
TILES-190
Attribute renderer created.
JUnit test needed.
TILES-191
Untyped attribute renderer created.
JUnit test needed.
TILES-249
Created attribute renderer factory.
JUnit test needed.
TILES-250
The renderer factory is used inside the BasicTilesContainer.
All existing JUnit and Selenium tests pass.
Added:
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/TilesRuntimeException.java (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/awareness/
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/awareness/TilesContainerAware.java (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/awareness/TilesContextFactoryAware.java (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/awareness/package.html (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/AttributeRenderer.java (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/RendererException.java (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/RendererFactory.java (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/AbstractBaseAttributeRenderer.java (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/BasicRendererFactory.java (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/DefinitionAttributeRenderer.java (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/StringAttributeRenderer.java (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/TemplateAttributeRenderer.java (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/UntypedAttributeRenderer.java (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/package.html (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/package.html (with props)
Modified:
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/Attribute.java
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/Definition.java
tiles/framework/trunk/tiles-api/src/test/java/org/apache/tiles/TestDefinition.java
tiles/framework/trunk/tiles-compat/src/test/java/org/apache/tiles/compat/definition/digester/TestCompatibilityDigesterDefinitionsReader.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/config/tiles-defs-2.1.xml
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/TestDefinitions.java
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/TestUrlDefinitionsFactory.java
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/AddListAttributeTag.java
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/PutListAttributeTag.java
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/RenderTagSupport.java
tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/definition/DefinitionTag.java
Modified: tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/Attribute.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/Attribute.java?rev=630422&r1=630421&r2=630422&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/Attribute.java (original)
+++ tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/Attribute.java Sat Feb 23 03:20:20 2008
@@ -37,6 +37,9 @@
/**
* Attribute types.
+ *
+ * @deprecated Use {@link Attribute#setRenderer(String)} and
+ * {@link Attribute#getRenderer()}.
*/
public static enum AttributeType {
/**
@@ -122,10 +125,10 @@
protected Object value = null;
/**
- * The type of the attribute. It can be <code>string</code>,
- * <code>template</code>, <code>definition</code>.
+ * The renderer name of the attribute. Default names are <code>string</code>,
+ * <code>template</code>, <code>definition</code>, <code>object</code>.
*/
- private AttributeType type = null;
+ private String renderer = null;
/**
* The name of the attribute. If it is <code>null</code>, it should be used
@@ -159,8 +162,8 @@
public Attribute(Attribute attribute) {
this.name = attribute.name;
this.roles = attribute.roles;
- this.type = attribute.type;
this.value = attribute.getValue();
+ this.renderer = attribute.renderer;
}
/**
@@ -189,12 +192,28 @@
* Constructor.
*
* @param value Object to store.
- * @param role Asociated role.
- * @param type Attribute type.
+ * @param role Associated role.
+ * @param type Attribute type.
+ * @deprecated Use {@link Attribute#Attribute(Object, String, String)}.
*/
+ @Deprecated
public Attribute(Object value, String role, AttributeType type) {
this.value = value;
- this.type = type;
+ setType(type);
+ setRole(role);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param value Object to store.
+ * @param role Associated role.
+ * @param rendererName The renderer name.
+ * @since 2.1.0
+ */
+ public Attribute(Object value, String role, String rendererName) {
+ this.value = value;
+ this.renderer = rendererName;
setRole(role);
}
@@ -203,14 +222,16 @@
*
* @param name name of the attribute
* @param value Object to store.
- * @param role Asociated role.
- * @param type Attribute type.
+ * @param role Asociated role.
+ * @param type Attribute type.
+ * @deprecated Use
+ * {@link Attribute#Attribute(Object, String, String)))}.
*/
public Attribute(String name, Object value, String role,
AttributeType type) {
this.name = name;
this.value = value;
- this.type = type;
+ setType(type);
setRole(role);
}
@@ -304,18 +325,40 @@
*
* @return The attribute type. It can be <code>string</code>,
* <code>template</code>, <code>definition</code>, <code>object</code>.
+ * @deprecated Use {@link Attribute#getRenderer()}.
*/
public AttributeType getType() {
- return type;
+ return AttributeType.getType(renderer);
}
/**
* Sets the type of this attribute.
*
* @param type The attribute type.
+ * @deprecated Use {@link Attribute#setRenderer(String))}.
*/
public void setType(AttributeType type) {
- this.type = type;
+ this.renderer = type.toString();
+ }
+
+ /**
+ * Returns the renderer name to use.
+ *
+ * @return The renderer name.
+ * @since 2.1.0
+ */
+ public String getRenderer() {
+ return renderer;
+ }
+
+ /**
+ * Sets the renderer name to use.
+ *
+ * @param rendererName The renderer.
+ * @since 2.1.0
+ */
+ public void setRenderer(String rendererName) {
+ this.renderer = rendererName;
}
/**
Modified: tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/Definition.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/Definition.java?rev=630422&r1=630421&r2=630422&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/Definition.java (original)
+++ tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/Definition.java Sat Feb 23 03:20:20 2008
@@ -26,8 +26,6 @@
import java.util.Map;
import java.util.Set;
-import org.apache.tiles.Attribute.AttributeType;
-
/**
* A definition, i.e. a template with (completely or not) filled attributes.
* Attributes of a template can be defined with the help of this class.<br>
@@ -260,7 +258,8 @@
*/
@Deprecated
public void put(String name, Object content, String role) {
- put(name, content, null, role);
+ Attribute attribute = new Attribute(content, role, (String) null);
+ putAttribute(name, attribute);
}
/**
@@ -275,7 +274,8 @@
* or {@link AttributeContext#putAttribute(String, Attribute, boolean)}.
*/
@Deprecated
- public void put(String name, Object content, AttributeType type, String role) {
+ public void put(String name, Object content,
+ org.apache.tiles.Attribute.AttributeType type, String role) {
// Is there a type set ?
// First check direct attribute, and translate it to a valueType.
// Then, evaluate valueType, and create requested typed attribute.
Added: tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/TilesRuntimeException.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/TilesRuntimeException.java?rev=630422&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/TilesRuntimeException.java (added)
+++ tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/TilesRuntimeException.java Sat Feb 23 03:20:20 2008
@@ -0,0 +1,79 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tiles;
+
+/**
+ * Root class for all Tiles runtime exceptions.
+ *
+ * @version $Rev$ $Date$
+ * @since 2.1.0
+ */
+public class TilesRuntimeException extends RuntimeException {
+
+ /**
+ * Constructor.
+ * @since 2.1.0
+ */
+ public TilesRuntimeException() {
+ super();
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param message The error or warning message.
+ * @since 2.1.0
+ */
+ public TilesRuntimeException(String message) {
+ super(message);
+ }
+
+ /**
+ * Create a new <code>TilesRuntimeException</code> wrapping an existing
+ * exception. <p/>
+ * <p>
+ * The existing exception will be embedded in the new one, and its message
+ * will become the default message for the TilesException.
+ * </p>
+ *
+ * @param e The exception to be wrapped.
+ * @since 2.1.0
+ */
+ public TilesRuntimeException(Exception e) {
+ super(e);
+ }
+
+ /**
+ * Create a new <code>TilesRuntimeException</code> from an existing
+ * exception. <p/>
+ * <p>
+ * The existing exception will be embedded in the new one, but the new
+ * exception will have its own message.
+ * </p>
+ *
+ * @param message The detail message.
+ * @param e The exception to be wrapped.
+ * @since 2.1.0
+ */
+ public TilesRuntimeException(String message, Exception e) {
+ super(message, e);
+ }
+}
Propchange: tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/TilesRuntimeException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/TilesRuntimeException.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: tiles/framework/trunk/tiles-api/src/test/java/org/apache/tiles/TestDefinition.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-api/src/test/java/org/apache/tiles/TestDefinition.java?rev=630422&r1=630421&r2=630422&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-api/src/test/java/org/apache/tiles/TestDefinition.java (original)
+++ tiles/framework/trunk/tiles-api/src/test/java/org/apache/tiles/TestDefinition.java Sat Feb 23 03:20:20 2008
@@ -22,8 +22,6 @@
package org.apache.tiles;
-import org.apache.tiles.Attribute.AttributeType;
-
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
@@ -71,13 +69,14 @@
Definition def = new Definition();
def.setName("test1");
def.setTemplate("/page1.jsp");
- Attribute attr1 = new Attribute("test.definition.name", null, AttributeType.DEFINITION);
+ Attribute attr1 = new Attribute("test.definition.name", null,
+ "definition");
def.putAttribute("attr1", attr1);
attr1 = def.getAttribute("attr1");
assertNotNull("Null attribute.", attr1);
- assertTrue("Wrong attribute type",
- attr1.getType() == AttributeType.DEFINITION);
+ assertTrue("Wrong attribute type", "definition".equals(attr1
+ .getRenderer()));
}
/**
Modified: tiles/framework/trunk/tiles-compat/src/test/java/org/apache/tiles/compat/definition/digester/TestCompatibilityDigesterDefinitionsReader.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-compat/src/test/java/org/apache/tiles/compat/definition/digester/TestCompatibilityDigesterDefinitionsReader.java?rev=630422&r1=630421&r2=630422&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-compat/src/test/java/org/apache/tiles/compat/definition/digester/TestCompatibilityDigesterDefinitionsReader.java (original)
+++ tiles/framework/trunk/tiles-compat/src/test/java/org/apache/tiles/compat/definition/digester/TestCompatibilityDigesterDefinitionsReader.java Sat Feb 23 03:20:20 2008
@@ -51,6 +51,11 @@
.getLog(TestCompatibilityDigesterDefinitionsReader.class);
/**
+ * The definitions reader.
+ */
+ private DefinitionsReader reader;
+
+ /**
* Creates a new instance of TestDigesterDefinitionsReader.
*
* @param name The name of the test.
@@ -67,6 +72,13 @@
return new TestSuite(TestCompatibilityDigesterDefinitionsReader.class);
}
+ /** {@inheritDoc} */
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ reader = new CompatibilityDigesterDefinitionsReader();
+ }
+
/**
* Tests the read method to read Tiles 1.1 files.
*
@@ -74,7 +86,6 @@
* @throws IOException If an I/O exception happens.
*/
public void testReadOldFormat() throws DefinitionsFactoryException, IOException {
- DefinitionsReader reader = new CompatibilityDigesterDefinitionsReader();
reader.init(new HashMap<String, String>());
URL configFile = this.getClass().getClassLoader().getResource(
@@ -101,7 +112,6 @@
* @throws IOException If an I/O exception happens.
*/
public void testReadNewFormat() throws DefinitionsFactoryException, IOException {
- DefinitionsReader reader = new CompatibilityDigesterDefinitionsReader();
reader.init(new HashMap<String, String>());
URL configFile = this.getClass().getClassLoader().getResource(
@@ -127,7 +137,6 @@
*/
public void testRead21Version() {
try {
- DefinitionsReader reader = new CompatibilityDigesterDefinitionsReader();
reader.init(new HashMap<String, String>());
URL configFile = this.getClass().getClassLoader().getResource(
@@ -159,8 +168,6 @@
*/
public void testNoInit() {
try {
- DefinitionsReader reader = new CompatibilityDigesterDefinitionsReader();
-
// What happens if we don't call init?
// reader.init(new HashMap());
@@ -187,12 +194,7 @@
*/
public void testBadSource() {
try {
- // Create Digester Reader.
- DefinitionsReader reader = new CompatibilityDigesterDefinitionsReader();
- Map<String, String> params = new HashMap<String, String>();
-
- // Initialize reader.
- reader.init(params);
+ reader.init(new HashMap<String, String>());
// Read definitions.
reader.read(new String("Bad Input"));
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/awareness/TilesContainerAware.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/awareness/TilesContainerAware.java?rev=630422&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/awareness/TilesContainerAware.java (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/awareness/TilesContainerAware.java Sat Feb 23 03:20:20 2008
@@ -0,0 +1,41 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tiles.awareness;
+
+import org.apache.tiles.TilesContainer;
+
+/**
+ * It represents an object that can have a reference to the
+ * {@link TilesContainer}.
+ *
+ * @version $Rev$ $Date$
+ * @since 2.1.0
+ */
+public interface TilesContainerAware {
+
+ /**
+ * Sets the Tiles container.
+ *
+ * @param container The Tiles container.
+ * @since 2.1.0
+ */
+ void setContainer(TilesContainer container);
+}
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/awareness/TilesContainerAware.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/awareness/TilesContainerAware.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/awareness/TilesContextFactoryAware.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/awareness/TilesContextFactoryAware.java?rev=630422&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/awareness/TilesContextFactoryAware.java (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/awareness/TilesContextFactoryAware.java Sat Feb 23 03:20:20 2008
@@ -0,0 +1,50 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tiles.awareness;
+
+import org.apache.tiles.TilesApplicationContext;
+import org.apache.tiles.context.TilesContextFactory;
+
+/**
+ * It represents an object that can have a reference to the
+ * {@link TilesContextFactory} and to the {@link TilesApplicationContext}.
+ *
+ * @version $Rev$ $Date$
+ * @since 2.1.0
+ */
+public interface TilesContextFactoryAware {
+
+ /**
+ * Sets the Tiles context factory.
+ *
+ * @param contextFactory The Tiles context factory.
+ * @since 2.1.0
+ */
+ void setContextFactory(TilesContextFactory contextFactory);
+
+ /**
+ * Sets the Tiles application context.
+ *
+ * @param applicationContext The Tiles application context.
+ * @since 2.1.0
+ */
+ void setApplicationContext(TilesApplicationContext applicationContext);
+}
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/awareness/TilesContextFactoryAware.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/awareness/TilesContextFactoryAware.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/awareness/package.html
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/awareness/package.html?rev=630422&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/awareness/package.html (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/awareness/package.html Sat Feb 23 03:20:20 2008
@@ -0,0 +1,30 @@
+<!--
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+-->
+<html>
+<head>
+ <title>Tiles interfaces for injection of dependencies</title>
+</head>
+<body>
+Interfaces that let the Tiles engine to inject dependencies to its objects.
+</body>
+</html>
\ No newline at end of file
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/awareness/package.html
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/awareness/package.html
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java?rev=630422&r1=630421&r2=630422&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java (original)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java Sat Feb 23 03:20:20 2008
@@ -25,7 +25,6 @@
import org.apache.commons.digester.Rule;
import org.apache.tiles.Attribute;
import org.apache.tiles.Definition;
-import org.apache.tiles.Attribute.AttributeType;
import org.apache.tiles.context.ListAttribute;
import org.apache.tiles.definition.DefinitionsFactoryException;
import org.apache.tiles.definition.DefinitionsReader;
@@ -157,8 +156,7 @@
Attribute attribute = (Attribute) digester.peek();
attribute.setValue(attributes.getValue("value"));
attribute.setRole(attributes.getValue("role"));
- attribute.setType(AttributeType
- .getType(attributes.getValue("type")));
+ attribute.setRenderer(attributes.getValue("type"));
}
}
Modified: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java?rev=630422&r1=630421&r2=630422&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java (original)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java Sat Feb 23 03:20:20 2008
@@ -23,6 +23,8 @@
import org.apache.tiles.TilesApplicationContext;
import org.apache.tiles.TilesContainer;
import org.apache.tiles.TilesException;
+import org.apache.tiles.awareness.TilesContainerAware;
+import org.apache.tiles.awareness.TilesContextFactoryAware;
import org.apache.tiles.context.ChainedTilesContextFactory;
import org.apache.tiles.context.TilesContextFactory;
import org.apache.tiles.definition.DefinitionsFactory;
@@ -32,6 +34,8 @@
import org.apache.tiles.mgmt.MutableTilesContainer;
import org.apache.tiles.preparer.BasicPreparerFactory;
import org.apache.tiles.preparer.PreparerFactory;
+import org.apache.tiles.renderer.RendererFactory;
+import org.apache.tiles.renderer.impl.BasicRendererFactory;
import org.apache.tiles.util.ClassUtil;
import java.lang.reflect.Method;
@@ -82,6 +86,12 @@
public static final String PREPARER_FACTORY_INIT_PARAM =
"org.apache.tiles.preparer.PreparerFactory";
+ /**
+ * Initialization parameter that represents the renderer factory class name.
+ * @since 2.1.0
+ */
+ public static final String RENDERER_FACTORY_INIT_PARAM =
+ "org.apache.tiles.renderer.RendererFactory";
/**
* Default configuration parameters.
@@ -94,6 +104,7 @@
DEFAULTS.put(CONTEXT_FACTORY_INIT_PARAM, ChainedTilesContextFactory.class.getName());
DEFAULTS.put(DEFINITIONS_FACTORY_INIT_PARAM, UrlDefinitionsFactory.class.getName());
DEFAULTS.put(PREPARER_FACTORY_INIT_PARAM, BasicPreparerFactory.class.getName());
+ DEFAULTS.put(RENDERER_FACTORY_INIT_PARAM, BasicRendererFactory.class.getName());
}
/**
@@ -255,20 +266,35 @@
(DefinitionsFactory) createFactory(configuration,
DEFINITIONS_FACTORY_INIT_PARAM);
- PreparerFactory prepFactory =
- (PreparerFactory) createFactory(configuration,
- PREPARER_FACTORY_INIT_PARAM);
+ RendererFactory rendererFactory =
+ (RendererFactory) createFactory(configuration,
+ RENDERER_FACTORY_INIT_PARAM);
contextFactory.init(configuration);
TilesApplicationContext tilesContext =
contextFactory.createApplicationContext(context);
+ if (rendererFactory instanceof TilesContextFactoryAware) {
+ ((TilesContextFactoryAware) rendererFactory)
+ .setContextFactory(contextFactory);
+ ((TilesContextFactoryAware) rendererFactory)
+ .setApplicationContext(tilesContext);
+ }
+
+ if (rendererFactory instanceof TilesContainerAware) {
+ ((TilesContainerAware) rendererFactory).setContainer(container);
+ }
+
+ PreparerFactory prepFactory =
+ (PreparerFactory) createFactory(configuration,
+ PREPARER_FACTORY_INIT_PARAM);
+
container.setDefinitionsFactory(defsFactory);
container.setContextFactory(contextFactory);
container.setPreparerFactory(prepFactory);
container.setApplicationContext(tilesContext);
+ container.setRendererFactory(rendererFactory);
}
-
/**
* Creates a factory instance.
Modified: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java?rev=630422&r1=630421&r2=630422&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java (original)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java Sat Feb 23 03:20:20 2008
@@ -29,7 +29,6 @@
import org.apache.tiles.TilesApplicationContext;
import org.apache.tiles.TilesContainer;
import org.apache.tiles.TilesException;
-import org.apache.tiles.Attribute.AttributeType;
import org.apache.tiles.context.TilesContextFactory;
import org.apache.tiles.context.TilesRequestContext;
import org.apache.tiles.definition.DefinitionsFactory;
@@ -38,6 +37,9 @@
import org.apache.tiles.preparer.NoSuchPreparerException;
import org.apache.tiles.preparer.PreparerFactory;
import org.apache.tiles.preparer.ViewPreparer;
+import org.apache.tiles.renderer.AttributeRenderer;
+import org.apache.tiles.renderer.RendererException;
+import org.apache.tiles.renderer.RendererFactory;
import java.io.IOException;
import java.io.Writer;
@@ -103,6 +105,11 @@
private PreparerFactory preparerFactory;
/**
+ * The renderer factory.
+ */
+ private RendererFactory rendererFactory;
+
+ /**
* The Tiles context factory.
*/
private TilesContextFactory contextFactory;
@@ -125,6 +132,12 @@
LOG.info("Initializing Tiles2 container. . .");
}
+ if (rendererFactory != null) {
+ rendererFactory.init(initParameters);
+ } else {
+ throw new IllegalStateException("RendererFactory not specified");
+ }
+
//Everything is now initialized. We will populate
// our definitions
initializeDefinitionsFactory(definitionsFactory, getResourceString(),
@@ -226,6 +239,16 @@
this.preparerFactory = preparerFactory;
}
+ /**
+ * Sets the renderer instance factory.
+ *
+ * @param rendererFactory the renderer instance factory for this container.
+ * @since 2.1.0
+ */
+ public void setRendererFactory(RendererFactory rendererFactory) {
+ this.rendererFactory = rendererFactory;
+ }
+
/** {@inheritDoc} */
public void prepare(String preparer, Object... requestItems)
throws TilesException {
@@ -249,44 +272,18 @@
/** {@inheritDoc} */
public void render(Attribute attr, Writer writer, Object... requestItems)
throws TilesException, IOException {
- TilesRequestContext request = getRequestContext(requestItems);
-
if (attr == null) {
- throw new TilesException("Cannot render a null attribute");
+ throw new RendererException("Cannot render a null attribute");
}
- if (!isPermitted(request, attr.getRoles())) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Access to attribute denied. User not in role '"
- + attr.getRoles() + "'");
- }
- return;
- }
-
- AttributeType type = attr.getType();
- if (type == null) {
- type = calculateType(attr, request);
- attr.setType(type);
- }
-
- switch (type) {
- case OBJECT:
- throw new TilesException(
- "Cannot insert an attribute of 'object' type");
- case STRING:
- writer.write(attr.getValue().toString());
- break;
- case DEFINITION:
- render(request, attr.getValue().toString());
- break;
- case TEMPLATE:
- request.dispatch(attr.getValue().toString());
- break;
- default: // should not happen
- throw new TilesException(
- "Unrecognized type for attribute value "
- + attr.getValue());
+ AttributeRenderer renderer = rendererFactory.getRenderer(attr
+ .getRenderer());
+ if (renderer == null) {
+ throw new RendererException(
+ "Cannot render an attribute with renderer name "
+ + attr.getRenderer());
}
+ renderer.render(attr, writer, requestItems);
}
/** {@inheritDoc} */
@@ -384,6 +381,10 @@
protected void initializeDefinitionsFactory(
DefinitionsFactory definitionsFactory, String resourceString,
Map<String, String> initParameters) throws TilesException {
+ if (rendererFactory == null) {
+ throw new IllegalStateException("No RendererFactory found");
+ }
+
List<String> resources = getResourceNames(resourceString);
try {
@@ -620,34 +621,6 @@
} finally {
popContext(request);
}
- }
-
- /**
- * Calculates the type of an attribute.
- *
- * @param attr The attribute to check.
- * @param request The request object.
- * @return The calculated attribute type.
- * @throws TilesException If the type is not recognized.
- */
- private AttributeType calculateType(Attribute attr,
- TilesRequestContext request) throws TilesException {
- AttributeType type;
- Object valueContent = attr.getValue();
- if (valueContent instanceof String) {
- String valueString = (String) valueContent;
- if (isValidDefinition(request, valueString)) {
- type = AttributeType.DEFINITION;
- } else if (valueString.startsWith("/")) {
- type = AttributeType.TEMPLATE;
- } else {
- type = AttributeType.STRING;
- }
- } else {
- type = AttributeType.OBJECT;
- }
-
- return type;
}
/**
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/AttributeRenderer.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/AttributeRenderer.java?rev=630422&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/AttributeRenderer.java (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/AttributeRenderer.java Sat Feb 23 03:20:20 2008
@@ -0,0 +1,50 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tiles.renderer;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import org.apache.tiles.Attribute;
+import org.apache.tiles.TilesException;
+
+/**
+ * An object that can render an attribute. For each attribute, if it needs to be
+ * rendered, has an associated renderer.
+ *
+ * @version $Rev$ $Date$
+ * @since 2.1.0
+ */
+public interface AttributeRenderer {
+
+ /**
+ * Renders an attribute.
+ *
+ * @param attribute The attribute to render.
+ * @param writer The writer to use.
+ * @param requestItems The request items.
+ * @throws IOException If something goes wrong during rendition.
+ * @throws TilesException If something goes wrong in Tiles engine.
+ * @since 2.1.0
+ */
+ void render(Attribute attribute, Writer writer, Object... requestItems)
+ throws IOException, TilesException;
+}
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/AttributeRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/AttributeRenderer.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/RendererException.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/RendererException.java?rev=630422&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/RendererException.java (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/RendererException.java Sat Feb 23 03:20:20 2008
@@ -0,0 +1,81 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tiles.renderer;
+
+import org.apache.tiles.TilesException;
+
+/**
+ * Exception for attribute rendition events.
+ *
+ * @version $Rev$ $Date$
+ * @since 2.1.0
+ */
+public class RendererException extends TilesException {
+
+ /**
+ * Constructor.
+ *
+ * @since 2.1.0
+ */
+ public RendererException() {
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param message The error or warning message.
+ * @since 2.1.0
+ */
+ public RendererException(String message) {
+ super(message);
+ }
+
+ /**
+ * Create a new <code>RendererException</code> wrapping an existing
+ * exception. <p/>
+ * <p>
+ * The existing exception will be embedded in the new one, and its message
+ * will become the default message for the TilesException.
+ * </p>
+ *
+ * @param e The exception to be wrapped.
+ * @since 2.1.0
+ */
+ public RendererException(Exception e) {
+ super(e);
+ }
+
+ /**
+ * Create a new <code>RendererException</code> from an existing exception.
+ * <p/>
+ * <p>
+ * The existing exception will be embedded in the new one, but the new
+ * exception will have its own message.
+ * </p>
+ *
+ * @param message The detail message.
+ * @param e The exception to be wrapped.
+ * @since 2.1.0
+ */
+ public RendererException(String message, Exception e) {
+ super(message, e);
+ }
+}
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/RendererException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/RendererException.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/RendererFactory.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/RendererFactory.java?rev=630422&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/RendererFactory.java (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/RendererFactory.java Sat Feb 23 03:20:20 2008
@@ -0,0 +1,61 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tiles.renderer;
+
+import java.util.Map;
+
+import org.apache.tiles.TilesException;
+
+/**
+ * <p>
+ * Factory interface used to create/retrieve instances of the
+ * {@link AttributeRenderer} interface.
+ * </p>
+ *
+ * <p>
+ * This factory provides an extension point into the default tiles
+ * implementation. Implementors wishing to provide per request initialization of
+ * the AttributeRenderer (for instance) may provide a custom renderer.
+ * </p>
+ *
+ * @version $Rev$ $Date$
+ * @since 2.1.0
+ */
+public interface RendererFactory {
+
+ /**
+ * Initialize the renderer factory.
+ *
+ * @param parameters The parameters for the initialization.
+ * @throws TilesException If something goes wrong during initialization.
+ * @since 2.1.0
+ */
+ void init(Map<String, String> parameters) throws TilesException;
+
+ /**
+ * Returns a renderer by its name.
+ *
+ * @param name The name of the renderer.
+ * @return The renderer.
+ * @since 2.1.0
+ */
+ AttributeRenderer getRenderer(String name);
+}
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/RendererFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/RendererFactory.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/AbstractBaseAttributeRenderer.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/AbstractBaseAttributeRenderer.java?rev=630422&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/AbstractBaseAttributeRenderer.java (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/AbstractBaseAttributeRenderer.java Sat Feb 23 03:20:20 2008
@@ -0,0 +1,149 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tiles.renderer.impl;
+
+import java.io.IOException;
+import java.io.Writer;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.tiles.Attribute;
+import org.apache.tiles.TilesApplicationContext;
+import org.apache.tiles.TilesException;
+import org.apache.tiles.awareness.TilesContextFactoryAware;
+import org.apache.tiles.context.TilesContextFactory;
+import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.renderer.AttributeRenderer;
+import org.apache.tiles.renderer.RendererException;
+
+/**
+ * Base abstract class that manages authorization to display the attribute.
+ *
+ * @version $Rev$ $Date$
+ * @since 2.1.0
+ */
+public abstract class AbstractBaseAttributeRenderer implements
+ AttributeRenderer, TilesContextFactoryAware {
+
+ /**
+ * The logging object.
+ */
+ private static final Log LOG = LogFactory
+ .getLog(AbstractBaseAttributeRenderer.class);
+
+ /**
+ * The Tiles context factory.
+ *
+ * @since 2.1.0
+ */
+ protected TilesContextFactory contextFactory;
+
+ /**
+ * The Tiles application context.
+ *
+ * @since 2.1.0
+ */
+ protected TilesApplicationContext applicationContext;
+
+ /** {@inheritDoc} */
+ public void setContextFactory(TilesContextFactory contextFactory) {
+ this.contextFactory = contextFactory;
+ }
+
+ /** {@inheritDoc} */
+ public void setApplicationContext(TilesApplicationContext applicationContext) {
+ this.applicationContext = applicationContext;
+ }
+
+ /** {@inheritDoc} */
+ public void render(Attribute attribute, Writer writer,
+ Object... requestItems) throws IOException, TilesException {
+ TilesRequestContext request = getRequestContext(requestItems);
+
+ if (attribute == null) {
+ throw new RendererException("Cannot render a null attribute");
+ }
+
+ if (!isPermitted(request, attribute.getRoles())) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Access to attribute denied. User not in role '"
+ + attribute.getRoles() + "'");
+ }
+ return;
+ }
+
+ write(attribute, writer, request, requestItems);
+ }
+
+ /**
+ * Implement this method knowing that the attribute won't be null and it
+ * will be authorized.
+ *
+ * @param attribute The attribute to render.
+ * @param writer The writer to use.
+ * @param request The Tiles request object.
+ * @param requestItems The original request items.
+ * @throws IOException If something goes wrong during rendition.
+ * @throws TilesException If something goes wrong in Tiles engine.
+ * @since 2.1.0
+ */
+ public abstract void write(Attribute attribute, Writer writer,
+ TilesRequestContext request, Object... requestItems)
+ throws IOException, TilesException;
+
+ /**
+ * Creates a Tiles request context from request items.
+ *
+ * @param requestItems The request items.
+ * @return The created Tiles request context.
+ * @since 2.1.0
+ */
+ protected TilesRequestContext getRequestContext(Object... requestItems) {
+ return contextFactory.createRequestContext(applicationContext,
+ requestItems);
+ }
+
+ /**
+ * Checks if the current user is in one of the comma-separated roles
+ * specified in the <code>role</code> parameter.
+ *
+ * @param request The request context.
+ * @param roles The list of roles.
+ * @return <code>true</code> if the current user is in one of those roles.
+ * @since 2.1.0
+ */
+ protected boolean isPermitted(TilesRequestContext request, Set<String> roles) {
+ if (roles == null || roles.isEmpty()) {
+ return true;
+ }
+
+ boolean retValue = false;
+
+ for (Iterator<String> roleIt = roles.iterator(); roleIt.hasNext()
+ && !retValue;) {
+ retValue = request.isUserInRole(roleIt.next());
+ }
+
+ return retValue;
+ }
+}
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/AbstractBaseAttributeRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/AbstractBaseAttributeRenderer.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/BasicRendererFactory.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/BasicRendererFactory.java?rev=630422&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/BasicRendererFactory.java (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/BasicRendererFactory.java Sat Feb 23 03:20:20 2008
@@ -0,0 +1,208 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tiles.renderer.impl;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tiles.TilesApplicationContext;
+import org.apache.tiles.TilesContainer;
+import org.apache.tiles.TilesException;
+import org.apache.tiles.TilesRuntimeException;
+import org.apache.tiles.awareness.TilesContainerAware;
+import org.apache.tiles.awareness.TilesContextFactoryAware;
+import org.apache.tiles.context.TilesContextFactory;
+import org.apache.tiles.renderer.AttributeRenderer;
+import org.apache.tiles.renderer.RendererException;
+import org.apache.tiles.renderer.RendererFactory;
+import org.apache.tiles.util.ClassUtil;
+
+/**
+ * Basic renderer factory implementation.
+ *
+ * @version $Rev$ $Date$
+ * @since 2.1.0
+ */
+public class BasicRendererFactory implements RendererFactory,
+ TilesContainerAware, TilesContextFactoryAware {
+
+ /**
+ * The type renderers init parameter name.
+ *
+ * @since 2.1.0
+ */
+ public static final String TYPE_RENDERERS_INIT_PARAM =
+ "org.apache.tiles.rendere.impl.BasicRendereFactory.TYPE_RENDERERS";
+
+ /**
+ * The default renderer init parameter.
+ *
+ * @since 2.1.0
+ */
+ public static final String DEFAULT_RENDERER_INIT_PARAM =
+ "org.apache.tiles.rendere.impl.BasicRendereFactory.DEFAULT_RENDERER";
+
+ /**
+ * The default renderer class name.
+ *
+ * @since 2.1.0
+ */
+ public static final String DEFAULT_RENDERER_CLASS_NAME =
+ UntypedAttributeRenderer.class.getName();
+
+ /**
+ * The default renderer name/renderer class map.
+ *
+ * @since 2.1.0
+ */
+ protected static final Map<String, String> DEFAULT_TYPE_2_RENDERER;
+
+ /**
+ * The Tiles context factory.
+ *
+ * @since 2.1.0
+ */
+ protected TilesContextFactory contextFactory;
+
+ /**
+ * The Tiles application context.
+ *
+ * @since 2.1.0
+ */
+ protected TilesApplicationContext applicationContext;
+
+ /**
+ * The Tiles container.
+ *
+ * @since 2.1.0
+ */
+ protected TilesContainer container;
+
+ /**
+ * The renderer name/renderer map.
+ *
+ * @since 2.1.0
+ */
+ protected Map<String, AttributeRenderer> renderers;
+
+ /**
+ * The default renderer.
+ *
+ * @since 2.1.0
+ */
+ protected AttributeRenderer defaultRenderer;
+
+ static {
+ DEFAULT_TYPE_2_RENDERER = new HashMap<String, String>();
+ DEFAULT_TYPE_2_RENDERER.put("string", StringAttributeRenderer.class
+ .getName());
+ DEFAULT_TYPE_2_RENDERER.put("definition",
+ DefinitionAttributeRenderer.class.getName());
+ DEFAULT_TYPE_2_RENDERER.put("template", TemplateAttributeRenderer.class
+ .getName());
+ }
+
+ /** {@inheritDoc} */
+ public void init(Map<String, String> parameters) throws TilesException {
+ String defaultRendererParam = parameters.get(DEFAULT_RENDERER_INIT_PARAM);
+ if (defaultRendererParam == null) {
+ defaultRendererParam = DEFAULT_RENDERER_CLASS_NAME;
+ }
+ defaultRenderer = (AttributeRenderer) ClassUtil
+ .instantiate(defaultRendererParam);
+ initializeRenderer(defaultRenderer);
+ String typeRenderersParam = parameters.get(TYPE_RENDERERS_INIT_PARAM);
+ Map<String, String> completeParams = new HashMap<String, String>(
+ DEFAULT_TYPE_2_RENDERER);
+ if (typeRenderersParam != null) {
+ String[] pairs = typeRenderersParam.split("\\s*;\\s");
+ for (int i = 0; i < pairs.length; i++) {
+ String[] pair = pairs[i].split("\\s*,\\s*");
+ if (pair == null || pair.length != 2) {
+ throw new RendererException("The string '" + pairs[i]
+ + "' is not a valid type-renderer pair");
+ }
+ completeParams.put(pair[0], pair[1]);
+ }
+ }
+
+ renderers = new HashMap<String, AttributeRenderer>();
+ for (Map.Entry<String, String> entry : completeParams.entrySet()) {
+ AttributeRenderer renderer = (AttributeRenderer) ClassUtil
+ .instantiate(entry.getValue());
+ initializeRenderer(renderer);
+ renderers.put(entry.getKey(), renderer);
+ }
+ }
+
+ /** {@inheritDoc} */
+ public AttributeRenderer getRenderer(String name) {
+ AttributeRenderer retValue;
+ if (name != null) {
+ retValue = renderers.get(name);
+ if (retValue == null) {
+ try {
+ retValue = (AttributeRenderer) ClassUtil.instantiate(name);
+ } catch (TilesException e) {
+ throw new TilesRuntimeException(
+ "Cannot instantiate renderer " + name, e);
+ }
+ renderers.put(name, retValue);
+ }
+ } else {
+ retValue = defaultRenderer;
+ }
+
+ return retValue;
+ }
+
+ /** {@inheritDoc} */
+ public void setContainer(TilesContainer container) {
+ this.container = container;
+ }
+
+ /** {@inheritDoc} */
+ public void setContextFactory(TilesContextFactory contextFactory) {
+ this.contextFactory = contextFactory;
+ }
+
+ /** {@inheritDoc} */
+ public void setApplicationContext(TilesApplicationContext applicationContext) {
+ this.applicationContext = applicationContext;
+ }
+
+ /**
+ * Initialize a renderer, by injecting dependencies.
+ *
+ * @param renderer The renderer to initialize.
+ * @since 2.1.0
+ */
+ protected void initializeRenderer(AttributeRenderer renderer) {
+ if (renderer instanceof TilesContextFactoryAware) {
+ TilesContextFactoryAware cfaRenderer = (TilesContextFactoryAware) renderer;
+ cfaRenderer.setApplicationContext(applicationContext);
+ cfaRenderer.setContextFactory(contextFactory);
+ }
+ if (renderer instanceof TilesContainerAware) {
+ ((TilesContainerAware) renderer).setContainer(container);
+ }
+ }
+}
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/BasicRendererFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/BasicRendererFactory.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/DefinitionAttributeRenderer.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/DefinitionAttributeRenderer.java?rev=630422&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/DefinitionAttributeRenderer.java (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/DefinitionAttributeRenderer.java Sat Feb 23 03:20:20 2008
@@ -0,0 +1,59 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tiles.renderer.impl;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import org.apache.tiles.Attribute;
+import org.apache.tiles.TilesContainer;
+import org.apache.tiles.TilesException;
+import org.apache.tiles.awareness.TilesContainerAware;
+import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.renderer.AttributeRenderer;
+
+/**
+ * Renders an attribute that contains a reference to a definition.
+ *
+ * @version $Rev$ $Date$
+ * @since 2.1.0
+ */
+public class DefinitionAttributeRenderer extends AbstractBaseAttributeRenderer
+ implements TilesContainerAware, AttributeRenderer {
+
+ /**
+ * The Tiles container.
+ */
+ private TilesContainer container;
+
+ /** {@inheritDoc} */
+ public void setContainer(TilesContainer container) {
+ this.container = container;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void write(Attribute attribute, Writer writer,
+ TilesRequestContext request, Object... requestItems)
+ throws IOException, TilesException {
+ container.render(attribute.getValue().toString(), requestItems);
+ }
+}
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/DefinitionAttributeRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/DefinitionAttributeRenderer.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/StringAttributeRenderer.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/StringAttributeRenderer.java?rev=630422&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/StringAttributeRenderer.java (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/StringAttributeRenderer.java Sat Feb 23 03:20:20 2008
@@ -0,0 +1,44 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tiles.renderer.impl;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import org.apache.tiles.Attribute;
+import org.apache.tiles.TilesException;
+import org.apache.tiles.context.TilesRequestContext;
+
+/**
+ * Renders an attribute that contains a string.
+ *
+ * @version $Rev$ $Date$
+ * @since 2.1.0
+ */
+public class StringAttributeRenderer extends AbstractBaseAttributeRenderer {
+
+ /** {@inheritDoc} */
+ public void write(Attribute attribute, Writer writer,
+ TilesRequestContext request, Object... requestItems)
+ throws IOException, TilesException {
+ writer.write(attribute.getValue().toString());
+ }
+}
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/StringAttributeRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/StringAttributeRenderer.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/TemplateAttributeRenderer.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/TemplateAttributeRenderer.java?rev=630422&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/TemplateAttributeRenderer.java (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/TemplateAttributeRenderer.java Sat Feb 23 03:20:20 2008
@@ -0,0 +1,45 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tiles.renderer.impl;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import org.apache.tiles.Attribute;
+import org.apache.tiles.TilesException;
+import org.apache.tiles.context.TilesRequestContext;
+
+/**
+ * Renders an attribute that contains a reference to a template.
+ *
+ * @version $Rev$ $Date$
+ * @since 2.1.0
+ */
+public class TemplateAttributeRenderer extends AbstractBaseAttributeRenderer {
+
+ /** {@inheritDoc} */
+ @Override
+ public void write(Attribute attribute, Writer writer,
+ TilesRequestContext request, Object... requestItems)
+ throws IOException, TilesException {
+ request.dispatch(attribute.getValue().toString());
+ }
+}
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/TemplateAttributeRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/TemplateAttributeRenderer.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/UntypedAttributeRenderer.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/UntypedAttributeRenderer.java?rev=630422&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/UntypedAttributeRenderer.java (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/UntypedAttributeRenderer.java Sat Feb 23 03:20:20 2008
@@ -0,0 +1,72 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tiles.renderer.impl;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import org.apache.tiles.Attribute;
+import org.apache.tiles.TilesContainer;
+import org.apache.tiles.TilesException;
+import org.apache.tiles.awareness.TilesContainerAware;
+import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.renderer.RendererException;
+
+/**
+ * Renders an attribute that has no associated renderer.
+ *
+ * @version $Rev$ $Date$
+ * @since 2.1.0
+ */
+public class UntypedAttributeRenderer extends AbstractBaseAttributeRenderer
+ implements TilesContainerAware {
+
+ /**
+ * The Tiles container.
+ */
+ private TilesContainer container;
+
+ /** {@inheritDoc} */
+ public void setContainer(TilesContainer container) {
+ this.container = container;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void write(Attribute attribute, Writer writer,
+ TilesRequestContext request, Object... requestItems)
+ throws IOException, TilesException {
+ Object valueContent = attribute.getValue();
+ if (valueContent instanceof String) {
+ String valueString = (String) valueContent;
+ if (container.isValidDefinition(valueString, requestItems)) {
+ container.render(valueString, requestItems);
+ } else if (valueString.startsWith("/")) {
+ request.dispatch(valueString);
+ } else {
+ writer.write(valueString);
+ }
+ } else {
+ throw new RendererException(
+ "Cannot render an untyped object attribute");
+ }
+ }
+}
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/UntypedAttributeRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/UntypedAttributeRenderer.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/package.html
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/package.html?rev=630422&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/package.html (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/package.html Sat Feb 23 03:20:20 2008
@@ -0,0 +1,30 @@
+<!--
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+-->
+<html>
+<head>
+ <title>Tiles renderers implementations</title>
+</head>
+<body>
+Default implementations to manage attribute rendering.
+</body>
+</html>
\ No newline at end of file
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/package.html
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/package.html
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/package.html
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/package.html?rev=630422&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/package.html (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/package.html Sat Feb 23 03:20:20 2008
@@ -0,0 +1,30 @@
+<!--
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+-->
+<html>
+<head>
+ <title>Tiles renderers</title>
+</head>
+<body>
+Interfaces to manage attribute rendering.
+</body>
+</html>
\ No newline at end of file
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/package.html
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/package.html
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/config/tiles-defs-2.1.xml
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/config/tiles-defs-2.1.xml?rev=630422&r1=630421&r2=630422&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/config/tiles-defs-2.1.xml (original)
+++ tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/config/tiles-defs-2.1.xml Sat Feb 23 03:20:20 2008
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!--
/*
- * $Id$
+ * $Id:tiles-defs-2.1.xml 628334 2008-02-16 16:01:46Z apetrelli $
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
Modified: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/TestDefinitions.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/TestDefinitions.java?rev=630422&r1=630421&r2=630422&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/TestDefinitions.java (original)
+++ tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/TestDefinitions.java Sat Feb 23 03:20:20 2008
@@ -29,7 +29,6 @@
import junit.framework.TestSuite;
import org.apache.tiles.Attribute;
import org.apache.tiles.Definition;
-import org.apache.tiles.Attribute.AttributeType;
/**
* Tests the DefinitionsImpl class.
@@ -84,7 +83,7 @@
defs.put(def.getName(), def);
attr = new Attribute();
attr.setValue("tiles.def1");
- attr.setType(AttributeType.STRING);
+ attr.setRenderer("string");
def.putAttribute("attr3", attr);
defs.put(def.getName(), def);
@@ -122,8 +121,8 @@
assertNotNull("Dependent attribute not found.", attr);
attr = def.getAttribute("attr3");
assertNotNull("Dependent attribute not found.", attr);
- assertTrue("The attribute 'attr3' should be of type STRING", attr
- .getType() == AttributeType.STRING);
+ assertTrue("The attribute 'attr3' should be of type STRING", "string"
+ .equals(attr.getRenderer()));
def = definitions.getDefinition("child.def1");
@@ -140,8 +139,8 @@
assertNotNull("Dependent attribute not found.", attr);
attr = def.getAttribute("attr3");
assertNotNull("Dependent attribute not found.", attr);
- assertTrue("The attribute 'attr3' should be of type STRING", attr
- .getType() == AttributeType.STRING);
+ assertTrue("The attribute 'attr3' should be of type STRING", "string"
+ .equals(attr.getRenderer()));
}
/**
@@ -265,7 +264,7 @@
def.setTemplate("/test1.jsp");
Attribute attr = new Attribute();
attr.setValue("tiles.def2");
- attr.setType(AttributeType.DEFINITION);
+ attr.setRenderer("definition");
def.putAttribute("attr1", attr);
defs.put(def.getName(), def);
Modified: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/TestUrlDefinitionsFactory.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/TestUrlDefinitionsFactory.java?rev=630422&r1=630421&r2=630422&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/TestUrlDefinitionsFactory.java (original)
+++ tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/TestUrlDefinitionsFactory.java Sat Feb 23 03:20:20 2008
@@ -22,11 +22,11 @@
package org.apache.tiles.definition;
import java.net.URL;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
-import java.util.Collections;
import junit.framework.Test;
import junit.framework.TestCase;
@@ -55,6 +55,18 @@
private static final int POSTFIX_COUNT = 3;
/**
+ * The definitions factory.
+ */
+ private MockPublicUrlDefinitionsFactory factory;
+
+ /** {@inheritDoc} */
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ factory = new MockPublicUrlDefinitionsFactory();
+ }
+
+ /**
* Creates a new instance of TestUrlDefinitionsFactory.
*
* @param name The name of the test.
@@ -88,8 +100,6 @@
*/
@SuppressWarnings("unchecked")
public void testReadDefinitions() throws Exception {
- DefinitionsFactory factory = new UrlDefinitionsFactory();
-
// Set up multiple data sources.
URL url1 = this.getClass().getClassLoader().getResource(
"org/apache/tiles/config/defs1.xml");
@@ -121,8 +131,6 @@
*/
@SuppressWarnings("unchecked")
public void testGetDefinition() throws Exception {
- DefinitionsFactory factory = new UrlDefinitionsFactory();
-
// Set up multiple data sources.
URL url1 = this.getClass().getClassLoader().getResource(
"org/apache/tiles/config/defs1.xml");
@@ -206,8 +214,6 @@
@SuppressWarnings("unchecked")
public void testBadSourceType() throws Exception {
try {
- DefinitionsFactory factory = new UrlDefinitionsFactory();
-
factory.init(Collections.EMPTY_MAP);
factory.addSource("Bad object.");
@@ -228,8 +234,6 @@
*/
@SuppressWarnings("unchecked")
public void testReadByLocale() throws Exception {
- MockPublicUrlDefinitionsFactory factory = new MockPublicUrlDefinitionsFactory();
-
// Set up multiple data sources.
URL url1 = this.getClass().getClassLoader().getResource(
"org/apache/tiles/config/defs1.xml");
@@ -278,7 +282,6 @@
*/
@SuppressWarnings("unchecked")
public void testIsContextProcessed() throws Exception {
- MockPublicUrlDefinitionsFactory factory = new MockPublicUrlDefinitionsFactory();
// Set up multiple data sources.
URL url1 = this.getClass().getClassLoader().getResource(
Modified: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java?rev=630422&r1=630421&r2=630422&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java (original)
+++ tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java Sat Feb 23 03:20:20 2008
@@ -52,6 +52,11 @@
.getLog(TestDigesterDefinitionsReader.class);
/**
+ * The definitions reader.
+ */
+ private DefinitionsReader reader;
+
+ /**
* Creates a new instance of TestDigesterDefinitionsReader.
*
* @param name The name of the test.
@@ -78,12 +83,18 @@
return new TestSuite(TestDigesterDefinitionsReader.class);
}
+ /** {@inheritDoc} */
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ reader = new DigesterDefinitionsReader();
+ }
+
/**
* Tests the read method under normal conditions.
*/
public void testRead() {
try {
- DefinitionsReader reader = new DigesterDefinitionsReader();
reader.init(new HashMap<String, String>());
URL configFile = this.getClass().getClassLoader().getResource(
@@ -130,7 +141,6 @@
*/
public void testRead21Version() {
try {
- DefinitionsReader reader = new DigesterDefinitionsReader();
reader.init(new HashMap<String, String>());
URL configFile = this.getClass().getClassLoader().getResource(
@@ -162,8 +172,6 @@
*/
public void testNoInit() {
try {
- DefinitionsReader reader = new DigesterDefinitionsReader();
-
// What happens if we don't call init?
// reader.init(new HashMap());
@@ -190,8 +198,6 @@
*/
public void testBadSource() {
try {
- // Create Digester Reader.
- DefinitionsReader reader = new DigesterDefinitionsReader();
Map<String, String> params = new HashMap<String, String>();
// Initialize reader.
@@ -215,7 +221,6 @@
*/
public void testBadXml() {
try {
- DefinitionsReader reader = new DigesterDefinitionsReader();
reader.init(new HashMap<String, String>());
URL configFile = this.getClass().getClassLoader().getResource(
@@ -244,7 +249,6 @@
public void testValidatingParameter() {
// Testing with default (validation ON).
try {
- DefinitionsReader reader = new DigesterDefinitionsReader();
Map<String, String> params = new HashMap<String, String>();
reader.init(params);
@@ -266,7 +270,7 @@
// Testing with validation OFF.
try {
- DefinitionsReader reader = new DigesterDefinitionsReader();
+ setUp();
Map<String, String> params = new HashMap<String, String>();
params.put(DigesterDefinitionsReader.PARSER_VALIDATE_PARAMETER_NAME,
"false");
Modified: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java?rev=630422&r1=630421&r2=630422&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java (original)
+++ tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java Sat Feb 23 03:20:20 2008
@@ -140,6 +140,7 @@
request.setHttpSession(session);
MockHttpServletResponse response = new MockHttpServletResponse();
Attribute attribute = new Attribute((Object) "This is the value", "myrole");
+ attribute.setRenderer("string");
StringWriter writer = new StringWriter();
container.render(attribute, writer, request, response);
writer.close();
Modified: tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/AddListAttributeTag.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/AddListAttributeTag.java?rev=630422&r1=630421&r2=630422&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/AddListAttributeTag.java (original)
+++ tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/AddListAttributeTag.java Sat Feb 23 03:20:20 2008
@@ -22,7 +22,6 @@
package org.apache.tiles.jsp.taglib;
import org.apache.tiles.Attribute;
-import org.apache.tiles.Attribute.AttributeType;
import java.util.ArrayList;
import java.util.List;
@@ -91,9 +90,8 @@
* @param nestedTag the put tag desciendent.
*/
public void processNestedTag(AddAttributeTag nestedTag) {
- Attribute attribute = new Attribute(
- nestedTag.getValue(), nestedTag.getRole(),
- AttributeType.getType(nestedTag.getType()));
+ Attribute attribute = new Attribute(nestedTag.getValue(), nestedTag
+ .getRole(), nestedTag.getType());
this.addValue(attribute);
}
Modified: tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/PutListAttributeTag.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/PutListAttributeTag.java?rev=630422&r1=630421&r2=630422&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/PutListAttributeTag.java (original)
+++ tiles/framework/trunk/tiles-jsp/src/main/java/org/apache/tiles/jsp/taglib/PutListAttributeTag.java Sat Feb 23 03:20:20 2008
@@ -22,7 +22,6 @@
package org.apache.tiles.jsp.taglib;
import org.apache.tiles.Attribute;
-import org.apache.tiles.Attribute.AttributeType;
import java.util.ArrayList;
import java.util.List;
@@ -92,9 +91,8 @@
* @param nestedTag the put tag desciendent.
*/
public void processNestedTag(AddAttributeTag nestedTag) {
- Attribute attribute = new Attribute(
- nestedTag.getValue(), nestedTag.getRole(),
- AttributeType.getType(nestedTag.getType()));
+ Attribute attribute = new Attribute(nestedTag.getValue(), nestedTag
+ .getRole(), nestedTag.getType());
this.addValue(attribute);
}