From: <ro...@us...> - 2009-03-06 13:29:48
|
Revision: 62 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=62&view=rev Author: roekens Date: 2009-03-06 13:29:28 +0000 (Fri, 06 Mar 2009) Log Message: ----------- - introduction of new attribute structure where conversion to xml works fine, conversion back to java objects does not work yet -> espescially not the distinction of persistent and transient objects Modified Paths: -------------- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/TestXmlConversion.java Added Paths: ----------- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Attribute.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/PersistentAttribute.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/TransientAttribute.java Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java 2009-03-06 10:11:09 UTC (rev 61) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java 2009-03-06 13:29:28 UTC (rev 62) @@ -29,11 +29,17 @@ public static final String ACCOUNT_ID = "accountId"; public static final String GROUP_ID = "groupId"; public static final String MEMBER = "member"; + public static final String ATTRIBUTE = "attribute"; + public static final String ATTRIBUTES = "attributes"; //entity property names + public static final String PROPERTY_ATTRIBUTES = "attributes"; public static final String PROPERTY_PARENTS = "parents"; public static final String PROPERTY_CHILDREN = "children"; public static final String PROPERTY_COURSES = "courses"; + public static final String PROPERTY_NAME = "name"; + public static final String PROPERTY_VALUE = "value"; + public static final String PROPERTY_PERSISTENT = "peristent"; //table names public static final String TABLENAME_ACCOUNT = "CDMM_ACCOUNT"; @@ -57,4 +63,7 @@ public static final String ID = "id"; + + + } \ No newline at end of file Added: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Attribute.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Attribute.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Attribute.java 2009-03-06 13:29:28 UTC (rev 62) @@ -0,0 +1,58 @@ +package de.campussource.cse.cdmm.domain; + +import javax.persistence.Embeddable; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.XmlValue; + +import de.campussource.cse.cdmm.Constants; + +@XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) +@Embeddable +@XmlType(namespace=Constants.NAMESPACE_DATATYPES) +public class Attribute { + + private String name; + + private String value; + + private boolean persistent; + + public Attribute(){ + } + + public Attribute(String name, String value, boolean persistent){ + this.name = name; + this.value = value; + this.persistent = persistent; + } + + @XmlAttribute(name=Constants.PROPERTY_PERSISTENT) + public boolean isPersistent() { + return persistent; + } + + public void setPersistent(boolean persistent) { + this.persistent = persistent; + } + + @XmlAttribute(name=Constants.PROPERTY_NAME) + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @XmlValue + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Attribute.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java 2009-03-06 10:11:09 UTC (rev 61) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java 2009-03-06 13:29:28 UTC (rev 62) @@ -1,13 +1,15 @@ package de.campussource.cse.cdmm.domain; +import java.util.ArrayList; import java.util.List; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; -import javax.xml.bind.annotation.XmlAnyElement; import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlElements; import javax.xml.bind.annotation.XmlID; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; @@ -20,15 +22,15 @@ import de.campussource.cse.cdmm.IdAdapter; @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) -@XmlType(propOrder={Constants.ID, "any"}, namespace=Constants.NAMESPACE_DATATYPES) +@XmlType(propOrder={Constants.ID, Constants.PROPERTY_ATTRIBUTES}, namespace=Constants.NAMESPACE_DATATYPES) public class Entity{ @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; - private List<Object> any; - + private List<Attribute> attributes; + public Entity(){ } @@ -73,12 +75,25 @@ return id; } - @XmlAnyElement - public List<Object> getAny() { - return any; + @XmlElementWrapper(name=Constants.ATTRIBUTES) + @XmlElements(value={@XmlElement(name=Constants.ATTRIBUTE,type=Attribute.class), @XmlElement(name=Constants.ATTRIBUTE,type=TransientAttribute.class), @XmlElement(name=Constants.ATTRIBUTE, type=PersistentAttribute.class)}) + public List<Attribute> getAttributes() { + return attributes; } - public void setAny(List<Object> any) { - this.any = any; - }; + private TransientAttribute attribute2TransientAttribute(Attribute attribute){ + return new TransientAttribute(attribute.getName(), attribute.getValue()); + } + + private PersistentAttribute attribute2PersistentAttribute(Attribute attribute){ + return new PersistentAttribute(attribute.getName(), attribute.getValue()); + } + + public void setAttributes(List<Attribute> attributes) { + List<Attribute> newAttributeList = new ArrayList<Attribute>(); + for (Attribute att : attributes){ + if (att.isPersistent() ? newAttributeList.add(attribute2PersistentAttribute(att)) : newAttributeList.add(attribute2TransientAttribute(att))); + } + this.attributes = newAttributeList; + } } \ No newline at end of file Added: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/PersistentAttribute.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/PersistentAttribute.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/PersistentAttribute.java 2009-03-06 13:29:28 UTC (rev 62) @@ -0,0 +1,22 @@ +package de.campussource.cse.cdmm.domain; + +import javax.persistence.Embeddable; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + +import de.campussource.cse.cdmm.Constants; + +@XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) +@Embeddable +@XmlType(namespace=Constants.NAMESPACE_DATATYPES) +public class PersistentAttribute extends Attribute { + + public PersistentAttribute(){} + + public PersistentAttribute(String name, String value){ + setName(name); + setValue(value); + setPersistent(true); + } + +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/PersistentAttribute.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/TransientAttribute.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/TransientAttribute.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/TransientAttribute.java 2009-03-06 13:29:28 UTC (rev 62) @@ -0,0 +1,20 @@ +package de.campussource.cse.cdmm.domain; + +import javax.persistence.Embeddable; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + +import de.campussource.cse.cdmm.Constants; + +@XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) +@Embeddable +@XmlType(namespace=Constants.NAMESPACE_DATATYPES) +public class TransientAttribute extends Attribute { + public TransientAttribute(){} + + public TransientAttribute(String name, String value){ + setName(name); + setValue(value); + setPersistent(false); + } +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/TransientAttribute.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/TestXmlConversion.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/TestXmlConversion.java 2009-03-06 10:11:09 UTC (rev 61) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/TestXmlConversion.java 2009-03-06 13:29:28 UTC (rev 62) @@ -21,14 +21,17 @@ import com.sun.org.apache.xml.internal.serialize.OutputFormat; import com.sun.org.apache.xml.internal.serialize.XMLSerializer; +import de.campussource.cse.cdmm.domain.Attribute; import de.campussource.cse.cdmm.domain.Account; import de.campussource.cse.cdmm.domain.Category; import de.campussource.cse.cdmm.domain.Course; import de.campussource.cse.cdmm.domain.Entity; import de.campussource.cse.cdmm.domain.EntityContainer; import de.campussource.cse.cdmm.domain.Group; +import de.campussource.cse.cdmm.domain.PersistentAttribute; import de.campussource.cse.cdmm.domain.Role; import de.campussource.cse.cdmm.domain.RoleType; +import de.campussource.cse.cdmm.domain.TransientAttribute; import junit.framework.TestCase; @@ -416,35 +419,28 @@ return container; } - - private class Test123{ - public String name; - public long value; - } @Test - public void testEntityXml(){ - System.out.println("----- entering Entity XML Test -----"); - //create entity object - Entity entity = new Entity(createUniqueId()); - String testString = "Dies ist ein TestString"; + public void testAttributeXml(){ + System.out.println("----- entering Attribute XML Test -----"); + //create category object with two attributes + Category category = new Category(createUniqueId()); + TransientAttribute att1 = new TransientAttribute(); + att1.setName("TNAME"); + att1.setValue("TVALUE"); + PersistentAttribute att2 = new PersistentAttribute(); + att2.setName("PNAME"); + att2.setValue("PVALUE"); + List<Attribute> attributes = new ArrayList<Attribute>(); + attributes.add(att1); + attributes.add(att2); + category.setAttributes(attributes); -// Test123 testClass = new Test123(); -// testClass.name="TestName"; -// testClass.value=1L; -// -// List<Object> objects = new ArrayList<Object>(); -// objects.add(testString); objects.add(testClass); -// -// entity.setAny(objects); -// -// assertNotNull(entity); - //create jaxb context and marshaller Marshaller marshaller=null; JAXBContext context=null; try { - context = JAXBContext.newInstance(Entity.class); + context = JAXBContext.newInstance(Category.class); marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); } catch (JAXBException e) { @@ -456,7 +452,7 @@ String outputXml = ""; try { Writer writer = new StringWriter(); - marshaller.marshal(entity, writer); + marshaller.marshal(category, writer); outputXml = writer.toString(); writer.close(); } catch (JAXBException e) { @@ -467,23 +463,18 @@ assertTrue((outputXml!=null)&&(outputXml!="")); System.out.println(outputXml); - outputXml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" + - "<ns2:entity xmlns:ns2=\"http://cse.campussource.de/DataTypes\">" + - "<id>1236268822040</id>" + - "<test>124356</test>" + - "</ns2:entity>"; - //convert xml back to an object and assert equality to source object - Entity convertedEntity=null; + Category convertedCategory=null; try { Unmarshaller unmarshaller = context.createUnmarshaller(); - convertedEntity = (Entity) unmarshaller.unmarshal(new StringReader(outputXml)); - System.out.println(convertedEntity.toString()); + convertedCategory = (Category) unmarshaller.unmarshal(new StringReader(outputXml)); + System.out.println(convertedCategory.toString()); } catch (JAXBException e) { fail(e.getMessage()); } - assertFalse(entity.equals(convertedEntity)); - System.out.println("----- leaving Entity XML Test -----"); - } + assertTrue(category.equals(convertedCategory)); + System.out.println("----- leaving Attribute XML Test -----"); + + } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |