KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > proactive > core > xml > handler > CollectionUnmarshaller


1 /*
2 * ################################################################
3 *
4 * ProActive: The Java(TM) library for Parallel, Distributed,
5 * Concurrent computing with Security and Mobility
6 *
7 * Copyright (C) 1997-2002 INRIA/University of Nice-Sophia Antipolis
8 * Contact: proactive-support@inria.fr
9 *
10 * This library is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU Lesser General Public
12 * License as published by the Free Software Foundation; either
13 * version 2.1 of the License, or any later version.
14 *
15 * This library is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 * Lesser General Public License for more details.
19 *
20 * You should have received a copy of the GNU Lesser General Public
21 * License along with this library; if not, write to the Free Software
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
23 * USA
24 *
25 * Initial developer(s): The ProActive Team
26 * http://www.inria.fr/oasis/ProActive/contacts.html
27 * Contributor(s):
28 *
29 * ################################################################
30 */

31 package org.objectweb.proactive.core.xml.handler;
32
33 import org.objectweb.proactive.core.xml.io.Attributes;
34
35 /**
36  *
37  * Receives SAX event and pass them on
38  *
39  * @author Lionel Mestre
40  * @version 0.91
41  *
42  */

43 public class CollectionUnmarshaller extends AbstractUnmarshallerDecorator {
44
45   protected java.util.ArrayList JavaDoc resultList;
46   protected Class JavaDoc targetClass;
47
48   
49   //
50
// -- CONSTRUCTORS -----------------------------------------------
51
//
52

53   public CollectionUnmarshaller(boolean lenient) {
54     this(null, lenient);
55   }
56   
57   public CollectionUnmarshaller() {
58     this(null);
59   }
60   
61   public CollectionUnmarshaller(Class JavaDoc targetClass, boolean lenient) {
62     super(lenient);
63     this.targetClass = targetClass;
64   }
65   
66   public CollectionUnmarshaller(Class JavaDoc targetClass) {
67     super();
68     this.targetClass = targetClass;
69   }
70   
71
72   //
73
// -- PUBLIC METHODS -----------------------------------------------
74
//
75

76   //
77
// -- implements UnmarshallerHandler ------------------------------------------------------
78
//
79

80   public Object JavaDoc getResultObject() throws org.xml.sax.SAXException JavaDoc {
81     int size = 0;
82     if (resultList != null) {
83       size = resultList.size();
84     }
85     Object JavaDoc[] resultArray = null;
86     if (targetClass == null) {
87       resultArray = new Object JavaDoc[size];
88     } else {
89       resultArray = (Object JavaDoc[]) java.lang.reflect.Array.newInstance(targetClass, size);
90     }
91     if (size > 0) {
92       resultList.toArray(resultArray);
93     }
94     // clean-up
95
resultList = null;
96     //targetClass = null;
97
return resultArray;
98   }
99   
100   
101   public void startContextElement(String JavaDoc name, Attributes attributes) throws org.xml.sax.SAXException JavaDoc {
102     resultList = new java.util.ArrayList JavaDoc();
103   }
104   
105   
106
107   //
108
// -- PROTECTED METHODS ------------------------------------------------------
109
//
110

111   protected void notifyEndActiveHandler(String JavaDoc name, UnmarshallerHandler activeHandler) throws org.xml.sax.SAXException JavaDoc {
112     Object JavaDoc o = activeHandler.getResultObject();
113     if (o != null) resultList.add(o);
114   }
115   
116   
117   //
118
// -- PRIVATE METHODS ------------------------------------------------------
119
//
120

121
122   //
123
// -- INNER CLASSES ------------------------------------------------------
124
//
125

126 }
Popular Tags