Class BasePropertySet

java.lang.Object
com.oracle.webservices.api.message.BasePropertySet
All Implemented Interfaces:
PropertySet
Direct Known Subclasses:
AdditionalResponses, AddressingPropertySet, BaseDistributedPropertySet, InboundAccepted, OutboundDelivered, ThrowableContainerPropertySet, TransactionPropertySet, WsaPropertyBag, WSDLProperties, WSHTTPConnection, XMLPropertyBag

public abstract class BasePropertySet extends Object implements PropertySet
A set of "properties" that can be accessed via strongly-typed fields as well as reflexibly through the property name.
Author:
Kohsuke Kawaguchi
  • Constructor Details

    • BasePropertySet

      protected BasePropertySet()
      Creates a new instance of TypedMap.
  • Method Details

    • getPropertyMap

      protected abstract BasePropertySet.PropertyMap getPropertyMap()
      Map representing the Fields and Methods annotated with PropertySet.Property. Model of PropertySet class.

      At the end of the derivation chain this method just needs to be implemented as:

       private static final PropertyMap model;
       static {
         model = parse(MyDerivedClass.class);
       }
       protected PropertyMap getPropertyMap() {
         return model;
       }
       
      or if the implementation is in different Java module.
       private static final PropertyMap model;
       static {
         model = parse(MyDerivedClass.class, MethodHandles.lookup());
       }
       protected PropertyMap getPropertyMap() {
         return model;
       }
       
      Returns:
      the map of strongly-typed known properties keyed by property names
    • parse

      protected static BasePropertySet.PropertyMap parse(Class<?> clazz)
      This method parses a class for fields and methods with PropertySet.Property.
      Parameters:
      clazz - Class to be parsed
      Returns:
      the map of strongly-typed known properties keyed by property names
      See Also:
    • parse

      protected static BasePropertySet.PropertyMap parse(Class<?> clazz, MethodHandles.Lookup caller)
      This method parses a class for fields and methods with PropertySet.Property.
      Parameters:
      clazz - Class to be parsed
      caller - the caller lookup object
      Returns:
      the map of strongly-typed known properties keyed by property names
      Throws:
      NullPointerException - if clazz or caller is null
      SecurityException - if denied by the security manager
      RuntimeException - if any of the other access checks specified above fails
      Since:
      3.0.1
    • containsKey

      public boolean containsKey(Object key)
      Specified by:
      containsKey in interface PropertySet
    • get

      public Object get(Object key)
      Gets the name of the property.
      Specified by:
      get in interface PropertySet
      Parameters:
      key - This field is typed as Object to follow the Map.get(Object) convention, but if anything but String is passed, this method just returns null.
    • put

      public Object put(String key, Object value)
      Sets a property.

      Implementation Note

      This method is slow. Code inside JAX-WS should define strongly-typed fields in this class and access them directly, instead of using this.

      Specified by:
      put in interface PropertySet
      Throws:
      ReadOnlyPropertyException - if the given key is an alias of a strongly-typed field, and if the name object given is not assignable to the field.
      See Also:
    • supports

      public boolean supports(Object key)
      Checks if this PropertySet supports a property of the given name.
      Specified by:
      supports in interface PropertySet
    • remove

      public Object remove(Object key)
      Specified by:
      remove in interface PropertySet
    • asMap

      public Map<String,Object> asMap()
      Creates a modifiable Map view of this PropertySet.
      Changes done on this Map or on PropertySet object work in both directions - values made to Map are reflected to PropertySet and changes done using getters/setters on PropertySet object are automatically reflected in this Map.
      If necessary, it also can hold other values (not present on PropertySet) - see mapAllowsAdditionalProperties()
      Specified by:
      asMap in interface PropertySet
      Returns:
      always non-null valid instance.
    • createView

      protected Map<String,Object> createView()
    • mapAllowsAdditionalProperties

      protected boolean mapAllowsAdditionalProperties()
      Used when constructing the BasePropertySet.MapView for this object - it controls if the BasePropertySet.MapView servers only to access strongly typed values or allows also different values
      Returns:
      true if Map should allow also properties not defined as strongly typed fields
    • createEntrySet

      protected void createEntrySet(Set<Map.Entry<String,Object>> core)