@Override public void configure(StateMachineExecutor executor) { this.executor = executor; executor.register(InstanceOperation.class, (Function<Commit<InstanceOperation>, Object>) this::operateResource); executor.register(GetResource.class, this::getResource); executor.register(GetResourceIfExists.class, this::getResourceIfExists); executor.register(CloseResource.class, this::closeResource); executor.register(DeleteResource.class, this::deleteResource); executor.register(ResourceExists.class, this::resourceExists); executor.register(GetResourceKeys.class, this::getResourceKeys); }
@Override public void configure(StateMachineExecutor executor) { this.executor = executor; executor.register(InstanceOperation.class, (Function<Commit<InstanceOperation>, Object>) this::operateResource); executor.register(GetResource.class, this::getResource); executor.register(GetResourceIfExists.class, this::getResourceIfExists); executor.register(CloseResource.class, this::closeResource); executor.register(DeleteResource.class, this::deleteResource); executor.register(ResourceExists.class, this::resourceExists); executor.register(GetResourceKeys.class, this::getResourceKeys); }
ResourceStateMachineExecutor(StateMachineExecutor parent) { this.parent = Assert.notNull(parent, "parent"); parent.register(ResourceCommand.class, (Function<Commit<ResourceCommand>, Object>) this::executeCommand); parent.register(ResourceQuery.class, (Function<Commit<ResourceQuery>, Object>) this::executeQuery); }
ResourceStateMachineExecutor(StateMachineExecutor parent) { this.parent = Assert.notNull(parent, "parent"); parent.register(ResourceCommand.class, (Function<Commit<ResourceCommand>, Object>) this::executeCommand); parent.register(ResourceQuery.class, (Function<Commit<ResourceQuery>, Object>) this::executeQuery); }
/** * Registers an operation with a non-void return value. */ @SuppressWarnings("unchecked") private void registerValueMethod(Class type, Method method) { executor.register(type, wrapValueMethod(method)); }
/** * Registers an operation with a void return value. */ @SuppressWarnings("unchecked") private void registerVoidMethod(Class type, Method method) { executor.register(type, wrapVoidMethod(method)); }
/** * Registers an operation with a non-void return value. */ @SuppressWarnings("unchecked") private void registerValueMethod(Class type, Method method) { executor.register(type, wrapValueMethod(method)); }
/** * Registers an operation with a non-void return value. */ @SuppressWarnings("unchecked") private void registerValueMethod(Class type, Method method) { executor.register(type, wrapValueMethod(method)); }
/** * Registers an operation with a void return value. */ @SuppressWarnings("unchecked") private void registerVoidMethod(Class type, Method method) { executor.register(type, wrapVoidMethod(method)); }
/** * Registers an operation with a void return value. */ @SuppressWarnings("unchecked") private void registerVoidMethod(Class type, Method method) { executor.register(type, wrapVoidMethod(method)); }
@Override protected void configure(StateMachineExecutor executor) { executor.register(TestCommand.class, this::command); }
@Override public final void init(StateMachineExecutor executor) { try { executor.serializer().resolve(type.typeResolver().newInstance()); } catch (InstantiationException | IllegalAccessException e) { throw new ResourceException("failed to instantiate resource type resolver"); } executor.serializer().register(ResourceCommand.class, -50); executor.serializer().register(ResourceQuery.class, -51); executor.serializer().register(ConfigureCommand.class, -52); executor.serializer().register(DeleteCommand.class, -53); executor.<DeleteCommand>register(DeleteCommand.class, this::delete); executor.<ConfigureCommand>register(ConfigureCommand.class, this::configure); super.init(new ResourceStateMachineExecutor(executor)); }