1 package org.apache.turbine.util;
2
3 /* ====================================================================
4 * The Apache Software License, Version 1.1
5 *
6 * Copyright (c) 2001 The Apache Software Foundation. All rights
7 * reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 *
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 *
16 * 2. Redistributions in binary form must reproduce the above copyright
17 * notice, this list of conditions and the following disclaimer in
18 * the documentation and/or other materials provided with the
19 * distribution.
20 *
21 * 3. The end-user documentation included with the redistribution,
22 * if any, must include the following acknowledgment:
23 * "This product includes software developed by the
24 * Apache Software Foundation (http://www.apache.org/)."
25 * Alternately, this acknowledgment may appear in the software itself,
26 * if and wherever such third-party acknowledgments normally appear.
27 *
28 * 4. The names "Apache" and "Apache Software Foundation" and
29 * "Apache Turbine" must not be used to endorse or promote products
30 * derived from this software without prior written permission. For
31 * written permission, please contact apache@apache.org.
32 *
33 * 5. Products derived from this software may not be called "Apache",
34 * "Apache Turbine", nor may "Apache" appear in their name, without
35 * prior written permission of the Apache Software Foundation.
36 *
37 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
38 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
39 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
41 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
42 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
43 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
44 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
45 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
46 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
47 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
48 * SUCH DAMAGE.
49 * ====================================================================
50 *
51 * This software consists of voluntary contributions made by many
52 * individuals on behalf of the Apache Software Foundation. For more
53 * information on the Apache Software Foundation, please see
54 * <http://www.apache.org/>.
55 */
56
57 import java.io.BufferedInputStream;
58 import java.io.ByteArrayInputStream;
59 import java.io.IOException;
60 import java.io.ObjectInputStream;
61 import java.util.Hashtable;
62 import java.util.Vector;
63
64 /***
65 * This is where common Object manipulation routines should go.
66 *
67 * @author <a href="mailto:nissim@nksystems.com">Nissim Karpenstein</a>
68 * @version $Id: ObjectUtils.java,v 1.2 2002/07/11 16:53:21 mpoeschl Exp $
69 */
70 public class ObjectUtils
71 {
72 /***
73 * Returns a default value if the object passed is null.
74 *
75 * @param o The object to test.
76 * @param dflt The default value to return.
77 * @return The object o if it is not null, dflt otherwise.
78 */
79 public static Object isNull(Object o, Object dflt)
80 {
81 if (o == null)
82 {
83 return dflt;
84 }
85 else
86 {
87 return o;
88 }
89 }
90
91 /***
92 * Adds an object to a vector, making sure the object is in the
93 * vector only once.
94 *
95 * @param v The vector.
96 * @param o The object.
97 */
98 public static void addOnce(Vector v, Object o)
99 {
100 if (! v.contains( o ))
101 {
102 v.addElement( o );
103 }
104 }
105
106 /***
107 * Deserializes a single object from an array of bytes.
108 *
109 * @param objectData The serialized object.
110 * @return The deserialized object, or <code>null</code> on failure.
111 */
112 public static Object deserialize(byte[] objectData)
113 {
114 Object object = null;
115 if (objectData != null)
116 {
117 // These streams are closed in finally.
118 ObjectInputStream in = null;
119 ByteArrayInputStream bin = new ByteArrayInputStream(objectData);
120 BufferedInputStream bufin = new BufferedInputStream(bin);
121 try
122 {
123 in = new ObjectInputStream(bufin);
124
125 // If objectData has not been initialized, an
126 // exception will occur.
127 object = in.readObject();
128 }
129 catch (Exception e)
130 {
131 }
132 finally
133 {
134 try
135 {
136 if (in != null)
137 {
138 in.close();
139 }
140 if (bufin != null)
141 {
142 bufin.close();
143 }
144 if (bin != null)
145 {
146 bin.close();
147 }
148 }
149 catch(IOException e)
150 {
151 }
152 }
153 }
154 return object;
155 }
156
157 /***
158 * Compares two Objects, returns true if their values are the
159 * same. It checks for null values prior to an o1.equals(o2)
160 * check
161 *
162 * @param o1 The first object.
163 * @param o2 The second object.
164 * @return True if the values of both xstrings are the same.
165 */
166 public static boolean equals(Object o1, Object o2 )
167 {
168 if (o1 == null)
169 {
170 return (o2 == null);
171 }
172 else if (o2 == null)
173 {
174 // o1 is not null
175 return false;
176 }
177 else
178 {
179 return o1.equals(o2);
180 }
181 }
182
183 /***
184 * Nice method for adding data to a Hashtable in such a way
185 * as to not get NPE's. The point being that if the
186 * value is null, Hashtable.put() will throw an exception.
187 * That blows in the case of this class cause you may want to
188 * essentially treat put("Not Null", null ) == put("Not Null", "")
189 * We will still throw a NPE if the key is null cause that should
190 * never happen.
191 */
192 public static final void safeAddToHashtable(Hashtable hash, Object key,
193 Object value)
194 throws NullPointerException
195 {
196 if (value == null)
197 {
198 hash.put(key, "");
199 }
200 else
201 {
202 hash.put(key, value);
203 }
204 }
205 }
This page was automatically generated by Maven