javadeserializer.java

来自「RESIN 3.2 最新源码」· Java 代码 · 共 680 行 · 第 1/2 页

JAVA
680
字号
	}        fieldMap.put(field.getName(), deser);      }    }    return fieldMap;  }  /**   * Creates a map of the classes fields.   */  protected static Object getParamArg(Class cl)  {    if (! cl.isPrimitive())      return null;    else if (boolean.class.equals(cl))      return Boolean.FALSE;    else if (byte.class.equals(cl))      return new Byte((byte) 0);    else if (short.class.equals(cl))      return new Short((short) 0);    else if (char.class.equals(cl))      return new Character((char) 0);    else if (int.class.equals(cl))      return Integer.valueOf(0);    else if (long.class.equals(cl))      return Long.valueOf(0);    else if (float.class.equals(cl))      return Float.valueOf(0);    else if (double.class.equals(cl))      return Double.valueOf(0);    else      throw new UnsupportedOperationException();  }  abstract static class FieldDeserializer {    abstract void deserialize(AbstractHessianInput in, Object obj)      throws IOException;  }  static class ObjectFieldDeserializer extends FieldDeserializer {    private final Field _field;    ObjectFieldDeserializer(Field field)    {      _field = field;    }        void deserialize(AbstractHessianInput in, Object obj)      throws IOException    {      Object value = null;            try {	value = in.readObject(_field.getType());		_field.set(obj, value);      } catch (Exception e) {        logDeserializeError(_field, obj, value, e);      }    }  }  static class BooleanFieldDeserializer extends FieldDeserializer {    private final Field _field;    BooleanFieldDeserializer(Field field)    {      _field = field;    }        void deserialize(AbstractHessianInput in, Object obj)      throws IOException    {      boolean value = false;            try {	value = in.readBoolean();		_field.setBoolean(obj, value);      } catch (Exception e) {        logDeserializeError(_field, obj, value, e);      }    }  }  static class ByteFieldDeserializer extends FieldDeserializer {    private final Field _field;    ByteFieldDeserializer(Field field)    {      _field = field;    }        void deserialize(AbstractHessianInput in, Object obj)      throws IOException    {      int value = 0;            try {	value = in.readInt();		_field.setByte(obj, (byte) value);      } catch (Exception e) {        logDeserializeError(_field, obj, value, e);      }    }  }  static class ShortFieldDeserializer extends FieldDeserializer {    private final Field _field;    ShortFieldDeserializer(Field field)    {      _field = field;    }        void deserialize(AbstractHessianInput in, Object obj)      throws IOException    {      int value = 0;            try {	value = in.readInt();		_field.setShort(obj, (short) value);      } catch (Exception e) {        logDeserializeError(_field, obj, value, e);      }    }  }  static class IntFieldDeserializer extends FieldDeserializer {    private final Field _field;    IntFieldDeserializer(Field field)    {      _field = field;    }        void deserialize(AbstractHessianInput in, Object obj)      throws IOException    {      int value = 0;            try {	value = in.readInt();		_field.setInt(obj, value);      } catch (Exception e) {        logDeserializeError(_field, obj, value, e);      }    }  }  static class LongFieldDeserializer extends FieldDeserializer {    private final Field _field;    LongFieldDeserializer(Field field)    {      _field = field;    }        void deserialize(AbstractHessianInput in, Object obj)      throws IOException    {      long value = 0;            try {	value = in.readLong();		_field.setLong(obj, value);      } catch (Exception e) {        logDeserializeError(_field, obj, value, e);      }    }  }  static class FloatFieldDeserializer extends FieldDeserializer {    private final Field _field;    FloatFieldDeserializer(Field field)    {      _field = field;    }        void deserialize(AbstractHessianInput in, Object obj)      throws IOException    {      double value = 0;            try {	value = in.readDouble();		_field.setFloat(obj, (float) value);      } catch (Exception e) {        logDeserializeError(_field, obj, value, e);      }    }  }  static class DoubleFieldDeserializer extends FieldDeserializer {    private final Field _field;    DoubleFieldDeserializer(Field field)    {      _field = field;    }        void deserialize(AbstractHessianInput in, Object obj)      throws IOException    {      double value = 0;            try {	value = in.readDouble();		_field.setDouble(obj, value);      } catch (Exception e) {        logDeserializeError(_field, obj, value, e);      }    }  }  static class StringFieldDeserializer extends FieldDeserializer {    private final Field _field;    StringFieldDeserializer(Field field)    {      _field = field;    }        void deserialize(AbstractHessianInput in, Object obj)      throws IOException    {      String value = null;            try {	value = in.readString();		_field.set(obj, value);      } catch (Exception e) {        logDeserializeError(_field, obj, value, e);      }    }  }  static class SqlDateFieldDeserializer extends FieldDeserializer {    private final Field _field;    SqlDateFieldDeserializer(Field field)    {      _field = field;    }        void deserialize(AbstractHessianInput in, Object obj)      throws IOException    {      java.sql.Date value = null;      try {        java.util.Date date = (java.util.Date) in.readObject();        value = new java.sql.Date(date.getTime());        _field.set(obj, value);      } catch (Exception e) {        logDeserializeError(_field, obj, value, e);      }    }  }  static class SqlTimestampFieldDeserializer extends FieldDeserializer {    private final Field _field;    SqlTimestampFieldDeserializer(Field field)    {      _field = field;    }        void deserialize(AbstractHessianInput in, Object obj)      throws IOException    {      java.sql.Timestamp value = null;      try {        java.util.Date date = (java.util.Date) in.readObject();        value = new java.sql.Timestamp(date.getTime());        _field.set(obj, value);      } catch (Exception e) {        logDeserializeError(_field, obj, value, e);      }    }  }  static class SqlTimeFieldDeserializer extends FieldDeserializer {    private final Field _field;    SqlTimeFieldDeserializer(Field field)    {      _field = field;    }        void deserialize(AbstractHessianInput in, Object obj)      throws IOException    {      java.sql.Time value = null;      try {        java.util.Date date = (java.util.Date) in.readObject();        value = new java.sql.Time(date.getTime());        _field.set(obj, value);      } catch (Exception e) {        logDeserializeError(_field, obj, value, e);      }    }  }  static void logDeserializeError(Field field, Object obj, Object value,                                  Throwable e)    throws IOException  {    String fieldName = (field.getDeclaringClass().getName()                        + "." + field.getName());    if (e instanceof HessianFieldException)      throw (HessianFieldException) e;    else if (e instanceof IOException)      throw new HessianFieldException(fieldName + ": " + e.getMessage(), e);        if (value != null)      throw new HessianFieldException(fieldName + ": " + value.getClass().getName() + " (" + value + ")"					 + " cannot be assigned to '" + field.getType().getName() + "'");    else       throw new HessianFieldException(fieldName + ": " + field.getType().getName() + " cannot be assigned from null", e);  }}

⌨️ 快捷键说明

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