Author: apetrelli
Date: Sun Jul 19 19:35:19 2009
New Revision: 795602
URL: http://svn.apache.org/viewvc?rev=795602&view=rev
Log:
TILES-433
Refactored BasicPatternDefinitionResolver to extract an abstract class.
Added the class PrefixedPatternDefinitionResolver.
Added tests for everything.
Added:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolver.java
(with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PrefixedPatternDefinitionResolver.java
(with props)
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolverTest.java
(with props)
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/PrefixedPatternDefinitionResolverTest.java
(with props)
Modified:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/BasicPatternDefinitionResolver.java
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/BasicPatternDefinitionResolverTest.java
Added:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolver.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolver.java?rev=795602&view=auto
==============================================================================
---
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolver.java
(added)
+++
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolver.java
Sun Jul 19 19:35:19 2009
@@ -0,0 +1,106 @@
+/*
+ * $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.definition.pattern;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.tiles.Definition;
+
+/**
+ * A pattern definition resolver that stores {...@link
DefinitionPatternMatcher}
+ * separated by customization key. <br>
+ * Implementations should provide a way to translate a definition to a
+ * {...@link DefinitionPatternMatcher}.
+ *
+ * @param <T> The type of the customization key.
+ * @version $Rev$ $Date$
+ * @since 2.2.0
+ */
+public abstract class AbstractPatternDefinitionResolver<T> implements
+ PatternDefinitionResolver<T> {
+
+ /**
+ * Stores patterns depending on the locale they refer to.
+ */
+ private Map<T, List<DefinitionPatternMatcher>> localePatternPaths =
+ new HashMap<T, List<DefinitionPatternMatcher>>();
+
+ /** {...@inheritdoc} */
+ public Definition resolveDefinition(String name, T customizationKey) {
+ Definition retValue = null;
+ if (localePatternPaths.containsKey(customizationKey)) {
+ retValue = searchAndResolveDefinition(localePatternPaths
+ .get(customizationKey), name);
+ }
+ return retValue;
+ }
+
+ /** {...@inheritdoc} */
+ public void storeDefinitionPatterns(Map<String, Definition> localeDefsMap,
+ T customizationKey) {
+ List<DefinitionPatternMatcher> lpaths = localePatternPaths
+ .get(customizationKey);
+ if (lpaths == null) {
+ lpaths = new ArrayList<DefinitionPatternMatcher>();
+ localePatternPaths.put(customizationKey, lpaths);
+ }
+
+ addDefinitionsAsPatternMatchers(lpaths, localeDefsMap);
+ }
+
+ /**
+ * Adds definitions, filtering and adding them to the list of definition
+ * pattern matchers. Only a subset of definitions will be transformed into
+ * definition pattern matchers.
+ *
+ * @param matchers The list containing the currently stored definition
pattern
+ * matchers.
+ * @param defsMap The definition map to parse.
+ * @since 2.2.0
+ */
+ protected abstract void
addDefinitionsAsPatternMatchers(List<DefinitionPatternMatcher> matchers,
+ Map<String, Definition> defsMap);
+
+ /**
+ * Try to resolve a definition by iterating all pattern matchers.
+ *
+ * @param paths The list containing the currently stored paths.
+ * @param name The name of the definition to resolve.
+ * @return A definition, if found, or <code>null</code> if not.
+ */
+ private Definition searchAndResolveDefinition(
+ List<DefinitionPatternMatcher> paths, String name) {
+ Definition d = null;
+
+ for (DefinitionPatternMatcher wm : paths) {
+ d = wm.createDefinition(name);
+ if (d != null) {
+ break;
+ }
+ }
+
+ return d;
+ }
+}
Propchange:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolver.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolver.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/BasicPatternDefinitionResolver.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/BasicPatternDefinitionResolver.java?rev=795602&r1=795601&r2=795602&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/BasicPatternDefinitionResolver.java
(original)
+++
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/BasicPatternDefinitionResolver.java
Sun Jul 19 19:35:19 2009
@@ -21,28 +21,24 @@
package org.apache.tiles.definition.pattern;
-import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.tiles.Definition;
/**
- * Uses wildcards syntax to match definition names and its parameters.
+ * A pattern definition resolver that stores {...@link
DefinitionPatternMatcher}
+ * separated by customization key. <br>
+ * It delegates creation of definition pattern matchers to a
+ * {...@link DefinitionPatternMatcherFactory} and recgnizes patterns through
the
+ * use of a {...@link PatternRecognizer}.
*
* @param <T> The type of the customization key.
* @version $Rev$ $Date$
* @since 2.2.0
*/
-public class BasicPatternDefinitionResolver<T> implements
- PatternDefinitionResolver<T> {
-
- /**
- * Stores patterns depending on the locale they refer to.
- */
- private Map<T, List<DefinitionPatternMatcher>> localePatternPaths =
- new HashMap<T, List<DefinitionPatternMatcher>>();
+public class BasicPatternDefinitionResolver<T> extends
+ AbstractPatternDefinitionResolver<T> {
/**
* The factory of pattern matchers.
@@ -66,64 +62,24 @@
this.patternRecognizer = patternRecognizer;
}
- /** {...@inheritdoc} */
- public Definition resolveDefinition(String name, T customizationKey) {
- Definition retValue = null;
- if (localePatternPaths.containsKey(customizationKey)) {
- retValue = searchAndResolveDefinition(localePatternPaths
- .get(customizationKey), name);
- }
- return retValue;
- }
-
- /** {...@inheritdoc} */
- public void storeDefinitionPatterns(Map<String, Definition> localeDefsMap,
- T customizationKey) {
- List<DefinitionPatternMatcher> lpaths = localePatternPaths
- .get(customizationKey);
- if (lpaths == null) {
- lpaths = new ArrayList<DefinitionPatternMatcher>();
- localePatternPaths.put(customizationKey, lpaths);
- }
-
- addWildcardPaths(lpaths, localeDefsMap);
- }
-
/**
- * Adds wildcard paths that are stored inside a normal definition map.
+ * Adds definitions, filtering and adding them to the list of definition
+ * pattern matchers. Only a subset of definitions will be transformed into
+ * definition pattern matchers.
*
- * @param paths The list containing the currently stored paths.
+ * @param matchers The list containing the currently stored definition
pattern
+ * matchers.
* @param defsMap The definition map to parse.
+ * @since 2.2.0
*/
- private void addWildcardPaths(List<DefinitionPatternMatcher> paths,
+ protected void
addDefinitionsAsPatternMatchers(List<DefinitionPatternMatcher> matchers,
Map<String, Definition> defsMap) {
for (Map.Entry<String, Definition> de : defsMap.entrySet()) {
if (patternRecognizer.isPatternRecognized(de.getKey())) {
- paths.add(definitionPatternMatcherFactory
+ matchers.add(definitionPatternMatcherFactory
.createDefinitionPatternMatcher(de.getKey(), de
.getValue()));
}
}
}
-
- /**
- * Try to resolve a definition by iterating all pattern matchers.
- *
- * @param paths The list containing the currently stored paths.
- * @param name The name of the definition to resolve.
- * @return A definition, if found, or <code>null</code> if not.
- */
- private Definition searchAndResolveDefinition(
- List<DefinitionPatternMatcher> paths, String name) {
- Definition d = null;
-
- for (DefinitionPatternMatcher wm : paths) {
- d = wm.createDefinition(name);
- if (d != null) {
- break;
- }
- }
-
- return d;
- }
}
Added:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PrefixedPatternDefinitionResolver.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PrefixedPatternDefinitionResolver.java?rev=795602&view=auto
==============================================================================
---
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PrefixedPatternDefinitionResolver.java
(added)
+++
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PrefixedPatternDefinitionResolver.java
Sun Jul 19 19:35:19 2009
@@ -0,0 +1,104 @@
+/*
+ * $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.definition.pattern;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.tiles.Definition;
+import org.apache.tiles.Expression;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * This resolver allows the use of multiple pattern matching languages. The
+ * syntax of definition names must be <code>LANGUAGENAME:expression</code>.<br>
+ * The different languages must be registered through the use of
+ * {...@link #registerDefinitionPatternMatcherFactory(String,
DefinitionPatternMatcherFactory)}
+ * method before using this resolver.
+ *
+ * @param <T> The type of the customization key.
+ * @version $Rev$ $Date$
+ * @since 2.2.0
+ */
+public class PrefixedPatternDefinitionResolver<T> extends
+ AbstractPatternDefinitionResolver<T> {
+
+ /**
+ * The logging object.
+ */
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ /**
+ * Matches languages names to the corresponding
+ * {...@link DefinitionPatternMatcherFactory}.
+ */
+ private Map<String, DefinitionPatternMatcherFactory>
language2matcherFactory;
+
+ /**
+ * Constructor.
+ *
+ * @since 2.2.0
+ */
+ public PrefixedPatternDefinitionResolver() {
+ language2matcherFactory = new HashMap<String,
DefinitionPatternMatcherFactory>();
+ }
+
+ /**
+ * Registers a {...@link DefinitionPatternMatcherFactory} connected to a
+ * particular language.
+ *
+ * @param language The name of the language.
+ * @param factory The pattern matcher factory to register.
+ * @since 2.2.0
+ */
+ public void registerDefinitionPatternMatcherFactory(String language,
+ DefinitionPatternMatcherFactory factory) {
+ language2matcherFactory.put(language, factory);
+ }
+
+ /** {...@inheritdoc} */
+ @Override
+ protected void addDefinitionsAsPatternMatchers(
+ List<DefinitionPatternMatcher> matchers,
+ Map<String, Definition> defsMap) {
+ for (Map.Entry<String, Definition> entry : defsMap.entrySet()) {
+ Expression expression = Expression
+ .createExpressionFromDescribedExpression(entry.getKey());
+ if (expression.getLanguage() != null) {
+ DefinitionPatternMatcherFactory factory =
language2matcherFactory
+ .get(expression.getLanguage());
+ if (factory != null) {
+ DefinitionPatternMatcher matcher = factory
+ .createDefinitionPatternMatcher(expression
+ .getExpression(), entry.getValue());
+ matchers.add(matcher);
+ } else {
+ logger
+ .warn("Cannot find a
DefinitionPatternMatcherFactory for expression '"
+ + entry.getKey() + "'");
+ }
+ }
+ }
+ }
+}
Propchange:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PrefixedPatternDefinitionResolver.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PrefixedPatternDefinitionResolver.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolverTest.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolverTest.java?rev=795602&view=auto
==============================================================================
---
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolverTest.java
(added)
+++
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolverTest.java
Sun Jul 19 19:35:19 2009
@@ -0,0 +1,111 @@
+/*
+ * $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.definition.pattern;
+
+import static org.junit.Assert.*;
+import static org.easymock.EasyMock.*;
+
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.tiles.Attribute;
+import org.apache.tiles.Definition;
+import org.junit.Test;
+
+/**
+ * Tests {...@link AbstractPatternDefinitionResolver}.
+ *
+ * @version $Rev$ $Date$
+ */
+public class AbstractPatternDefinitionResolverTest {
+
+ /**
+ * Test method for
+ * {...@link BasicPatternDefinitionResolver#resolveDefinition(String,
Object)}.
+ */
+ @Test
+ public void testResolveDefinition() {
+ final DefinitionPatternMatcher firstMatcher =
createMock(DefinitionPatternMatcher.class);
+ final DefinitionPatternMatcher thirdMatcher =
createMock(DefinitionPatternMatcher.class);
+
+ Definition firstDefinition = new Definition("first", (Attribute) null,
+ null);
+ Definition secondDefinition = new Definition("second",
+ (Attribute) null, null);
+ Definition thirdDefinition = new Definition("third", (Attribute) null,
+ null);
+
+ Definition firstTransformedDefinition = new Definition(
+ "firstTransformed", (Attribute) null, null);
+ Definition thirdTransformedDefinition = new Definition(
+ "thirdTransformed", (Attribute) null, null);
+
+ expect(firstMatcher.createDefinition("firstTransformed")).andReturn(
+ firstTransformedDefinition);
+ expect(firstMatcher.createDefinition("secondTransformed")).andReturn(
+ null);
+ expect(firstMatcher.createDefinition("thirdTransformed")).andReturn(
+ null);
+ expect(thirdMatcher.createDefinition("thirdTransformed")).andReturn(
+ thirdTransformedDefinition).times(2);
+ expect(thirdMatcher.createDefinition("firstTransformed")).andReturn(
+ null);
+ expect(thirdMatcher.createDefinition("secondTransformed")).andReturn(
+ null).times(2);
+
+ replay(firstMatcher, thirdMatcher);
+ PatternDefinitionResolver<Integer> resolver = new
AbstractPatternDefinitionResolver<Integer>() {
+
+ @Override
+ protected void addDefinitionsAsPatternMatchers(
+ List<DefinitionPatternMatcher> matchers,
+ Map<String, Definition> defsMap) {
+ if (defsMap.containsKey("first")) {
+ matchers.add(firstMatcher);
+ }
+ if (defsMap.containsKey("third")) {
+ matchers.add(thirdMatcher);
+ }
+ }
+
+ };
+ Map<String, Definition> localeDefsMap = new LinkedHashMap<String,
Definition>();
+ localeDefsMap.put("first", firstDefinition);
+ localeDefsMap.put("second", secondDefinition);
+ localeDefsMap.put("third", thirdDefinition);
+ resolver.storeDefinitionPatterns(localeDefsMap, 1);
+ localeDefsMap = new LinkedHashMap<String, Definition>();
+ localeDefsMap.put("third", thirdDefinition);
+ resolver.storeDefinitionPatterns(localeDefsMap, 2);
+ assertEquals(firstTransformedDefinition, resolver.resolveDefinition(
+ "firstTransformed", 1));
+ assertNull(resolver.resolveDefinition("secondTransformed", 1));
+ assertEquals(thirdTransformedDefinition, resolver.resolveDefinition(
+ "thirdTransformed", 1));
+ assertNull(resolver.resolveDefinition("firstTransformed", 2));
+ assertNull(resolver.resolveDefinition("secondTransformed", 2));
+ assertEquals(thirdTransformedDefinition, resolver.resolveDefinition(
+ "thirdTransformed", 2));
+ verify(firstMatcher, thirdMatcher);
+ }
+}
Propchange:
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolverTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolverTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified:
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/BasicPatternDefinitionResolverTest.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/BasicPatternDefinitionResolverTest.java?rev=795602&r1=795601&r2=795602&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/BasicPatternDefinitionResolverTest.java
(original)
+++
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/BasicPatternDefinitionResolverTest.java
Sun Jul 19 19:35:19 2009
@@ -24,7 +24,9 @@
import static org.junit.Assert.*;
import static org.easymock.EasyMock.*;
+import java.util.ArrayList;
import java.util.LinkedHashMap;
+import java.util.List;
import java.util.Map;
import org.apache.tiles.Attribute;
@@ -40,10 +42,10 @@
/**
* Test method for
- * {...@link BasicPatternDefinitionResolver#resolveDefinition(String,
Object)}.
+ * {...@link
BasicPatternDefinitionResolver#addDefinitionsAsPatternMatchers(java.util.List,
Map)}.
*/
@Test
- public void testResolveDefinition() {
+ public void testAddDefinitionsAsPatternMatchers() {
DefinitionPatternMatcherFactory factory =
createMock(DefinitionPatternMatcherFactory.class);
PatternRecognizer recognizer = createMock(PatternRecognizer.class);
DefinitionPatternMatcher firstMatcher =
createMock(DefinitionPatternMatcher.class);
@@ -51,8 +53,7 @@
expect(recognizer.isPatternRecognized("first")).andReturn(true);
expect(recognizer.isPatternRecognized("second")).andReturn(false);
- expect(recognizer.isPatternRecognized("third")).andReturn(true)
- .times(2);
+ expect(recognizer.isPatternRecognized("third")).andReturn(true);
Definition firstDefinition = new Definition("first", (Attribute) null,
null);
@@ -61,48 +62,23 @@
Definition thirdDefinition = new Definition("third", (Attribute) null,
null);
- Definition firstTransformedDefinition = new Definition(
- "firstTransformed", (Attribute) null, null);
- Definition thirdTransformedDefinition = new Definition(
- "thirdTransformed", (Attribute) null, null);
-
expect(factory.createDefinitionPatternMatcher("first",
firstDefinition))
.andReturn(firstMatcher);
expect(factory.createDefinitionPatternMatcher("third",
thirdDefinition))
- .andReturn(thirdMatcher).times(2);
- expect(firstMatcher.createDefinition("firstTransformed")).andReturn(
- firstTransformedDefinition);
- expect(firstMatcher.createDefinition("secondTransformed")).andReturn(
- null);
- expect(firstMatcher.createDefinition("thirdTransformed")).andReturn(
- null);
- expect(thirdMatcher.createDefinition("thirdTransformed")).andReturn(
- thirdTransformedDefinition).times(2);
- expect(thirdMatcher.createDefinition("firstTransformed")).andReturn(
- null);
- expect(thirdMatcher.createDefinition("secondTransformed")).andReturn(
- null).times(2);
+ .andReturn(thirdMatcher);
replay(factory, recognizer, firstMatcher, thirdMatcher);
- PatternDefinitionResolver<Integer> resolver = new
BasicPatternDefinitionResolver<Integer>(
+ BasicPatternDefinitionResolver<Integer> resolver = new
BasicPatternDefinitionResolver<Integer>(
factory, recognizer);
Map<String, Definition> localeDefsMap = new LinkedHashMap<String,
Definition>();
localeDefsMap.put("first", firstDefinition);
localeDefsMap.put("second", secondDefinition);
localeDefsMap.put("third", thirdDefinition);
- resolver.storeDefinitionPatterns(localeDefsMap, 1);
- localeDefsMap = new LinkedHashMap<String, Definition>();
- localeDefsMap.put("third", thirdDefinition);
- resolver.storeDefinitionPatterns(localeDefsMap, 2);
- assertEquals(firstTransformedDefinition, resolver.resolveDefinition(
- "firstTransformed", 1));
- assertNull(resolver.resolveDefinition("secondTransformed", 1));
- assertEquals(thirdTransformedDefinition, resolver.resolveDefinition(
- "thirdTransformed", 1));
- assertNull(resolver.resolveDefinition("firstTransformed", 2));
- assertNull(resolver.resolveDefinition("secondTransformed", 2));
- assertEquals(thirdTransformedDefinition, resolver.resolveDefinition(
- "thirdTransformed", 2));
+ List<DefinitionPatternMatcher> matchers = new
ArrayList<DefinitionPatternMatcher>();
+ resolver.addDefinitionsAsPatternMatchers(matchers, localeDefsMap);
+ assertEquals(2, matchers.size());
+ assertEquals(firstMatcher, matchers.get(0));
+ assertEquals(thirdMatcher, matchers.get(1));
verify(factory, recognizer, firstMatcher, thirdMatcher);
}
}
Added:
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/PrefixedPatternDefinitionResolverTest.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/PrefixedPatternDefinitionResolverTest.java?rev=795602&view=auto
==============================================================================
---
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/PrefixedPatternDefinitionResolverTest.java
(added)
+++
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/PrefixedPatternDefinitionResolverTest.java
Sun Jul 19 19:35:19 2009
@@ -0,0 +1,78 @@
+/*
+ * $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.definition.pattern;
+
+import static org.junit.Assert.*;
+import static org.easymock.EasyMock.*;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.tiles.Attribute;
+import org.apache.tiles.Definition;
+import org.junit.Test;
+
+/**
+ * Tests {...@link PrefixedPatternDefinitionResolver}.
+ *
+ * @version $Rev$ $Date$
+ */
+public class PrefixedPatternDefinitionResolverTest {
+
+ /**
+ * Test method for {...@link
PrefixedPatternDefinitionResolver#addDefinitionsAsPatternMatchers(List, Map)}.
+ */
+ @Test
+ public void testAddDefinitionsAsPatternMatchers() {
+ DefinitionPatternMatcherFactory factory1 =
createMock(DefinitionPatternMatcherFactory.class);
+ DefinitionPatternMatcherFactory factory2 =
createMock(DefinitionPatternMatcherFactory.class);
+ DefinitionPatternMatcher matcher1 =
createMock(DefinitionPatternMatcher.class);
+ DefinitionPatternMatcher matcher2 =
createMock(DefinitionPatternMatcher.class);
+ Definition definition1 = new Definition("DF1:definition1", (Attribute)
null, null);
+ Definition definition2 = new Definition("DF2:definition2", (Attribute)
null, null);
+ Definition definition3 = new Definition("noLanguageHere", (Attribute)
null, null);
+
+ expect(factory1.createDefinitionPatternMatcher("definition1",
definition1)).andReturn(matcher1);
+ expect(factory2.createDefinitionPatternMatcher("definition2",
definition2)).andReturn(matcher2);
+
+ replay(factory1, factory2, matcher1, matcher2);
+
+ PrefixedPatternDefinitionResolver<Integer> resolver = new
PrefixedPatternDefinitionResolver<Integer>();
+ resolver.registerDefinitionPatternMatcherFactory("DF1", factory1);
+ resolver.registerDefinitionPatternMatcherFactory("DF2", factory2);
+ List<DefinitionPatternMatcher> matchers = new
ArrayList<DefinitionPatternMatcher>();
+ Map<String, Definition> definitions = new LinkedHashMap<String,
Definition>();
+ definitions.put("DF1:definition1", definition1);
+ definitions.put("DF2:definition2", definition2);
+ definitions.put("noLanguageHere", definition3);
+
+ resolver.addDefinitionsAsPatternMatchers(matchers, definitions);
+
+ assertEquals(2, matchers.size());
+ assertEquals(matcher1, matchers.get(0));
+ assertEquals(matcher2, matchers.get(1));
+
+ verify(factory1, factory2, matcher1, matcher2);
+ }
+}
Propchange:
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/PrefixedPatternDefinitionResolverTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/PrefixedPatternDefinitionResolverTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL