KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > soap > util > xml > XMISerializer


1 /*
2  * The Apache Software License, Version 1.1
3  *
4  *
5  * Copyright (c) 2000 The Apache Software Foundation. All rights
6  * reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * 1. Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright
16  * notice, this list of conditions and the following disclaimer in
17  * the documentation and/or other materials provided with the
18  * distribution.
19  *
20  * 3. The end-user documentation included with the redistribution,
21  * if any, must include the following acknowledgment:
22  * "This product includes software developed by the
23  * Apache Software Foundation (http://www.apache.org/)."
24  * Alternately, this acknowledgment may appear in the software itself,
25  * if and wherever such third-party acknowledgments normally appear.
26  *
27  * 4. The names "SOAP" and "Apache Software Foundation" must
28  * not be used to endorse or promote products derived from this
29  * software without prior written permission. For written
30  * permission, please contact apache@apache.org.
31  *
32  * 5. Products derived from this software may not be called "Apache",
33  * nor may "Apache" appear in their name, without prior written
34  * permission of the Apache Software Foundation.
35  *
36  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39  * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
40  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
42  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
46  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47  * SUCH DAMAGE.
48  * ====================================================================
49  *
50  * This software consists of voluntary contributions made by many
51  * individuals on behalf of the Apache Software Foundation and was
52  * originally based on software copyright (c) 2000, International
53  * Business Machines, Inc., http://www.apache.org. For more
54  * information on the Apache Software Foundation, please see
55  * <http://www.apache.org/>.
56  */

57
58 package org.apache.soap.util.xml;
59
60 import com.ibm.xmi.job.*;
61 import java.io.*;
62 import java.util.*;
63 import org.w3c.dom.*;
64 import org.apache.soap.rpc.SOAPContext;
65
66 /**
67  * An <code>XMISerializer</code> ...
68  *
69  * @author Francisco Curbera (curbera@us.ibm.com)
70  */

71 public class XMISerializer implements Serializer
72 {
73   public static int CONV_BSIZE=0x400;
74
75   public void marshall(String JavaDoc inScopeEncStyle, Class JavaDoc javaType, Object JavaDoc src,
76                        Object JavaDoc context, Writer sink, NSStack nsStack,
77                        XMLJavaMappingRegistry xjmr, SOAPContext ctx)
78        throws IllegalArgumentException JavaDoc, IOException
79
80   {
81
82     //
83
// not using namespaces - this is under the Job classes control
84
// may need to check that the encoding style is in fact xmi...
85
// ignoring context
86

87     // special case for Strings - otherwise treated as uuids by the serializer
88
if (src == null)
89     {
90       sink.write("<null type=\"" + javaType.getName() + "\"/>");
91       return;
92     }
93     else if( javaType ==java.lang.String JavaDoc.class )
94     {
95       sink.write("<java.lang.String value='" + src + "' />");
96       return;
97     }
98
99     //System.err.println(src);
100
Vector olist = new Vector();
101     olist.addElement(src);
102
103
104     ByteArrayOutputStream tmpout = new ByteArrayOutputStream();
105     // removed: GDA 4/17/2001 PipedOutputStream tmpout = new PipedOutputStream();
106
// removed: GDA 4/17/2001 PipedInputStream tmpin = new PipedInputStream();
107

108     // removed: GDA 4/17/2001 tmpin.connect(tmpout);
109

110     com.ibm.xmi.framework.WriterFactory.setInline(true);
111     Job.writeObjects((List)olist, (OutputStream)tmpout);
112     sink.write(tmpout.toString());
113
114     /* block removed: GDA 4/17/2001
115     byte[] readinto = new byte[XMISerializer.CONV_BSIZE];
116     int len, left = 0;
117
118     while( (left = tmpin.available())> 0 )
119       {
120         len = tmpin.read(readinto, 0, Math.min(left, XMISerializer.CONV_BSIZE));
121         String convert = new String(readinto, 0, len);
122         sink.write(convert);
123       }
124     */

125     tmpout.close();
126     // removed: GDA 4/17/2001 tmpin.close();
127
}
128
129 }
130
Popular Tags