Descriptor class

Locator type that most often used in PipServices toolkit. It locates components using several fields:

  • Group: a package or just named group of components like "pip-services"
  • Type: logical component type that defines it's contract like "persistence"
  • Kind: physical implementation type like "mongodb"
  • Name: unique component name like "default"
  • Version: version of the component contract like "1.0"

The locator matching can be done by all or only few selected fields. The fields that shall be excluded from the matching must be set to "*" or null. That approach allows to implement many interesting scenarios. For instance:

  • Locate all loggers (match by type and version)
  • Locate persistence components for a microservice (match by group and type)
  • Locate specific component by its name (match by name)

Example

var locator1 = new Descriptor("mygroup", "connector", "aws", "default", "1.0");
var locator2 = Descriptor.fromString("mygroup:connector:*:*:1.0");

locator1.match(locator2);		// Result: true
locator1.equal(locator2);		// Result: true
locator1.exactMatch(locator2);	// Result: false

Constructors

Descriptor(String group String type String kind String name String version)
  • Creates a new instance of the descriptor.
      • group a logical component group
      • type a logical component type or contract
      • kind a component implementation type
      • name a unique component name
      • version a component implementation version
  • Properties

    hashCode → int
    The hash code for this object. [...]
    read-only, inherited
    runtimeType → Type
    A representation of the runtime type of the object.
    read-only, inherited

    Methods

    equals(dynamic value) → bool
  • Compares this descriptor to a value.
    • If value is a Descriptor it tries to match them,
    • otherwise the method returns false.
      • value the value to match against this descriptor.
    • Returns true if the value is matching descriptor and false otherwise.
    • See match
  • exactMatch(Descriptor descriptor) → bool
  • Matches this descriptor to another descriptor by all fields.
    • No exceptions are made.
      • descriptor the descriptor to match this one against.
    • Returns true if descriptors match and false otherwise.
    • See match
  • getGroup() → String
  • Gets the component's logical group.
    • Returns the component's logical group
  • getKind() → String
  • Gets the component's implementation type.
    • Returns the component's implementation type.
  • getName() → String
  • Gets the unique component's name.
    • Returns the unique component's name.
  • getType() → String
  • Gets the component's logical type.
    • Returns the component's logical type.
  • getVersion() → String
  • Gets the component's implementation version.
    • Returns the component's implementation version.
  • isComplete() → bool
  • Checks whether all descriptor fields are set.
    • If descriptor has at least one "*" or null field it is considered "incomplete",
    • Returns true if all descriptor fields are defined and false otherwise.
  • match(Descriptor descriptor) → bool
  • Partially matches this descriptor to another descriptor.
    • Fields that contain "*" or null are excluded from the match.
      • descriptor the descriptor to match this one against.
    • Returns true if descriptors match and false otherwise
    • See exactMatch
  • toString() → String
  • Gets a string representation of the object.
    • The result is a colon-separated list of descriptor fields as
    • "mygroup:connector:aws:default:1.0"
    • Returns a string representation of the object.
  • override
    noSuchMethod(Invocation invocation) → dynamic
    Invoked when a non-existent method or property is accessed. [...]
    inherited

    Operators

    operator ==(dynamic value) → bool
    The equality operator. [...]
    override

    Static Methods

    fromString(String value) Descriptor
  • Parses colon-separated list of descriptor fields and returns them as a Descriptor.
      • value colon-separated descriptor fields to initialize Descriptor.
    • Returns a newly created Descriptor.
    • @throws a ConfigException if the descriptor string is of a wrong format.