Author: craigmcc Date: Wed Feb 8 17:10:34 2006 New Revision: 376140 URL: http://svn.apache.org/viewcvs?rev=376140&view=rev Log: Clean up several more unsupported operations on the mock classes. In particular, the isReadonly() and getType() calls on property resolver now work, so they will work on value bindings and method bindings as well.
Modified: struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockFacesContext.java struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockPropertyResolver.java struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockServlet.java struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockValueBinding.java Modified: struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockFacesContext.java URL: http://svn.apache.org/viewcvs/struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockFacesContext.java?rev=376140&r1=376139&r2=376140&view=diff ============================================================================== --- struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockFacesContext.java (original) +++ struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockFacesContext.java Wed Feb 8 17:10:34 2006 @@ -120,8 +120,18 @@ public Severity getMaximumSeverity() { - - throw new UnsupportedOperationException(); + + Severity severity = null; + Iterator messages = getMessages(); + while (messages.hasNext()) { + FacesMessage message = (FacesMessage) messages.next(); + if (severity == null) { + severity = message.getSeverity(); + } else if (message.getSeverity().getOrdinal() > severity.getOrdinal()) { + severity = message.getSeverity(); + } + } + return severity; } Modified: struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockPropertyResolver.java URL: http://svn.apache.org/viewcvs/struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockPropertyResolver.java?rev=376140&r1=376139&r2=376140&view=diff ============================================================================== --- struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockPropertyResolver.java (original) +++ struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockPropertyResolver.java Wed Feb 8 17:10:34 2006 @@ -16,6 +16,7 @@ package org.apache.shale.test.mock; +import java.beans.PropertyDescriptor; import java.lang.reflect.InvocationTargetException; import java.util.Map; @@ -28,10 +29,6 @@ /** * <p>Mock implementation of <code>PropertyResolver</code>.</p> * - * <p>This implementation supports only getValue() and setValue(), to the - * extent that <code>PropertyUtils.getSimpleProperty()</code> and - * <code>PropertyUtils.setSimpleProperty()</code> execute correctly.</p> - * * $Id$ */ @@ -89,7 +86,7 @@ public Object getValue(Object base, int index) throws PropertyNotFoundException { - throw new UnsupportedOperationException(); + return getValue(base, "" + index); } @@ -121,7 +118,7 @@ public void setValue(Object base, int index, Object value) throws PropertyNotFoundException { - throw new UnsupportedOperationException(); + setValue(base, "" + index, value); } @@ -129,7 +126,11 @@ public boolean isReadOnly(Object base, Object property) throws PropertyNotFoundException { - throw new UnsupportedOperationException(); + if (base == null) { + throw new NullPointerException(); + } + String name = property.toString(); + return !PropertyUtils.isWriteable(base, name); } @@ -137,7 +138,7 @@ public boolean isReadOnly(Object base, int index) throws PropertyNotFoundException { - throw new UnsupportedOperationException(); + return isReadOnly(base, "" + index); } @@ -145,7 +146,19 @@ public Class getType(Object base, Object property) throws PropertyNotFoundException { - throw new UnsupportedOperationException(); + if (base == null) { + throw new NullPointerException(); + } + String name = property.toString(); + try { + return PropertyUtils.getPropertyType(base, name); + } catch (IllegalAccessException e) { + throw new EvaluationException(e); + } catch (InvocationTargetException e) { + throw new EvaluationException(e.getTargetException()); + } catch (NoSuchMethodException e) { + throw new PropertyNotFoundException(name); + } } @@ -153,7 +166,7 @@ public Class getType(Object base, int index) throws PropertyNotFoundException { - throw new UnsupportedOperationException(); + return getType(base, "" + index); } Modified: struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockServlet.java URL: http://svn.apache.org/viewcvs/struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockServlet.java?rev=376140&r1=376139&r2=376140&view=diff ============================================================================== --- struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockServlet.java (original) +++ struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockServlet.java Wed Feb 8 17:10:34 2006 @@ -93,7 +93,7 @@ public void service(ServletRequest request, ServletResponse response) throws IOException, ServletException { - throw new UnsupportedOperationException(); + ; // Do nothing by default } Modified: struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockValueBinding.java URL: http://svn.apache.org/viewcvs/struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockValueBinding.java?rev=376140&r1=376139&r2=376140&view=diff ============================================================================== --- struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockValueBinding.java (original) +++ struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockValueBinding.java Wed Feb 8 17:10:34 2006 @@ -34,15 +34,6 @@ /** * <p>Mock implementation of <code>ValueBinding</code>.</p> - * - * <p>This implementation is subject to the following restrictions:</p> - * <ul> - * <li>Looking up the first name via the configured <code>VariableResolver</code> - * (which is also limited in capability).</li> - * <li>Resolving the "." operator via the configured - * <code>PropertyResolver</code>.</li> - * <li>Supports only <code>getValue()</code> and <code>setValue()</code>.</li> - * </ul> */ public class MockValueBinding extends ValueBinding implements StateHolder { @@ -173,7 +164,27 @@ public boolean isReadOnly(FacesContext context) throws PropertyNotFoundException { - throw new UnsupportedOperationException(); + if (context == null) { + throw new NullPointerException(); + } + List names = parse(ref); + + // Resolve the variable name + VariableResolver vr = application().getVariableResolver(); + String name = (String) names.get(0); + Object base = vr.resolveVariable(context, name); + if (names.size() < 2) { + return true; + } + + // Resolve the property names + PropertyResolver pr = application().getPropertyResolver(); + for (int i = 1; i < names.size() - 1; i++) { + base = pr.getValue(base, (String) names.get(i)); + } + + // Return the read only state of the final property + return pr.isReadOnly(base, (String) names.get(names.size() - 1)); } @@ -181,7 +192,27 @@ public Class getType(FacesContext context) throws PropertyNotFoundException { - throw new UnsupportedOperationException(); + if (context == null) { + throw new NullPointerException(); + } + List names = parse(ref); + + // Resolve the variable name + VariableResolver vr = application().getVariableResolver(); + String name = (String) names.get(0); + Object base = vr.resolveVariable(context, name); + if (names.size() < 2) { + return base.getClass(); + } + + // Resolve the property names + PropertyResolver pr = application().getPropertyResolver(); + for (int i = 1; i < names.size() - 1; i++) { + base = pr.getValue(base, (String) names.get(i)); + } + + // Return the type of the final property + return pr.getType(base, (String) names.get(names.size() - 1)); } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]