From e5b7380c874745c989d1816b8f552504f038e1bc Mon Sep 17 00:00:00 2001 From: lresende Date: Thu, 26 Sep 2013 20:33:20 +0000 Subject: 2.0 branch for possible maintenance release git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1526672 13f79535-47bb-0310-9956-ffa450edef68 --- .../jaxb/impl/StandardTypesTransformer.java | 144 +++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 sca-java-2.x/branches/2.0/testing/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/impl/StandardTypesTransformer.java (limited to 'sca-java-2.x/branches/2.0/testing/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/impl/StandardTypesTransformer.java') diff --git a/sca-java-2.x/branches/2.0/testing/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/impl/StandardTypesTransformer.java b/sca-java-2.x/branches/2.0/testing/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/impl/StandardTypesTransformer.java new file mode 100644 index 0000000000..68510b4b03 --- /dev/null +++ b/sca-java-2.x/branches/2.0/testing/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/impl/StandardTypesTransformer.java @@ -0,0 +1,144 @@ +/* + * 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.impl; + +import java.awt.Image; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.CharArrayReader; +import java.io.CharArrayWriter; +import java.io.IOException; +import java.io.InputStream; +import java.io.Reader; + +import javax.xml.transform.Source; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.sax.SAXSource; +import javax.xml.transform.stream.StreamSource; + +import org.xml.sax.InputSource; + + + +/** + * StandardTypesTransformer class that provide for transforming input provided to StandardTypesService methods. + * + * @version $Rev$ $Date$ + */ +public class StandardTypesTransformer { + + public static Object getNewObject(Object obj) { + if(obj instanceof String) { + return "Hello "+obj; + } else if(obj instanceof Integer) { + return new Integer(-((Integer)obj).intValue()); + } else if(obj instanceof Double) { + return new Double(-((Double)obj).doubleValue()); + } + + return obj; + } + + /** + * Returns a copy of the source object if the input is DOMSource, SAXSource or StreamSource. + * Returns the input object as is for other types. + */ + public static Source getNewSource(Source src) { + Source ret = null; + if(src instanceof DOMSource) { + DOMSource dsrc = (DOMSource)src; + ret = new DOMSource(dsrc.getNode() != null ? dsrc.getNode().cloneNode(true) : null); + } else if(src instanceof SAXSource) { + SAXSource ssrc = (SAXSource)src; + if(ssrc.getInputSource().getByteStream() != null) { + InputStream inp = ssrc.getInputSource().getByteStream(); + ByteArrayOutputStream bout = new ByteArrayOutputStream(); + int b; + try { + while((b = inp.read()) != -1) { + bout.write(b); + } + } catch (IOException ignored) { + } + try { bout.close();} catch (IOException ignored) {} + try { inp.reset();} catch (IOException ignored) {} + ret = new SAXSource(new InputSource(new ByteArrayInputStream(bout.toByteArray()))); + } else if(ssrc.getInputSource().getCharacterStream() != null) { + Reader rdr = ssrc.getInputSource().getCharacterStream(); + CharArrayWriter caw = new CharArrayWriter(); + try { + int c; + while((c = rdr.read()) != -1) { + caw.append((char)c); + } + } catch (IOException ignored) { + } + caw.close(); + try{ rdr.reset();} catch(IOException ignored) {} + ret = new SAXSource(new InputSource(new CharArrayReader(caw.toCharArray()))); + } else { + ret = new SAXSource(); + } + } else if(src instanceof StreamSource) { + StreamSource ssrc = (StreamSource)src; + if(ssrc.getInputStream() != null) { + InputStream inp = ssrc.getInputStream(); + ByteArrayOutputStream bout = new ByteArrayOutputStream(); + int b; + try { + while((b = inp.read()) != -1) { + bout.write(b); + } + } catch (IOException ignored) { + } + try { bout.close();} catch (IOException ignored) {} + try { inp.reset();} catch (IOException ignored) {} + ret = new StreamSource(new ByteArrayInputStream(bout.toByteArray())); + } else if(ssrc.getReader() != null) { + Reader rdr = ssrc.getReader(); + CharArrayWriter caw = new CharArrayWriter(); + try { + int c; + while((c = rdr.read()) != -1) { + caw.append((char)c); + } + } catch (IOException ignored) { + } + caw.close(); + try{ rdr.reset();} catch(IOException ignored) {} + ret = new StreamSource(new CharArrayReader(caw.toCharArray())); + } else { + ret = new StreamSource(); + } + } + + if(ret != null) { + ret.setSystemId(src.getSystemId()); + } else { + ret = src; + } + return ret; + } + + public static Image getNewImage(Image arg) { + arg.getGraphics().drawOval(2, 2, 7, 7); + return arg; + } +} -- cgit v1.2.3