/**
   * Will set a session level property. These will either be stored and retrieved using the
   * underlying transport mechanism of stored using a default mechanism
   *
   * @param key the key for the object data being stored on the session
   * @param value the value of the session data
   */
  @Override
  public void setProperty(String key, Object value) {
    if (!(value instanceof Serializable)) {
      logger.warn(CoreMessages.sessionPropertyNotSerializableWarning(key));
    }

    DataType dataType = DataTypeFactory.createFromObject(value);

    properties.put(key, new TypedValue(value, dataType));
  }
 @Override
 public void setProperty(String key, Serializable value) {
   setProperty(key, value, DataTypeFactory.createFromObject(value));
 }