Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.openjpa.lib.util
Class Options

    java.lang.Object
      java.util.Dictionary<K,V>
          java.util.Hashtable<Object,Object>
              java.util.Properties
                  org.apache.openjpa.lib.util.TypedProperties
                      org.apache.openjpa.lib.util.Options

All Implemented Interfaces:
  Serializable, Cloneable, Map<Object,Object>

    public class Options

extends TypedProperties

A specialization of the `Properties` map type with the added abilities to read application options from the command line and to use bean patterns to set an object's properties via command-line the stored mappings. A typical use pattern for this class is to construct a new instance in the `main` method, then call `setFromCmdLine(java.lang.String[])` with the given args. Next, an instanceof the class being invoked is created, and `setInto(java.lang.Object)` is called with that instance as a parameter. With this pattern, the user can configure any bean properties of the class, or even properties of classes reachable from the class, through the command line.

Author:
  Abe White
See Also:
  Serialized Form

Field Summary
`static Options` | `EMPTY` Immutable empty instance.

Fields inherited from class java.util.Properties
`defaults`

Constructor Summary
`Options()` Default constructor.
`Options(Properties defaults)` Construct the options instance with the given set of defaults.

Method Summary
`static Collection<String>` | `findOptionsFor(Class<?> type)` Finds all the options that can be set on the provided class.
`boolean` | `getBooleanProperty(String key, String key2, boolean def)` Specialization of `getBooleanProperty(java.lang.String, java.lang.String, boolean)` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.
`double` | `getDoubleProperty(String key, String key2, double def)` Specialization of `TypedProperties.getDoubleProperty(java.lang.String)` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.
`float` | `getFloatProperty(String key, String key2, float def)` Specialization of `TypedProperties.getFloatProperty(java.lang.String)` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.
`int` | `getIntProperty(String key, String key2, int def)` Specialization of `TypedProperties.getIntProperty(java.lang.String)` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.
`long` | `getLongProperty(String key, String key2, long def)` Specialization of `TypedProperties.getLongProperty(java.lang.String)` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.
`String` | `getProperty(String key, String key2, String def)` Specialization of `Properties.getProperty(java.lang.String)` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.
`boolean` | `removeBooleanProperty(String key, String key2, boolean def)` Specialization of `TypedProperties.removeBooleanProperty(java.lang.String)` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.
`double` | `removeDoubleProperty(String key, String key2, double def)` Specialization of `TypedProperties.removeDoubleProperty(java.lang.String)` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.
`float` | `removeFloatProperty(String key, String key2, float def)` Specialization of `TypedProperties.removeFloatProperty(java.lang.String)` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.
`int` | `removeIntProperty(String key, String key2, int def)` Specialization of `TypedProperties.removeIntProperty(java.lang.String)` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.
`long` | `removeLongProperty(String key, String key2, long def)` Specialization of `TypedProperties.removeLongProperty(java.lang.String)` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.
`String` | `removeProperty(String key, String key2, String def)` Specialization of `Properties#removeProperty` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.
`String[]` | `setFromCmdLine(String[] args)` Parses the given argument list into flag/value pairs, which are stored as properties.
`Options` | `setInto(Object obj)` This method uses reflection to set all the properties in the given object that are named by the keys in this map.

Methods inherited from class org.apache.openjpa.lib.util.TypedProperties
`getBooleanProperty, getBooleanProperty, getDoubleProperty, getDoubleProperty, getFloatProperty, getFloatProperty, getIntProperty, getIntProperty, getLongProperty, getLongProperty, removeBooleanProperty, removeBooleanProperty, removeDoubleProperty, removeDoubleProperty, removeFloatProperty, removeFloatProperty, removeIntProperty, removeIntProperty, removeLongProperty, removeLongProperty, removeProperty, removeProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty`

Methods inherited from class java.util.Properties
`getProperty, getProperty, list, list, load, load, loadFromXML, propertyNames, save, store, store, storeToXML, storeToXML, stringPropertyNames`

Methods inherited from class java.util.Hashtable
`clear, clone, contains, containsKey, containsValue, elements, entrySet, equals, get, hashCode, isEmpty, keys, keySet, put, putAll, rehash, remove, size, toString, values`

Methods inherited from class java.lang.Object
`finalize, getClass, notify, notifyAll, wait, wait, wait`

Field Detail

### EMPTY

    public static Options EMPTY

  Immutable empty instance.

Constructor Detail

### Options

    public Options()

  Default constructor.

### Options

    public Options(Properties defaults)

  Construct the options instance with the given set of defaults.

  See Also:
    `Properties.Properties(Properties)`

Method Detail

### setFromCmdLine

    public String[] setFromCmdLine(String[] args)

  Parses the given argument list into flag/value pairs, which are stored as properties. Flags that are present without values are given the value "true". If any flag is found for which there is already a mapping present, the existing mapping will be overwritten. Flags should be of the form:
  `java Foo -flag1 value1 -flag2 value2 ... arg1 arg2 ...`

  Parameters:
    `args` - the command-line arguments
  Returns:
    all arguments in the original array beyond the flag/value pair list

### setInto

    public Options setInto(Object obj)

  This method uses reflection to set all the properties in the given object that are named by the keys in this map. For a given key 'foo', the algorithm will look for a 'setFoo' method in the given instance. For a given key 'foo.bar', the algorithm will first look for a 'getFoo' method in the given instance, then will recurse on the return value of that method, now looking for the 'bar' property. This allows the setting of nested object properties. If in the above example the 'getFoo' method is not present or returns null, the algorithm will look for a 'setFoo' method; if found it will constrct a new instance of the correct type, set it using the 'setFoo' method, then recurse on it as above. Property names can be nested in this way to an arbitrary depth. For setter methods that take multiple parameters, the value mapped to the key can use the ',' as an argument separator character. If not enough values are present for a given method after splitting the string on ',', the remaining arguments will receive default values. All arguments are converted from string form to the correct type if possible(i.e. if the type is primitive, java.lang.Clas, or has a constructor that takes a single string argument). Examples:
  - Map Entry: `"age"->"12"`
    Resultant method call: `obj.setAge(12)`
  - Map Entry: `"range"->"1,20"`
    Resultant method call: `obj.setRange(1, 20)`
  - Map Entry: `"range"->"10"`
    Resultant method call: `obj.setRange(10, 10)`
  - Map Entry: `"brother.name"->"Bob"`
    Resultant method call: `obj.getBrother().setName("Bob") ```
  Any keys present in the map for which there is no corresponding property in the given object will be ignored, and will be returned in the `Map` returned by this method.

  Returns:
    an `Options` of key-value pairs in this object for which no setters could be found.
  Throws:
    `RuntimeException` - on parse error

### findOptionsFor

    public static Collection<String> findOptionsFor(Class<?> type)

  Finds all the options that can be set on the provided class. This does not look for path-traversal expressions.

  Parameters:
    `type` - The class for which available options should be listed.
  Returns:
    The available option names in `type`. The names will have initial caps. They will be ordered alphabetically.

### getBooleanProperty

    public boolean getBooleanProperty(String key,
                                      String key2,
                                      boolean def)

  Specialization of `getBooleanProperty(java.lang.String, java.lang.String, boolean)` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.

### getFloatProperty

    public float getFloatProperty(String key,
                                  String key2,
                                  float def)

  Specialization of `TypedProperties.getFloatProperty(java.lang.String)` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.

### getDoubleProperty

    public double getDoubleProperty(String key,
                                    String key2,
                                    double def)

  Specialization of `TypedProperties.getDoubleProperty(java.lang.String)` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.

### getLongProperty

    public long getLongProperty(String key,
                                String key2,
                                long def)

  Specialization of `TypedProperties.getLongProperty(java.lang.String)` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.

### getIntProperty

    public int getIntProperty(String key,
                              String key2,
                              int def)

  Specialization of `TypedProperties.getIntProperty(java.lang.String)` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.

### getProperty

    public String getProperty(String key,
                              String key2,
                              String def)

  Specialization of `Properties.getProperty(java.lang.String)` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.

### removeBooleanProperty

    public boolean removeBooleanProperty(String key,
                                         String key2,
                                         boolean def)

  Specialization of `TypedProperties.removeBooleanProperty(java.lang.String)` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.

### removeFloatProperty

    public float removeFloatProperty(String key,
                                     String key2,
                                     float def)

  Specialization of `TypedProperties.removeFloatProperty(java.lang.String)` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.

### removeDoubleProperty

    public double removeDoubleProperty(String key,
                                       String key2,
                                       double def)

  Specialization of `TypedProperties.removeDoubleProperty(java.lang.String)` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.

### removeLongProperty

    public long removeLongProperty(String key,
                                   String key2,
                                   long def)

  Specialization of `TypedProperties.removeLongProperty(java.lang.String)` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.

### removeIntProperty

    public int removeIntProperty(String key,
                                 String key2,
                                 int def)

  Specialization of `TypedProperties.removeIntProperty(java.lang.String)` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.

### removeProperty

    public String removeProperty(String key,
                                 String key2,
                                 String def)

  Specialization of `Properties#removeProperty` to allow a value to appear under either of two keys; useful for short and long versions of command-line flags.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2006-2013 Apache Software Foundation. All Rights Reserved.