List of usage examples for org.springframework.beans.factory.xml ParserContext getReaderContext
public final XmlReaderContext getReaderContext()
From source file:net.javacrumbs.springws.test.xml.MockWsMessageSenderBeanDefinitionParser.java
@Override protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder bean) { Map<?, ?> namespaces = parseNamespaces(element, parserContext, bean); Map<?, ?> discriminators = parseDiscriminators(element, parserContext, bean); Element resourceConfig = DomUtils.getChildElementByTagName(element, "resource-config"); String pathPrefix = resourceConfig.getAttribute("pathPrefix"); String prependUri = resourceConfig.getAttribute("prependUri"); String ignoreWhitespace = resourceConfig.getAttribute("ignoreWhitespace"); BeanDefinitionBuilder templateProcessor = getTemplateProcessor(resourceConfig); bean.addPropertyValue("autowireRequestProcessors", element.getAttribute("autowireRequestProcessors")); BeanDefinitionBuilder expressionResolver = BeanDefinitionBuilder .rootBeanDefinition(XPathExpressionResolver.class); expressionResolver.addPropertyValue("namespaceMap", namespaces); ManagedList requestProcessors = new ManagedList(); BeanDefinitionBuilder controlResourceLookup = BeanDefinitionBuilder .rootBeanDefinition(PayloadRootBasedResourceLookup.class); controlResourceLookup.addPropertyValue("expressionResolver", expressionResolver.getBeanDefinition()); controlResourceLookup.addPropertyValue("discriminators", discriminators); controlResourceLookup.addPropertyValue("pathPrefix", pathPrefix); controlResourceLookup.addPropertyValue("prependUri", prependUri); controlResourceLookup.addPropertyValue("pathSuffix", "request.xml"); controlResourceLookup.addPropertyValue("templateProcessor", templateProcessor.getBeanDefinition()); BeanDefinitionBuilder xmlCompareRequestValidator = BeanDefinitionBuilder .rootBeanDefinition(XmlCompareRequestValidator.class); xmlCompareRequestValidator.addPropertyValue("controlResourceLookup", controlResourceLookup.getBeanDefinition()); xmlCompareRequestValidator.addPropertyValue("ignoreWhitespace", ignoreWhitespace); addRequestProcessor(requestProcessors, xmlCompareRequestValidator); String[] schemas = parseRequestValidationSchemas(element, bean); if (schemas != null) { BeanDefinitionBuilder schemaRequestValidator = BeanDefinitionBuilder .rootBeanDefinition(SchemaRequestValidator.class); schemaRequestValidator.addPropertyValue("schemas", schemas); addRequestProcessor(requestProcessors, schemaRequestValidator); }// w ww .j ava2s . co m BeanDefinitionBuilder responseResourceLookup = BeanDefinitionBuilder .rootBeanDefinition(PayloadRootBasedResourceLookup.class); responseResourceLookup.addPropertyValue("expressionResolver", expressionResolver.getBeanDefinition()); responseResourceLookup.addPropertyValue("discriminators", discriminators); responseResourceLookup.addPropertyValue("pathPrefix", pathPrefix); responseResourceLookup.addPropertyValue("prependUri", prependUri); responseResourceLookup.addPropertyValue("pathSuffix", "response.xml"); responseResourceLookup.addPropertyValue("templateProcessor", templateProcessor.getBeanDefinition()); BeanDefinitionBuilder defaultResponseGenerator = BeanDefinitionBuilder .rootBeanDefinition(DefaultResponseGenerator.class); defaultResponseGenerator.addPropertyValue("resourceLookup", responseResourceLookup.getBeanDefinition()); addRequestProcessor(requestProcessors, defaultResponseGenerator); bean.addPropertyValue("requestProcessors", requestProcessors); if (TRUE.equals(element.getAttribute("autoinjectMock"))) { AbstractBeanDefinition injector = BeanDefinitionBuilder .rootBeanDefinition(MockMessageSenderInjector.class).getBeanDefinition(); BeanDefinitionHolder holder = new BeanDefinitionHolder(injector, parserContext.getReaderContext().generateBeanName(injector)); registerBeanDefinition(holder, parserContext.getRegistry()); } bean.addPropertyValue("interceptors", parseInterceptors(element, parserContext, bean)); }
From source file:org.apache.ftpserver.config.spring.ServerBeanDefinitionParser.java
/** * {@inheritDoc}//from w w w . j a v a 2 s . c o m */ @Override protected void doParse(final Element element, final ParserContext parserContext, final BeanDefinitionBuilder builder) { BeanDefinitionBuilder factoryBuilder = BeanDefinitionBuilder.genericBeanDefinition(FtpServerFactory.class); List<Element> childs = SpringUtil.getChildElements(element); for (Element childElm : childs) { String childName = childElm.getLocalName(); if ("listeners".equals(childName)) { Map<?, ?> listeners = parseListeners(childElm, parserContext, builder); if (listeners.size() > 0) { factoryBuilder.addPropertyValue("listeners", listeners); } } else if ("ftplets".equals(childName)) { Map<?, ?> ftplets = parseFtplets(childElm, parserContext, builder); factoryBuilder.addPropertyValue("ftplets", ftplets); } else if ("file-user-manager".equals(childName) || "db-user-manager".equals(childName)) { Object userManager = parserContext.getDelegate().parseCustomElement(childElm, builder.getBeanDefinition()); factoryBuilder.addPropertyValue("userManager", userManager); } else if ("user-manager".equals(childName)) { factoryBuilder.addPropertyValue("userManager", SpringUtil.parseSpringChildElement(childElm, parserContext, builder)); } else if ("native-filesystem".equals(childName)) { Object fileSystem = parserContext.getDelegate().parseCustomElement(childElm, builder.getBeanDefinition()); factoryBuilder.addPropertyValue("fileSystem", fileSystem); } else if ("filesystem".equals(childName)) { factoryBuilder.addPropertyValue("fileSystem", SpringUtil.parseSpringChildElement(childElm, parserContext, builder)); } else if ("commands".equals(childName)) { Object commandFactory = parserContext.getDelegate().parseCustomElement(childElm, builder.getBeanDefinition()); factoryBuilder.addPropertyValue("commandFactory", commandFactory); } else if ("messages".equals(childName)) { MessageResource mr = parseMessageResource(childElm, parserContext, builder); factoryBuilder.addPropertyValue("messageResource", mr); } else { throw new FtpServerConfigurationException("Unknown configuration name: " + childName); } } // Configure login limits ConnectionConfigFactory connectionConfig = new ConnectionConfigFactory(); if (StringUtils.hasText(element.getAttribute("max-logins"))) { connectionConfig.setMaxLogins(SpringUtil.parseInt(element, "max-logins")); } if (StringUtils.hasText(element.getAttribute("max-threads"))) { connectionConfig.setMaxThreads(SpringUtil.parseInt(element, "max-threads")); } if (StringUtils.hasText(element.getAttribute("max-anon-logins"))) { connectionConfig.setMaxAnonymousLogins(SpringUtil.parseInt(element, "max-anon-logins")); } if (StringUtils.hasText(element.getAttribute("anon-enabled"))) { connectionConfig.setAnonymousLoginEnabled(SpringUtil.parseBoolean(element, "anon-enabled", true)); } if (StringUtils.hasText(element.getAttribute("max-login-failures"))) { connectionConfig.setMaxLoginFailures(SpringUtil.parseInt(element, "max-login-failures")); } if (StringUtils.hasText(element.getAttribute("login-failure-delay"))) { connectionConfig.setLoginFailureDelay(SpringUtil.parseInt(element, "login-failure-delay")); } factoryBuilder.addPropertyValue("connectionConfig", connectionConfig.createConnectionConfig()); BeanDefinition factoryDefinition = factoryBuilder.getBeanDefinition(); String factoryName = parserContext.getReaderContext().generateBeanName(factoryDefinition); BeanDefinitionHolder factoryHolder = new BeanDefinitionHolder(factoryDefinition, factoryName); registerBeanDefinition(factoryHolder, parserContext.getRegistry()); // set the factory on the listener bean builder.getRawBeanDefinition().setFactoryBeanName(factoryName); builder.getRawBeanDefinition().setFactoryMethodName("createServer"); }
From source file:org.jdal.vaadin.beans.TableBeanDefinitionParser.java
/** * {@inheritDoc}// w ww . j av a2 s . c om */ @SuppressWarnings("rawtypes") public BeanDefinition parse(Element element, ParserContext parserContext) { // Defaults String entity = null; if (element.hasAttribute(ENTITY)) entity = element.getAttribute(ENTITY); String name = StringUtils.uncapitalize(StringUtils.substringAfterLast(entity, ".")); if (element.hasAttribute(ID)) name = element.getAttribute(ID); parserContext.pushContainingComponent( new CompositeComponentDefinition(name, parserContext.extractSource(element))); // Bean names String pageableTableBeanName = name + PAGEABLE_TABLE_SUFFIX; String tableBeanName = name + TABLE_SUFFIX; String dataSource = name + SERVICE_SUFFIX; String paginator = PAGINATOR_VIEW; String editor = name + EDITOR_SUFFIX; String actions = DefaultsBeanDefinitionParser.DEFAULT_TABLE_ACTIONS; String guiFactory = DefaultsBeanDefinitionParser.DEFAULT_GUI_FACTORY; String scope = BeanDefinition.SCOPE_PROTOTYPE; String pageableTableClass = DEFAULT_PAGEABLE_TABLE_CLASS; String tableClass = DEFAULT_TABLE_CLASS; if (element.hasAttribute(DATA_SOURCE)) dataSource = element.getAttribute(DATA_SOURCE); if (element.hasAttribute(PAGINATOR)) paginator = element.getAttribute(PAGINATOR); if (element.hasAttribute(ACTIONS)) actions = element.getAttribute(ACTIONS); if (element.hasAttribute(GUI_FACTORY)) guiFactory = element.getAttribute(GUI_FACTORY); if (element.hasAttribute(EDITOR)) editor = element.getAttribute(EDITOR); if (element.hasAttribute(SCOPE)) scope = element.getAttribute(SCOPE); if (element.hasAttribute(PAGEABLE_TABLE_CLASS)) pageableTableClass = element.getAttribute(PAGEABLE_TABLE_CLASS); if (element.hasAttribute(TABLE_CLASS)) tableClass = element.getAttribute(TABLE_CLASS); // create PageableTable BeanDefinitionBuilder bdb = BeanDefinitionBuilder.genericBeanDefinition(pageableTableClass); bdb.setScope(scope); bdb.addPropertyReference(DATA_SOURCE, dataSource); bdb.addPropertyReference(PAGINATOR_VIEW, paginator); bdb.addPropertyValue(NAME, pageableTableBeanName); bdb.addPropertyReference(TABLE, tableBeanName); bdb.addPropertyReference(GUI_FACTORY, guiFactory); bdb.addPropertyValue(EDITOR_NAME, editor); bdb.addPropertyValue(ENTITY_CLASS, entity); BeanDefinitionUtils.addPropertyReferenceIfNeeded(bdb, element, TABLE_SERVICE); BeanDefinitionUtils.addPropertyReferenceIfNeeded(bdb, element, FILTER); BeanDefinitionUtils.addPropertyReferenceIfNeeded(bdb, element, MESSAGE_SOURCE); BeanDefinitionUtils.addPropertyReferenceIfNeeded(bdb, element, FILTER_FORM); BeanDefinitionUtils.addPropertyValueIfNeeded(bdb, element, SORT_PROPERTY); BeanDefinitionUtils.addPropertyValueIfNeeded(bdb, element, ORDER); BeanDefinitionUtils.addPropertyValueIfNeeded(bdb, element, PAGE_SIZE); BeanDefinitionUtils.addPropertyValueIfNeeded(bdb, element, NATIVE_BUTTONS); BeanDefinitionUtils.addPropertyValueIfNeeded(bdb, element, PROPAGATE_SERVICE); if (!element.hasAttribute(USE_ACTIONS) || "true".equals(element.getAttribute(USE_ACTIONS))) bdb.addPropertyReference(ACTIONS, actions); parserContext.getDelegate().parseBeanDefinitionAttributes(element, pageableTableBeanName, null, bdb.getBeanDefinition()); BeanDefinitionHolder holder = new BeanDefinitionHolder(bdb.getBeanDefinition(), pageableTableBeanName); // Test Decorators like aop:scoped-proxy NodeList childNodes = element.getChildNodes(); for (int i = 0; i < childNodes.getLength(); i++) { Node n = childNodes.item(i); if (Node.ELEMENT_NODE != n.getNodeType() || COLUMNS.equals(n.getLocalName())) continue; NamespaceHandler handler = parserContext.getReaderContext().getNamespaceHandlerResolver() .resolve(n.getNamespaceURI()); if (handler != null) { holder = handler.decorate(n, holder, parserContext); } } parserContext.registerBeanComponent(new BeanComponentDefinition(holder)); // create ConfigurableTable bdb = BeanDefinitionBuilder.genericBeanDefinition(tableClass); bdb.setScope(BeanDefinition.SCOPE_PROTOTYPE); BeanDefinitionUtils.addPropertyReferenceIfNeeded(bdb, element, FIELD_FACTORY); BeanDefinitionUtils.addPropertyValueIfNeeded(bdb, element, MULTISELECT); if (element.hasAttribute(SELECTABLE)) { bdb.addPropertyValue(SELECTABLE, element.getAttribute(SELECTABLE)); } else { // set selectable by default bdb.addPropertyValue(SELECTABLE, true); } // parse columns NodeList nl = element.getElementsByTagNameNS(element.getNamespaceURI(), COLUMNS); if (nl.getLength() > 0) { List columns = parserContext.getDelegate().parseListElement((Element) nl.item(0), bdb.getRawBeanDefinition()); bdb.addPropertyValue(COLUMNS, columns); } registerBeanDefinition(element, parserContext, tableBeanName, bdb); parserContext.popAndRegisterContainingComponent(); return null; }
From source file:com.mtgi.analytics.aop.config.v11.BtManagerBeanDefinitionParser.java
@Override protected void transform(ConfigurableListableBeanFactory factory, BeanDefinition template, Element element, ParserContext parserContext) { ManagerComponentDefinition def = (ManagerComponentDefinition) parserContext.getContainingComponent(); String managerId = overrideAttribute(ATT_ID, template, element); if (managerId == null) template.setAttribute(ATT_ID, managerId = "defaultTrackingManager"); if ("false".equals(element.getAttribute(ATT_ENABLED))) { //manager is disabled. replace definition with dummy instance. template.setBeanClassName(DisabledBehaviorTrackingManager.class.getName()); //clear properties and attributes. for (String att : template.attributeNames()) if (!ATT_ID.equals(att)) template.removeAttribute(att); template.getPropertyValues().clear(); //terminate immediately, do not parse any nested definitions (persisters, AOP config, context beans, etc) return;/*from ww w.j a va2 s .c o m*/ } overrideProperty(ATT_APPLICATION, template, element, false); overrideProperty(ATT_FLUSH_THRESHOLD, template, element, false); //wake up MBeanExporter if we're going to be doing MBean registration. if ("true".equalsIgnoreCase(element.getAttribute(ATT_REGISTER_MBEANS))) { AbstractBeanDefinition exporter = (AbstractBeanDefinition) factory .getBeanDefinition(CONFIG_MBEAN_EXPORTER); exporter.setLazyInit(false); //append manager ID to mbean name, in case of multiple managers in a single application. BeanDefinition naming = factory.getBeanDefinition(CONFIG_NAMING_STRATEGY); naming.getPropertyValues().addPropertyValue("value", managerId); } //prefer references to beans in the parent factory if they've been specified if (element.hasAttribute(ATT_MBEAN_SERVER)) factory.registerAlias(element.getAttribute(ATT_MBEAN_SERVER), CONFIG_MBEAN_SERVER); if (element.hasAttribute(ATT_SCHEDULER)) factory.registerAlias(element.getAttribute(ATT_SCHEDULER), CONFIG_SCHEDULER); if (element.hasAttribute(ATT_TASK_EXECUTOR)) factory.registerAlias(element.getAttribute(ATT_TASK_EXECUTOR), CONFIG_EXECUTOR); //make note of external persister element so that we don't activate log rotation. if (element.hasAttribute(ATT_PERSISTER)) { def.addNestedProperty(ATT_PERSISTER); MutablePropertyValues props = template.getPropertyValues(); props.removePropertyValue(ATT_PERSISTER); props.addPropertyValue(ATT_PERSISTER, new RuntimeBeanReference(element.getAttribute(ATT_PERSISTER))); } if (element.hasAttribute(ATT_SESSION_CONTEXT)) { //override default session context with reference def.addNestedProperty("sessionContext"); factory.registerAlias(element.getAttribute(ATT_SESSION_CONTEXT), CONFIG_SESSION_CONTEXT); } //handle AOP configuration if needed if (element.hasAttribute(ATT_METHOD_EXPRESSION)) { //activate global AOP proxying if it hasn't already been done (borrowed logic from AopNamespaceHandler / config element parser) activateAopProxies(parserContext, element); //register pointcut definition for the provided expression. RootBeanDefinition pointcut = new RootBeanDefinition(AspectJExpressionPointcut.class); //rely on deprecated method to maintain spring 2.0 support pointcut.setSingleton(false); pointcut.setSynthetic(true); pointcut.getPropertyValues().addPropertyValue("expression", element.getAttribute(ATT_METHOD_EXPRESSION)); //create implicit pointcut advice bean. RootBeanDefinition advice = new RootBeanDefinition(BehaviorTrackingAdvice.class); advice.getPropertyValues().addPropertyValue("trackingManager", new RuntimeBeanReference(managerId)); //register advice, pointcut, and advisor entry to bind the two together. XmlReaderContext ctx = parserContext.getReaderContext(); String pointcutId = ctx.registerWithGeneratedName(pointcut); String adviceId = ctx.registerWithGeneratedName(advice); RootBeanDefinition advisorDefinition = new RootBeanDefinition(DefaultBeanFactoryPointcutAdvisor.class); advisorDefinition.getPropertyValues().addPropertyValue("adviceBeanName", new RuntimeBeanNameReference(adviceId)); advisorDefinition.getPropertyValues().addPropertyValue("pointcut", new RuntimeBeanReference(pointcutId)); ctx.registerWithGeneratedName(advisorDefinition); } //configure flush trigger and job to be globally unique based on manager name. BeanDefinition flushTrigger = factory.getBeanDefinition("com.mtgi.analytics.btFlushTrigger"); SchedulerActivationPostProcessor.configureTriggerDefinition(flushTrigger, element.getAttribute(ATT_FLUSH_SCHEDULE), managerId + "_flush"); //set up a post-processor to register the flush job with the selected scheduler instance. the job and scheduler //come from the template factory, but the post-processor runs when the currently-parsing factory is finished. SchedulerActivationPostProcessor.registerPostProcessor(parserContext, factory, CONFIG_SCHEDULER, CONFIG_NAMESPACE + ".btFlushTrigger"); //ManagerComponentDefinition is a flag to nested parsers that they should push their parsed bean definitions into //the manager bean definition. for example, see BtPersisterBeanDefinitionParser. //descend on nested child nodes to pick up persister and session context configuration NodeList children = element.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { Node node = children.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { String namespaceUri = node.getNamespaceURI(); NamespaceHandler handler = parserContext.getReaderContext().getNamespaceHandlerResolver() .resolve(namespaceUri); ParserContext nestedCtx = new ParserContext(parserContext.getReaderContext(), parserContext.getDelegate(), template); nestedCtx.pushContainingComponent(def); handler.parse((Element) node, nestedCtx); } } if (!def.nestedProperties.contains(ATT_PERSISTER)) { //no persister registered. schedule default log rotation trigger. BtXmlPersisterBeanDefinitionParser.configureLogRotation(parserContext, factory, null); } if (!def.nestedProperties.contains("sessionContext")) { //custom session context not registered. select appropriate default class //depending on whether we are in a web context or not. if (parserContext.getReaderContext().getReader().getResourceLoader() instanceof WebApplicationContext) { BeanDefinition scDef = factory.getBeanDefinition(CONFIG_SESSION_CONTEXT); scDef.setBeanClassName(SpringSessionContext.class.getName()); } } }
From source file:org.apache.smscserver.config.spring.ServerBeanDefinitionParser.java
/** * {@inheritDoc}//w ww . ja v a 2 s. c om */ @Override protected void doParse(final Element element, final ParserContext parserContext, final BeanDefinitionBuilder builder) { BeanDefinitionBuilder factoryBuilder = BeanDefinitionBuilder.genericBeanDefinition(SmscServerFactory.class); List<Element> childs = SpringUtil.getChildElements(element); for (Element childElm : childs) { String childName = childElm.getLocalName(); if ("listeners".equals(childName)) { Map<?, ?> listeners = this.parseListeners(childElm, parserContext, builder); if (listeners.size() > 0) { factoryBuilder.addPropertyValue("listeners", listeners); } } else if ("smsclets".equals(childName)) { Map<?, ?> smsclets = this.parseSmsclets(childElm, parserContext, builder); factoryBuilder.addPropertyValue("smsclets", smsclets); } else if ("message-manager".equals(childName)) { Object userManager = parserContext.getDelegate().parseCustomElement(childElm, builder.getBeanDefinition()); factoryBuilder.addPropertyValue("messageManager", userManager); } else if ("file-user-manager".equals(childName) || "db-user-manager".equals(childName)) { Object userManager = parserContext.getDelegate().parseCustomElement(childElm, builder.getBeanDefinition()); factoryBuilder.addPropertyValue("userManager", userManager); } else if ("user-manager".equals(childName)) { factoryBuilder.addPropertyValue("userManager", SpringUtil.parseSpringChildElement(childElm, parserContext, builder)); } else if ("commands".equals(childName)) { Object commandFactory = parserContext.getDelegate().parseCustomElement(childElm, builder.getBeanDefinition()); factoryBuilder.addPropertyValue("commandFactory", commandFactory); } else { throw new SmscServerConfigurationException("Unknown configuration name: " + childName); } } // Configure the connection config ConnectionConfigFactory connectionConfig = new ConnectionConfigFactory(); if (StringUtils.hasText(element.getAttribute("max-binds"))) { connectionConfig.setMaxBinds(SpringUtil.parseInt(element, "max-binds")); } if (StringUtils.hasText(element.getAttribute("min-threads"))) { connectionConfig.setMinThreads(SpringUtil.parseInt(element, "min-threads")); } if (StringUtils.hasText(element.getAttribute("max-threads"))) { connectionConfig.setMaxThreads(SpringUtil.parseInt(element, "max-threads")); } if (StringUtils.hasText(element.getAttribute("max-bind-failures"))) { connectionConfig.setMaxBindFailures(SpringUtil.parseInt(element, "max-bind-failures")); } if (StringUtils.hasText(element.getAttribute("bind-failure-delay"))) { connectionConfig.setBindFailureDelay(SpringUtil.parseInt(element, "bind-failure-delay")); } factoryBuilder.addPropertyValue("connectionConfig", connectionConfig.createConnectionConfig()); // Configure the delivery manager DeliveryManagerConfigFactory deliveryManagerConfig = new DeliveryManagerConfigFactory(); if (StringUtils.hasText(element.getAttribute("delivery-threads"))) { deliveryManagerConfig.setManagerThreads(SpringUtil.parseInt(element, "delivery-threads")); } if (StringUtils.hasText(element.getAttribute("min-delivery-threads"))) { deliveryManagerConfig.setMinThreads(SpringUtil.parseInt(element, "min-delivery-threads")); } if (StringUtils.hasText(element.getAttribute("max-delivery-threads"))) { deliveryManagerConfig.setMaxThreads(SpringUtil.parseInt(element, "max-delivery-threads")); } if (StringUtils.hasText(element.getAttribute("delivery-retry-periods"))) { deliveryManagerConfig.setDeliveryRetryPeriods(element.getAttribute("delivery-retry-periods")); } if (StringUtils.hasText(element.getAttribute("delivery-poll-time"))) { deliveryManagerConfig.setDeliveryPollTime(SpringUtil.parseInt(element, "delivery-poll-time")); } factoryBuilder.addPropertyValue("deliveryManagerConfig", deliveryManagerConfig.createDeliveryManagerConfig()); if (StringUtils.hasText(element.getAttribute("sessionLockTimeout"))) { factoryBuilder.addPropertyValue("session-lock-timeout", SpringUtil.parseInt(element, "session-lock-timeout")); } BeanDefinition factoryDefinition = factoryBuilder.getBeanDefinition(); String factoryName = parserContext.getReaderContext().generateBeanName(factoryDefinition); BeanDefinitionHolder factoryHolder = new BeanDefinitionHolder(factoryDefinition, factoryName); this.registerBeanDefinition(factoryHolder, parserContext.getRegistry()); // set the factory on the listener bean builder.getRawBeanDefinition().setFactoryBeanName(factoryName); builder.getRawBeanDefinition().setFactoryMethodName("createServer"); }
From source file:nl.surfnet.spring.security.opensaml.config.ServiceProviderBeanDefinitionParser.java
@Override protected AbstractBeanDefinition parseInternal(final Element element, final ParserContext parserContext) { final String preAuthFilterRef = element.getAttribute("preauth-filter-ref"); if (StringUtils.isBlank(preAuthFilterRef)) { parserContext.getReaderContext().error("The preauth-filter-ref is mandatory", element); }// w w w . j ava 2s . c o m final String messageHandlerRef = element.getAttribute("message-handler-ref"); if (StringUtils.isBlank(messageHandlerRef)) { parserContext.getReaderContext().error("The message-handler-ref is mandatory", element); } final String certificatestoreRef = element.getAttribute("certificatestore-ref"); if (StringUtils.isBlank(certificatestoreRef)) { parserContext.getReaderContext().error("The certificatestore-ref is mandatory", element); } final String provisionerRef = element.getAttribute("provisioner-ref"); if (StringUtils.isBlank(provisionerRef)) { parserContext.getReaderContext().error("The provisioner-ref is mandatory", element); } final String authenticationManangerRef = element.getAttribute("authentication-manager-ref"); if (StringUtils.isBlank(authenticationManangerRef)) { parserContext.getReaderContext().error("The authentication-manager-ref is mandatory", element); } final String entityID = element.getAttribute("entity-id"); if (StringUtils.isBlank(entityID)) { parserContext.getReaderContext().error("The entity-id is mandatory", element); } final String assertionConsumerURI = element.getAttribute("assertion-consumer-uri"); if (StringUtils.isBlank(assertionConsumerURI)) { parserContext.getReaderContext().error("Missing or empty assertion-consumer-uri.", element); } final String poolSize = element.getAttribute("max-parser-pool-size"); try { poolSizeInt = Integer.parseInt(poolSize); } catch (NumberFormatException nfe) { parserContext.getReaderContext().error("An invalid value for max-parser-pool-size was supplied", element); } final String replayCacheLife = element.getAttribute("replay-cache-life-in-millis"); try { replayCacheDuration = Integer.parseInt(replayCacheLife); } catch (NumberFormatException nfe) { parserContext.getReaderContext().error("An invalid value for replay-cache-life-in-millis was supplied", element); } final String clockSkew = element.getAttribute("issue-instant-check-clock-skew-in-secs"); try { newClockSkew = Integer.parseInt(clockSkew); } catch (NumberFormatException nfe) { parserContext.getReaderContext() .error("An invalid value for issue-instant-check-clock-skew-in-secs was supplied", element); } final String validTime = element.getAttribute("issue-instant-check-valid-time-in-secs"); try { newExpires = Integer.parseInt(validTime); } catch (NumberFormatException nfe) { parserContext.getReaderContext() .error("An invalid value for issue-instant-check-valid-time-in-secs was supplied", element); } BeanDefinitionBuilder bootstrapBean = BeanDefinitionBuilder.genericBeanDefinition(DefaultBootstrap.class); bootstrapBean.setInitMethodName("bootstrap"); parserContext.getRegistry().registerBeanDefinition(BEAN_SAMLINITIALIZER, bootstrapBean.getBeanDefinition()); final BasicParserPool basicParserPool = new BasicParserPool(); basicParserPool.setMaxPoolSize(poolSizeInt); final HTTPPostSimpleSignDecoder httpPostSimpleSignDecoder = new HTTPPostSimpleSignDecoder(basicParserPool); final VelocityEngineFactoryBean velocityEngineFactoryBean = new VelocityEngineFactoryBean(); velocityEngineFactoryBean.setPreferFileSystemAccess(false); Properties velocityEngineProperties = new Properties(); velocityEngineProperties.setProperty("resource.loader", "classpath"); velocityEngineProperties.setProperty("classpath.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); velocityEngineFactoryBean.setVelocityProperties(velocityEngineProperties); VelocityEngine velocityEngine = null; try { velocityEngine = velocityEngineFactoryBean.createVelocityEngine(); } catch (IOException e) { throw new RuntimeException("Unable to create velocity engine instance"); } // Replay cache BeanDefinitionBuilder replayCacheBuilder = BeanDefinitionBuilder.genericBeanDefinition(ReplayCache.class); replayCacheBuilder.addConstructorArgValue(new MapBasedStorageService()); replayCacheBuilder.addConstructorArgValue(replayCacheDuration); parserContext.getRegistry().registerBeanDefinition(BEAN_REPLAYCACHE, replayCacheBuilder.getBeanDefinition()); // Message replay rule BeanDefinitionBuilder messageReplayRuleBuilder = BeanDefinitionBuilder .genericBeanDefinition(MessageReplayRule.class); messageReplayRuleBuilder.addConstructorArgReference(BEAN_REPLAYCACHE); parserContext.getRegistry().registerBeanDefinition("messageReplayRule", messageReplayRuleBuilder.getBeanDefinition()); // Issue instant rule BeanDefinitionBuilder issueInstantBuilder = BeanDefinitionBuilder .genericBeanDefinition(IssueInstantRule.class); issueInstantBuilder.addConstructorArgValue(newClockSkew); issueInstantBuilder.addConstructorArgValue(newExpires); parserContext.getRegistry().registerBeanDefinition("issueInstantRule", issueInstantBuilder.getBeanDefinition()); // KeyStore Credential Resolver BeanDefinitionBuilder keyStoreBuilder = BeanDefinitionBuilder .genericBeanDefinition(KeyStoreCredentialResolverDelegate.class); keyStoreBuilder.addPropertyReference("keyStore", certificatestoreRef); parserContext.getRegistry().registerBeanDefinition(BEAN_KEYSTORECREDENTIALRESOLVER, keyStoreBuilder.getBeanDefinition()); // Signature Rule Builder BeanDefinitionBuilder signatureRuleBuilder = BeanDefinitionBuilder .genericBeanDefinition(SignatureSecurityPolicyRule.class); signatureRuleBuilder.addConstructorArgValue(new SAMLSignatureProfileValidator()); signatureRuleBuilder.addPropertyReference("credentialResolver", BEAN_KEYSTORECREDENTIALRESOLVER); // List of rule beans final ManagedList<BeanMetadataElement> beanMetadataElements = new ManagedList<BeanMetadataElement>(); beanMetadataElements.add(signatureRuleBuilder.getBeanDefinition()); beanMetadataElements.add(issueInstantBuilder.getBeanDefinition()); beanMetadataElements.add(messageReplayRuleBuilder.getBeanDefinition()); // Security Policy BeanDefinitionBuilder securityPolicyDelegateBuilder = BeanDefinitionBuilder .genericBeanDefinition(SecurityPolicyDelegate.class); securityPolicyDelegateBuilder.addConstructorArgValue(beanMetadataElements); parserContext.getRegistry().registerBeanDefinition(BEAN_SECURITYPOLICY, securityPolicyDelegateBuilder.getBeanDefinition()); // Security Policy Resolver BeanDefinitionBuilder securityPolicyResolverBuilder = BeanDefinitionBuilder .genericBeanDefinition(StaticSecurityPolicyResolver.class); securityPolicyResolverBuilder.addConstructorArgReference(BEAN_SECURITYPOLICY); parserContext.getRegistry().registerBeanDefinition(BEAN_SECURITYPOLICYRESOLVER, securityPolicyResolverBuilder.getBeanDefinition()); // Message Handler BeanDefinitionBuilder postBindingAdapter = BeanDefinitionBuilder .rootBeanDefinition(SAMLMessageHandlerImpl.class); postBindingAdapter.addConstructorArgValue(httpPostSimpleSignDecoder); postBindingAdapter.addConstructorArgReference(BEAN_SECURITYPOLICYRESOLVER); postBindingAdapter.addPropertyValue("velocityEngine", velocityEngine); postBindingAdapter.addPropertyValue("entityId", entityID); parserContext.getRegistry().registerBeanDefinition(messageHandlerRef, postBindingAdapter.getBeanDefinition()); // Assertion Consumer Bean BeanDefinitionBuilder assertionComsumerBean = BeanDefinitionBuilder .genericBeanDefinition(AssertionConsumerImpl.class); assertionComsumerBean.addPropertyReference("provisioner", provisionerRef); parserContext.getRegistry().registerBeanDefinition(BEAN_ASSERTIONCONSUMER, assertionComsumerBean.getBeanDefinition()); BeanDefinitionBuilder authenticationProvider = BeanDefinitionBuilder .rootBeanDefinition(SAMLResponseAuthenticationProvider.class); authenticationProvider.addConstructorArgReference(BEAN_ASSERTIONCONSUMER); parserContext.getRegistry().registerBeanDefinition(BEAN_AUTHENTICATIONPROVIDER, authenticationProvider.getBeanDefinition()); // Pre Auth Filter final HttpSessionRequestCache requestCache = new HttpSessionRequestCache(); final AuthenticationFailureHandlerImpl authenticationFailureHandler = new AuthenticationFailureHandlerImpl( requestCache); // Authentication Filter BeanDefinitionBuilder authenticationFilter = BeanDefinitionBuilder .rootBeanDefinition(SAMLResponseAuthenticationProcessingFilter.class); authenticationFilter.addConstructorArgValue(assertionConsumerURI); authenticationFilter.addPropertyReference("SAMLMessageHandler", messageHandlerRef); authenticationFilter.addPropertyReference("authenticationManager", authenticationManangerRef); authenticationFilter.addPropertyValue("authenticationFailureHandler", authenticationFailureHandler); parserContext.getRegistry().registerBeanDefinition(preAuthFilterRef, authenticationFilter.getBeanDefinition()); return authenticationProvider.getBeanDefinition(); }
From source file:org.blocks4j.feature.toggle.spring.scheme.FeatureToggleDefinitionParser.java
private void buildNewFactoryBean(String factoryBeanName, ParserContext context, String onRefName, String offRefName, Class<?> commonInterface, String feature) { BeanDefinitionRegistry factory = context.getReaderContext().getReader().getBeanFactory(); if (!factory.isBeanNameInUse(factoryBeanName)) { BeanDefinitionBuilder builder = BeanDefinitionBuilder .genericBeanDefinition(FeatureToggleBeanFactory.class); builder.addPropertyValue(TAG_ONREF_NAME, onRefName); builder.addPropertyValue(TAG_OFFREF_NAME, offRefName); builder.addPropertyValue(TAG_FEATURENAME, feature); builder.addPropertyValue(TAG_COMMONINTERFACE_NAME, commonInterface); factory.registerBeanDefinition(factoryBeanName, builder.getBeanDefinition()); } else {/*w w w . j av a 2 s . c om*/ throw new RuntimeException(String .format("A bean with name '%s' already exists in the application context.", factoryBeanName)); } }
From source file:org.broadleafcommerce.common.extensibility.context.EmbeddedBeanDefinitionParser.java
@Override protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) { try {/* w w w . j av a2s.c o m*/ String[] broadleafConfigLocations = StandardConfigLocations .retrieveAll(StandardConfigLocations.APPCONTEXTTYPE); ArrayList<ResourceInputStream> sources = new ArrayList<ResourceInputStream>(20); for (String location : broadleafConfigLocations) { InputStream source = getClass().getClassLoader().getResourceAsStream(location); if (source != null) { sources.add(new ResourceInputStream(source, location)); } } ResourceInputStream[] filteredSources = new ResourceInputStream[] {}; filteredSources = sources.toArray(filteredSources); List<Resource> locations = new ArrayList<Resource>(); List<Element> overrideItemElements = DomUtils.getChildElementsByTagName(element, "location"); for (Element overrideItem : overrideItemElements) { String location = overrideItem.getAttribute("value"); Resource[] resources = ((ResourcePatternResolver) parserContext.getReaderContext() .getResourceLoader()).getResources(location); if (ArrayUtils.isEmpty(resources)) { LOG.warn("Unable to find the resource: " + location); } else { locations.add(resources[0]); } } ResourceInputStream[] patches = new ResourceInputStream[locations.size()]; for (int i = 0; i < locations.size(); i++) { patches[i] = new ResourceInputStream(locations.get(i).getInputStream(), locations.get(i).getDescription()); if (patches[i] == null || patches[i].available() <= 0) { throw new IOException( "Unable to open an input stream on specified application context resource: " + locations.get(i).getDescription()); } } ImportProcessor importProcessor = new ImportProcessor( parserContext.getReaderContext().getResourceLoader()); try { filteredSources = importProcessor.extract(filteredSources); patches = importProcessor.extract(patches); } catch (MergeException e) { throw new FatalBeanException("Unable to merge source and patch locations", e); } Resource[] resources = new MergeApplicationContextXmlConfigResource() .getConfigResources(filteredSources, patches); parserContext.getReaderContext().getReader().loadBeanDefinitions(resources[0]); return null; } catch (IOException e) { throw ExceptionHelper.refineException(e); } }
From source file:org.codehaus.groovy.grails.context.annotation.ClosureClassIgnoringComponentScanBeanDefinitionParser.java
@Override protected ClassPathBeanDefinitionScanner configureScanner(ParserContext parserContext, Element element) { final ClassPathBeanDefinitionScanner scanner = super.configureScanner(parserContext, element); final ResourceLoader originalResourceLoader = parserContext.getReaderContext().getResourceLoader(); if (LOG.isDebugEnabled()) { LOG.debug("Scanning only this classloader:" + originalResourceLoader.getClassLoader()); }// ww w.ja v a 2s . c om ResourceLoader parentOnlyResourceLoader; try { parentOnlyResourceLoader = new ResourceLoader() { ClassLoader parentOnlyGetResourcesClassLoader = new ParentOnlyGetResourcesClassLoader( originalResourceLoader.getClassLoader()); public Resource getResource(String location) { return originalResourceLoader.getResource(location); } public ClassLoader getClassLoader() { return parentOnlyGetResourcesClassLoader; } }; } catch (Throwable t) { // restrictive classloading environment, use the original parentOnlyResourceLoader = originalResourceLoader; } final PathMatchingResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver( parentOnlyResourceLoader) { @Override protected Resource[] findAllClassPathResources(String location) throws IOException { Set<Resource> result = new LinkedHashSet<Resource>(16); @SuppressWarnings("unused") URL classesDir = null; final boolean warDeployed = Metadata.getCurrent().isWarDeployed(); if (!warDeployed) { BuildSettings buildSettings = BuildSettingsHolder.getSettings(); if (buildSettings != null && buildSettings.getClassesDir() != null) { classesDir = buildSettings.getClassesDir().toURI().toURL(); } } // only scan classes from project classes directory String path = location; if (path.startsWith("/")) { path = path.substring(1); } Enumeration<URL> resourceUrls = getClassLoader().getResources(path); while (resourceUrls.hasMoreElements()) { URL url = resourceUrls.nextElement(); if (LOG.isDebugEnabled()) { LOG.debug( "Scanning URL " + url.toExternalForm() + " while searching for '" + location + "'"); } /* if (!warDeployed && classesDir!= null && url.equals(classesDir)) { result.add(convertClassLoaderURL(url)); } else if (warDeployed) { result.add(convertClassLoaderURL(url)); } */ result.add(convertClassLoaderURL(url)); } return result.toArray(new Resource[result.size()]); } }; resourceResolver.setPathMatcher(new AntPathMatcher() { @Override public boolean match(String pattern, String path) { if (path.endsWith(".class")) { String filename = FilenameUtils.getBaseName(path); if (filename.indexOf("$") > -1) return false; } return super.match(pattern, path); } }); scanner.setResourceLoader(resourceResolver); return scanner; }
From source file:org.grails.spring.context.annotation.ClosureClassIgnoringComponentScanBeanDefinitionParser.java
@Override protected ClassPathBeanDefinitionScanner configureScanner(ParserContext parserContext, Element element) { final ClassPathBeanDefinitionScanner scanner = super.configureScanner(parserContext, element); final ResourceLoader originalResourceLoader = parserContext.getReaderContext().getResourceLoader(); if (LOG.isDebugEnabled()) { LOG.debug("Scanning only this classloader:" + originalResourceLoader.getClassLoader()); }// w ww . ja v a2s . c om ResourceLoader parentOnlyResourceLoader; try { parentOnlyResourceLoader = new ResourceLoader() { ClassLoader parentOnlyGetResourcesClassLoader = new ParentOnlyGetResourcesClassLoader( originalResourceLoader.getClassLoader()); public Resource getResource(String location) { return originalResourceLoader.getResource(location); } public ClassLoader getClassLoader() { return parentOnlyGetResourcesClassLoader; } }; } catch (Throwable t) { // restrictive classloading environment, use the original parentOnlyResourceLoader = originalResourceLoader; } final PathMatchingResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver( parentOnlyResourceLoader) { @Override protected Resource[] findAllClassPathResources(String location) throws IOException { Set<Resource> result = new LinkedHashSet<Resource>(16); if (BuildSettings.CLASSES_DIR != null) { @SuppressWarnings("unused") URL classesDir = BuildSettings.CLASSES_DIR.toURI().toURL(); // only scan classes from project classes directory String path = location; if (path.startsWith("/")) { path = path.substring(1); } Enumeration<URL> resourceUrls = getClassLoader().getResources(path); while (resourceUrls.hasMoreElements()) { URL url = resourceUrls.nextElement(); if (LOG.isDebugEnabled()) { LOG.debug("Scanning URL " + url.toExternalForm() + " while searching for '" + location + "'"); } /* if (!warDeployed && classesDir!= null && url.equals(classesDir)) { result.add(convertClassLoaderURL(url)); } else if (warDeployed) { result.add(convertClassLoaderURL(url)); } */ result.add(convertClassLoaderURL(url)); } } return result.toArray(new Resource[result.size()]); } }; resourceResolver.setPathMatcher(new AntPathMatcher() { @Override public boolean match(String pattern, String path) { if (path.endsWith(".class")) { String filename = GrailsStringUtils.getFileBasename(path); if (filename.contains("$")) return false; } return super.match(pattern, path); } }); scanner.setResourceLoader(resourceResolver); return scanner; }