Author: veithen
Date: Mon Mar 29 11:44:48 2010
New Revision: 928727

URL: http://svn.apache.org/viewvc?rev=928727&view=rev
Log:
AXIS2-4662: Added some Spring related PoC code to my scratch area.

Added:
    axis/axis2/java/core/scratch/java/veithen/spring/
    axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/
    axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/pom.xml  
 (with props)
    axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/
    axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/AxisConfigurationBeanFactoryPostProcessor.java
   (with props)
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/AxisConfigurationFactory.java
   (with props)
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/AxisConfigurationParser.java
   (with props)
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/Constants.java
   (with props)
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/NamespaceHandler.java
   (with props)
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/TransportInDescriptionFactory.java
   (with props)
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/TransportReceiverParser.java
   (with props)
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/resources/
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/resources/META-INF/
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/resources/META-INF/spring.handlers
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/resources/META-INF/spring.schemas
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/resources/schemas/
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/resources/schemas/spring-axis2.xsd
    axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/java/
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/java/org/
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/java/org/apache/
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/java/org/apache/axis2/
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/java/org/apache/axis2/spring/
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/java/org/apache/axis2/spring/DummyTransportListener.java
   (with props)
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/java/org/apache/axis2/spring/MultiConfigurationTest.java
   (with props)
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/resources/
    
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/resources/multi_configuration.xml
   (with props)

Added: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/pom.xml
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/pom.xml?rev=928727&view=auto
==============================================================================
--- axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/pom.xml 
(added)
+++ axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/pom.xml 
Mon Mar 29 11:44:48 2010
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements. See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership. The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License. You may obtain a copy of the License at
+  ~
+  ~ http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied. See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.axis2</groupId>
+        <artifactId>axis2-parent</artifactId>
+        <version>SNAPSHOT</version>
+        <!-- relativePath>../parent/pom.xml</relativePath -->
+    </parent>
+    <artifactId>axis2-spring-core</artifactId>
+    <name>Apache Axis2 - Spring - Core</name>
+    <description>Spring support for Axis2</description>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-kernel</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-beans</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-aop</artifactId>
+            <version>2.5.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-transport-http</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-remote-resources-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>legal-files</id>
+                        <goals>
+                            <goal>process</goal>
+                        </goals>
+                        <configuration>
+                            <resourceBundles>
+                                
<resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
+                            </resourceBundles>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

Propchange: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/AxisConfigurationBeanFactoryPostProcessor.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/AxisConfigurationBeanFactoryPostProcessor.java?rev=928727&view=auto
==============================================================================
--- 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/AxisConfigurationBeanFactoryPostProcessor.java
 (added)
+++ 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/AxisConfigurationBeanFactoryPostProcessor.java
 Mon Mar 29 11:44:48 2010
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis2.spring;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.PropertyValue;
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
+import 
org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+import org.springframework.beans.factory.config.RuntimeBeanReference;
+import org.springframework.beans.factory.support.ManagedList;
+
+public class AxisConfigurationBeanFactoryPostProcessor implements 
BeanFactoryPostProcessor {
+    public void postProcessBeanFactory(ConfigurableListableBeanFactory 
beanFactory) throws BeansException {
+        Map<String,BeanDefinition> axisConfigurations = new 
HashMap<String,BeanDefinition>();
+        for (String name : 
beanFactory.getBeanNamesForType(AxisConfiguration.class)) {
+            axisConfigurations.put(name, beanFactory.getBeanDefinition(name));
+        }
+        processItems(beanFactory, axisConfigurations, 
TransportInDescription.class, "transportInDescriptions");
+    }
+
+    private void processItems(ConfigurableListableBeanFactory beanFactory,
+            Map<String,BeanDefinition> axisConfigurationMap,
+            Class<?> type,
+            String propertyName) {
+        for (String name : beanFactory.getBeanNamesForType(type)) {
+            BeanDefinition item = beanFactory.getBeanDefinition(name);
+            String axisConfigurationName = 
(String)item.getPropertyValues().getPropertyValue(Constants.AXIS_CONFIGURATION_PROPERTY_NAME).getValue();
+            Collection<BeanDefinition> axisConfigurations;
+            if (axisConfigurationName.length() == 0) {
+                axisConfigurations = axisConfigurationMap.values();
+            } else {
+                BeanDefinition axisConfiguration = 
axisConfigurationMap.get(axisConfigurationName);
+                if (axisConfiguration == null) {
+                    throw new RuntimeException(); // TODO
+                } else {
+                    axisConfigurations = 
Collections.singleton(axisConfiguration);
+                }
+            }
+            for (BeanDefinition axisConfiguration : axisConfigurations) {
+                PropertyValue propertyValue = 
axisConfiguration.getPropertyValues().getPropertyValue(propertyName);
+                ManagedList list;
+                if (propertyValue == null) {
+                    list = new ManagedList();
+                    
axisConfiguration.getPropertyValues().addPropertyValue(propertyName, list);
+                } else {
+                    list = (ManagedList)propertyValue.getValue();
+                }
+                list.add(new RuntimeBeanReference(name));
+            }
+            
item.getPropertyValues().removePropertyValue(Constants.AXIS_CONFIGURATION_PROPERTY_NAME);
+        }
+    }
+}

Propchange: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/AxisConfigurationBeanFactoryPostProcessor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/AxisConfigurationFactory.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/AxisConfigurationFactory.java?rev=928727&view=auto
==============================================================================
--- 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/AxisConfigurationFactory.java
 (added)
+++ 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/AxisConfigurationFactory.java
 Mon Mar 29 11:44:48 2010
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis2.spring;
+
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.springframework.beans.factory.FactoryBean;
+
+public class AxisConfigurationFactory implements FactoryBean {
+    private TransportInDescription[] transportInDescriptions;
+    
+    public void setTransportInDescriptions(TransportInDescription[] 
transportInDescriptions) {
+        this.transportInDescriptions = transportInDescriptions;
+    }
+
+    public Class getObjectType() {
+        return AxisConfiguration.class;
+    }
+
+    public boolean isSingleton() {
+        return false;
+    }
+
+    public Object getObject() throws Exception {
+        AxisConfiguration config = new AxisConfiguration();
+        if (transportInDescriptions != null) {
+            for (TransportInDescription description : transportInDescriptions) 
{
+                config.addTransportIn(description);
+            }
+        }
+        return config;
+    }
+}

Propchange: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/AxisConfigurationFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/AxisConfigurationParser.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/AxisConfigurationParser.java?rev=928727&view=auto
==============================================================================
--- 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/AxisConfigurationParser.java
 (added)
+++ 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/AxisConfigurationParser.java
 Mon Mar 29 11:44:48 2010
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis2.spring;
+
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.support.BeanDefinitionRegistry;
+import org.springframework.beans.factory.support.RootBeanDefinition;
+import 
org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
+import org.springframework.beans.factory.xml.ParserContext;
+import org.w3c.dom.Element;
+
+public class AxisConfigurationParser extends 
AbstractSingleBeanDefinitionParser {
+    private static final String BEAN_FACTORY_POST_PROCESSOR_BEAN_NAME = 
AxisConfigurationBeanFactoryPostProcessor.class.getName();
+    
+    @Override
+    protected Class getBeanClass(Element element) {
+        return AxisConfigurationFactory.class;
+    }
+
+    @Override
+    protected boolean shouldGenerateIdAsFallback() {
+        return true;
+    }
+
+    @Override
+    protected void doParse(Element element, ParserContext parserContext, 
BeanDefinitionBuilder builder) {
+        
registerBeanFactoryPostProcessorIfNecessary(parserContext.getRegistry());
+    }
+    
+    private static void 
registerBeanFactoryPostProcessorIfNecessary(BeanDefinitionRegistry registry) {
+        if 
(!registry.containsBeanDefinition(BEAN_FACTORY_POST_PROCESSOR_BEAN_NAME)) {
+            BeanDefinition beanDefinition = new 
RootBeanDefinition(AxisConfigurationBeanFactoryPostProcessor.class);
+            
registry.registerBeanDefinition(BEAN_FACTORY_POST_PROCESSOR_BEAN_NAME, 
beanDefinition);
+        }
+    }
+}

Propchange: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/AxisConfigurationParser.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/Constants.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/Constants.java?rev=928727&view=auto
==============================================================================
--- 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/Constants.java
 (added)
+++ 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/Constants.java
 Mon Mar 29 11:44:48 2010
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis2.spring;
+
+public class Constants {
+    private Constants() {}
+    
+    public static final String AXIS_CONFIGURATION_PROPERTY_NAME = 
"__axisConfiguration__";
+}

Propchange: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/Constants.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/NamespaceHandler.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/NamespaceHandler.java?rev=928727&view=auto
==============================================================================
--- 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/NamespaceHandler.java
 (added)
+++ 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/NamespaceHandler.java
 Mon Mar 29 11:44:48 2010
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis2.spring;
+
+import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
+
+public class NamespaceHandler extends NamespaceHandlerSupport {
+    public void init() {
+        registerBeanDefinitionParser("axisConfiguration", new 
AxisConfigurationParser());
+        registerBeanDefinitionParser("transportReceiver", new 
TransportReceiverParser());
+    }
+}

Propchange: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/NamespaceHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/TransportInDescriptionFactory.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/TransportInDescriptionFactory.java?rev=928727&view=auto
==============================================================================
--- 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/TransportInDescriptionFactory.java
 (added)
+++ 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/TransportInDescriptionFactory.java
 Mon Mar 29 11:44:48 2010
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis2.spring;
+
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.transport.TransportListener;
+import org.springframework.beans.factory.FactoryBean;
+
+public class TransportInDescriptionFactory implements FactoryBean {
+    private String name;
+    private TransportListener receiver;
+    
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public void setReceiver(TransportListener receiver) {
+        this.receiver = receiver;
+    }
+
+    public Class getObjectType() {
+        return TransportInDescription.class;
+    }
+
+    public boolean isSingleton() {
+        return false;
+    }
+
+    public Object getObject() throws Exception {
+        TransportInDescription description = new TransportInDescription(name);
+        description.setReceiver(receiver);
+        return description;
+    }
+}
+

Propchange: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/TransportInDescriptionFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/TransportReceiverParser.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/TransportReceiverParser.java?rev=928727&view=auto
==============================================================================
--- 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/TransportReceiverParser.java
 (added)
+++ 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/TransportReceiverParser.java
 Mon Mar 29 11:44:48 2010
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis2.spring;
+
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import 
org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
+import org.springframework.beans.factory.xml.ParserContext;
+import org.w3c.dom.Element;
+
+public class TransportReceiverParser extends 
AbstractSingleBeanDefinitionParser {
+    @Override
+    protected Class getBeanClass(Element element) {
+        return TransportInDescriptionFactory.class;
+    }
+
+    @Override
+    protected boolean shouldGenerateId() {
+        return true;
+    }
+
+    @Override
+    protected void doParse(Element element, ParserContext parserContext, 
BeanDefinitionBuilder builder) {
+        builder.setScope(BeanDefinition.SCOPE_PROTOTYPE);
+        builder.addPropertyValue(Constants.AXIS_CONFIGURATION_PROPERTY_NAME, 
element.getAttribute("axisConfiguration"));
+        builder.addPropertyValue("name",  element.getAttribute("name"));
+        BeanDefinitionBuilder receiver = 
BeanDefinitionBuilder.rootBeanDefinition(element.getAttribute("class"));
+        receiver.setSource(parserContext.extractSource(element));
+        builder.addPropertyValue("receiver", receiver.getBeanDefinition());
+    }
+}

Propchange: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/java/org/apache/axis2/spring/TransportReceiverParser.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/resources/META-INF/spring.handlers
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/resources/META-INF/spring.handlers?rev=928727&view=auto
==============================================================================
--- 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/resources/META-INF/spring.handlers
 (added)
+++ 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/resources/META-INF/spring.handlers
 Mon Mar 29 11:44:48 2010
@@ -0,0 +1,19 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+http\://axis.apache.org/spring-axis2=org.apache.axis2.spring.NamespaceHandler

Added: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/resources/META-INF/spring.schemas
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/resources/META-INF/spring.schemas?rev=928727&view=auto
==============================================================================
--- 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/resources/META-INF/spring.schemas
 (added)
+++ 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/resources/META-INF/spring.schemas
 Mon Mar 29 11:44:48 2010
@@ -0,0 +1,19 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+http\://axis.apache.org/schema/spring-axis2.xsd=schemas/spring-axis2.xsd

Added: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/resources/schemas/spring-axis2.xsd
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/resources/schemas/spring-axis2.xsd?rev=928727&view=auto
==============================================================================
--- 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/resources/schemas/spring-axis2.xsd
 (added)
+++ 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/main/resources/schemas/spring-axis2.xsd
 Mon Mar 29 11:44:48 2010
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements. See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership. The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License. You may obtain a copy of the License at
+  ~
+  ~ http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied. See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema";
+        xmlns:beans="http://www.springframework.org/schema/beans";
+        targetNamespace="http://axis.apache.org/spring-axis2";
+        xmlns:tns="http://axis.apache.org/spring-axis2"; 
elementFormDefault="qualified">
+    <import namespace="http://www.springframework.org/schema/beans"; 
schemaLocation="http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"/>
+    <complexType name="parameter">
+        <!-- TODO: a parameter can either be a string or an element! -->
+        <simpleContent>
+            <extension base="string">
+                <attribute name="name" type="string" use="required"/>
+                <attribute name="locked" type="boolean" use="optional"/>
+            </extension>
+        </simpleContent>
+    </complexType>
+    <element name="axisConfiguration">
+        <complexType>
+            <complexContent>
+                <extension base="beans:identifiedType"/>
+            </complexContent>
+        </complexType>
+    </element>
+    <complexType name="transportDescription">
+        <sequence>
+            <element name="parameter" type="tns:parameter" minOccurs="0" 
maxOccurs="unbounded"/>
+        </sequence>
+        <attribute name="name" type="string" use="required"/>
+        <attribute name="class" type="string" use="required"/>
+        <attribute name="axisConfiguration" type="string" use="optional"/>
+    </complexType>
+    <element name="transportReceiver" type="tns:transportDescription"/>
+    <element name="transportSender" type="tns:transportDescription"/>
+</schema>
\ No newline at end of file

Added: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/java/org/apache/axis2/spring/DummyTransportListener.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/java/org/apache/axis2/spring/DummyTransportListener.java?rev=928727&view=auto
==============================================================================
--- 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/java/org/apache/axis2/spring/DummyTransportListener.java
 (added)
+++ 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/java/org/apache/axis2/spring/DummyTransportListener.java
 Mon Mar 29 11:44:48 2010
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis2.spring;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.SessionContext;
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.transport.TransportListener;
+
+public class DummyTransportListener implements TransportListener {
+    public void destroy() {
+    }
+
+    public EndpointReference getEPRForService(String serviceName, String ip) 
throws AxisFault {
+        return null;
+    }
+
+    public EndpointReference[] getEPRsForService(String serviceName, String 
ip) throws AxisFault {
+        return null;
+    }
+
+    public SessionContext getSessionContext(MessageContext messageContext) {
+        return null;
+    }
+
+    public void init(ConfigurationContext axisConf, TransportInDescription 
transprtIn) throws AxisFault {
+    }
+
+    public void start() throws AxisFault {
+    }
+
+    public void stop() throws AxisFault {
+    }
+}

Propchange: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/java/org/apache/axis2/spring/DummyTransportListener.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/java/org/apache/axis2/spring/MultiConfigurationTest.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/java/org/apache/axis2/spring/MultiConfigurationTest.java?rev=928727&view=auto
==============================================================================
--- 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/java/org/apache/axis2/spring/MultiConfigurationTest.java
 (added)
+++ 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/java/org/apache/axis2/spring/MultiConfigurationTest.java
 Mon Mar 29 11:44:48 2010
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis2.spring;
+
+import java.util.Map;
+
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+import junit.framework.TestCase;
+
+public class MultiConfigurationTest extends TestCase {
+    public void test() {
+        ClassPathXmlApplicationContext appContext = new 
ClassPathXmlApplicationContext("multi_configuration.xml");
+        AxisConfiguration config1 = 
(AxisConfiguration)appContext.getBean("config1");
+        AxisConfiguration config2 = 
(AxisConfiguration)appContext.getBean("config2");
+        Map<String,TransportInDescription> transports1 = 
config1.getTransportsIn();
+        Map<String,TransportInDescription> transports2 = 
config2.getTransportsIn();
+        assertEquals(2, transports1.size());
+        assertEquals(2, transports2.size());
+        assertTrue(transports1.containsKey("dummy1"));
+        assertTrue(transports1.containsKey("dummy2"));
+        assertTrue(transports2.containsKey("dummy1"));
+        assertTrue(transports2.containsKey("dummy3"));
+        assertNotSame(transports1.get("dummy1").getReceiver(), 
transports2.get("dummy1").getReceiver());
+    }
+}

Propchange: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/java/org/apache/axis2/spring/MultiConfigurationTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/resources/multi_configuration.xml
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/resources/multi_configuration.xml?rev=928727&view=auto
==============================================================================
--- 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/resources/multi_configuration.xml
 (added)
+++ 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/resources/multi_configuration.xml
 Mon Mar 29 11:44:48 2010
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements. See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership. The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License. You may obtain a copy of the License at
+  ~
+  ~ http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied. See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<beans:beans xmlns:beans="http://www.springframework.org/schema/beans";
+             xmlns="http://axis.apache.org/spring-axis2";
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+             xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+                                 http://axis.apache.org/spring-axis2 
http://axis.apache.org/schema/spring-axis2.xsd";>
+    <axisConfiguration id="config1"/>
+    <axisConfiguration id="config2"/>
+    <transportReceiver name="dummy1" 
class="org.apache.axis2.spring.DummyTransportListener"/>
+    <transportReceiver name="dummy2" 
class="org.apache.axis2.spring.DummyTransportListener" 
axisConfiguration="config1"/>
+    <transportReceiver name="dummy3" 
class="org.apache.axis2.spring.DummyTransportListener" 
axisConfiguration="config2"/>
+</beans:beans>

Propchange: 
axis/axis2/java/core/scratch/java/veithen/spring/axis2-spring-core/src/test/resources/multi_configuration.xml
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to