Package jmri

Interface StringIOManager

All Superinterfaces:
Manager<StringIO>, NameIncrementingManager, PropertyChangeProvider, ProvidingManager<StringIO>, SilenceablePropertyChangeProvider, VetoableChangeProvider
All Known Implementing Classes:
AbstractStringIOManager, InternalStringIOManager, LnStringIOManager, OlcbStringIOManager, ProxyStringIOManager

Interface for obtaining StringIOs.
  • Method Details

    • provide

      Description copied from interface: ProvidingManager
      Get an existing instance via user name, then system name; if no matching instance is found, create a new NameBean from the system name.

      If the name is a valid system name, it will be used for the new NamedBean. Otherwise, the Manager.makeSystemName(java.lang.String) method will attempt to turn it into a valid system name which the manager will attempt to use. If that fails, an exception is thrown.

      This is similar to the specific methods found in certain type-specific managers: TurnoutManager.provideTurnout(java.lang.String), SensorManager.provideSensor(java.lang.String), et al. Those might be more mnemonic; this one is more generic. Neither is preferred nor deprecated; use your choice.

      Specified by:
      provide in interface ProvidingManager<StringIO>
      Parameters:
      name - User name, system name, or address which can be promoted to system name
      Returns:
      Never null
      Throws:
      IllegalArgumentException - if NamedBean doesn't already exist and the manager cannot create it due to an illegal name or name that can't be parsed.
    • provideStringIO

      Throws:
      IllegalArgumentException
    • getStringIO

      Get an existing StringIO or return null if it doesn't exist. Locates via user name, then system name if needed.
      Parameters:
      name - User name or system name to match
      Returns:
      null if no match found
    • newStringIO

      Return a StringIO with the specified user or system name. Return StringIO by UserName else provide by SystemName.

      Note that two calls with the same arguments will get the same instance; there is only one StringIO object with a specific system or user name.

      This will always return a valid object reference; a new object will be created if necessary. If that's not possible, an IllegalArgumentException is thrown.

      If a new object has to be created:

      • If a null reference is given for user name, no user name will be associated with the Sensor object created; a valid system name must be provided
      • If both names are provided, the system name defines the hardware access of the desired sensor, and the user address is associated with it. The system name must be valid.
      Note that it is possible to make an inconsistent request if both addresses are provided, but the given values are associated with different objects. This is a problem, and we don't have a good solution except to issue warnings. This will mostly happen if you're creating StringIOs when you should be looking them up.
      Parameters:
      systemName - the desired system name
      userName - the desired user name
      Returns:
      requested StringIO object
      Throws:
      IllegalArgumentException - if cannot create the StringIO due to e.g. an illegal name or name that can't be parsed.