# Package com.ihr.xbrl.resolvers

This package contains classes that are able to do clever but simple things like infer the company name from a specific fact item in the xbrl report.

See: Description

- Interface Summary
  Interface | Description
  --- | ---
  Supervisor | A class implementing this interface is able to check if the result of a worker is OK or not.
  Worker | The Interface Worker.

- Class Summary
  Class | Description
  --- | ---
  ResolversPool | This is the class with static methods that is able to provide instances of resolvers for simple jobs.

## Package com.ihr.xbrl.resolvers Description

This package contains classes that are able to do clever but simple things like infer the company name from a specific fact item in the xbrl report.

The functionality included in this package contains the following characteristics:

- It may fail, not raising unexpected exceptions but, for example, for been able to obtain the company name if the instance document does not contains the required fact
- Components may be pluggable. This means, there will be common interfaces and registered objects that implement the interface. The registered objects can be called until there is a satisfactory response for the caller.
- It should be easy to detect or predict if a component has done his work or not or can successfully do his work or not. This is in order to decide which one of the components registered for the same job will do the work
- Every component must have a role (or a set of roles) components will be classified for all roles they can perform
- Components can be arranged by priority. Components with higher priority will be asked to perform a job for a specific role prior to components with lower priority
- There is only one static instance of the resolver. During initialization of the resolver all classes that are enumerated in the com.ihr.xbrl.resolvers.workers system property are loaded along with all classes that are in the package of the same name on this jar file. (sealed) so, if you are added new workers, make sure the class name is enumerated in the system property indicated above. the separator for classes is a simple comma character.
- Easy to develop. The interfaces and the components on this package will vary project by project and every year (they may vary with new releases of taxonomies) so the simpler the implementation the better for later use and maintenance.