public TransitionTokenDigest(TransitionTokenBean transitionToken) {
    super(null);

    Assert.isNotNull(transitionToken);

    oid = transitionToken.getOID();
    isConsumed = Boolean.valueOf(transitionToken.isConsumed()).booleanValue();

    ITransition transition = transitionToken.getTransition();
    IModel model = transition == null ? null : (IModel) transition.getModel();
    transitionId =
        transition == null ? null : "{" + model.getId() + '}' + transition.getId(); // $NON-NLS-1$
    procDefId =
        transition == null
            ? null
            : "{" + model.getId() + '}' + transition.getProcessDefinition().getId(); // $NON-NLS-1$
  }
 @Override
 public Collection<IDaemon> getDaemons() {
   List<IModel> models = ModelManagerFactory.getCurrent().findActiveModels();
   if (!models.isEmpty()) {
     Set<String> ids = CollectionUtils.newSet();
     List<IDaemon> daemons = CollectionUtils.newList();
     for (IModel model : models) {
       // Compute and store the model dependent daemons in model for faster lookup
       List<IDaemon> modelDependentDaemons;
       synchronized (model) {
         modelDependentDaemons =
             (List<IDaemon>) model.getRuntimeAttribute(CACHED_DAEMON_FACTORY);
         if (modelDependentDaemons == null) {
           modelDependentDaemons = CollectionUtils.newList();
           for (Iterator i = model.getAllTriggerTypes(); i.hasNext(); ) {
             ITriggerType type = (ITriggerType) i.next();
             if (type.isPullTrigger()) {
               modelDependentDaemons.add(new TriggerDaemon(type));
             }
           }
           model.setRuntimeAttribute(CACHED_DAEMON_FACTORY, modelDependentDaemons);
         }
       }
       // Compute union of all daemons
       // This always has to be computed as the daemons of a model might change
       // if new model version is deployed
       for (IDaemon daemon : modelDependentDaemons) {
         String type = daemon.getType();
         if (!ids.contains(type)) {
           daemons.add(daemon);
           ids.add(type);
         }
       }
     }
     return daemons;
   }
   return Collections.emptyList();
 }