protected Object homePageIfUsable(ObjectAdapter serviceAdapter, ObjectAction objectAction) { if (!objectAction.containsDoOpFacet(HomePageFacet.class)) { return null; } final Consent visibility = objectAction.isVisible( serviceAdapter, InteractionInitiatedBy.USER, Where.ANYWHERE); if (visibility.isVetoed()) { return null; } final Consent usability = objectAction.isUsable( serviceAdapter, InteractionInitiatedBy.USER, Where.ANYWHERE ); if (usability.isVetoed()) { return null; } final ObjectAdapter mixedInAdapter = null; final ObjectAdapter[] parameters = {}; final ObjectAdapter objectAdapter = objectAction.executeWithRuleChecking( serviceAdapter, mixedInAdapter, parameters, InteractionInitiatedBy.USER, WHERE_FOR_ACTION_INVOCATION); return objectAdapter != null ? objectAdapter.getObject(): null; }
private ObjectAdapter executeAction() { final ObjectAdapter targetAdapter = getTargetAdapter(); final ObjectAdapter[] arguments = getArgumentsAsArray(); final ObjectAction action = getAction(); // if this action is a mixin, then it will fill in the details automatically. final ObjectAdapter mixedInAdapter = null; final ObjectAdapter resultAdapter = action.executeWithRuleChecking( targetAdapter, mixedInAdapter, arguments, InteractionInitiatedBy.USER, WHERE_FOR_ACTION_INVOCATION); final List<RoutingService> routingServices = getServicesInjector().lookupServices(RoutingService.class); final Object result = resultAdapter != null ? resultAdapter.getObject() : null; for (RoutingService routingService : routingServices) { final boolean canRoute = routingService.canRoute(result); if(canRoute) { final Object routeTo = routingService.route(result); return routeTo != null? getPersistenceSession().adapterFor(routeTo): null; } } return resultAdapter; }
private ObjectAdapter executeAction() { final ObjectAdapter targetAdapter = getTargetAdapter(); final ObjectAdapter[] arguments = getArgumentsAsArray(); final ObjectAction action = getActionMemento().getAction(getSpecificationLoader()); // if this action is a mixin, then it will fill in the details automatically. final ObjectAdapter mixedInAdapter = null; final ObjectAdapter resultAdapter = action.executeWithRuleChecking( targetAdapter, mixedInAdapter, arguments, InteractionInitiatedBy.USER, WHERE_FOR_ACTION_INVOCATION); final List<RoutingService> routingServices = getServicesInjector().lookupServices(RoutingService.class); final Object result = resultAdapter != null ? resultAdapter.getObject() : null; for (RoutingService routingService : routingServices) { final boolean canRoute = routingService.canRoute(result); if(canRoute) { final Object routeTo = routingService.route(result); return routeTo != null? getPersistenceSession().adapterFor(routeTo): null; } } return resultAdapter; }