KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > soap > encoding > soapenc > MapSerializer


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.encoding.soapenc;
59
60 import java.beans.*;
61 import java.io.*;
62 import java.util.*;
63 import java.lang.reflect.*;
64 import org.w3c.dom.*;
65 import org.apache.soap.util.*;
66 import org.apache.soap.util.xml.*;
67 import org.apache.soap.*;
68 import org.apache.soap.rpc.*;
69
70 /**
71  * A <code>MapSerializer</code> can be used to serialize and
72  * deserialize Maps using the <code>SOAP-ENC</code>
73  * encoding style. This is a quick implementation that simply
74  * delegates to the HashtableSerializer (which used to be
75  * named the MapSerializer).
76  *
77  * @author Matthew J. Duftler (duftler@us.ibm.com)
78  */

79 public class MapSerializer implements Serializer, Deserializer
80 {
81   private final HashtableSerializer hashtableSer = new HashtableSerializer();
82
83   public void marshall(String JavaDoc inScopeEncStyle,
84                        Class JavaDoc javaType,
85                        Object JavaDoc src,
86                        Object JavaDoc context,
87                        Writer sink,
88                        NSStack nsStack,
89                        XMLJavaMappingRegistry xjmr,
90                        SOAPContext ctx)
91     throws IllegalArgumentException JavaDoc, IOException
92   {
93     Hashtable hashtable = null;
94
95     if (src instanceof Hashtable)
96     {
97       hashtable = (Hashtable)src;
98     }
99     else if (src instanceof Map)
100     {
101       hashtable = new Hashtable();
102       hashtable.putAll((Map)src);
103     }
104     else
105     {
106       throw new IllegalArgumentException JavaDoc("Tried to pass a '" +
107                                          src.getClass().toString() +
108                                          "' to MapSerializer");
109     }
110
111     hashtableSer.marshall(inScopeEncStyle,
112                           Hashtable.class,
113                           hashtable,
114                           context,
115                           sink,
116                           nsStack,
117                           xjmr,
118                           ctx);
119   }
120
121   public Bean unmarshall(String JavaDoc inScopeEncStyle,
122                          QName elementType,
123                          Node src,
124                          XMLJavaMappingRegistry xjmr,
125                          SOAPContext ctx)
126     throws IllegalArgumentException JavaDoc
127   {
128     return hashtableSer.unmarshall(inScopeEncStyle,
129                                    elementType,
130                                    src,
131                                    xjmr,
132                                    ctx);
133   }
134 }
135
Popular Tags