Author: rdonkin
Date: Sat Dec 10 01:45:51 2005
New Revision: 355731
URL: http://svn.apache.org/viewcvs?rev=355731&view=rev
Log:
Fix for problem when using primitive collectivesdefined by a dot betwixt file.
Added:
jakarta/commons/proper/betwixt/trunk/src/test/org/apache/commons/betwixt/PoemBean.betwixt
jakarta/commons/proper/betwixt/trunk/src/test/org/apache/commons/betwixt/PoemBean.java
jakarta/commons/proper/betwixt/trunk/src/test/org/apache/commons/betwixt/TestStringCollections.java
Modified:
jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/digester/ElementRule.java
Modified:
jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/digester/ElementRule.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/digester/ElementRule.java?rev=355731&r1=355730&r2=355731&view=diff
==============================================================================
---
jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/digester/ElementRule.java
(original)
+++
jakarta/commons/proper/betwixt/trunk/src/java/org/apache/commons/betwixt/digester/ElementRule.java
Sat Dec 10 01:45:51 2005
@@ -385,8 +385,17 @@
} else {
elementDescriptor
.setUpdater(new MethodUpdater(updateMethod));
- elementDescriptor.setSingularPropertyType(updateMethod
- .getParameterTypes()[0]);
+ Class singularType = updateMethod.getParameterTypes()[0];
+ elementDescriptor.setSingularPropertyType(singularType);
+ if (singularType != null)
+ {
+ boolean isPrimitive =
getXMLIntrospector().isPrimitiveType(singularType);
+ if (isPrimitive)
+ {
+ log.debug("Primitive collective: setting hollow to
false");
+ elementDescriptor.setHollow(false);
+ }
+ }
if (log.isTraceEnabled()) {
log.trace("Set custom updater on " +
elementDescriptor);
}
Added:
jakarta/commons/proper/betwixt/trunk/src/test/org/apache/commons/betwixt/PoemBean.betwixt
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/betwixt/trunk/src/test/org/apache/commons/betwixt/PoemBean.betwixt?rev=355731&view=auto
==============================================================================
---
jakarta/commons/proper/betwixt/trunk/src/test/org/apache/commons/betwixt/PoemBean.betwixt
(added)
+++
jakarta/commons/proper/betwixt/trunk/src/test/org/apache/commons/betwixt/PoemBean.betwixt
Sat Dec 10 01:45:51 2005
@@ -0,0 +1,8 @@
+<?xml version='1.0'?>
+<info>
+ <element name='PoemBean'>
+ <element name='lines'>
+ <element name='line' property='lines'
updater='addLine'/>
+ </element>
+ </element>
+</info>
\ No newline at end of file
Added:
jakarta/commons/proper/betwixt/trunk/src/test/org/apache/commons/betwixt/PoemBean.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/betwixt/trunk/src/test/org/apache/commons/betwixt/PoemBean.java?rev=355731&view=auto
==============================================================================
---
jakarta/commons/proper/betwixt/trunk/src/test/org/apache/commons/betwixt/PoemBean.java
(added)
+++
jakarta/commons/proper/betwixt/trunk/src/test/org/apache/commons/betwixt/PoemBean.java
Sat Dec 10 01:45:51 2005
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed 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.commons.betwixt;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class PoemBean {
+
+ private List lines = new ArrayList();
+
+ public List getLines() {
+ return lines;
+ }
+
+ public void addLine(String line) {
+ lines.add(line);
+ }
+}
Added:
jakarta/commons/proper/betwixt/trunk/src/test/org/apache/commons/betwixt/TestStringCollections.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/betwixt/trunk/src/test/org/apache/commons/betwixt/TestStringCollections.java?rev=355731&view=auto
==============================================================================
---
jakarta/commons/proper/betwixt/trunk/src/test/org/apache/commons/betwixt/TestStringCollections.java
(added)
+++
jakarta/commons/proper/betwixt/trunk/src/test/org/apache/commons/betwixt/TestStringCollections.java
Sat Dec 10 01:45:51 2005
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed 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.commons.betwixt;
+
+import java.io.StringReader;
+import java.io.StringWriter;
+
+import org.apache.commons.betwixt.io.BeanReader;
+import org.apache.commons.betwixt.io.BeanWriter;
+
+import junit.framework.TestCase;
+
+public class TestStringCollections extends AbstractTestCase {
+
+ public TestStringCollections(String testName) {
+ super(testName);
+ }
+
+ public void testIntrospection() throws Exception {
+ XMLIntrospector introspector = new XMLIntrospector();
+ XMLBeanInfo xmlBeanInfo = introspector.introspect(PoemBean.class);
+ ElementDescriptor beanDescriptor = xmlBeanInfo.getElementDescriptor();
+ ElementDescriptor[] beanChildren =
beanDescriptor.getElementDescriptors();
+ assertEquals("Only one child", 1, beanChildren.length);
+ ElementDescriptor[] linesChildren =
beanChildren[0].getElementDescriptors();
+ assertEquals("Only one lines child", 1, linesChildren.length);
+ assertFalse("Line child is not hollow", linesChildren[0].isHollow());
+ }
+
+ public void testWritePoem() throws Exception {
+ String expected = "<?xml version='1.0'?>" +
+ "<PoemBean>" +
+ "<lines>" +
+ "<line>It is an ancient Mariner,</line>" +
+ "<line>And he stoppeth one of three.</line>" +
+ "<line>\"By thy long grey beard and the glittering
eye,</line>" +
+ "<line>Now wherefore stopp'st thou me?\"</line>" +
+ "</lines>" +
+ "</PoemBean>";
+ PoemBean bean = new PoemBean();
+ bean.addLine("It is an ancient Mariner,");
+ bean.addLine("And he stoppeth one of three.");
+ bean.addLine("\"By thy long grey beard and the glittering eye,");
+ bean.addLine("Now wherefore stopp'st thou me?\"");
+
+ StringWriter out = new StringWriter();
+ out.write("<?xml version='1.0'?>");
+ BeanWriter writer = new BeanWriter(out);
+ writer.getBindingConfiguration().setMapIDs(false);
+ writer.write(bean);
+
+ String xml = out.toString();
+ xmlAssertIsomorphic(parseString(expected), parseString(xml));
+ }
+
+ public void testReadPoem() throws Exception {
+ String xml = "<?xml version='1.0'?>" +
+ "<PoemBean>" +
+ "<lines>" +
+ "<line>It is an ancient Mariner,</line>" +
+ "<line>And he stoppeth one of three.</line>" +
+ "<line>\"By thy long grey beard and the glittering eye,</line>" +
+ "<line>Now wherefore stopp'st thou me?\"</line>" +
+ "</lines>" +
+ "</PoemBean>";
+ BeanReader reader = new BeanReader();
+ reader.registerBeanClass(PoemBean.class);
+ PoemBean bean = (PoemBean) reader.parse(new StringReader(xml));
+ assertNotNull("Expected bean to be output");
+ Object[] lines = bean.getLines().toArray();
+ assertEquals("Expected four lines", 4, lines.length);
+ assertEquals("First line of Rime Of The Ancient Mariner", "It is an
ancient Mariner,", lines[0]);
+ assertEquals("Second line of Rime Of The Ancient Mariner", "And he
stoppeth one of three.", lines[1]);
+ assertEquals("Third line of Rime Of The Ancient Mariner", "\"By thy
long grey beard and the glittering eye,", lines[2]);
+ assertEquals("Fourth line of Rime Of The Ancient Mariner", "Now
wherefore stopp'st thou me?\"", lines[3]);
+
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]