📄 xmlobjectinputstream.java
字号:
READ_RESOLVES.put(cl, meth); return meth; } else { READ_RESOLVES.put(cl, null); return null; } } else { READ_RESOLVES.put(cl, meth); return meth; } } } /** * This method returns the readResolve() method of a given class, if such a * method exists. This method searches the class's heirarchy for a * readResolve() method which is assessible by the given class. If no such * method is found, null is returned. * * @param cl The class to find the readResolve() of * @return The method, or null if none was found */ private static Method getReadObject(Class cl) { synchronized (READ_OBJECTS) { if (READ_OBJECTS.containsKey(cl)) { return (Method) READ_OBJECTS.get(cl); } try { Method method = cl.getDeclaredMethod("readObject", new Class[]{ObjectInputStream.class}); method.setAccessible(true); READ_OBJECTS.put(cl, method); return method; } catch (NoSuchMethodException e) { READ_OBJECTS.put(cl, null); return null; } } } // ----- Implementation of GetField ----- /** * This class is an implementation of GetField which is compatible with the * XMLObjectInputStreamm. It works in the same manner as the * ObjectInputStreamm.GetField. * * @version $Id: pretty.settings 2305 2005-03-11 20:22:33Z jeffh $ * @author jeffh */ public class GetField extends ObjectInputStream.GetField { /** * DESCRIBE THE FIELD */ protected HashMap primitives = new HashMap(); /** * DESCRIBE THE FIELD */ protected HashMap objects = new HashMap(); /** * DESCRIBE THE METHOD * * @param name DESCRIBE THE PARAMETER * @param value DESCRIBE THE PARAMETER * @return DESCRIBE THE RETURN VALUE */ public boolean get(String name, boolean value) { if (primitives.get(name) == null) { return value; } return ((Boolean) primitives.get(name)).booleanValue(); } /** * DESCRIBE THE METHOD * * @param name DESCRIBE THE PARAMETER * @param value DESCRIBE THE PARAMETER * @return DESCRIBE THE RETURN VALUE */ public byte get(String name, byte value) { if (primitives.get(name) == null) { return value; } return ((Byte) primitives.get(name)).byteValue(); } /** * DESCRIBE THE METHOD * * @param name DESCRIBE THE PARAMETER * @param value DESCRIBE THE PARAMETER * @return DESCRIBE THE RETURN VALUE */ public char get(String name, char value) { if (primitives.get(name) == null) { return value; } return ((Character) primitives.get(name)).charValue(); } /** * DESCRIBE THE METHOD * * @param name DESCRIBE THE PARAMETER * @param value DESCRIBE THE PARAMETER * @return DESCRIBE THE RETURN VALUE */ public double get(String name, double value) { if (primitives.get(name) == null) { return value; } return ((Double) primitives.get(name)).doubleValue(); } /** * DESCRIBE THE METHOD * * @param name DESCRIBE THE PARAMETER * @param value DESCRIBE THE PARAMETER * @return DESCRIBE THE RETURN VALUE */ public float get(String name, float value) { if (primitives.get(name) == null) { return value; } return ((Float) primitives.get(name)).floatValue(); } /** * DESCRIBE THE METHOD * * @param name DESCRIBE THE PARAMETER * @param value DESCRIBE THE PARAMETER * @return DESCRIBE THE RETURN VALUE */ public int get(String name, int value) { if (primitives.get(name) == null) { return value; } return ((Integer) primitives.get(name)).intValue(); } /** * DESCRIBE THE METHOD * * @param name DESCRIBE THE PARAMETER * @param value DESCRIBE THE PARAMETER * @return DESCRIBE THE RETURN VALUE */ public long get(String name, long value) { if (primitives.get(name) == null) { return value; } return ((Long) primitives.get(name)).longValue(); } /** * DESCRIBE THE METHOD * * @param name DESCRIBE THE PARAMETER * @param value DESCRIBE THE PARAMETER * @return DESCRIBE THE RETURN VALUE */ public short get(String name, short value) { if (primitives.get(name) == null) { return value; } return ((Short) primitives.get(name)).shortValue(); } /** * DESCRIBE THE METHOD * * @param name DESCRIBE THE PARAMETER * @param value DESCRIBE THE PARAMETER * @return DESCRIBE THE RETURN VALUE */ public Object get(String name, Object value) { if (objects.get(name) == null) { return value; } return objects.get(name); } /** * Gets the ObjectStreamClass attribute of the GetField object * * @return The ObjectStreamClass value */ public ObjectStreamClass getObjectStreamClass() { throw new UnsupportedOperationException("CANNOT GET THE OBJECT STREAM CLASS!"); } /** * DESCRIBE THE METHOD * * @param name DESCRIBE THE PARAMETER * @return DESCRIBE THE RETURN VALUE */ public boolean defaulted(String name) { return (!(primitives.containsKey(name) || objects.containsKey(name))); } /** * DESCRIBE THE METHOD * * @param name DESCRIBE THE PARAMETER * @param value DESCRIBE THE PARAMETER */ protected void put(String name, boolean value) { primitives.put(name, new Boolean(value)); } /** * DESCRIBE THE METHOD * * @param name DESCRIBE THE PARAMETER * @param value DESCRIBE THE PARAMETER */ protected void put(String name, byte value) { primitives.put(name, new Byte(value)); } /** * DESCRIBE THE METHOD * * @param name DESCRIBE THE PARAMETER * @param value DESCRIBE THE PARAMETER */ protected void put(String name, char value) { primitives.put(name, new Character(value)); } /** * DESCRIBE THE METHOD * * @param name DESCRIBE THE PARAMETER * @param value DESCRIBE THE PARAMETER */ protected void put(String name, double value) { primitives.put(name, new Double(value)); } /** * DESCRIBE THE METHOD * * @param name DESCRIBE THE PARAMETER * @param value DESCRIBE THE PARAMETER */ protected void put(String name, float value) { primitives.put(name, new Float(value)); } /** * DESCRIBE THE METHOD * * @param name DESCRIBE THE PARAMETER * @param value DESCRIBE THE PARAMETER */ protected void put(String name, int value) { primitives.put(name, new Integer(value)); } /** * DESCRIBE THE METHOD * * @param name DESCRIBE THE PARAMETER * @param value DESCRIBE THE PARAMETER */ protected void put(String name, long value) { primitives.put(name, new Long(value)); } /** * DESCRIBE THE METHOD * * @param name DESCRIBE THE PARAMETER * @param value DESCRIBE THE PARAMETER */ protected void put(String name, short value) { primitives.put(name, new Short(value)); } /** * DESCRIBE THE METHOD * * @param name DESCRIBE THE PARAMETER * @param value DESCRIBE THE PARAMETER */ protected void put(String name, Object value) { objects.put(name, value); } } // ----- VALIDATION LIST IMPLEMENTATION ---- /** * Prioritized list of callbacks to be performed once object graph has been * completely deserialized. * * @version $Id: pretty.settings 2305 2005-03-11 20:22:33Z jeffh $ * @author jeffh */ private static class ValidationList { /** * linked list of callbacks */ private Callback list; /** * Creates new (empty) ValidationList. */ ValidationList() { } /** * Registers callback. Throws InvalidObjectException if callback object is * null. * * @param obj DESCRIBE THE PARAMETER * @param priority DESCRIBE THE PARAMETER * @exception InvalidObjectException DESCRIBE THE EXCEPTION */ void register(ObjectInputValidation obj, int priority) throws InvalidObjectException { if (obj == null) { throw new InvalidObjectException("null callback"); } Callback prev = null; Callback cur = list; while (cur != null && priority < cur.priority) { prev = cur; cur = cur.next; } if (prev != null) { prev.next = new Callback(obj, priority, cur); } else { list = new Callback(obj, priority, list); } } /** * Invokes all registered callbacks and clears the callback list. Callbacks * with higher priorities are called first; those with equal priorities may * be called in any order. If any of the callbacks throws an * InvalidObjectException, the callback process is terminated and the * exception propagated upwards. * * @exception InvalidObjectException DESCRIBE THE EXCEPTION */ void doCallbacks() throws InvalidObjectException { try { while (list != null) { list.obj.validateObject(); list = list.next; } } catch (InvalidObjectException ex) { list = null; throw ex; } } /** * Resets the callback list to its initial (empty) state. */ public void clear() { list = null; } /** * DESCRIBE THE CLASS * * @version $Id: pretty.settings 2305 2005-03-11 20:22:33Z jeffh $ * @author jeffh */ private static class Callback { final ObjectInputValidation obj; final int priority; Callback next; /** * Constructor for Callback. * * @param obj DESCRIBE THE PARAMETER * @param priority DESCRIBE THE PARAMETER * @param next DESCRIBE THE PARAMETER */ Callback(ObjectInputValidation obj, int priority, Callback next) { this.obj = obj; this.priority = priority; this.next = next; } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -