You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@wink.apache.org by madusanka <ma...@gmail.com> on 2013/11/17 19:13:13 UTC

How to send an array using XML

Hi,

I want to know how to send an array in Wink. I know using JSON, I can send.
But I want to know how to do it with XML?

Thanks !!!



--
View this message in context: http://apache-wink-users.3471013.n2.nabble.com/How-to-send-an-array-using-XML-tp7572727.html
Sent from the Apache Wink Users mailing list archive at Nabble.com.

Re: How to send an array using XML

Posted by madusanka <ma...@gmail.com>.
Hi,

I was able to figure it out. No need to have an @Asset class if the array
contains standard Java classes or primitives. Following is the array class
you need:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "intArray")
public class IntArray {

    @XmlElement(name = "number")
    private int[] array;

    @Produces(MediaType.APPLICATION_ATOM_XML)
    public int[] getArray() {
        return array;
    }

    @Consumes(MediaType.APPLICATION_ATOM_XML)
    public void setArray(int[] array) {
        this.array = array;
    }
}



--
View this message in context: http://apache-wink-users.3471013.n2.nabble.com/How-to-send-an-array-using-XML-tp7572727p7572732.html
Sent from the Apache Wink Users mailing list archive at Nabble.com.

Re: How to send an array using XML

Posted by madusanka <ma...@gmail.com>.
Hi,

I was able to send an array of integers by wrapping ints in a class. But the
response is like this

<intValues>
	<intValue>
		<number>134</number>
	</intValue>

	<intValue>
		<number>3504</number>
	</intValue>
</intValues>

But I want the array like this. How can I do this?

<intValues>
		<number>134</number>
		<number>3504</number>
</intValues>

+++++++++++++++++++++++++++++++++++++++++++++++++++++++

@Asset
public class IntArray {

    private List<IntValue> intList;

    public IntArray() {
        intList = new ArrayList<IntValue>();
    }

    @Produces(MediaType.APPLICATION_ATOM_XML)
    public List<IntValue> getIntList() {
        return intList;
    }

    @Consumes(MediaType.APPLICATION_ATOM_XML)
    public void setIntList(List<IntValue> intList) {
        this.intList = intList;
    }
}

+++++++++++++++++++++++++++++++++++++++++++++++++++++

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "intValueType")
@XmlRootElement(name = "intValue")
public class IntValue {

    @XmlElement
    private int number;

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }
}




--
View this message in context: http://apache-wink-users.3471013.n2.nabble.com/How-to-send-an-array-using-XML-tp7572727p7572730.html
Sent from the Apache Wink Users mailing list archive at Nabble.com.

Re: How to send an array using XML

Posted by madusanka <ma...@gmail.com>.
Hi,

It worked when I sent an array of objects. But it gave an internal server
error for an array of integers. Following is my code. The resource sends an
array of integers. Help me to resolve this?

+++++++++++++++++ Asset class +++++++++++++++++++++++
@Asset
public class IntArray {

    private List<Integer> intList;

    public IntArray() {
        intList = new ArrayList<Integer>();
    }

    @Produces(MediaType.APPLICATION_ATOM_XML)
    public List<Integer> getIntList() {
        return intList;
    }

    @Consumes(MediaType.APPLICATION_ATOM_XML)
    public void setIntList(List<Integer> intList) {
        this.intList = intList;
    }
}

+++++++++++++++++ Resource +++++++++++++++++++++++
@Path("/test")
public class HelloWorld {

    private Random random;

    public HelloWorld() {
        random = new Random();
    }


    @Path("/int")
    @POST
    @Produces(MediaType.APPLICATION_ATOM_XML)
    @Consumes(MediaType.APPLICATION_ATOM_XML)
    public Response sendIntArray(String size) {
        return
Response.ok(getIntArray(Integer.valueOf(size))).type(MediaType.APPLICATION_ATOM_XML).build();
    }

    private IntArray getIntArray(int size) {
        IntArray asset = new IntArray();
        List<Integer> list = asset.getIntList();

        for (int i = 0; i < size; i++) {
            list.add(random.nextInt());
        }

        return asset;
    }

}




--
View this message in context: http://apache-wink-users.3471013.n2.nabble.com/How-to-send-an-array-using-XML-tp7572727p7572729.html
Sent from the Apache Wink Users mailing list archive at Nabble.com.

Re: How to send an array using XML

Posted by Luciano Resende <lu...@gmail.com>.
On Sun, Nov 17, 2013 at 10:13 AM, madusanka
<ma...@gmail.com>wrote:

> Hi,
>
> I want to know how to send an array in Wink. I know using JSON, I can send.
> But I want to know how to do it with XML?
>
> Thanks !!!
>
>
In order to send an array of items in XML you need to encapsulate it under
a wrapper object (e.g. Order has a list of items, instead of just a list of
items).


-- 
Luciano Resende
http://people.apache.org/~lresende
http://twitter.com/lresende1975
http://lresende.blogspot.com/