/** * @return null means that the default payload factories will be used; this is handled within * IsisTransaction. */ private static PublishingPayloadFactoryForAction newPayloadFactory(final Action action) { if (action == null) { return null; } final Class<? extends PublishingPayloadFactoryForAction> payloadFactoryClass = action.publishingPayloadFactory(); if (payloadFactoryClass == null) { return null; } try { return payloadFactoryClass.newInstance(); } catch (final InstantiationException e) { return null; } catch (final IllegalAccessException e) { return null; } }
public static PublishedActionFacet create( final Action action, final IsisConfiguration configuration, final FacetHolder holder) { final Publishing publishing = action != null ? action.publishing() : Publishing.AS_CONFIGURED; switch (publishing) { case AS_CONFIGURED: final PublishActionsConfiguration setting = PublishActionsConfiguration.parse(configuration); switch (setting) { case NONE: return null; case IGNORE_SAFE: final ActionSemanticsFacet actionSemanticsFacet = holder.getFacet(ActionSemanticsFacet.class); if (actionSemanticsFacet == null) { throw new IllegalStateException("Require ActionSemanticsFacet in order to process"); } if (actionSemanticsFacet.value().isSafeInNature()) { return null; } // else fall through default: final PublishingPayloadFactoryForAction publishingPayloadFactory = newPayloadFactory(action); return action != null ? new PublishedActionFacetForActionAnnotation(publishingPayloadFactory, holder) : new PublishedActionFacetFromConfiguration(publishingPayloadFactory, holder); } case DISABLED: return null; case ENABLED: return new PublishedActionFacetForActionAnnotation(newPayloadFactory(action), holder); } return null; }