code: @Override
      public void setObjectProperty(String name, Object value) throws JMSException {
          if (name == null || name.isEmpty()) {
              throw new IllegalArgumentException("Property name can not be null or empty.");
          }
          if (value == null || "".equals(value)) {
              throw new IllegalArgumentException("Property value can not be null or empty.");
          }
          if(!isValidPropertyValueType(value)) {
              throw new MessageFormatException("Value of property with name " + name + " has incorrect type " + value.getClass().getName() + ".");
          }
          checkPropertyWritePermissions();
          properties.put(name, new JMSMessagePropertyValue(value));
      }
docs: Sets a Java object property value with the specified name into the
  message.
  <P>
  Note that this method works only for the boxed primitive object types
  (Integer, Double, Long ...) and String objects.
  
  @param name
  The name of the property to set.
  @param value
  The object value of the property to set.
  @throws JMSException
  On internal error.
  @throws IllegalArgumentException
  If the name or value is null or empty string.
  @throws MessageFormatException
  If the object is invalid type.
  @throws MessageNotWriteableException
  If properties are read-only.