List of usage examples for org.springframework.aop.config AopNamespaceUtils registerAutoProxyCreatorIfNecessary
public static void registerAutoProxyCreatorIfNecessary(ParserContext parserContext, Element sourceElement)
From source file:com.github.spring.mvc.util.handler.config.UriMatchingAnnotationDrivenBeanDefinitionParser.java
/** * @see org.springframework.beans.factory.xml.BeanDefinitionParser#parse(org.w3c.dom.Element, org.springframework.beans.factory.xml.ParserContext) *//*from w w w . java 2 s . co m*/ @Override public BeanDefinition parse(Element element, ParserContext parserContext) { AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(parserContext, element); if (!parserContext.getRegistry().containsBeanDefinition(CACHING_ADVISOR_BEAN_NAME)) { log.info("configuring annotation-driven throttling"); final Object elementSource = parserContext.extractSource(element); final RuntimeBeanReference pointcutReference = setupPointcut(element, parserContext, elementSource); final RuntimeBeanReference interceptorReference = setupInterceptor(element, parserContext, elementSource); setupPointcutAdvisor(element, parserContext, elementSource, pointcutReference, interceptorReference); } return null; }
From source file:org.jsr107.ri.annotations.spring.config.AnnotationDrivenJCacheBeanDefinitionParser.java
@Override public BeanDefinition parse(Element element, ParserContext parserContext) { AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(parserContext, element); final BeanDefinitionRegistry registry = parserContext.getRegistry(); if (!registry.containsBeanDefinition(JCACHE_CACHE_OPERATION_SOURCE_BEAN_NAME)) { final Object elementSource = parserContext.extractSource(element); final RuntimeBeanReference cacheOperationSourceReference = this.setupCacheOperationSource(element, parserContext, elementSource); this.setupPointcutAdvisor(CacheResultInterceptor.class, element, parserContext, elementSource, cacheOperationSourceReference); this.setupPointcutAdvisor(CachePutInterceptor.class, element, parserContext, elementSource, cacheOperationSourceReference); this.setupPointcutAdvisor(CacheRemoveEntryInterceptor.class, element, parserContext, elementSource, cacheOperationSourceReference); this.setupPointcutAdvisor(CacheRemoveAllInterceptor.class, element, parserContext, elementSource, cacheOperationSourceReference); return registry.getBeanDefinition(JCACHE_CACHE_OPERATION_SOURCE_BEAN_NAME); }/*from w w w. ja va 2 s .com*/ return null; }
From source file:net.sourceforge.safr.core.spring.config.SecurityAnnotationDrivenBeanDefinitionParser.java
@Override protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) { AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(parserContext, element); String accessManagerName = element.getAttribute(ACCESS_MANAGER_ATTRIBUTE); String cryptoProviderName = element.getAttribute(CRYPTO_PROVIDER_ATTRIBUTE); String interceptorOrder = element.getAttribute(INTERCEPTOR_ORDER_ATTRIBUTE); String useAspectJ = element.getAttribute(SUPPORT_ASPECTJ_ATTRIBUTE); RootBeanDefinition removeFilterFactoryDefinition = new RootBeanDefinition(RemoveFilterFactory.class); removeFilterFactoryDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); removeFilterFactoryDefinition.setSource(parserContext.extractSource(element)); setConstructorArgument(removeFilterFactoryDefinition, createAccessManagerValue(accessManagerName)); RootBeanDefinition copyFilterFactoryDefinition = new RootBeanDefinition(CopyFilterFactory.class); copyFilterFactoryDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); copyFilterFactoryDefinition.setSource(parserContext.extractSource(element)); setConstructorArgument(copyFilterFactoryDefinition, createAccessManagerValue(accessManagerName)); RootBeanDefinition interceptorDefinition = new RootBeanDefinition(SecurityInterceptor.class); interceptorDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); interceptorDefinition.setSource(parserContext.extractSource(element)); interceptorDefinition.getPropertyValues().addPropertyValue(REMOVE_FILTER_FACTORY_PROPERTY, removeFilterFactoryDefinition); interceptorDefinition.getPropertyValues().addPropertyValue(COPY_FILTER_FACTORY_PROPERTY, copyFilterFactoryDefinition); setPropertyValue(interceptorDefinition, SECURITY_ATTRIBUTE_SOURCE_PROPERTY, createSecurityAttributeSourceValue()); setPropertyValue(interceptorDefinition, ACCESS_MANAGER_PROPERTY, createAccessManagerValue(accessManagerName)); setPropertyValue(interceptorDefinition, CRYPTO_PROVIDER_PROPERTY, createCryptoProviderValue(cryptoProviderName)); RootBeanDefinition advisorDefinition = new RootBeanDefinition(SecurityAttributeSourceAdvisor.class); advisorDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); advisorDefinition.setSource(parserContext.extractSource(element)); advisorDefinition.getPropertyValues().addPropertyValue(SECURITY_INTERCEPTOR_PROPERTY, interceptorDefinition);/* ww w.ja v a 2 s . c om*/ advisorDefinition.getPropertyValues().addPropertyValue(ORDER_PROPERTY, interceptorOrder); if (Boolean.parseBoolean(useAspectJ)) { RootBeanDefinition aspectDefinition = new RootBeanDefinition(SecurityAspect.class); aspectDefinition.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); aspectDefinition.setSource(parserContext.extractSource(element)); aspectDefinition.setFactoryMethodName("aspectOf"); aspectDefinition.getPropertyValues().addPropertyValue(REMOVE_FILTER_FACTORY_PROPERTY, removeFilterFactoryDefinition); aspectDefinition.getPropertyValues().addPropertyValue(COPY_FILTER_FACTORY_PROPERTY, copyFilterFactoryDefinition); setPropertyValue(aspectDefinition, SECURITY_ATTRIBUTE_SOURCE_PROPERTY, createSecurityAttributeSourceValue()); setPropertyValue(aspectDefinition, ACCESS_MANAGER_PROPERTY, createAccessManagerValue(accessManagerName)); setPropertyValue(aspectDefinition, CRYPTO_PROVIDER_PROPERTY, createCryptoProviderValue(cryptoProviderName)); parserContext.getRegistry().registerBeanDefinition(SecurityAspect.class.getName(), aspectDefinition); } return advisorDefinition; }
From source file:com.inspiresoftware.lib.dto.geda.config.AnnotationDrivenGeDABeanDefinitionParser.java
public BeanDefinition parse(final Element element, final ParserContext parserContext) { AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(parserContext, element); if (!parserContext.getRegistry().containsBeanDefinition(ADVISOR_BEAN_NAME)) { final Boolean usePreprocessor = Boolean.valueOf(element.getAttribute(XSD_ATTR__USE_PREPROCESSOR)); final String dtoSupportBeanName = element.getAttribute(XSD_ATTR__DTO_SUPPORT); final BeanDefinitionRegistry registry = parserContext.getRegistry(); final Object elementSource = parserContext.extractSource(element); final RuntimeBeanReference dtoSupportDef; if (!registry.containsBeanDefinition(dtoSupportBeanName)) { final String dtoFactoryBeanName = element.getAttribute(XSD_ATTR__DTO_FACTORY); final RuntimeBeanReference dtoFactoryRef = new RuntimeBeanReference(dtoFactoryBeanName); final String dtoVcrBeanName = element.getAttribute(XSD_ATTR__DTO_ADAPTERS_REGISTRAR); final RuntimeBeanReference dtoVcrRef; if (StringUtils.hasLength(dtoVcrBeanName)) { dtoVcrRef = new RuntimeBeanReference(dtoVcrBeanName); } else { dtoVcrRef = null;//w w w .j a va2s .c om } final String dtoDslBeanName = element.getAttribute(XSD_ATTR__DTO_DSL_REGISTRAR); final RuntimeBeanReference dtoDslRef; if (StringUtils.hasLength(dtoDslBeanName)) { dtoDslRef = new RuntimeBeanReference(dtoDslBeanName); } else { dtoDslRef = null; } dtoSupportDef = this.setupDtoSupport(element, dtoSupportBeanName, registry, elementSource, dtoFactoryRef, dtoVcrRef, dtoDslRef); } else { dtoSupportDef = new RuntimeBeanReference(dtoSupportBeanName); } if (usePreprocessor) { // bean pre processor version of configuration this.setupBootstapBeanPostprocessor(element, parserContext, elementSource); final RuntimeBeanReference defaultCfgAdvice = this.setupTransferableAdviceConfigResolver( parserContext, elementSource, BootstrapAdviceConfigResolverImpl.class); final String[] matchRegEx = this.getPointcutRegex(element, XSD_ATTR__POINTCUT_MATCH_REGEX); final String[] noMatchRegEx = this.getPointcutRegex(element, XSD_ATTR__POINTCUT_NOMATCH_REGEX); final RuntimeBeanReference pointcut = this.setupPointcut(parserContext, elementSource, defaultCfgAdvice, matchRegEx, noMatchRegEx); final RuntimeBeanReference defaultInterceptor = this.setupGeDAInterceptor(parserContext, elementSource, dtoSupportDef, defaultCfgAdvice); this.setupPointcutAdvisor(element, parserContext, elementSource, pointcut, defaultInterceptor); } else { // runtime advice discovery final RuntimeBeanReference defaultCfgAdvice = this.setupTransferableAdviceConfigResolver( parserContext, elementSource, RuntimeAdviceConfigResolverImpl.class); final String[] matchRegEx = this.getPointcutRegex(element, XSD_ATTR__POINTCUT_MATCH_REGEX); final String[] noMatchRegEx = this.getPointcutRegex(element, XSD_ATTR__POINTCUT_NOMATCH_REGEX); final RuntimeBeanReference pointcut = this.setupPointcut(parserContext, elementSource, defaultCfgAdvice, matchRegEx, noMatchRegEx); final RuntimeBeanReference defaultInterceptor = this.setupGeDAInterceptor(parserContext, elementSource, dtoSupportDef, defaultCfgAdvice); this.setupPointcutAdvisor(element, parserContext, elementSource, pointcut, defaultInterceptor); } } return null; }
From source file:com.googlecode.ehcache.annotations.config.AnnotationDrivenEhCacheBeanDefinitionParser.java
private void registerAdvisor(Element element, ParserContext parserContext) { AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(parserContext, element); if (!parserContext.getRegistry().containsBeanDefinition(EHCACHE_CACHING_ADVISOR_BEAN_NAME)) { final Object elementSource = parserContext.extractSource(element); final RuntimeBeanReference cacheAttributeSourceReference = this.setupCacheAttributeSource(element, parserContext, elementSource); final RuntimeBeanReference pointcutReference = this.setupPointcut(element, parserContext, elementSource, cacheAttributeSourceReference); final RuntimeBeanReference interceptorReference = this.setupInterceptor(element, parserContext, elementSource, cacheAttributeSourceReference); this.setupPointcutAdvisor(element, parserContext, elementSource, pointcutReference, interceptorReference);//from www . ja v a 2 s.co m } }
From source file:org.springframework.security.config.method.GlobalMethodSecurityBeanDefinitionParser.java
public BeanDefinition parse(Element element, ParserContext pc) { CompositeComponentDefinition compositeDef = new CompositeComponentDefinition(element.getTagName(), pc.extractSource(element));/*from ww w . jav a2 s . co m*/ pc.pushContainingComponent(compositeDef); Object source = pc.extractSource(element); // The list of method metadata delegates ManagedList<BeanMetadataElement> delegates = new ManagedList<>(); boolean jsr250Enabled = "enabled".equals(element.getAttribute(ATT_USE_JSR250)); boolean useSecured = "enabled".equals(element.getAttribute(ATT_USE_SECURED)); boolean prePostAnnotationsEnabled = "enabled".equals(element.getAttribute(ATT_USE_PREPOST)); boolean useAspectJ = "aspectj".equals(element.getAttribute(ATT_MODE)); BeanDefinition preInvocationVoter = null; ManagedList<BeanMetadataElement> afterInvocationProviders = new ManagedList<>(); // Check for an external SecurityMetadataSource, which takes priority over other // sources String metaDataSourceId = element.getAttribute(ATT_META_DATA_SOURCE_REF); if (StringUtils.hasText(metaDataSourceId)) { delegates.add(new RuntimeBeanReference(metaDataSourceId)); } if (prePostAnnotationsEnabled) { Element prePostElt = DomUtils.getChildElementByTagName(element, INVOCATION_HANDLING); Element expressionHandlerElt = DomUtils.getChildElementByTagName(element, EXPRESSION_HANDLER); if (prePostElt != null && expressionHandlerElt != null) { pc.getReaderContext().error( INVOCATION_HANDLING + " and " + EXPRESSION_HANDLER + " cannot be used together ", source); } BeanDefinitionBuilder preInvocationVoterBldr = BeanDefinitionBuilder .rootBeanDefinition(PreInvocationAuthorizationAdviceVoter.class); // After-invocation provider to handle post-invocation filtering and // authorization expression annotations. BeanDefinitionBuilder afterInvocationBldr = BeanDefinitionBuilder .rootBeanDefinition(PostInvocationAdviceProvider.class); // The metadata source for the security interceptor BeanDefinitionBuilder mds = BeanDefinitionBuilder .rootBeanDefinition(PrePostAnnotationSecurityMetadataSource.class); if (prePostElt != null) { // Customized override of expression handling system String attributeFactoryRef = DomUtils .getChildElementByTagName(prePostElt, INVOCATION_ATTRIBUTE_FACTORY).getAttribute("ref"); String preAdviceRef = DomUtils.getChildElementByTagName(prePostElt, PRE_INVOCATION_ADVICE) .getAttribute("ref"); String postAdviceRef = DomUtils.getChildElementByTagName(prePostElt, POST_INVOCATION_ADVICE) .getAttribute("ref"); mds.addConstructorArgReference(attributeFactoryRef); preInvocationVoterBldr.addConstructorArgReference(preAdviceRef); afterInvocationBldr.addConstructorArgReference(postAdviceRef); } else { // The default expression-based system String expressionHandlerRef = expressionHandlerElt == null ? null : expressionHandlerElt.getAttribute("ref"); if (StringUtils.hasText(expressionHandlerRef)) { logger.info( "Using bean '" + expressionHandlerRef + "' as method ExpressionHandler implementation"); RootBeanDefinition lazyInitPP = new RootBeanDefinition( LazyInitBeanDefinitionRegistryPostProcessor.class); lazyInitPP.getConstructorArgumentValues().addGenericArgumentValue(expressionHandlerRef); pc.getReaderContext().registerWithGeneratedName(lazyInitPP); BeanDefinitionBuilder lazyMethodSecurityExpressionHandlerBldr = BeanDefinitionBuilder .rootBeanDefinition(LazyInitTargetSource.class); lazyMethodSecurityExpressionHandlerBldr.addPropertyValue("targetBeanName", expressionHandlerRef); BeanDefinitionBuilder expressionHandlerProxyBldr = BeanDefinitionBuilder .rootBeanDefinition(ProxyFactoryBean.class); expressionHandlerProxyBldr.addPropertyValue("targetSource", lazyMethodSecurityExpressionHandlerBldr.getBeanDefinition()); expressionHandlerProxyBldr.addPropertyValue("proxyInterfaces", MethodSecurityExpressionHandler.class); expressionHandlerRef = pc.getReaderContext() .generateBeanName(expressionHandlerProxyBldr.getBeanDefinition()); pc.registerBeanComponent(new BeanComponentDefinition( expressionHandlerProxyBldr.getBeanDefinition(), expressionHandlerRef)); } else { RootBeanDefinition expressionHandler = registerWithDefaultRolePrefix(pc, DefaultMethodSecurityExpressionHandlerBeanFactory.class); expressionHandlerRef = pc.getReaderContext().generateBeanName(expressionHandler); pc.registerBeanComponent(new BeanComponentDefinition(expressionHandler, expressionHandlerRef)); logger.info( "Expressions were enabled for method security but no SecurityExpressionHandler was configured. " + "All hasPermision() expressions will evaluate to false."); } BeanDefinitionBuilder expressionPreAdviceBldr = BeanDefinitionBuilder .rootBeanDefinition(ExpressionBasedPreInvocationAdvice.class); expressionPreAdviceBldr.addPropertyReference("expressionHandler", expressionHandlerRef); preInvocationVoterBldr.addConstructorArgValue(expressionPreAdviceBldr.getBeanDefinition()); BeanDefinitionBuilder expressionPostAdviceBldr = BeanDefinitionBuilder .rootBeanDefinition(ExpressionBasedPostInvocationAdvice.class); expressionPostAdviceBldr.addConstructorArgReference(expressionHandlerRef); afterInvocationBldr.addConstructorArgValue(expressionPostAdviceBldr.getBeanDefinition()); BeanDefinitionBuilder annotationInvocationFactory = BeanDefinitionBuilder .rootBeanDefinition(ExpressionBasedAnnotationAttributeFactory.class); annotationInvocationFactory.addConstructorArgReference(expressionHandlerRef); mds.addConstructorArgValue(annotationInvocationFactory.getBeanDefinition()); } preInvocationVoter = preInvocationVoterBldr.getBeanDefinition(); afterInvocationProviders.add(afterInvocationBldr.getBeanDefinition()); delegates.add(mds.getBeanDefinition()); } if (useSecured) { delegates.add(BeanDefinitionBuilder.rootBeanDefinition(SecuredAnnotationSecurityMetadataSource.class) .getBeanDefinition()); } if (jsr250Enabled) { RootBeanDefinition jsrMetadataSource = registerWithDefaultRolePrefix(pc, Jsr250MethodSecurityMetadataSourceBeanFactory.class); delegates.add(jsrMetadataSource); } // Now create a Map<String, ConfigAttribute> for each <protect-pointcut> // sub-element Map<String, List<ConfigAttribute>> pointcutMap = parseProtectPointcuts(pc, DomUtils.getChildElementsByTagName(element, PROTECT_POINTCUT)); if (pointcutMap.size() > 0) { if (useAspectJ) { pc.getReaderContext().error("You can't use AspectJ mode with protect-pointcut definitions", source); } // Only add it if there are actually any pointcuts defined. BeanDefinition mapBasedMetadataSource = new RootBeanDefinition( MapBasedMethodSecurityMetadataSource.class); BeanReference ref = new RuntimeBeanReference( pc.getReaderContext().generateBeanName(mapBasedMetadataSource)); delegates.add(ref); pc.registerBeanComponent(new BeanComponentDefinition(mapBasedMetadataSource, ref.getBeanName())); registerProtectPointcutPostProcessor(pc, pointcutMap, ref, source); } BeanReference metadataSource = registerDelegatingMethodSecurityMetadataSource(pc, delegates, source); // Check for additional after-invocation-providers.. List<Element> afterInvocationElts = DomUtils.getChildElementsByTagName(element, Elements.AFTER_INVOCATION_PROVIDER); for (Element elt : afterInvocationElts) { afterInvocationProviders.add(new RuntimeBeanReference(elt.getAttribute(ATT_REF))); } String accessManagerId = element.getAttribute(ATT_ACCESS_MGR); if (!StringUtils.hasText(accessManagerId)) { accessManagerId = registerAccessManager(pc, jsr250Enabled, preInvocationVoter); } String authMgrRef = element.getAttribute(ATT_AUTHENTICATION_MANAGER_REF); String runAsManagerId = element.getAttribute(ATT_RUN_AS_MGR); BeanReference interceptor = registerMethodSecurityInterceptor(pc, authMgrRef, accessManagerId, runAsManagerId, metadataSource, afterInvocationProviders, source, useAspectJ); if (useAspectJ) { BeanDefinitionBuilder aspect = BeanDefinitionBuilder.rootBeanDefinition( "org.springframework.security.access.intercept.aspectj.aspect.AnnotationSecurityAspect"); aspect.setFactoryMethod("aspectOf"); aspect.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); aspect.addPropertyValue("securityInterceptor", interceptor); String id = pc.getReaderContext().registerWithGeneratedName(aspect.getBeanDefinition()); pc.registerBeanComponent(new BeanComponentDefinition(aspect.getBeanDefinition(), id)); } else { registerAdvisor(pc, interceptor, metadataSource, source, element.getAttribute(ATT_ADVICE_ORDER)); AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(pc, element); } pc.popAndRegisterContainingComponent(); return null; }