@SuppressWarnings("unchecked") private static ManagedMap parseParameters(NodeList nodeList, RootBeanDefinition beanDefinition) { if (nodeList != null && nodeList.getLength() > 0) { ManagedMap parameters = null; for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); if (node instanceof Element) { if ("parameter".equals(node.getNodeName()) || "parameter".equals(node.getLocalName())) { if (parameters == null) { parameters = new ManagedMap(); } String key = ((Element) node).getAttribute("key"); String value = ((Element) node).getAttribute("value"); boolean hide = "true".equals(((Element) node).getAttribute("hide")); if (hide) { key = Constants.HIDE_KEY_PREFIX + key; } parameters.put(key, new TypedStringValue(value, String.class)); } } } return parameters; } return null; }
@SuppressWarnings("unchecked") private static ManagedMap parseParameters(NodeList nodeList, RootBeanDefinition beanDefinition) { if (nodeList != null && nodeList.getLength() > 0) { ManagedMap parameters = null; for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); if (node instanceof Element) { if ("parameter".equals(node.getNodeName()) || "parameter".equals(node.getLocalName())) { if (parameters == null) { parameters = new ManagedMap(); } String key = ((Element) node).getAttribute("key"); String value = ((Element) node).getAttribute("value"); boolean hide = "true".equals(((Element) node).getAttribute("hide")); if (hide) { key = Constants.HIDE_KEY_PREFIX + key; } parameters.put(key, new TypedStringValue(value, String.class)); } } } return parameters; } return null; }
@Override public void addMapping(Element element, ManagedMap<String, Object> urlMap, ParserContext context) { String pathAttribute = element.getAttribute("path"); String[] mappings = StringUtils.tokenizeToStringArray(pathAttribute, ","); RuntimeBeanReference handlerReference = new RuntimeBeanReference(element.getAttribute("handler")); ConstructorArgumentValues cargs = new ConstructorArgumentValues(); cargs.addIndexedArgumentValue(0, this.sockJsService, "SockJsService"); cargs.addIndexedArgumentValue(1, handlerReference, "WebSocketHandler"); RootBeanDefinition requestHandlerDef = new RootBeanDefinition(SockJsHttpRequestHandler.class, cargs, null); requestHandlerDef.setSource(context.extractSource(element)); requestHandlerDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); String requestHandlerName = context.getReaderContext().registerWithGeneratedName(requestHandlerDef); RuntimeBeanReference requestHandlerRef = new RuntimeBeanReference(requestHandlerName); for (String mapping : mappings) { String pathPattern = (mapping.endsWith("/") ? mapping + "**" : mapping + "/**"); urlMap.put(pathPattern, requestHandlerRef); } } }
@Override public void addMapping(Element element, ManagedMap<String, Object> urlMap, ParserContext context) { String pathAttribute = element.getAttribute("path"); String[] mappings = StringUtils.tokenizeToStringArray(pathAttribute, ","); RuntimeBeanReference handlerReference = new RuntimeBeanReference(element.getAttribute("handler")); ConstructorArgumentValues cargs = new ConstructorArgumentValues(); cargs.addIndexedArgumentValue(0, handlerReference); cargs.addIndexedArgumentValue(1, this.handshakeHandlerReference); RootBeanDefinition requestHandlerDef = new RootBeanDefinition(WebSocketHttpRequestHandler.class, cargs, null); requestHandlerDef.setSource(context.extractSource(element)); requestHandlerDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); requestHandlerDef.getPropertyValues().add("handshakeInterceptors", this.interceptorsList); String requestHandlerName = context.getReaderContext().registerWithGeneratedName(requestHandlerDef); RuntimeBeanReference requestHandlerRef = new RuntimeBeanReference(requestHandlerName); for (String mapping : mappings) { urlMap.put(mapping, requestHandlerRef); } } }
private void addExceptionClasses(String elementName, boolean include, Element exceptionClassesElement, ManagedMap<TypedStringValue, Boolean> map, ParserContext parserContext) { for (Element child : DomUtils.getChildElementsByTagName(exceptionClassesElement, elementName)) { String className = child.getAttribute("class"); map.put(new TypedStringValue(className, Class.class), include); } } }
@SuppressWarnings("unchecked") private Map<String, Map<String, Properties>> getStepArtifactProperties(BeanDefinition beanDefinition, Properties properties) { ManagedMap<String, Map<String, Properties>> stepArtifacts = new ManagedMap<>(); stepArtifacts.setMergeEnabled(true); Map<String, Map<String, Properties>> existingArtifacts = (Map<String, Map<String, Properties>>) beanDefinition.getPropertyValues().get(getPropertyName(batchArtifactType)); ManagedMap<String, Properties> artifactProperties = new ManagedMap<>(); artifactProperties.setMergeEnabled(true); if(existingArtifacts != null && existingArtifacts.containsKey(stepName)) { Map<String, Properties> existingArtifactsMap = existingArtifacts.get(stepName); for(Map.Entry<String, Properties> existingArtifactEntry : existingArtifactsMap.entrySet()) { artifactProperties.put(existingArtifactEntry.getKey(), existingArtifactEntry.getValue()); } } artifactProperties.put(beanName, properties); stepArtifacts.put(stepName, artifactProperties); return stepArtifacts; }
private Map<String, Properties> getProperties(String keyName, Properties properties) { ManagedMap<String, Properties> stepProperties = new ManagedMap<>(); stepProperties.setMergeEnabled(true); stepProperties.put(keyName, properties); return stepProperties; }
public void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { builder.addPropertyValue("delegate", parseListenerElement(element, parserContext, builder.getRawBeanDefinition())); ManagedMap<String, String> metaDataMap = new ManagedMap<>(); for (String metaDataPropertyName : getMethodNameAttributes()) { String listenerMethod = element.getAttribute(metaDataPropertyName); if (StringUtils.hasText(listenerMethod)) { metaDataMap.put(metaDataPropertyName, listenerMethod); } } builder.addPropertyValue("metaDataMap", metaDataMap); }
strategyMap.put(pattern, strategy);
@Test public void mergeSunnyDay() { ManagedMap parent = new ManagedMap(); parent.put("one", "one"); parent.put("two", "two"); ManagedMap child = new ManagedMap(); child.put("three", "three"); child.setMergeEnabled(true); Map mergedMap = (Map) child.merge(parent); assertEquals("merge() obviously did not work.", 3, mergedMap.size()); }
/** * Register a RangePropertyEditor if one does not already exist. * * @param parserContext */ private static void addRangePropertyEditor(ParserContext parserContext) { BeanDefinitionRegistry registry = parserContext.getRegistry(); if (!rangeArrayEditorAlreadyDefined(registry)) { AbstractBeanDefinition customEditorConfigurer = BeanDefinitionBuilder.genericBeanDefinition( CUSTOM_EDITOR_CONFIGURER_CLASS_NAME).getBeanDefinition(); customEditorConfigurer.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); ManagedMap<String, String> editors = new ManagedMap<>(); editors.put(RANGE_ARRAY_CLASS_NAME, RANGE_ARRAY_EDITOR_CLASS_NAME); customEditorConfigurer.getPropertyValues().addPropertyValue("customEditors", editors); registry.registerBeanDefinition(CUSTOM_EDITOR_CONFIGURER_CLASS_NAME, customEditorConfigurer); } }
/** * Parses the intercept-url elements to obtain the map used by channel security. This * will be empty unless the <tt>requires-channel</tt> attribute has been used on a URL * path. */ private ManagedMap<BeanMetadataElement, BeanDefinition> parseInterceptUrlsForChannelSecurity() { ManagedMap<BeanMetadataElement, BeanDefinition> channelRequestMap = new ManagedMap<>(); for (Element urlElt : interceptUrls) { String path = urlElt.getAttribute(ATT_PATH_PATTERN); String method = urlElt.getAttribute(ATT_HTTP_METHOD); String matcherRef = urlElt.getAttribute(ATT_REQUEST_MATCHER_REF); boolean hasMatcherRef = StringUtils.hasText(matcherRef); if (!hasMatcherRef && !StringUtils.hasText(path)) { pc.getReaderContext().error("pattern attribute cannot be empty or null", urlElt); } String requiredChannel = urlElt.getAttribute(ATT_REQUIRES_CHANNEL); if (StringUtils.hasText(requiredChannel)) { BeanMetadataElement matcher = hasMatcherRef ? new RuntimeBeanReference(matcherRef) : matcherType.createMatcher(pc, path, method); RootBeanDefinition channelAttributes = new RootBeanDefinition( ChannelAttributeFactory.class); channelAttributes.getConstructorArgumentValues().addGenericArgumentValue( requiredChannel); channelAttributes.setFactoryMethodName("createChannelAttributes"); channelRequestMap.put(matcher, channelAttributes); } } return channelRequestMap; }
@Test public void mergeChildValuesOverrideTheParents() { ManagedMap parent = new ManagedMap(); parent.put("one", "one"); parent.put("two", "two"); ManagedMap child = new ManagedMap(); child.put("one", "fork"); child.setMergeEnabled(true); Map mergedMap = (Map) child.merge(parent); // child value for 'one' must override parent value... assertEquals("merge() obviously did not work.", 2, mergedMap.size()); assertEquals("Parent value not being overridden during merge().", "fork", mergedMap.get("one")); }
transactionAttributeMap.put(nameHolder, attribute);
if (brokerRelayElem.hasAttribute("user-destination-broadcast")) { String destination = brokerRelayElem.getAttribute("user-destination-broadcast"); map.put(destination, userDestHandler); map.put(destination, registerUserRegistryMessageHandler(userRegistry, brokerTemplate, destination, context, source));
public ManagedMap<TypedStringValue, Boolean> parse(Element element, ParserContext parserContext, String exceptionListName) { List<Element> children = DomUtils.getChildElementsByTagName(element, exceptionListName); if (children.size() == 1) { ManagedMap<TypedStringValue, Boolean> map = new ManagedMap<>(); Element exceptionClassesElement = children.get(0); addExceptionClasses("include", true, exceptionClassesElement, map, parserContext); addExceptionClasses("exclude", false, exceptionClassesElement, map, parserContext); map.put(new TypedStringValue(ForceRollbackForWriteSkipException.class.getName(), Class.class), true); return map; } else if (children.size() > 1) { parserContext.getReaderContext().error( "The <" + exceptionListName + "/> element may not appear more than once in a single <" + element.getNodeName() + "/>.", element); } return null; }
@Test public void mergeEmptyChild() { ManagedMap parent = new ManagedMap(); parent.put("one", "one"); parent.put("two", "two"); ManagedMap child = new ManagedMap(); child.setMergeEnabled(true); Map mergedMap = (Map) child.merge(parent); assertEquals("merge() obviously did not work.", 2, mergedMap.size()); }
map.put(key, value);
path = (path.endsWith("/") ? path + "**" : path + "/**"); urlMap.put(path, requestHandler);