List of usage examples for org.springframework.beans.factory.support RootBeanDefinition RootBeanDefinition
RootBeanDefinition(BeanDefinition original)
From source file:org.hdiv.config.xml.ConfigBeanDefinitionParser.java
private RootBeanDefinition createKeyFactory(Element element, Object source) { RootBeanDefinition bean = new RootBeanDefinition(KeyFactory.class); bean.setSource(source);//from w w w . j a v a 2 s .c o m bean.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); bean.getPropertyValues().addPropertyValue("algorithm", "AES"); bean.getPropertyValues().addPropertyValue("keySize", "128"); bean.getPropertyValues().addPropertyValue("prngAlgorithm", "SHA1PRNG"); bean.getPropertyValues().addPropertyValue("provider", "SUN"); return bean; }
From source file:com.mtgi.analytics.aop.config.v11.BtManagerBeanDefinitionParser.java
@Override protected void transform(ConfigurableListableBeanFactory factory, BeanDefinition template, Element element, ParserContext parserContext) {/* w ww .j ava2 s . c o m*/ 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; } 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.hdiv.config.xml.ConfigBeanDefinitionParser.java
private RootBeanDefinition createUserData(Element element, Object source) { RootBeanDefinition bean = new RootBeanDefinition(UserData.class); bean.setSource(source);/* w ww. j ava 2s . c om*/ bean.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); return bean; }
From source file:org.atomserver.utils.test.TestingAtomServer.java
private Server createServer(int port, String atomserverServletContext) { // set up the server and the atomserver web application context Server server = new Server(port); Context context = new Context(server, "/" + atomserverServletContext, true /*sessions*/, false /*no security*/); // we need to hard-code certain system properties to get the behavior we want here - we // will re-set them when we're done Properties properties = (Properties) System.getProperties().clone(); System.setProperty("atomserver.env", "asdev-hsql-mem"); System.setProperty("atomserver.servlet.context", atomserverServletContext); // TODO: this should be removed System.setProperty("atomserver.servlet.mapping", "v1"); // our Spring application context will start off by loading the basic built-in bean // definitions appContext = new GenericWebApplicationContext(); XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(appContext); xmlReader.loadBeanDefinitions(new ClassPathResource("org/atomserver/spring/propertyConfigurerBeans.xml")); xmlReader.loadBeanDefinitions(new ClassPathResource("org/atomserver/spring/databaseBeans.xml")); xmlReader.loadBeanDefinitions(new ClassPathResource("org/atomserver/spring/logBeans.xml")); xmlReader.loadBeanDefinitions(new ClassPathResource("org/atomserver/spring/storageBeans.xml")); xmlReader.loadBeanDefinitions(new ClassPathResource("org/atomserver/spring/abderaBeans.xml")); // if we were given a Spring config location, we use that -- otherwise we configure the // workspaces that were set up through the API if (springBeansLocation != null) { xmlReader.loadBeanDefinitions(new ClassPathResource(springBeansLocation)); } else {//from w w w.j a va 2 s .com RootBeanDefinition workspaces = new RootBeanDefinition(HashSet.class); ConstructorArgumentValues constructorArgumentValues = new ConstructorArgumentValues(); constructorArgumentValues.addGenericArgumentValue(workspaceSet); workspaces.setConstructorArgumentValues(constructorArgumentValues); appContext.registerBeanDefinition("org.atomserver-workspaces", workspaces); } // override the base content storage to use DB-based storage RootBeanDefinition storage = new RootBeanDefinition(DBBasedContentStorage.class); MutablePropertyValues propertyValues = new MutablePropertyValues(); propertyValues.addPropertyValue("contentDAO", new RuntimeBeanReference("org.atomserver-contentDAO")); propertyValues.addPropertyValue("entriesDAO", new RuntimeBeanReference("org.atomserver-entriesDAO")); storage.setPropertyValues(propertyValues); appContext.registerBeanDefinition("org.atomserver-contentStorage", storage); // clear the existing ENV ConfigurationAwareClassLoader.invalidateENV(); // refresh the context to actually instantiate everything. appContext.refresh(); // re-set the system properties System.setProperties(properties); // clear the update ENV ConfigurationAwareClassLoader.invalidateENV(); // put our app context into the servlet context context.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, appContext); // load and init the service context for v1 final ServiceContext serviceContext = (ServiceContext) appContext.getBean(ServiceContext.class.getName()); serviceContext.init(new Abdera(), Collections.EMPTY_MAP); // create a new AtomServerServlet - but override the createServiceContext method AtomServerServlet servlet = new AtomServerServlet() { protected ServiceContext createServiceContext() { return serviceContext; } }; // load and init the service context for v2 final ServiceContext serviceContextV2 = (ServiceContext) appContext .getBean("org.atomserver-serviceContext.v2"); serviceContextV2.init(new Abdera(), Collections.EMPTY_MAP); // create a new AtomServerServlet - but override the createServiceContext method AtomServerServlet servletV2 = new AtomServerServlet() { protected ServiceContext createServiceContext() { return serviceContextV2; } }; // register the servlets context.addServlet(new ServletHolder(servlet), "/v1/*"); context.addServlet(new ServletHolder(servletV2), "/v2/*"); EntriesDAOiBatisImpl entriesDAO = (EntriesDAOiBatisImpl) appContext.getBean("org.atomserver-entriesDAO"); entriesDAO.setUseWorkspaceCollectionCache(false); // ready to be started return server; }
From source file:org.hdiv.config.xml.ConfigBeanDefinitionParser.java
private RootBeanDefinition createLogger(Element element, Object source) { String userData = element.getAttribute("userData"); if (userData == null || userData.length() < 1) { userData = "userData";// default userData bean id }//from w w w . j av a 2 s .c o m RootBeanDefinition bean = new RootBeanDefinition(Logger.class); bean.setSource(source); bean.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); bean.getPropertyValues().addPropertyValue("userData", new RuntimeBeanReference(userData)); return bean; }
From source file:com.inspiresoftware.lib.dto.geda.config.AnnotationDrivenGeDABeanDefinitionParser.java
protected RuntimeBeanReference setupGeDAInterceptor(final ParserContext parserContext, final Object elementSource, final RuntimeBeanReference defaultSupport, final RuntimeBeanReference defaultResolver) { final RootBeanDefinition defaultInterceptor = new RootBeanDefinition(GeDAInterceptor.class); defaultInterceptor.setSource(elementSource); defaultInterceptor.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); final MutablePropertyValues propertyValues = defaultInterceptor.getPropertyValues(); propertyValues.addPropertyValue("support", defaultSupport); propertyValues.addPropertyValue("resolver", defaultResolver); final XmlReaderContext readerContext = parserContext.getReaderContext(); final String beanName = readerContext.registerWithGeneratedName(defaultInterceptor); return new RuntimeBeanReference(beanName); }
From source file:org.hdiv.config.xml.ConfigBeanDefinitionParser.java
private RootBeanDefinition createValidatorErrorHandler(Element element, Object source) { String userData = element.getAttribute("userData"); if (userData == null || userData.length() < 1) { userData = "userData";// default userData bean id }/* w ww. j ava 2s . c o m*/ RootBeanDefinition bean = new RootBeanDefinition(DefaultValidatorErrorHandler.class); bean.setSource(source); bean.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); bean.getPropertyValues().addPropertyValue("userData", new RuntimeBeanReference(userData)); bean.getPropertyValues().addPropertyValue("config", new RuntimeBeanReference("config")); return bean; }
From source file:com.googlecode.ehcache.annotations.config.AnnotationDrivenEhCacheBeanDefinitionParser.java
/** * Utility API used to setup each of the default {@link CacheKeyGenerator} implementations. Requires * that the class has a static String field named DEFAULT_BEAN_NAME declared that is used for the bean * name. /*from ww w .j a v a 2 s . c om*/ */ protected final void setupDefaultCacheKeyGenerator( Class<? extends CacheKeyGenerator<? extends Serializable>> generatorClass, ParserContext parserContext, Object elementSource) { final String generatorName; try { final Field field = generatorClass.getField("DEFAULT_BEAN_NAME"); generatorName = (String) field.get(null); } catch (Exception e) { throw new IllegalArgumentException("Could not access static field 'DEFAULT_BEAN_NAME' on " + generatorClass + ". This field is required to be setup as a default CacheKeyGenerator", e); } final RootBeanDefinition defaultKeyGenerator = new RootBeanDefinition(generatorClass); defaultKeyGenerator.setSource(elementSource); defaultKeyGenerator.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); if (ReflectionHelperAware.class.isAssignableFrom(generatorClass)) { final RuntimeBeanReference cacheManagerReference = new RuntimeBeanReference( CACHING_REFLECTION_HELPER_BEAN_NAME); final MutablePropertyValues propertyValues = defaultKeyGenerator.getPropertyValues(); propertyValues.addPropertyValue("reflectionHelper", cacheManagerReference); } final BeanDefinitionRegistry registry = parserContext.getRegistry(); registry.registerBeanDefinition(generatorName, defaultKeyGenerator); }
From source file:net.firejack.platform.model.config.hibernate.HibernateFactoryBean.java
private void buildHibernateTransactionManager() { for (Map.Entry<String, Database> entry : databases.entrySet()) { String name = entry.getKey(); Database database = entry.getValue(); BasicDataSource dataSource = null; try {/*w w w .ja v a 2s .c om*/ dataSource = context.getBean(name + HIBERNATE_DATA_SOURCE_SUFFIX, BasicDataSource.class); } catch (BeansException e) { logger.info("Manual Hibernate DataSource: " + name + HIBERNATE_DATA_SOURCE_SUFFIX + " not found use default"); } if (dataSource == null) { dataSource = defaultHibernate.getBean(HIBERNATE_DEFAULT_PREFIX + HIBERNATE_DATA_SOURCE_SUFFIX, BasicDataSource.class); dataSource.setDriverClassName(database.type.getDriver()); dataSource.setUrl(database.getUrl()); dataSource.setUsername(database.getUsername()); dataSource.setPassword(database.getPassword()); dataSource.setValidationQuery(database.getType().getValidate()); context.getBeanFactory().registerSingleton(name + HIBERNATE_DATA_SOURCE_SUFFIX, dataSource); } Properties properties = null; try { properties = context.getBean(name + HIBERNATE_PROPERTIES_SUFFIX, Properties.class); } catch (BeansException e) { logger.info("Manual Hibernate properties: " + name + HIBERNATE_PROPERTIES_SUFFIX + " not found use default"); } if (properties == null) { properties = defaultHibernate.getBean(HIBERNATE_DEFAULT_PREFIX + HIBERNATE_PROPERTIES_SUFFIX, Properties.class); properties.put(Environment.DIALECT, database.getType().getDialect()); context.getBeanFactory().registerSingleton(name + HIBERNATE_PROPERTIES_SUFFIX, properties); } SessionFactory sessionFactory = null; try { sessionFactory = context.getBean(name + HIBERNATE_SESSION_FACTORY_SUFFIX, SessionFactory.class); } catch (BeansException e) { logger.info("Manual Hibernate Session Factory: " + name + HIBERNATE_SESSION_FACTORY_SUFFIX + " not found use default"); } if (sessionFactory == null) { try { AnnotationSessionFactoryBean annotationSessionFactoryBean = new AnnotationSessionFactoryBean(); annotationSessionFactoryBean.setAnnotatedClasses(new Class[] { BaseEntityModel.class }); annotationSessionFactoryBean.setDataSource(dataSource); annotationSessionFactoryBean.setHibernateProperties(properties); annotationSessionFactoryBean.setPackagesToScan(database.getScanPackages()); annotationSessionFactoryBean.setNamingStrategy(new OpenFlameNamingStrategy(database.getType())); if (database.getType() == DatabaseName.MySQL || database.getType() == DatabaseName.MSSQL) { annotationSessionFactoryBean.setLobHandler(new DefaultLobHandler()); } else if (database.getType() == DatabaseName.Oracle) { annotationSessionFactoryBean.setLobHandler(new OracleLobHandler()); } disposableBeans.add(annotationSessionFactoryBean); annotationSessionFactoryBean.afterPropertiesSet(); sessionFactory = annotationSessionFactoryBean.getObject(); } catch (Exception e) { logger.error(e, e); } } HibernateTemplate template = new HibernateTemplate(); template.setSessionFactory(sessionFactory); context.getBeanFactory().registerSingleton(name + HIBERNATE_TEMPLATE_PREFIX, template); database.setHibernateSupport(template); logger.info("Initialize Hibernate support for stories: " + database); String beanName = name + HIBERNATE_TRANSACTION_MANAGER_SUFFIX; ConstructorArgumentValues values = new ConstructorArgumentValues(); values.addGenericArgumentValue(sessionFactory); RootBeanDefinition definition = new RootBeanDefinition(HibernateTransactionManager.class); definition.setConstructorArgumentValues(values); registers.put(beanName, definition); Collection<HibernateSupport> stores = database.getStores(); for (HibernateSupport store : stores) { targets.put(((Advised) store).getTargetClass(), beanName); } } }
From source file:org.hdiv.config.xml.ConfigBeanDefinitionParser.java
private RootBeanDefinition createStateCache(Element element, Object source) { RootBeanDefinition bean = new RootBeanDefinition(StateCache.class); bean.setSource(source);/*from ww w. j a v a 2 s . co m*/ bean.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); bean.setScope(BeanDefinition.SCOPE_PROTOTYPE); bean.setInitMethodName("init"); String maxSize = element.getAttribute("maxPagesPerSession"); if (StringUtils.hasText(maxSize)) { bean.getPropertyValues().addPropertyValue("maxSize", maxSize); } return bean; }