⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 burlapserializerfactory.java

📁 AJAX的一个好东西哦,国人的一个AJAX的实现不错的东西
💻 JAVA
字号:
/* * Copyright (c) 2001-2003 Caucho Technology, Inc.  All rights reserved. * * The Apache Software License, Version 1.1 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in *    the documentation and/or other materials provided with the *    distribution. * * 3. The end-user documentation included with the redistribution, if *    any, must include the following acknowlegement: *       "This product includes software developed by the *        Caucho Technology (http://www.caucho.com/)." *    Alternately, this acknowlegement may appear in the software itself, *    if and wherever such third-party acknowlegements normally appear. * * 4. The names "Burlap", "Resin", and "Caucho" must not be used to *    endorse or promote products derived from this software without prior *    written permission. For written permission, please contact *    info@caucho.com. * * 5. Products derived from this software may not be called "Resin" *    nor may "Resin" appear in their names without prior written *    permission of Caucho Technology. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED.  IN NO EVENT SHALL CAUCHO TECHNOLOGY OR ITS CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @author Scott Ferguson */package net.buffalo.service.invoker.burlap;import java.io.IOException;import java.math.BigDecimal;import java.util.ArrayList;import java.util.Collection;import java.util.HashMap;import java.util.Map;import com.caucho.burlap.io.AbstractBurlapInput;import com.caucho.burlap.io.ArrayDeserializer;import com.caucho.burlap.io.ArraySerializer;import com.caucho.burlap.io.BasicDeserializer;import com.caucho.burlap.io.BasicSerializer;import com.caucho.burlap.io.BurlapProtocolException;import com.caucho.burlap.io.BurlapRemoteObject;import com.caucho.burlap.io.ClassDeserializer;import com.caucho.burlap.io.ClassSerializer;import com.caucho.burlap.io.CollectionDeserializer;import com.caucho.burlap.io.CollectionSerializer;import com.caucho.burlap.io.Deserializer;import com.caucho.burlap.io.JavaDeserializer;import com.caucho.burlap.io.JavaSerializer;import com.caucho.burlap.io.MapDeserializer;import com.caucho.burlap.io.MapSerializer;import com.caucho.burlap.io.RemoteSerializer;import com.caucho.burlap.io.Serializer;import com.caucho.burlap.io.SerializerFactory;import com.caucho.burlap.io.SqlDateDeserializer;import com.caucho.burlap.io.StackTraceElementDeserializer;import com.caucho.burlap.io.StringValueDeserializer;import com.caucho.burlap.io.StringValueSerializer;/** * Factory for returning serialization methods. *  * Note: this is a 'patched' version of the burlap's SerializerFactory, I do * this just for the resin app server. */public class BurlapSerializerFactory extends SerializerFactory {		private static HashMap serializerMap;	private static HashMap deserializerMap;	private static HashMap typeMap;	private Serializer defaultSerializer;	/**	 * Returns the serializer for a class.	 * 	 * @param cl	 *            the class of the object that needs to be serialized.	 * 	 * @return a serializer object which is do the serialization.	 */	public Serializer getSerializer(Class cl) throws BurlapProtocolException {		Serializer serializer;		serializer = (Serializer) serializerMap.get(cl);		if (serializer != null)			return serializer;		if (BurlapRemoteObject.class.isAssignableFrom(cl))			return new RemoteSerializer();		if (Map.class.isAssignableFrom(cl))			return new MapSerializer();		if (Collection.class.isAssignableFrom(cl))			return new CollectionSerializer();		if (cl.isArray())			return new ArraySerializer();		return getDefaultSerializer(cl);	}	public Serializer getDefaultSerializer(Class cl) {		if (defaultSerializer == null)			defaultSerializer = new JavaSerializer();		return defaultSerializer;	}	public Deserializer getDeserializer(Class cl)			throws BurlapProtocolException {		Deserializer deserializer;		deserializer = (Deserializer) deserializerMap.get(cl);		if (deserializer != null)			return deserializer;		if (cl == null || Object.class.equals(cl))			return new MapDeserializer(null);		if (Collection.class.isAssignableFrom(cl))			return new CollectionDeserializer(cl);		if (Map.class.isAssignableFrom(cl))			return new MapDeserializer(cl);		if (cl.isArray()) {			return new ArrayDeserializer(getDeserializer(cl.getComponentType()));		}		return new JavaDeserializer(cl);	}	public Object readList(AbstractBurlapInput in, int length, String type)			throws BurlapProtocolException, IOException {		Deserializer deserializer = getDeserializer(type);		if (deserializer != null)			return deserializer.readList(in, length);		else			return new CollectionDeserializer(ArrayList.class).readList(in,					length);	}	public Object readMap(AbstractBurlapInput in, String type)			throws BurlapProtocolException, IOException {		Deserializer deserializer = getDeserializer(type);		if (deserializer != null)			return deserializer.readMap(in);		else			return new MapDeserializer(HashMap.class).readMap(in);	}	public Deserializer getObjectDeserializer(String type)			throws BurlapProtocolException {		Deserializer deserializer = getDeserializer(type);		if (deserializer != null)			return deserializer;		else			return new MapDeserializer(HashMap.class);	}	public Deserializer getDeserializer(String type)			throws BurlapProtocolException {		if (type == null || type.equals(""))			return null;		Deserializer deserializer;		deserializer = (Deserializer) typeMap.get(type);		if (deserializer != null) {			return deserializer;		}		if (type.startsWith("[")) {			Deserializer subDeserializer = getDeserializer(type.substring(1));			return new ArrayDeserializer(subDeserializer);		}		try {			ClassLoader loader = Thread.currentThread().getContextClassLoader();			Class cl = Class.forName(type, false, loader);			return getDeserializer(cl);		} catch (Exception e) {		}		return null;	}	private static void addBasic(Class cl, String typeName, int type) {		serializerMap.put(cl, new BasicSerializer(type));		Deserializer deserializer = new BasicDeserializer(type);		deserializerMap.put(cl, deserializer);		typeMap.put(typeName, deserializer);	}	static {		serializerMap = new HashMap();		deserializerMap = new HashMap();		typeMap = new HashMap();		addBasic(Boolean.class, "boolean", BasicSerializer.BOOLEAN);		addBasic(Byte.class, "byte", BasicSerializer.BYTE);		addBasic(Short.class, "short", BasicSerializer.SHORT);		addBasic(Integer.class, "int", BasicSerializer.INTEGER);		addBasic(Long.class, "long", BasicSerializer.LONG);		addBasic(Float.class, "float", BasicSerializer.FLOAT);		addBasic(Double.class, "double", BasicSerializer.DOUBLE);		addBasic(Character.class, "char", BasicSerializer.CHARACTER);		addBasic(String.class, "string", BasicSerializer.STRING);		addBasic(java.util.Date.class, "date", BasicSerializer.DATE);		addBasic(boolean.class, "boolean", BasicSerializer.BOOLEAN);		addBasic(byte.class, "byte", BasicSerializer.BYTE);		addBasic(short.class, "short", BasicSerializer.SHORT);		addBasic(int.class, "int", BasicSerializer.INTEGER);		addBasic(long.class, "long", BasicSerializer.LONG);		addBasic(float.class, "float", BasicSerializer.FLOAT);		addBasic(double.class, "double", BasicSerializer.DOUBLE);		addBasic(char.class, "char", BasicSerializer.CHARACTER);		addBasic(boolean[].class, "[boolean", BasicSerializer.BOOLEAN_ARRAY);		addBasic(byte[].class, "[byte", BasicSerializer.BYTE_ARRAY);		addBasic(short[].class, "[short", BasicSerializer.SHORT_ARRAY);		addBasic(int[].class, "[int", BasicSerializer.INTEGER_ARRAY);		addBasic(long[].class, "[long", BasicSerializer.LONG_ARRAY);		addBasic(float[].class, "[float", BasicSerializer.FLOAT_ARRAY);		addBasic(double[].class, "[double", BasicSerializer.DOUBLE_ARRAY);		addBasic(char[].class, "[char", BasicSerializer.CHARACTER_ARRAY);		addBasic(String[].class, "[string", BasicSerializer.STRING_ARRAY);		addBasic(Object[].class, "[object", BasicSerializer.OBJECT_ARRAY);		serializerMap.put(Class.class, new ClassSerializer());		deserializerMap.put(Class.class, new ClassDeserializer());		serializerMap.put(BigDecimal.class, new StringValueSerializer());		try {			deserializerMap.put(BigDecimal.class, new StringValueDeserializer(					BigDecimal.class));		} catch (Throwable e) {			e.printStackTrace();		}				// Patched here		serializerMap.put(java.sql.Date.class, new FixedSqlDateSerializer());		serializerMap.put(java.sql.Time.class, new FixedSqlDateSerializer());		serializerMap.put(java.sql.Timestamp.class, new FixedSqlDateSerializer());		try {			deserializerMap.put(java.sql.Date.class, new SqlDateDeserializer(					java.sql.Date.class));			deserializerMap.put(java.sql.Time.class, new SqlDateDeserializer(					java.sql.Time.class));			deserializerMap.put(java.sql.Timestamp.class,					new SqlDateDeserializer(java.sql.Timestamp.class));		} catch (Throwable e) {			e.printStackTrace();		}		try {			Class stackTrace = Class.forName("java.lang.StackTraceElement");			deserializerMap					.put(stackTrace, new StackTraceElementDeserializer());		} catch (Throwable e) {		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -