=== added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/MessageXmlAdapter.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/MessageXmlAdapter.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/adapter/MessageXmlAdapter.java 2011-12-16 11:36:58 +0000 @@ -0,0 +1,60 @@ +package org.hisp.dhis.common.adapter; + +/* + * Copyright (c) 2004-2011, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import org.hisp.dhis.common.BaseIdentifiableObject; +import org.hisp.dhis.message.Message; + +import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.util.UUID; + +/** + * @author Morten Olav Hansen + */ +public class MessageXmlAdapter extends XmlAdapter +{ + private BaseIdentifiableObjectXmlAdapter baseIdentifiableObjectXmlAdapter = new BaseIdentifiableObjectXmlAdapter(); + + @Override + public Message unmarshal( BaseIdentifiableObject identifiableObject ) throws Exception + { + Message message = new Message(); + + message.setUid( identifiableObject.getUid() ); + message.setLastUpdated( identifiableObject.getLastUpdated() ); + message.setName( identifiableObject.getName() == null ? UUID.randomUUID().toString() : identifiableObject.getName() ); + + return message; + } + + @Override + public BaseIdentifiableObject marshal( Message message ) throws Exception + { + return baseIdentifiableObjectXmlAdapter.marshal( message ); + } +} === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/Message.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/Message.java 2011-12-16 09:48:40 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/Message.java 2011-12-16 11:36:58 +0000 @@ -28,15 +28,18 @@ */ import org.codehaus.jackson.annotate.JsonProperty; +import org.codehaus.jackson.map.annotate.JsonSerialize; import org.hisp.dhis.common.BaseIdentifiableObject; import org.hisp.dhis.common.CodeGenerator; import org.hisp.dhis.common.Dxf2Namespace; +import org.hisp.dhis.common.adapter.UserXmlAdapter; import org.hisp.dhis.user.User; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import java.util.Date; /** @@ -108,7 +111,9 @@ } @XmlElement + @XmlJavaTypeAdapter( UserXmlAdapter.class ) @JsonProperty + @JsonSerialize( as = BaseIdentifiableObject.class ) public User getSender() { return sender; === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/MessageConversation.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/MessageConversation.java 2011-12-16 09:48:40 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/MessageConversation.java 2011-12-16 11:36:58 +0000 @@ -28,14 +28,14 @@ */ import org.codehaus.jackson.annotate.JsonProperty; +import org.codehaus.jackson.map.annotate.JsonSerialize; import org.hisp.dhis.common.BaseIdentifiableObject; import org.hisp.dhis.common.Dxf2Namespace; +import org.hisp.dhis.common.adapter.UserXmlAdapter; import org.hisp.dhis.user.User; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.*; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import java.util.*; /** @@ -176,6 +176,10 @@ this.subject = subject; } +/* @XmlElementWrapper( name = "userMessages" ) + @XmlElement( name = "userMessage" ) + @JsonProperty */ + // TODO waiting for idObject version of userMessage public Set getUserMessages() { return userMessages; @@ -186,6 +190,9 @@ this.userMessages = userMessages; } + @XmlElementWrapper( name = "messages" ) + @XmlElement( name = "message" ) + @JsonProperty public List getMessages() { return messages; @@ -197,7 +204,9 @@ } @XmlElement + @XmlJavaTypeAdapter( UserXmlAdapter.class ) @JsonProperty + @JsonSerialize( as = BaseIdentifiableObject.class ) public User getLastSender() { return lastSender; === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/UserMessage.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/UserMessage.java 2011-12-16 09:48:40 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/UserMessage.java 2011-12-16 11:36:58 +0000 @@ -28,13 +28,17 @@ */ import org.codehaus.jackson.annotate.JsonProperty; +import org.codehaus.jackson.map.annotate.JsonSerialize; +import org.hisp.dhis.common.BaseIdentifiableObject; import org.hisp.dhis.common.Dxf2Namespace; +import org.hisp.dhis.common.adapter.UserXmlAdapter; import org.hisp.dhis.user.User; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import java.util.UUID; /** @@ -94,7 +98,9 @@ } @XmlElement + @XmlJavaTypeAdapter( UserXmlAdapter.class ) @JsonProperty + @JsonSerialize( as = BaseIdentifiableObject.class ) public User getUser() { return user;