/** * Advises the {@link org.apache.tapestry5.services.messages.ComponentMessagesSource} service so * that the creation * of {@link org.apache.tapestry5.ioc.Messages} instances can be deferred. * * @since 5.1.0.0 */ @Match("ComponentMessagesSource") public static void adviseLazy(LazyAdvisor advisor, MethodAdviceReceiver receiver) { advisor.addLazyMethodInvocationAdvice(receiver); }
private <T extends Annotation> String[] extractPatterns(String id, Method method) { Match match = method.getAnnotation(Match.class); if (match == null) { return new String[]{id}; } return match.value(); }
/** * Provides the "LinkTransformer" interceptor for the {@link ComponentEventLinkEncoder} service. * Other decorations * should come after LinkTransformer. * * @since 5.2.0 */ @Match("ComponentEventLinkEncoder") public ComponentEventLinkEncoder decorateLinkTransformer(LinkTransformer linkTransformer, ComponentEventLinkEncoder delegate) { return new LinkTransformerInterceptor(linkTransformer, delegate); }
private <T extends Annotation> String[] extractPatterns(String id, Method method) { Match match = method.getAnnotation(Match.class); if (match == null) { return new String[]{id}; } return match.value(); }
@Match("ScriptingServices") public static void adviseSafe(final Logger log, final ApplicationStateManager appStateManager, final Indexer indexer, final PortalSecurityManager securityManager, MethodAdviceReceiver receiver) { MethodAdvice advice = new MethodAdvice() { @Override public void advise(MethodInvocation invocation) { invocation.proceed(); Storage storage = (Storage) invocation.getReturnValue(); invocation.setReturnValue(new SecureStorage(storage, indexer, securityManager, appStateManager.getIfExists(JsonSessionState.class))); } }; try { Method method = receiver.getInterface().getMethod("getStorage", new Class[]{}); receiver.adviseMethod(method, advice); } catch (Exception e) { log.error("Failed to advise: {}", e.getMessage()); } }
@Match("*") public <T> T decorateEverything(Class<T> type, T instance) { throw new RuntimeException(String.format("Failure to decorate type %s.", type.getName())); } }
@Match("*") public static void adviseLogging(MethodAdviceReceiver receiver, LoggingAdvisor loggingAdvisor, Logger logger) { loggingAdvisor.addLoggingAdvice(logger, receiver); }
@Match( { "*Service" }) public static void adviseTransactionally(JpaTransactionAdvisor advisor, MethodAdviceReceiver receiver) { advisor.addTransactionCommitAdvice(receiver); }
@Match("*DAO") public static void adviseTransactionally(final JpaTransactionAdvisor advisor, final MethodAdviceReceiver receiver) { advisor.addTransactionCommitAdvice(receiver); } }
@Match("*DAO") public static void adviseTransactionally(final JpaTransactionAdvisor advisor, final MethodAdviceReceiver receiver) { advisor.addTransactionCommitAdvice(receiver); } }
@Match( {"UnorderedNames", "Fred"}) public Object decorateBeta(Object delegate, DecoratorList list) { list.add("beta"); return null; }
@Match("Indexer") public static void adviseSafeIndexer(final Logger log, final ApplicationStateManager appStateManager,
/** * Applies the advice to the services. * * @param receiver * a {@link MethodAdviceReceiver}. * @param objectLocator * an {@link ObjectLocator}. */ @Match("*") public static void adviseCache(MethodAdviceReceiver receiver, ObjectLocator objectLocator) { advise(CachePut.class, objectLocator, CachePutMethodAdvice.class, receiver); advise(CacheRemoveAll.class, objectLocator, CacheRemoveAllMethodAdvice.class, receiver); advise(CacheRemove.class, objectLocator, CacheRemoveMethodAdvice.class, receiver); advise(CacheResult.class, objectLocator, CacheResultMethodAdvice.class, receiver); }
@Advise @Match("RedGreeter") public static void byMatchAnnotation(MethodAdviceReceiver receiver) { doAdvise(receiver, "alpha"); }
@Match( {"UnorderedNames", "Fred"}) @Order("before:Beta") public Object decorateAlpha(Object delegate, DecoratorList list) { list.add("alpha"); return null; }
@Match( {"UnorderedNames", "Fred", "PrivateFredAlias"}) @Order("after:Beta") public Object decorateGamma(Object delegate, DecoratorList list) { list.add("gamma"); return null; }
@Decorate @Match("RedGreeter") public static <T> T byMatchAnnotation(ServiceResources resources, T delegate, AspectDecorator aspectDecorator) { return doDecorate("alpha", resources, delegate, aspectDecorator); }
@Match("*DAO") public static <T> T decorateTransactionally(HibernateTransactionDecorator decorator, Class<T> serviceInterface, T delegate, ServiceResources resources) { return decorator.build(serviceInterface, delegate, resources.getServiceId()); }
@Advise @Match("*") @Order("before:*") public void addOperationTracking(MethodAdviceReceiver receiver, OperationAdvisor advisor) { advisor.addOperationAdvice(receiver); }