/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.tuscany.sca.itest.databindings.jaxb.topdown; import java.awt.Image; import java.awt.image.BufferedImage; import java.awt.image.PixelGrabber; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.StringWriter; import java.math.BigDecimal; import java.math.BigInteger; import java.net.URI; import java.net.URL; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.TimeZone; import java.util.UUID; import javax.activation.DataHandler; import javax.xml.datatype.DatatypeConfigurationException; import javax.xml.datatype.DatatypeFactory; import javax.xml.datatype.Duration; import javax.xml.datatype.XMLGregorianCalendar; import javax.xml.namespace.QName; import javax.xml.transform.Result; import javax.xml.transform.Source; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; import junit.framework.Assert; import org.apache.axiom.attachments.ByteArrayDataSource; import org.apache.tuscany.sca.itest.databindings.jaxb.StandardTypesServiceClient; import org.apache.tuscany.sca.itest.databindings.jaxb.impl.StandardTypesTransformer; import org.apache.tuscany.sca.node.Contribution; import org.apache.tuscany.sca.node.Node; import org.apache.tuscany.sca.node.NodeFactory; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; /** * @version $Rev$ $Date$ */ public class StandardTypesDatabindingTestCase { private static Node node; /** * Runs once before the tests */ @BeforeClass public static void setUp() throws Exception { NodeFactory factory = NodeFactory.newInstance(); node = factory.createNode(new File("src/main/resources/wsdl/wrapped/standard-types-service.composite").toURI().toURL().toString(), new Contribution("TestContribution", new File("src/main/resources/wsdl/wrapped/").toURI().toURL().toString())); node.start(); } /** * Runs once after the tests */ @AfterClass public static void tearDown() { node.stop(); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewBigInteger. */ @Test public void testW2WNewBigInteger() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewBigInteger(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewBigIntegerArray. */ @Test public void testW2WNewBigIntegerArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewBigIntegerArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewBigDecimal. */ @Test public void testW2WNewBigDecimal() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewBigDecimal(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewBigDecimalArray. */ @Test public void testW2WNewBigDecimalArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewBigDecimalArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewCalendar. */ @Test public void testW2WNewCalendar() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewCalendar(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewCalendarArray. */ @Test public void testW2WNewCalendarArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewCalendarArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewDate. */ @Test public void testW2WNewDate() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewDate(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewDateArray. */ @Test public void testW2WNewDateArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewDateArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewQName. */ @Test public void testW2WNewQName() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewQName(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewQNameArray. */ @Test public void testW2WNewQNameArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewQNameArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewURI. */ @Test public void testW2WNewURI() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewURI(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewURIArray. */ @Test public void testW2WNewURIArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewURIArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewXMLGregorianCalendar. */ @Test public void testW2WNewXMLGregorianCalendar() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewXMLGregorianCalendar(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewXMLGregorianCalendarArray. */ @Test public void testW2WNewXMLGregorianCalendarArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewXMLGregorianCalendarArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewDuration. */ @Test public void testW2WNewDuration() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewDuration(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewDurationArray. */ @Test public void testW2WNewDurationArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewDurationArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewObject. */ @Test public void testW2WNewObject() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewObject(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewObjectArray. */ @Test public void testW2WNewObjectArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewObjectArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewImage. */ @Test public void testW2WNewImage() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewImage(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewImageArray. */ @Test public void testW2WNewImageArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewImageArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewDataHandler. */ @Test public void testW2WNewDataHandler() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewDataHandler(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewDataHandlerArray. */ @Test public void testW2WNewDataHandlerArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewDataHandlerArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewSource. */ /*@Test //@Ignore("junit.framework.ComparisonFailure: null expected:<... encoding=\"UTF-8\"?><[a>A</a]>> but was:<... encoding=\"UTF-8\"?><[return xmlns=\"http://jaxb.databindings.itest.sca.tuscany.apache.org/\">A</return]>>") public void testW2WNewSource() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewSource(serviceClient); }*/ /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewSourceArray. */ /*@Test @Ignore("TUSCANY-2452") public void testW2WNewSourceArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewSourceArray(serviceClient); }*/ /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewUUID. */ @Test public void testW2WNewUUID() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewUUID(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewUUIDArray. */ @Test public void testW2WNewUUIDArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2WComponent"); performTestNewUUIDArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewBigInteger. */ @Test public void testJ2WNewBigInteger() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewBigInteger(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewBigIntegerArray. */ @Test public void testJ2WNewBigIntegerArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewBigIntegerArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewBigDecimal. */ @Test public void testJ2WNewBigDecimal() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewBigDecimal(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewBigDecimalArray. */ @Test public void testJ2WNewBigDecimalArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewBigDecimalArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewCalendar. */ @Test public void testJ2WNewCalendar() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewCalendar(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewCalendarArray. */ @Test public void testJ2WNewCalendarArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewCalendarArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewDate. */ @Test public void testJ2WNewDate() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewDate(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewDateArray. */ @Test public void testJ2WNewDateArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewDateArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewQName. */ @Test public void testJ2WNewQName() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewQName(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewQNameArray. */ @Test public void testJ2WNewQNameArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewQNameArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewURI. */ @Test public void testJ2WNewURI() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewURI(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewURIArray. */ @Test public void testJ2WNewURIArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewURIArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewXMLGregorianCalendar. */ @Test public void testJ2WNewXMLGregorianCalendar() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewXMLGregorianCalendar(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewXMLGregorianCalendarArray. */ @Test public void testJ2WNewXMLGregorianCalendarArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewXMLGregorianCalendarArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewDuration. */ @Test public void testJ2WNewDuration() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewDuration(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewDurationArray. */ @Test public void testJ2WNewDurationArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewDurationArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewObject. */ @Test public void testJ2WNewObject() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewObject(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewObjectArray. */ @Test public void testJ2WNewObjectArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewObjectArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewImage. */ @Test public void testJ2WNewImage() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewImage(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewImageArray. */ @Test public void testJ2WNewImageArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewImageArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewDataHandler. */ @Test public void testJ2WNewDataHandler() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewDataHandler(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewDataHandlerArray. */ @Test public void testJ2WNewDataHandlerArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewDataHandlerArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewSource. */ /*@Test //@Ignore("junit.framework.ComparisonFailure: null expected:<... encoding=\"UTF-8\"?><[a>A</a]>> but was:<... encoding=\"UTF-8\"?><[return xmlns=\"http://jaxb.databindings.itest.sca.tuscany.apache.org/\">A</return]>>") public void testJ2WNewSource() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewSource(serviceClient); }*/ /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewSourceArray. */ /*@Test @Ignore("TUSCANY-2452") public void testJ2WNewSourceArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewSourceArray(serviceClient); }*/ /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewUUID. */ @Test public void testJ2WNewUUID() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewUUID(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewUUIDArray. */ @Test public void testJ2WNewUUIDArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientJ2WComponent"); performTestNewUUIDArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewBigInteger. */ @Test public void testW2JNewBigInteger() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewBigInteger(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewBigIntegerArray. */ @Test public void testW2JNewBigIntegerArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewBigIntegerArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewBigDecimal. */ @Test public void testW2JNewBigDecimal() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewBigDecimal(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewBigDecimalArray. */ @Test public void testW2JNewBigDecimalArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewBigDecimalArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewCalendar. */ @Test public void testW2JNewCalendar() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewCalendar(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewCalendarArray. */ @Test public void testW2JNewCalendarArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewCalendarArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewDate. */ @Test public void testW2JNewDate() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewDate(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewDateArray. */ @Test public void testW2JNewDateArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewDateArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewQName. */ @Test public void testW2JNewQName() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewQName(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewQNameArray. */ @Test public void testW2JNewQNameArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewQNameArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewURI. */ @Test public void testW2JNewURI() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewURI(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewURIArray. */ @Test public void testW2JNewURIArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewURIArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewXMLGregorianCalendar. */ @Test public void testW2JNewXMLGregorianCalendar() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewXMLGregorianCalendar(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewXMLGregorianCalendarArray. */ @Test public void testW2JNewXMLGregorianCalendarArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewXMLGregorianCalendarArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewDuration. */ @Test public void testW2JNewDuration() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewDuration(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewDurationArray. */ @Test public void testW2JNewDurationArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewDurationArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewObject. */ @Test public void testW2JNewObject() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewObject(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewObjectArray. */ @Test public void testW2JNewObjectArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewObjectArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewImage. */ @Test public void testW2JNewImage() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewImage(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewImageArray. */ @Test public void testW2JNewImageArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewImageArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewDataHandler. */ @Test public void testW2JNewDataHandler() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewDataHandler(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewDataHandlerArray. */ @Test public void testW2JNewDataHandlerArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewDataHandlerArray(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewSource. */ /*@Test //@Ignore("junit.framework.ComparisonFailure: null expected:<... encoding=\"UTF-8\"?><[a>A</a]>> but was:<... encoding=\"UTF-8\"?><[return xmlns=\"http://jaxb.databindings.itest.sca.tuscany.apache.org/\">A</return]>>") public void testW2JNewSource() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewSource(serviceClient); }*/ /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewSourceArray. */ /*@Test @Ignore("TUSCANY-2452") public void testW2JNewSourceArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewSourceArray(serviceClient); }*/ /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewUUID. */ @Test public void testW2JNewUUID() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewUUID(serviceClient); } /** * Invokes the StandardTypesService service using WS binding. * Service method invoked is getNewUUIDArray. */ @Test public void testW2JNewUUIDArray() throws Exception { StandardTypesServiceClient serviceClient = node.getService(StandardTypesServiceClient.class, "StandardTypesServiceClientW2JComponent"); performTestNewUUIDArray(serviceClient); } private void performTestNewBigInteger(StandardTypesServiceClient serviceClient) { BigInteger bi = new BigInteger("1234567890123456789012345678901234"); BigInteger expected = bi.negate(); BigInteger actual = serviceClient.getNewBigIntegerForward(bi); Assert.assertEquals(expected, actual); } private void performTestNewBigIntegerArray(StandardTypesServiceClient serviceClient) { BigInteger[] bia = new BigInteger[2]; bia[0] = new BigInteger("1234567890123456789012345678901234"); bia[1] = new BigInteger("-98765432109876543210987654321"); BigInteger[] actual = serviceClient.getNewBigIntegerArrayForward(bia); Assert.assertEquals(bia.length, actual.length); for (int i = 0; i < bia.length; ++i) { Assert.assertEquals(bia[i].negate(), actual[i]); } } private void performTestNewBigDecimal(StandardTypesServiceClient serviceClient) { BigDecimal bd = new BigDecimal("12345678901234567890.12345678901234"); BigDecimal expected = bd.negate(); BigDecimal actual = serviceClient.getNewBigDecimalForward(bd); Assert.assertEquals(expected, actual); } private void performTestNewBigDecimalArray(StandardTypesServiceClient serviceClient) { BigDecimal[] bda = new BigDecimal[2]; bda[0] = new BigDecimal("1234567890123456.789012345678901234"); bda[1] = new BigDecimal("-987654321098765.43210987654321"); BigDecimal[] actual = serviceClient.getNewBigDecimalArrayForward(bda); Assert.assertEquals(bda.length, actual.length); for (int i = 0; i < bda.length; ++i) { Assert.assertEquals(bda[i].negate(), actual[i]); } } private void performTestNewCalendar(StandardTypesServiceClient serviceClient) { Calendar[] ca = new Calendar[3]; String[] tz = {"GMT+05:30", "GMT+00:00", "GMT-05:00"}; for (int i = 0; i < ca.length; ++i) { ca[i] = Calendar.getInstance(TimeZone.getTimeZone(tz[i])); ca[i].set(Calendar.DAY_OF_MONTH, i + 1); } for (int i = 0; i < ca.length; ++i) { Calendar actual = serviceClient.getNewCalendarForward(ca[i]); ca[i].add(Calendar.DAY_OF_MONTH, 5); if (actual instanceof GregorianCalendar && ca[i] instanceof GregorianCalendar) { // FIXME: Is this a problem? // The instance returned by service method invoked over binding.ws seems to have a gregorianCutover // different from the instance passed. Adjust the gregorianCutover as per the input instance. ((GregorianCalendar)actual).setGregorianChange(((GregorianCalendar)ca[i]).getGregorianChange()); } Assert.assertEquals(ca[i], actual); } } private void performTestNewCalendarArray(StandardTypesServiceClient serviceClient) { Calendar[] ca = new Calendar[3]; String[] tz = {"GMT+05:30", "GMT+00:00", "GMT-05:00"}; for (int i = 0; i < ca.length; ++i) { ca[i] = Calendar.getInstance(TimeZone.getTimeZone(tz[i])); ca[i].set(Calendar.DAY_OF_MONTH, i + 1); } Calendar[] actual = serviceClient.getNewCalendarArrayForward(ca); Assert.assertEquals(ca.length, actual.length); for (int i = 0; i < ca.length; ++i) { ca[i].add(Calendar.DAY_OF_MONTH, 5); if (actual[i] instanceof GregorianCalendar && ca[i] instanceof GregorianCalendar) { // FIXME: Is this a problem? // The instance returned by service method invoked over binding.ws seems to have a gregorianCutover // different from the instance passed. Adjust the gregorianCutover as per the input instance. ((GregorianCalendar)actual[i]).setGregorianChange(((GregorianCalendar)ca[i]).getGregorianChange()); } Assert.assertEquals(ca[i], actual[i]); } } private void performTestNewDate(StandardTypesServiceClient serviceClient) { Date d = new Date(); Date expected = new Date(d.getTime() + 5 * 24 * 60 * 60 * 1000); Date actual = serviceClient.getNewDateForward(d); Assert.assertEquals(expected, actual); } private void performTestNewDateArray(StandardTypesServiceClient serviceClient) { Date[] d = new Date[2]; Date[] expected = new Date[d.length]; for (int i = 0; i < d.length; ++i) { d[i] = new Date(); d[i].setTime(d[i].getTime() + i * 24 * 60 * 60 * 1000); expected[i] = new Date(d[i].getTime() + 5 * 24 * 60 * 60 * 1000); } Date[] actual = serviceClient.getNewDateArrayForward(d); Assert.assertEquals(expected.length, actual.length); for (int i = 0; i < expected.length; ++i) { Assert.assertEquals(expected[i], actual[i]); } } private void performTestNewQName(StandardTypesServiceClient serviceClient) { QName[] qnames = new QName[3]; qnames[0] = new QName("localPart"); qnames[1] = new QName("namespaceUri", "localPart"); qnames[2] = new QName("namespaceUri", "localPart", "prefix"); QName[] expected = new QName[qnames.length]; for (int i = 0; i < qnames.length; ++i) { expected[i] = new QName(qnames[i].getNamespaceURI() + "q", qnames[i].getLocalPart() + "q", qnames[i].getPrefix() + "q"); } for (int i = 0; i < qnames.length; ++i) { QName actual = serviceClient.getNewQNameForward(qnames[i]); Assert.assertEquals(expected[i], actual); } } private void performTestNewQNameArray(StandardTypesServiceClient serviceClient) { QName[] qnames = new QName[4]; qnames[0] = new QName("localPart"); qnames[1] = new QName("namespaceUri", "localPart"); qnames[2] = new QName("namespaceUri", "localPart", "prefix"); qnames[3] = new QName("localPart2"); QName[] expected = new QName[qnames.length]; for (int i = 0; i < qnames.length; ++i) { expected[i] = new QName(qnames[i].getNamespaceURI() + "q", qnames[i].getLocalPart() + "q", qnames[i].getPrefix() + "q"); } QName[] actual = serviceClient.getNewQNameArrayForward(qnames); Assert.assertEquals(expected.length, actual.length); for (int i = 0; i < qnames.length; ++i) { Assert.assertEquals(expected[i], actual[i]); } } private void performTestNewURI(StandardTypesServiceClient serviceClient) { URI[] uris = new URI[4]; uris[0] = URI.create("a/b/c"); uris[1] = URI.create("http://abc/"); uris[2] = URI.create("ftp://a/b"); uris[3] = URI.create("http://abc/").resolve("xyz"); for (int i = 0; i < uris.length; ++i) { URI expected = uris[i].resolve("uri"); URI actual = serviceClient.getNewURIForward(uris[i]); Assert.assertEquals(expected, actual); } } private void performTestNewURIArray(StandardTypesServiceClient serviceClient) { URI[] uris = new URI[4]; uris[0] = URI.create("a/b/c"); // [rfeng] We need to have a trialign / to avoid the resolving problem // FIXME: [vamsi] This is actually a data transformation problem. The array being returned from the service method is // not making to the caller intact. uris[1] = URI.create("http://abc/"); uris[2] = URI.create("ftp://a/b"); uris[3] = URI.create("http://abc/").resolve("xyz"); URI[] expected = new URI[uris.length]; for (int i = 0; i < uris.length; ++i) { expected[i] = uris[i].resolve("uri"); } URI[] actual = serviceClient.getNewURIArrayForward(uris); Assert.assertEquals(expected.length, actual.length); for (int i = 0; i < uris.length; ++i) { Assert.assertEquals(expected[i], actual[i]); } } private void performTestNewXMLGregorianCalendar(StandardTypesServiceClient serviceClient) throws DatatypeConfigurationException { DatatypeFactory df = DatatypeFactory.newInstance(); XMLGregorianCalendar[] xgcals = new XMLGregorianCalendar[3]; xgcals[0] = df.newXMLGregorianCalendar(new GregorianCalendar(1974, GregorianCalendar.APRIL, 19)); xgcals[1] = df.newXMLGregorianCalendar(new GregorianCalendar(1978, GregorianCalendar.OCTOBER, 13)); xgcals[2] = df.newXMLGregorianCalendar(new GregorianCalendar(2006, GregorianCalendar.JUNE, 16)); for (int i = 0; i < xgcals.length; ++i) { XMLGregorianCalendar actual = serviceClient.getNewXMLGregorianCalendarForward(xgcals[i]); xgcals[i].setDay(xgcals[i].getDay() + 5); Assert.assertEquals(xgcals[i], actual); } } private void performTestNewXMLGregorianCalendarArray(StandardTypesServiceClient serviceClient) throws DatatypeConfigurationException { DatatypeFactory df = DatatypeFactory.newInstance(); XMLGregorianCalendar[] xgcals = new XMLGregorianCalendar[3]; xgcals[0] = df.newXMLGregorianCalendar(new GregorianCalendar(1974, GregorianCalendar.APRIL, 19)); xgcals[1] = df.newXMLGregorianCalendar(new GregorianCalendar(1978, GregorianCalendar.OCTOBER, 13)); xgcals[2] = df.newXMLGregorianCalendar(new GregorianCalendar(2006, GregorianCalendar.JUNE, 16)); XMLGregorianCalendar[] actual = serviceClient.getNewXMLGregorianCalendarArrayForward(xgcals); Assert.assertEquals(xgcals.length, actual.length); for (int i = 0; i < xgcals.length; ++i) { xgcals[i].setDay(xgcals[i].getDay() + 5); Assert.assertEquals(xgcals[i], actual[i]); } } private void performTestNewDuration(StandardTypesServiceClient serviceClient) throws DatatypeConfigurationException { DatatypeFactory df = DatatypeFactory.newInstance(); Duration[] da = new Duration[3]; da[0] = df.newDuration(1000000000000L); da[1] = df.newDurationDayTime(1000000000000L); da[2] = df.newDurationYearMonth(true, 1, 3); for (int i = 0; i < da.length; ++i) { Assert.assertEquals(da[i].negate(), serviceClient.getNewDurationForward(da[i])); } } private void performTestNewObject(StandardTypesServiceClient serviceClient) { Object[] objs = new Object[5]; objs[0] = "Hello"; objs[1] = 10; objs[2] = null; objs[3] = -1.0; objs[4] = null; for (int i = 0; i < objs.length; ++i) { Object expected = StandardTypesTransformer.getNewObject(objs[i]); Object actual = serviceClient.getNewObjectForward(objs[i]); Assert.assertEquals(expected, actual); } } private void performTestNewObjectArray(StandardTypesServiceClient serviceClient) { Object[] objs = new Object[5]; objs[0] = "Hello"; objs[1] = 10; objs[2] = null; objs[3] = -1.0; objs[4] = null; Object[] actual = serviceClient.getNewObjectArrayForward(objs); Assert.assertEquals(objs.length, actual.length); for (int i = 0; i < objs.length; ++i) { Object expected = StandardTypesTransformer.getNewObject(objs[i]); Assert.assertEquals(expected, actual[i]); } } private void performTestNewImage(StandardTypesServiceClient serviceClient) throws InterruptedException { // Create some images to test with. Image[] imgs = new Image[3]; imgs[0] = new BufferedImage(10, 10, BufferedImage.TYPE_3BYTE_BGR); imgs[1] = new BufferedImage(10, 10, BufferedImage.TYPE_INT_ARGB); imgs[2] = new BufferedImage(10, 10, BufferedImage.TYPE_INT_RGB); imgs[0].getGraphics().drawLine(1, 1, 8, 8); imgs[1].getGraphics().drawLine(8, 1, 1, 8); imgs[2].getGraphics().drawLine(1, 8, 8, 1); Image[] copy = imgs; // Create the same images once again as the StandardTypesTransformer may manipulate the image passed. imgs = new Image[3]; imgs[0] = new BufferedImage(10, 10, BufferedImage.TYPE_3BYTE_BGR); imgs[1] = new BufferedImage(10, 10, BufferedImage.TYPE_INT_ARGB); imgs[2] = new BufferedImage(10, 10, BufferedImage.TYPE_INT_RGB); imgs[0].getGraphics().drawLine(1, 1, 8, 8); imgs[1].getGraphics().drawLine(8, 1, 1, 8); imgs[2].getGraphics().drawLine(1, 8, 8, 1); // Make sure the images and copies are equal using ImageInfo for(int i = 0; i < imgs.length; ++i) { Assert.assertEquals(new ImageInfo(imgs[i]), new ImageInfo(copy[i])); } for (int i = 0; i < imgs.length; ++i) { Image actual = serviceClient.getNewImageForward(imgs[i]); Image expected = StandardTypesTransformer.getNewImage(copy[i]); // Compare using ImageInfo Assert.assertEquals(new ImageInfo(expected), new ImageInfo(actual)); } } private void performTestNewImageArray(StandardTypesServiceClient serviceClient) throws InterruptedException { // Create some images to test with. Image[] imgs = new Image[3]; imgs[0] = new BufferedImage(10, 10, BufferedImage.TYPE_3BYTE_BGR); imgs[1] = new BufferedImage(10, 10, BufferedImage.TYPE_INT_ARGB); imgs[2] = new BufferedImage(10, 10, BufferedImage.TYPE_INT_RGB); imgs[0].getGraphics().drawLine(1, 1, 8, 8); imgs[1].getGraphics().drawLine(8, 1, 1, 8); imgs[2].getGraphics().drawLine(1, 8, 8, 1); Image[] copy = imgs; // Create the same images once again as the StandardTypesTransformer may manipulate the image passed. imgs = new Image[3]; imgs[0] = new BufferedImage(10, 10, BufferedImage.TYPE_3BYTE_BGR); imgs[1] = new BufferedImage(10, 10, BufferedImage.TYPE_INT_ARGB); imgs[2] = new BufferedImage(10, 10, BufferedImage.TYPE_INT_RGB); imgs[0].getGraphics().drawLine(1, 1, 8, 8); imgs[1].getGraphics().drawLine(8, 1, 1, 8); imgs[2].getGraphics().drawLine(1, 8, 8, 1); // Make sure the images and copies are equal using ImageInfo for(int i = 0; i < imgs.length; ++i) { Assert.assertEquals(new ImageInfo(imgs[i]), new ImageInfo(copy[i])); } Image[] actual = serviceClient.getNewImageArrayForward(imgs); Assert.assertEquals(imgs.length, actual.length); for (int i = 0; i < imgs.length; ++i) { Image expected = StandardTypesTransformer.getNewImage(copy[i]); // Compare using ImageInfo Assert.assertEquals(new ImageInfo(expected), new ImageInfo(actual[i])); } } private void performTestNewDurationArray(StandardTypesServiceClient serviceClient) throws DatatypeConfigurationException { DatatypeFactory df = DatatypeFactory.newInstance(); Duration[] da = new Duration[3]; da[0] = df.newDuration(1000000000000L); da[1] = df.newDurationDayTime(1000000000000L); da[2] = df.newDurationYearMonth(true, 1, 3); Duration[] actual = serviceClient.getNewDurationArrayForward(da); Assert.assertEquals(da.length, actual.length); for (int i = 0; i < da.length; ++i) { Assert.assertEquals(da[i].negate(), actual[i]); } } private void performTestNewDataHandler(StandardTypesServiceClient serviceClient) throws IOException { DataHandler[] dha = new DataHandler[3]; dha[0] = new DataHandler("Some data", "text/plain"); dha[1] = new DataHandler(new URL("http://tuscany.apache.org/home.html")); dha[2] = new DataHandler(new ByteArrayDataSource("Some data2".getBytes())); for (int i = 0; i < dha.length; ++i) { DataHandler actual = serviceClient.getNewDataHandlerForward(dha[i]); // Note: The DataHandler returned may use a different type of DataSource. // Compare the data content instead of using equals(). Assert.assertTrue(compare(dha[i], actual)); } } private void performTestNewDataHandlerArray(StandardTypesServiceClient serviceClient) throws IOException { DataHandler[] dha = new DataHandler[3]; dha[0] = new DataHandler("Some data", "text/plain"); dha[1] = new DataHandler(new URL("http://tuscany.apache.org/home.html")); dha[2] = new DataHandler(new ByteArrayDataSource("Some data2".getBytes())); DataHandler[] actual = serviceClient.getNewDataHandlerArrayForward(dha); Assert.assertEquals(dha.length, actual.length); for (int i = 0; i < dha.length; ++i) { // Note: The DataHandler returned may use a different type of DataSource. // Compare the data content instead of using equals(). Assert.assertTrue(compare(dha[i], actual[i])); } } /*private void performTestNewSource(StandardTypesServiceClient serviceClient) throws Exception { String xml = "<a>A<b>B</b><c>C</c></a>"; Source[] srcs = new Source[3]; srcs[0] = new DOMSource(new String2Node(null).transform(xml, null)); srcs[1] = new SAXSource(new InputSource(new StringReader(xml))); srcs[2] = new StreamSource(new StringReader(xml)); for (int i = 0; i < srcs.length; ++i) { Source expected = StandardTypesTransformer.getNewSource(srcs[i]); Source actual = serviceClient.getNewSourceForward(srcs[i]); // [rfeng] The data may come back as a different source Assert.assertEquals(sourceToString(expected), sourceToString(actual)); } } private void performTestNewSourceArray(StandardTypesServiceClient serviceClient) throws Exception { String xml = "<a>A<b>B</b><c>C</c></a>"; Source[] srcs = new Source[3]; srcs[0] = new DOMSource(new String2Node(null).transform(xml, null)); srcs[1] = new SAXSource(new InputSource(new StringReader(xml))); srcs[2] = new StreamSource(new StringReader(xml)); Source[] actual = serviceClient.getNewSourceArrayForward(srcs); Source[] expected = new Source[srcs.length]; for(int i = 0; i < srcs.length; ++i) { expected[i] = StandardTypesTransformer.getNewSource(srcs[i]); } Assert.assertEquals(srcs.length, actual.length); for (int i = 0; i < srcs.length; ++i) { // [rfeng] The data may come back as a different source Assert.assertEquals(sourceToString(expected[i]), sourceToString(actual[i])); } }*/ private void performTestNewUUID(StandardTypesServiceClient serviceClient) { UUID[] uuids = new UUID[3]; uuids[0] = UUID.nameUUIDFromBytes("ABCDEFGHJKLMNOPQRSTUVWXYZ".getBytes()); uuids[1] = UUID.nameUUIDFromBytes("abcdefghjklmnopqrstuvwxyz".getBytes()); uuids[2] = UUID.randomUUID(); for (int i = 0; i < uuids.length; ++i) { UUID expected = UUID.fromString(uuids[i].toString() + "AAA"); UUID actual = serviceClient.getNewUUIDForward(uuids[i]); Assert.assertEquals(expected, actual); } } private void performTestNewUUIDArray(StandardTypesServiceClient serviceClient) { UUID[] uuids = new UUID[3]; uuids[0] = UUID.nameUUIDFromBytes("ABCDEFGHJKLMNOPQRSTUVWXYZ".getBytes()); uuids[1] = UUID.nameUUIDFromBytes("abcdefghjklmnopqrstuvwxyz".getBytes()); uuids[2] = UUID.randomUUID(); UUID[] actual = serviceClient.getNewUUIDArrayForward(uuids); for (int i = 0; i < uuids.length; ++i) { UUID expected = UUID.fromString(uuids[i].toString() + "AAA"); Assert.assertEquals(expected, actual[i]); } } /** * This method compares two DataHandlers. * @return true if the data in the two handlers is the same. */ private boolean compare(DataHandler dh1, DataHandler dh2) throws IOException { InputStream inp1 = dh1.getInputStream(); InputStream inp2 = dh2.getInputStream(); for(;;) { int i1 = inp1.read(); int i2 = inp2.read(); if(i1 == -1 && i2 == -1) { return true; } else if(i1 != -1 && i2 != -1) { if(i1 != i2) { return false; } } else { return false; } } } /** * This method returns the content of a source object as String. */ private String sourceToString(Source s) throws Exception { StringWriter sw = new StringWriter(); Result r = new StreamResult(sw); TransformerFactory.newInstance().newTransformer().transform(s, r); sw.close(); return sw.toString(); } /** * This class initializes with the width, height and pixel data of a java.awt.Image object. */ private static class ImageInfo { private int h, w, pixels[]; public ImageInfo(Image img) throws InterruptedException { w = img.getWidth(null); h = img.getHeight(null); pixels = new int[w*h]; PixelGrabber pg = new PixelGrabber(img, 0, 0, w, h, pixels, 0, w); pg.grabPixels(); } public boolean equals(Object that) { if(that == null) { return false; } else if(!(that instanceof ImageInfo)) { return false; } ImageInfo that1 = (ImageInfo)that; if(w != that1.w || h != that1.h || pixels == null || that1.pixels == null || pixels.length != that1.pixels.length) { return false; } for(int i = 0; i < pixels.length; ++i) { if(pixels[i] != that1.pixels[i]) { return false; } } return true; } public String toString() { return this.getClass().getSimpleName()+"[w = "+w+", h = "+h+", pixels = "+pixels+"]"; } } }