private void registerFlexRemotingAnnotationPostProcessorIfNecessary(Element source, ParserContext parserContext) { if (!parserContext.getRegistry().containsBeanDefinition(BeanIds.REMOTING_ANNOTATION_PROCESSOR)) { BeanDefinitionBuilder processorBuilder = BeanDefinitionBuilder.genericBeanDefinition(REMOTING_ANNOTATION_PROCESSOR_CLASS_NAME); ParsingUtils.registerInfrastructureComponent(source, parserContext, processorBuilder, BeanIds.REMOTING_ANNOTATION_PROCESSOR); } }
private void registerHandlerAdapterIfNecessary(Element element, ParserContext parserContext) { // Make sure we only ever register one MessageBrokerHandlerAdapter if (!parserContext.getRegistry().containsBeanDefinition(BeanIds.MESSAGE_BROKER_HANDLER_ADAPTER)) { BeanDefinitionBuilder handlerAdapterBuilder = BeanDefinitionBuilder.genericBeanDefinition(MESSAGE_BROKER_HANDLER_ADAPTER_CLASS_NAME); ParsingUtils.registerInfrastructureComponent(element, parserContext, handlerAdapterBuilder, BeanIds.MESSAGE_BROKER_HANDLER_ADAPTER); } }
private void registerMessageInterceptionAdvice(Element element, ParserContext parserContext, ManagedList<RuntimeBeanReference> advisors, ManagedSet<RuntimeBeanReference> interceptors) { BeanDefinitionBuilder advisorBuilder = BeanDefinitionBuilder.genericBeanDefinition(SERVICE_MESSAGE_ADVISOR_CLASS_NAME); BeanDefinitionBuilder messageInterceptionBuilder = BeanDefinitionBuilder.genericBeanDefinition(MESSAGE_INTERCEPTION_CLASS_NAME); messageInterceptionBuilder.addPropertyValue(MESSAGE_INTERCEPTORS_PROPERTY, interceptors); String messageInterceptionId = ParsingUtils.registerInfrastructureComponent(element, parserContext, messageInterceptionBuilder); advisorBuilder.addConstructorArgReference(messageInterceptionId); String advisorId = ParsingUtils.registerInfrastructureComponent(element, parserContext, advisorBuilder); advisors.add(new RuntimeBeanReference(advisorId)); }
private void registerEndpointProcessor(ParserContext parserContext, ManagedSet<RuntimeBeanReference> configProcessors, ManagedList<RuntimeBeanReference> advisors, Element securedElement, String brokerId) { BeanDefinitionBuilder endpointProcessorBuilder = BeanDefinitionBuilder.genericBeanDefinition(ENDPOINT_PROCESSOR_CLASS_NAME); endpointProcessorBuilder.addConstructorArgValue(advisors); ParsingUtils.registerInfrastructureComponent(securedElement, parserContext, endpointProcessorBuilder, brokerId + BeanIds.ENDPOINT_PROCESSOR_SUFFIX); configProcessors.add(new RuntimeBeanReference(brokerId + BeanIds.ENDPOINT_PROCESSOR_SUFFIX)); }
private void registerHandlerMappings(Element parent, ParserContext parserContext, List<Element> mappingPatternElements) { BeanDefinitionBuilder handlerMappingBuilder = BeanDefinitionBuilder.genericBeanDefinition(DEFAULT_HANDLER_MAPPING_CLASS_NAME); if (StringUtils.hasText(parent.getAttribute(MAPPING_ORDER_ATTR))) { handlerMappingBuilder.addPropertyValue(ORDER_PROPERTY, Integer.parseInt(parent.getAttribute(MAPPING_ORDER_ATTR))); } Map<String, String> mappings = new HashMap<String, String>(); if (CollectionUtils.isEmpty(mappingPatternElements)) { mappings.put(DEFAULT_MAPPING_PATH, parent.getAttribute(ID_ATTRIBUTE)); } else { Iterator<Element> i = mappingPatternElements.iterator(); while (i.hasNext()) { Element mappingElement = i.next(); mappings.put(mappingElement.getAttribute(PATTERN_ATTR), parent.getAttribute(ID_ATTRIBUTE)); } } handlerMappingBuilder.addPropertyValue(URL_MAP_PROPERTY, mappings); ParsingUtils.registerInfrastructureComponent(parent, parserContext, handlerMappingBuilder, parent.getAttribute(ID_ATTRIBUTE) + BeanIds.HANDLER_MAPPING_SUFFIX); }
private void registerConfigMapEditorIfNecessary(Element source, ParserContext parserContext) { if (!parserContext.getRegistry().containsBeanDefinition(BeanIds.JSON_CONFIG_MAP_EDITOR_CONFIGURER)) { BeanDefinitionBuilder configurerBuilder = BeanDefinitionBuilder.genericBeanDefinition(CUSTOM_EDITOR_CONFIGURER_CLASS_NAME); ManagedMap<String, String> editors = new ManagedMap<String, String>(); editors.put(CONFIG_MAP_CLASS_NAME, JSON_CONFIG_MAP_EDITOR_CLASS_NAME); configurerBuilder.addPropertyValue(CUSTOM_EDITORS_PROPERTY, editors); ParsingUtils.registerInfrastructureComponent(source, parserContext, configurerBuilder, BeanIds.JSON_CONFIG_MAP_EDITOR_CONFIGURER); } }
/** * * {@inheritDoc} */ @Override protected void parseAdapter(Element element, ParserContext parserContext, BeanDefinitionBuilder destinationBuilder) { BeanDefinitionBuilder adapterBuilder = BeanDefinitionBuilder.genericBeanDefinition(INTEGRATION_ADAPTER_CLASS_NAME); ParsingUtils.mapRequiredBeanRefAttributes(element, parserContext, adapterBuilder, MESSAGE_CHANNEL_ATTR); ParsingUtils.mapOptionalAttributes(element, parserContext, adapterBuilder, EXTRACT_PAYLOAD_ATTR); String serviceAdapterId = ParsingUtils.registerInfrastructureComponent(element, parserContext, adapterBuilder); destinationBuilder.addPropertyValue(SERVICE_ADAPTER_PROPERTY, serviceAdapterId); }
private void registerHibernate3SerializationConfigPostProcessorIfNecessary(Element source, ParserContext parserContext) { if (RuntimeEnvironment.isHibernate3SupportAvailable() && RuntimeEnvironment.isSpringFlexHibernate3SupportAvailable() && !parserContext.getRegistry().containsBeanDefinition(BeanIds.HIBERNATE_SERIALIZATION_PROCESSOR)) { BeanDefinitionBuilder processorBuilder = BeanDefinitionBuilder.genericBeanDefinition(HIBERNATE_3_CONFIG_PROCESSOR_CLASS_NAME); ParsingUtils.registerInfrastructureComponent(source, parserContext, processorBuilder, BeanIds.HIBERNATE_SERIALIZATION_PROCESSOR); } }
private void registerHibernate4SerializationConfigPostProcessorIfNecessary(Element source, ParserContext parserContext) { if (RuntimeEnvironment.isHibernate4SupportAvailable() && RuntimeEnvironment.isSpringFlexHibernate4SupportAvailable() && !parserContext.getRegistry().containsBeanDefinition(BeanIds.HIBERNATE_SERIALIZATION_PROCESSOR)) { BeanDefinitionBuilder processorBuilder = BeanDefinitionBuilder.genericBeanDefinition(HIBERNATE_4_CONFIG_PROCESSOR_CLASS_NAME); ParsingUtils.registerInfrastructureComponent(source, parserContext, processorBuilder, BeanIds.HIBERNATE_SERIALIZATION_PROCESSOR); } }
private void configureMessageService(Element parent, ParserContext parserContext, ManagedSet<RuntimeBeanReference> configProcessors, Element messageServiceElement) { Element source = messageServiceElement != null ? messageServiceElement : parent; BeanDefinitionBuilder messagingProcessorBuilder = BeanDefinitionBuilder.genericBeanDefinition(MESSAGING_PROCESSOR_CLASS_NAME); if (messageServiceElement != null) { ParsingUtils.mapAllAttributes(messageServiceElement, parserContext, messagingProcessorBuilder); } String brokerId = parent.getAttribute(ID_ATTRIBUTE); ParsingUtils.registerInfrastructureComponent(source, parserContext, messagingProcessorBuilder, brokerId + BeanIds.MESSAGING_PROCESSOR_SUFFIX); configProcessors.add(new RuntimeBeanReference(brokerId + BeanIds.MESSAGING_PROCESSOR_SUFFIX)); }
private void registerLoginCommand(String brokerId, ParserContext parserContext, ManagedSet<RuntimeBeanReference> configProcessors, Element securedElement, String authManager, boolean invalidateHttpSession, boolean perClientAuthentication) { String loginCommandId = securedElement.getAttribute(LOGIN_COMMAND_ATTR); if (!StringUtils.hasText(loginCommandId)) { loginCommandId = brokerId + BeanIds.LOGIN_COMMAND_SUFFIX; BeanDefinitionBuilder loginCommandBuilder = BeanDefinitionBuilder.genericBeanDefinition(securityHelper.getLoginCommandClassName()); loginCommandBuilder.addConstructorArgReference(authManager); loginCommandBuilder.addPropertyValue(PER_CLIENT_AUTHENTICATION_PROPERTY, perClientAuthentication); loginCommandBuilder.getRawBeanDefinition().setAttribute(INVALIDATE_HTTP_SESSION_PROPERTY, invalidateHttpSession); ParsingUtils.registerInfrastructureComponent(securedElement, parserContext, loginCommandBuilder, loginCommandId); } BeanDefinitionBuilder loginCommandProcessorBuilder = BeanDefinitionBuilder.genericBeanDefinition(LOGIN_COMMAND_PROCESSOR_CLASS_NAME); loginCommandProcessorBuilder.addConstructorArgReference(loginCommandId); loginCommandProcessorBuilder.addPropertyValue(PER_CLIENT_AUTHENTICATION_PROPERTY, perClientAuthentication); String loginCommandProcessorId = ParsingUtils.registerInfrastructureComponent(securedElement, parserContext, loginCommandProcessorBuilder); configProcessors.add(new RuntimeBeanReference(loginCommandProcessorId)); }
private void registerExceptionTranslation(Element element, ParserContext parserContext, ManagedList<RuntimeBeanReference> advisors, ManagedSet<RuntimeBeanReference> translators, List<Element> exceptionTranslatorElements) { if (!CollectionUtils.isEmpty(exceptionTranslatorElements)) { Iterator<Element> i = exceptionTranslatorElements.iterator(); while (i.hasNext()) { Element exceptionTranslatorElement = i.next(); translators.add(new RuntimeBeanReference(exceptionTranslatorElement.getAttribute(REF_ATTR))); } } BeanDefinitionBuilder advisorBuilder = BeanDefinitionBuilder.genericBeanDefinition(SERVICE_MESSAGE_ADVISOR_CLASS_NAME); BeanDefinitionBuilder exceptionTranslationBuilder = BeanDefinitionBuilder.genericBeanDefinition(EXCEPTION_TRANSLATION_CLASS_NAME); exceptionTranslationBuilder.addPropertyValue(EXCEPTION_TRANSLATORS_PROPERTY, translators); ParsingUtils.mapOptionalBeanRefAttributes(element, exceptionTranslationBuilder, parserContext, EXCEPTION_LOGGER_ATTR); String exceptionTranslationId = ParsingUtils.registerInfrastructureComponent(element, parserContext, exceptionTranslationBuilder); advisorBuilder.addConstructorArgReference(exceptionTranslationId); String advisorId = ParsingUtils.registerInfrastructureComponent(element, parserContext, advisorBuilder); advisors.add(new RuntimeBeanReference(advisorId)); }
static String registerInfrastructureComponent(Element element, ParserContext parserContext, BeanDefinitionBuilder componentBuilder) { String beanName = parserContext.getReaderContext().generateBeanName(componentBuilder.getRawBeanDefinition()); ParsingUtils.registerInfrastructureComponent(element, parserContext, componentBuilder, beanName); return beanName; }
private void registerSecurityConfigPostProcessorIfNecessary(ParserContext parserContext, Element securedElement) { if (!parserContext.getRegistry().containsBeanDefinition(BeanIds.SECURITY_CONFIG_POST_PROCESSOR)) { BeanDefinitionBuilder securityConfigPostProcessorBuilder = BeanDefinitionBuilder.genericBeanDefinition(securityHelper.getSecurityConfigPostProcessorClassName()); securityConfigPostProcessorBuilder.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_TYPE); securityConfigPostProcessorBuilder.setDependencyCheck(AbstractBeanDefinition.DEPENDENCY_CHECK_NONE); ParsingUtils.registerInfrastructureComponent(securedElement, parserContext, securityConfigPostProcessorBuilder, BeanIds.SECURITY_CONFIG_POST_PROCESSOR); } }
/** * * {@inheritDoc} */ @Override protected void parseAdapter(Element element, ParserContext parserContext, BeanDefinitionBuilder destinationBuilder) { BeanDefinitionBuilder adapterBuilder = BeanDefinitionBuilder.genericBeanDefinition(JMS_ADAPTER_CLASS_NAME); int count = ParsingUtils.countProvidedAttributeValues(element, JMS_DESTINATION_ATTR, QUEUE_NAME_ATTR, TOPIC_NAME_ATTR); if (count != 1) { parserContext.getReaderContext().error("exactly one of 'jms-destination', 'queue-name', or 'topic-name' is required", element); return; } String connectionFactoryId = element.getAttribute(CONNECTION_FACTORY_ATTR); connectionFactoryId = StringUtils.hasText(connectionFactoryId) ? connectionFactoryId : DEFAULT_CONNECTION_FACTORY_REF; adapterBuilder.addPropertyReference(CONNECTION_FACTORY_PROPERTY, connectionFactoryId); ParsingUtils.mapOptionalBeanRefAttributes(element, adapterBuilder, parserContext, JMS_DESTINATION_ATTR, DESTINATION_RESOLVER_ATTR, MESSAGE_CONVERTER_ATTR, TRANSACTION_MANAGER_ATTR); ParsingUtils.mapOptionalAttributes(element, parserContext, adapterBuilder, QUEUE_NAME_ATTR, TOPIC_NAME_ATTR); String serviceAdapterId = ParsingUtils.registerInfrastructureComponent(element, parserContext, adapterBuilder); destinationBuilder.addPropertyValue(SERVICE_ADAPTER_PROPERTY, serviceAdapterId); }
private void configureRemotingService(Element parent, ParserContext parserContext, ManagedSet<RuntimeBeanReference> configProcessors, Element remotingServiceElement) { Element source = remotingServiceElement != null ? remotingServiceElement : parent; BeanDefinitionBuilder remotingProcessorBuilder = BeanDefinitionBuilder.genericBeanDefinition(REMOTING_PROCESSOR_CLASS_NAME); if (remotingServiceElement != null) { ParsingUtils.mapAllAttributes(remotingServiceElement, parserContext, remotingProcessorBuilder); } String brokerId = parent.getAttribute(ID_ATTRIBUTE); ParsingUtils.registerInfrastructureComponent(source, parserContext, remotingProcessorBuilder, brokerId + BeanIds.REMOTING_PROCESSOR_SUFFIX); configProcessors.add(new RuntimeBeanReference(brokerId + BeanIds.REMOTING_PROCESSOR_SUFFIX)); registerFlexRemotingAnnotationPostProcessorIfNecessary(source, parserContext); registerHibernate3SerializationConfigPostProcessorIfNecessary(source, parserContext); registerHibernate4SerializationConfigPostProcessorIfNecessary(source, parserContext); }
endpointDefSourceBuilder.addConstructorArgValue(endpointMap); String endpointDefSourceId = ParsingUtils.registerInfrastructureComponent(securedElement, parserContext, endpointDefSourceBuilder); interceptorBuilder.addPropertyReference(OBJECT_DEF_SOURCE_PROPERTY, endpointDefSourceId); String interceptorId = ParsingUtils.registerInfrastructureComponent(securedElement, parserContext, interceptorBuilder); interceptors.put(MessageInterceptors.ENDPOINT_INTERCEPTOR.getOrder(), new RuntimeBeanReference(interceptorId));
/** * The main parsing algorithm for the <code>remoting-destination</code> tag. * * @param element the element being parsed * @param parserContext the current parser context * @param exportedBeanReference reference to the bean being exported as a remoting destination * @return a bean definition holder for the {@link RemotingDestinationExporter} bean */ protected BeanDefinitionHolder parseInternal(Element element, ParserContext parserContext, String exportedBeanReference) { BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(REMOTING_DESTINATION_EXPORTER_CLASS_NAME); builder.getRawBeanDefinition().setRole(BeanDefinition.ROLE_INFRASTRUCTURE); validateRemotingDestination(element, parserContext); String destinationId = element.getAttribute(DESTINATION_ID_ATTR); String brokerId = element.getAttribute(MESSAGE_BROKER_ATTR); builder.addPropertyValue(SERVICE_PROPERTY, exportedBeanReference); builder.addDependsOn(exportedBeanReference); destinationId = StringUtils.hasText(destinationId) ? destinationId : exportedBeanReference; builder.addPropertyValue(DESTINATION_ID_PROPERTY, destinationId); brokerId = StringUtils.hasText(brokerId) ? brokerId : BeanIds.MESSAGE_BROKER; builder.addPropertyReference(MESSAGE_BROKER_PROPERTY, brokerId); ParsingUtils.mapOptionalAttributes(element, parserContext, builder, CHANNELS_ATTR, INCLUDE_METHODS_ATTR, EXCLUDE_METHODS_ATTR, SERVICE_ADAPTER_ATTR); String beanName = ParsingUtils.registerInfrastructureComponent(element, parserContext, builder); return new BeanDefinitionHolder(builder.getBeanDefinition(), beanName); }
String exceptionTranslatorBeanId = ParsingUtils.registerInfrastructureComponent(securedElement, parserContext, exceptionTranslatorBuilder); translators.add(new RuntimeBeanReference(exceptionTranslatorBeanId)); String perClientInterceptorBeanId = ParsingUtils.registerInfrastructureComponent(securedElement, parserContext, perClientInterceptorBuilder); if (perClientAuthentication && !interceptors.containsKey(MessageInterceptors.PER_CLIENT_AUTH_INTERCEPTOR.getOrder())) { interceptors.put(MessageInterceptors.PER_CLIENT_AUTH_INTERCEPTOR.getOrder(), new RuntimeBeanReference(perClientInterceptorBeanId)); String loginInterceptorBeanId = ParsingUtils.registerInfrastructureComponent(securedElement, parserContext, loginInterceptorBuilder); interceptors.put(MessageInterceptors.LOGIN_MESSAGE_INTERCEPTOR.getOrder(), new RuntimeBeanReference(loginInterceptorBeanId));
private void registerDataServicesConfigProcessorIfRequired(ParserContext parserContext, ManagedSet<RuntimeBeanReference> configProcessors, ManagedSet<RuntimeBeanReference> translators, Map<Integer, RuntimeBeanReference> interceptors, Element securedElement, String brokerId) { if (RuntimeEnvironment.isLCDS() && (!interceptors.isEmpty() || !translators.isEmpty())) { BeanDefinitionBuilder lcdsConfigProcessorBuilder = BeanDefinitionBuilder.genericBeanDefinition(DATASERVICES_PROCESSOR_CLASS_NAME); lcdsConfigProcessorBuilder.addPropertyValue(EXCEPTION_TRANSLATORS_PROPERTY, translators); Map<Integer, RuntimeBeanReference> nioInterceptors; //NIO Endpoints require the PerClientAuthenticationInterceptor if (!interceptors.containsKey(MessageInterceptors.PER_CLIENT_AUTH_INTERCEPTOR.getOrder())) { BeanDefinitionBuilder perClientInterceptorBuilder = BeanDefinitionBuilder.genericBeanDefinition(securityHelper.getPerClientAuthenticationInterceptorClassName()); String perClientInterceptorBeanId = ParsingUtils.registerInfrastructureComponent(securedElement, parserContext, perClientInterceptorBuilder); // Initialize the NIO message interceptor map nioInterceptors = new TreeMap<Integer, RuntimeBeanReference>(interceptors); nioInterceptors.put(MessageInterceptors.PER_CLIENT_AUTH_INTERCEPTOR.getOrder(), new RuntimeBeanReference(perClientInterceptorBeanId)); } else { nioInterceptors = interceptors; } ManagedSet<RuntimeBeanReference> managedInterceptors = new ManagedSet<RuntimeBeanReference>(); managedInterceptors.addAll(nioInterceptors.values()); managedInterceptors.setSource(parserContext.extractSource(securedElement)); lcdsConfigProcessorBuilder.addPropertyValue(MESSAGE_INTERCEPTORS_PROPERTY, managedInterceptors); ParsingUtils.registerInfrastructureComponent(securedElement, parserContext, lcdsConfigProcessorBuilder, brokerId + BeanIds.DATASERVICES_CONFIG_PROCESSOR_SUFFIX); configProcessors.add(new RuntimeBeanReference(brokerId + BeanIds.DATASERVICES_CONFIG_PROCESSOR_SUFFIX)); } }