Fix issue with unmarshalling of TreeSPath
authorMathieu Baudier <mbaudier@argeo.org>
Wed, 30 Apr 2008 11:18:00 +0000 (11:18 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Wed, 30 Apr 2008 11:18:00 +0000 (11:18 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@1087 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.core/src/main/java/org/argeo/slc/castor/structure/tree/TreeSPathFieldHandler.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/unit/AbstractSpringTestCase.java
org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/test/tree/mapping.xml
org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/test/tree/CastorTestResultDaoHibernateTest.java

diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/castor/structure/tree/TreeSPathFieldHandler.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/castor/structure/tree/TreeSPathFieldHandler.java
new file mode 100644 (file)
index 0000000..ad117ff
--- /dev/null
@@ -0,0 +1,41 @@
+package org.argeo.slc.castor.structure.tree;
+
+import org.exolab.castor.mapping.AbstractFieldHandler;
+import org.exolab.castor.mapping.MapItem;
+
+import org.argeo.slc.core.structure.tree.TreeSPath;
+
+public class TreeSPathFieldHandler extends AbstractFieldHandler {
+
+       @Override
+       public Object getValue(Object object) throws IllegalStateException {
+               MapItem part = (MapItem) object;
+               return ((TreeSPath) part.getKey()).getAsUniqueString();
+       }
+
+       @Override
+       public Object newInstance(Object parent) throws IllegalStateException {
+               return null;
+       }
+
+       @Override
+       public Object newInstance(Object parent, Object[] args)
+                       throws IllegalStateException {
+               return null;
+       }
+
+       @Override
+       public void resetValue(Object object) throws IllegalStateException,
+                       IllegalArgumentException {
+               MapItem part = (MapItem) object;
+               part.setKey(null);
+       }
+
+       @Override
+       public void setValue(Object object, Object value)
+                       throws IllegalStateException, IllegalArgumentException {
+               MapItem part = (MapItem) object;
+               part.setKey(TreeSPath.parseToCreatePath(value.toString()));
+       }
+
+}
index 5166242b4626c9c4873997565af672068eea715f..f0af1086ea977209e9c9def97e2a8c59d3439031 100644 (file)
@@ -7,11 +7,15 @@ import junit.framework.TestCase;
 import org.springframework.context.ApplicationContext;\r
 import org.springframework.context.support.ClassPathXmlApplicationContext;\r
 \r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
 import org.argeo.slc.core.SlcException;\r
 import org.argeo.slc.core.process.SlcExecution;\r
 \r
 /** Helper for tests using a Spring application co,text. */\r
 public abstract class AbstractSpringTestCase extends TestCase {\r
+       protected final Log log = LogFactory.getLog(getClass());\r
        private ApplicationContext context;\r
 \r
        /**\r
index 836b3789cdc4e6936e9f386dde69ec8614b0a574..4cafdaf431df180f350bdb88649a611777e96a84 100644 (file)
@@ -17,7 +17,8 @@
                                        <map-to\r
                                                ns-uri="http://argeo.org/projects/slc/schemas" ns-prefix="slc" />\r
                                        <field name="key"\r
-                                               type="org.argeo.slc.core.structure.tree.TreeSPath">\r
+                                               type="org.argeo.slc.core.structure.tree.TreeSPath"\r
+                                               handler="org.argeo.slc.castor.structure.tree.TreeSPathFieldHandler">\r
                                                <bind-xml name="path" node="attribute" />\r
                                        </field>\r
                                        <field name="value"\r
@@ -33,7 +34,8 @@
                                        <map-to\r
                                                ns-uri="http://argeo.org/projects/slc/schemas" ns-prefix="slc" />\r
                                        <field name="key"\r
-                                               type="org.argeo.slc.core.structure.tree.TreeSPath">\r
+                                               type="org.argeo.slc.core.structure.tree.TreeSPath"\r
+                                               handler="org.argeo.slc.castor.structure.tree.TreeSPathFieldHandler">\r
                                                <bind-xml name="path" node="attribute" />\r
                                        </field>\r
                                        <field name="value"\r
index dda823d33b879d2afee1840c746f4216611d2ee1..4b5d6bd1fb12ef2b00dd5f178c1f545636e55ce8 100644 (file)
@@ -5,6 +5,7 @@ import org.springframework.oxm.Unmarshaller;
 import org.springframework.xml.transform.StringResult;\r
 import org.springframework.xml.transform.StringSource;\r
 \r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
 import org.argeo.slc.core.test.tree.TreeTestResult;\r
 import org.argeo.slc.core.test.tree.TreeTestResultTestUtils;\r
 import org.argeo.slc.dao.test.tree.TreeTestResultDao;\r
@@ -24,6 +25,10 @@ public class CastorTestResultDaoHibernateTest extends AbstractSpringTestCase {
                TreeTestResult ttrUnm = (TreeTestResult) getBean(Unmarshaller.class)\r
                                .unmarshal(source);\r
 \r
+               for (TreeSPath path : ttrUnm.getResultParts().keySet()) {\r
+                       log.debug("Path: " + path.getClass() + ": " + path);\r
+               }\r
+\r
                TreeTestResultDao ttrDao = getBean(TreeTestResultDao.class);\r
                ttrDao.create(ttrUnm);\r
                TreeTestResult ttrPersist = ttrDao.getTestResult(ttr.getUuid());\r