Ejemplo n.º 1
0
  private AgentInstance startStatement(
      int contextId,
      ContextControllerStatementDesc statementDesc,
      ContextController originator,
      Object partitionKey,
      Map<String, Object> contextProperties,
      boolean isRecoveringResilient) {

    // build filters
    IdentityHashMap<FilterSpecCompiled, List<FilterValueSetParam>> filterAddendum =
        new IdentityHashMap<FilterSpecCompiled, List<FilterValueSetParam>>();
    originator
        .getFactory()
        .populateFilterAddendums(filterAddendum, statementDesc, partitionKey, contextId);
    AgentInstanceFilterProxy proxy = new AgentInstanceFilterProxyImpl(filterAddendum);

    // build built-in context properties
    contextProperties.put(ContextPropertyEventType.PROP_CTX_NAME, contextName);
    contextProperties.put(ContextPropertyEventType.PROP_CTX_ID, contextId);
    MappedEventBean contextBean =
        (MappedEventBean)
            servicesContext
                .getEventAdapterService()
                .adapterForTypedMap(
                    contextProperties,
                    contextDescriptor.getContextPropertyRegistry().getContextEventType());

    // activate
    StatementAgentInstanceFactoryResult result =
        StatementAgentInstanceUtil.start(
            servicesContext,
            statementDesc.getStatement(),
            false,
            contextId,
            contextBean,
            proxy,
            isRecoveringResilient);

    // save only instance data
    return new AgentInstance(
        result.getStopCallback(), result.getAgentInstanceContext(), result.getFinalView());
  }