Author: rdonkin
Date: Thu Aug 11 11:37:31 2005
New Revision: 231498
URL: http://svn.apache.org/viewcvs?rev=231498&view=rev
Log:
Improved support for private static classes.
Modified:
jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/expression/MethodExpression.java
jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/expression/MethodUpdater.java
jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/io/BeanRuleSet.java
jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/io/read/ChainedBeanCreatorFactory.java
jakarta/commons/proper/betwixt/trunk/src/test/org/apache/commons/betwixt/io/read/TestReadData.java
Modified:
jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/expression/MethodExpression.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/expression/MethodExpression.java?rev=231498&r1=231497&r2=231498&view=diff
==============================================================================
---
jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/expression/MethodExpression.java
(original)
+++
jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/expression/MethodExpression.java
Thu Aug 11 11:37:31 2005
@@ -66,7 +66,18 @@
Class type = bean.getClass();
Method alternate = findAlternateMethod( type, method );
if ( alternate != null ) {
- return alternate.invoke( bean, arguments );
+ try
+ {
+ return alternate.invoke( bean, arguments );
+ } catch (IllegalAccessException ex) {
+ alternate.setAccessible(true);
+ return alternate.invoke( bean, arguments );
+ }
+ }
+ else
+ {
+ method.setAccessible(true);
+ return method.invoke( bean, arguments );
}
} catch (Exception e2) {
handleException(context, e2);
Modified:
jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/expression/MethodUpdater.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/expression/MethodUpdater.java?rev=231498&r1=231497&r2=231498&view=diff
==============================================================================
---
jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/expression/MethodUpdater.java
(original)
+++
jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/expression/MethodUpdater.java
Thu Aug 11 11:37:31 2005
@@ -102,6 +102,14 @@
);
}
Object[] arguments = { newValue };
- method.invoke( bean, arguments );
+ try
+ {
+ method.invoke( bean, arguments );
+ }
+ catch (IllegalAccessException e)
+ {
+ method.setAccessible(true);
+ method.invoke( bean, arguments );
+ }
}
}
Modified:
jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/io/BeanRuleSet.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/io/BeanRuleSet.java?rev=231498&r1=231497&r2=231498&view=diff
==============================================================================
---
jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/io/BeanRuleSet.java
(original)
+++
jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/io/BeanRuleSet.java
Thu Aug 11 11:37:31 2005
@@ -402,6 +402,10 @@
public Object popBean() {
Object bean = super.popBean();
Object top = digester.pop();
+ if (digester.peek() == null) {
+ // don't pop the last from the stack
+ digester.push(top);
+ }
return bean;
}
}
Modified:
jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/io/read/ChainedBeanCreatorFactory.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/io/read/ChainedBeanCreatorFactory.java?rev=231498&r1=231497&r2=231498&view=diff
==============================================================================
---
jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/io/read/ChainedBeanCreatorFactory.java
(original)
+++
jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/io/read/ChainedBeanCreatorFactory.java
Thu Aug 11 11:37:31 2005
@@ -112,7 +112,8 @@
try {
- return theClass.newInstance();
+ Object result = theClass.newInstance();
+ return result;
} catch (Exception e) {
// it would be nice to have a pluggable strategy for
exception management
Modified:
jakarta/commons/proper/betwixt/trunk/src/test/org/apache/commons/betwixt/io/read/TestReadData.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/betwixt/trunk/src/test/org/apache/commons/betwixt/io/read/TestReadData.java?rev=231498&r1=231497&r2=231498&view=diff
==============================================================================
---
jakarta/commons/proper/betwixt/trunk/src/test/org/apache/commons/betwixt/io/read/TestReadData.java
(original)
+++
jakarta/commons/proper/betwixt/trunk/src/test/org/apache/commons/betwixt/io/read/TestReadData.java
Thu Aug 11 11:37:31 2005
@@ -16,9 +16,11 @@
package org.apache.commons.betwixt.io.read;
import java.io.StringReader;
+import java.io.StringWriter;
import org.apache.commons.betwixt.AbstractTestCase;
import org.apache.commons.betwixt.io.BeanReader;
+import org.apache.commons.betwixt.io.BeanWriter;
/**
* @author <a href='http://jakarta.apache.org/commons'>Jakarta Commons
Team</a>, <a href='http://www.apache.org'>Apache Software Foundation</a>
@@ -62,5 +64,47 @@
}
AlertBean alterBean = (AlertBean) reader.parse(validIn);
+ }
+
+ public void testWritePrivateStaticClasses() throws Exception {
+ Nested nested = new Nested();
+ nested.setName("Timothy Taylor");
+ StringWriter out = new StringWriter();
+ out.write("<?xml version='1.0'?>");
+ BeanWriter writer = new BeanWriter(out);
+
writer.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);
+ writer.getBindingConfiguration().setMapIDs(false);
+ writer.write("ale", nested);
+
+ String expected = "<?xml version='1.0'?>" +
+ "<ale><name>Timothy Taylor</name></ale>";
+
+ xmlAssertIsomorphic(parseString(out), parseString(expected), true);
+ }
+
+ public void testReadPrivateStaticClasses() throws Exception {
+
+ StringReader in= new StringReader("<?xml version='1.0'?>" +
+ "<ale><name>Timothy Taylor</name></ale>");
+ BeanReader reader = new BeanReader();
+ reader.registerBeanClass("ale", Nested.class);
+
reader.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(true);
+ Object out = reader.parse(in);
+ assertTrue("Expected bean to be of type Nested", out instanceof
Nested);
+ Nested bean = (Nested) out;
+ assertEquals("Expected name to be set", "Timothy Taylor",
bean.getName());
+ }
+
+ private static class Nested {
+ private String name;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]