Author: hlship
Date: Fri Dec 22 17:45:41 2006
New Revision: 489825
URL: http://svn.apache.org/viewvc?view=rev&rev=489825
Log:
Extend the ComponentModel API to differentiate between declared and inherited
parameters
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/MutableComponentModelImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/ComponentModel.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/model/MutableComponentModelImplTest.java
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/MutableComponentModelImpl.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/MutableComponentModelImpl.java?view=diff&rev=489825&r1=489824&r2=489825
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/MutableComponentModelImpl.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/MutableComponentModelImpl.java
Fri Dec 22 17:45:41 2006
@@ -16,6 +16,7 @@
import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newList;
import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newMap;
+import static org.apache.tapestry.ioc.internal.util.Defense.notBlank;
import java.util.Collections;
import java.util.List;
@@ -23,7 +24,6 @@
import org.apache.commons.logging.Log;
import org.apache.tapestry.ioc.Resource;
-import org.apache.tapestry.ioc.internal.util.Defense;
import org.apache.tapestry.ioc.internal.util.IdAllocator;
import org.apache.tapestry.ioc.internal.util.InternalUtils;
import org.apache.tapestry.model.ComponentModel;
@@ -102,6 +102,8 @@
public void addParameter(String name, boolean required)
{
+ notBlank(name, "name");
+
// TODO: Check for conflict with base model
if (_parameters == null)
@@ -114,8 +116,6 @@
_componentClassName));
}
- Defense.notBlank(name, "name");
-
_parameters.put(name, new ParameterModelImpl(name, required));
}
@@ -131,8 +131,6 @@
public List<String> getParameterNames()
{
- // TODO: Parameters from base model
-
List<String> names = newList();
if (_parameters != null)
@@ -144,6 +142,11 @@
Collections.sort(names);
return names;
+ }
+
+ public List<String> getDeclaredParameterNames()
+ {
+ return InternalUtils.sortedKeys(_parameters);
}
public MutableEmbeddedComponentModel addEmbeddedComponent(String id,
String type,
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/ComponentModel.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/ComponentModel.java?view=diff&rev=489825&r1=489824&r2=489825
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/ComponentModel.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/ComponentModel.java
Fri Dec 22 17:45:41 2006
@@ -82,6 +82,12 @@
List<String> getParameterNames();
/**
+ * Returns an alphabetically sorted list of the names of all formal
parameters defined by this
+ * specific class (parameters inherited from base classes are not
identified).
+ */
+ List<String> getDeclaredParameterNames();
+
+ /**
* Returns a list of the names of all persistent fields (within this
class, or any super-class).
* The names are sorted alphabetically.
*
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java?view=diff&rev=489825&r1=489824&r2=489825
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java
Fri Dec 22 17:45:41 2006
@@ -570,4 +570,9 @@
{
expect(resources.getComponent()).andReturn(component).atLeastOnce();
}
+
+ protected final void train_getPersistentFieldNames(ComponentModel model,
String... names)
+ {
+
expect(model.getPersistentFieldNames()).andReturn(Arrays.asList(names)).atLeastOnce();
+ }
}
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/model/MutableComponentModelImplTest.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/model/MutableComponentModelImplTest.java?view=diff&rev=489825&r1=489824&r2=489825
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/model/MutableComponentModelImplTest.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/model/MutableComponentModelImplTest.java
Fri Dec 22 17:45:41 2006
@@ -75,6 +75,51 @@
assertEquals(pm.getName(), parameterName);
assertEquals(true, pm.isRequired());
+ assertEquals(model.getDeclaredParameterNames(),
Arrays.asList(parameterName));
+
+ verify();
+ }
+
+ @Test
+ public void parameter_names_are_sorted()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+
+ replay();
+
+ MutableComponentModel model = new
MutableComponentModelImpl(CLASS_NAME, log, r, null);
+
+ model.addParameter("fred", true);
+ model.addParameter("wilma", true);
+ model.addParameter("barney", true);
+
+ assertEquals(model.getDeclaredParameterNames(),
Arrays.asList("barney", "fred", "wilma"));
+
+ verify();
+ }
+
+ @Test
+ public void
declared_parameter_names_does_not_include_superclass_parameters()
+ {
+ Resource r = newResource();
+ Log log = newLog();
+ ComponentModel parent = newComponentModel();
+
+ train_getPersistentFieldNames(parent);
+ train_getParameterNames(parent, "betty");
+
+ replay();
+
+ MutableComponentModel model = new
MutableComponentModelImpl(CLASS_NAME, log, r, parent);
+
+ model.addParameter("fred", true);
+ model.addParameter("wilma", true);
+ model.addParameter("barney", true);
+
+ assertEquals(model.getDeclaredParameterNames(),
Arrays.asList("barney", "fred", "wilma"));
+ assertEquals(model.getParameterNames(), Arrays.asList("barney",
"betty", "fred", "wilma"));
+
verify();
}