|
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.
|