removed Axis 1.x support
This commit is contained in:
parent
ee0a294fe8
commit
7e4a230793
|
|
@ -1,197 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2002-2008 the original author or authors.
|
|
||||||
*
|
|
||||||
* Licensed 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.springframework.remoting.jaxrpc.support;
|
|
||||||
|
|
||||||
import java.util.Enumeration;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Properties;
|
|
||||||
import javax.xml.namespace.QName;
|
|
||||||
import javax.xml.rpc.Service;
|
|
||||||
import javax.xml.rpc.encoding.TypeMapping;
|
|
||||||
import javax.xml.rpc.encoding.TypeMappingRegistry;
|
|
||||||
|
|
||||||
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
|
|
||||||
import org.apache.axis.encoding.ser.BeanSerializerFactory;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.BeanClassLoaderAware;
|
|
||||||
import org.springframework.remoting.jaxrpc.JaxRpcServicePostProcessor;
|
|
||||||
import org.springframework.util.ClassUtils;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Axis-specific {@link JaxRpcServicePostProcessor} that registers bean
|
|
||||||
* mappings for domain objects that follow the JavaBean pattern.
|
|
||||||
*
|
|
||||||
* <p>The same mappings are usually also registered at the server in
|
|
||||||
* Axis' "server-config.wsdd" file.
|
|
||||||
*
|
|
||||||
* <p>To be registered as a service post-processor on a
|
|
||||||
* {@link org.springframework.remoting.jaxrpc.LocalJaxRpcServiceFactoryBean} or
|
|
||||||
* {@link org.springframework.remoting.jaxrpc.JaxRpcPortProxyFactoryBean},
|
|
||||||
* carrying appropriate configuration.
|
|
||||||
*
|
|
||||||
* <p>Note: Without such explicit bean mappings, a complex type like a
|
|
||||||
* domain object cannot be transferred via SOAP.
|
|
||||||
*
|
|
||||||
* @author Juergen Hoeller
|
|
||||||
* @since 2.0
|
|
||||||
* @see org.apache.axis.encoding.ser.BeanSerializerFactory
|
|
||||||
* @see org.apache.axis.encoding.ser.BeanDeserializerFactory
|
|
||||||
* @see org.springframework.remoting.jaxrpc.LocalJaxRpcServiceFactoryBean#setServicePostProcessors
|
|
||||||
* @see org.springframework.remoting.jaxrpc.JaxRpcPortProxyFactoryBean#setServicePostProcessors
|
|
||||||
*/
|
|
||||||
public class AxisBeanMappingServicePostProcessor implements JaxRpcServicePostProcessor, BeanClassLoaderAware {
|
|
||||||
|
|
||||||
private String encodingStyleUri;
|
|
||||||
|
|
||||||
private String typeNamespaceUri;
|
|
||||||
|
|
||||||
private Map<Object, String> beanMappings;
|
|
||||||
|
|
||||||
private ClassLoader beanClassLoader = ClassUtils.getDefaultClassLoader();
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the encoding style URI to use for the type mapping.
|
|
||||||
* <p>A typical value is "http://schemas.xmlsoap.org/soap/encoding/",
|
|
||||||
* as suggested by the JAX-RPC javadoc. However, note that the default
|
|
||||||
* behavior of this post-processor is to register the type mapping
|
|
||||||
* as JAX-RPC default if no explicit encoding style URI is given.
|
|
||||||
* @see javax.xml.rpc.encoding.TypeMappingRegistry#register
|
|
||||||
* @see javax.xml.rpc.encoding.TypeMappingRegistry#registerDefault
|
|
||||||
*/
|
|
||||||
public void setEncodingStyleUri(String encodingStyleUri) {
|
|
||||||
this.encodingStyleUri = encodingStyleUri;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the application-specific namespace to use for XML types,
|
|
||||||
* for example "urn:JPetStore".
|
|
||||||
* @see javax.xml.rpc.encoding.TypeMapping#register
|
|
||||||
*/
|
|
||||||
public void setTypeNamespaceUri(String typeNamespaceUri) {
|
|
||||||
this.typeNamespaceUri = typeNamespaceUri;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Specify the bean mappings to register as String-String pairs,
|
|
||||||
* with the Java type name as key and the WSDL type name as value.
|
|
||||||
*/
|
|
||||||
public void setBeanMappings(Properties beanMappingProps) {
|
|
||||||
if (beanMappingProps != null) {
|
|
||||||
this.beanMappings = new HashMap<Object, String>(beanMappingProps.size());
|
|
||||||
Enumeration propertyNames = beanMappingProps.propertyNames();
|
|
||||||
while (propertyNames.hasMoreElements()) {
|
|
||||||
String javaTypeName = (String) propertyNames.nextElement();
|
|
||||||
String wsdlTypeName = beanMappingProps.getProperty(javaTypeName);
|
|
||||||
this.beanMappings.put(javaTypeName, wsdlTypeName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
this.beanMappings = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Specify the bean mappings to register as Java types,
|
|
||||||
* with the WSDL type names inferred from the Java type names
|
|
||||||
* (using the short, that is, non-fully-qualified class name).
|
|
||||||
*/
|
|
||||||
public void setBeanClasses(Class[] beanClasses) {
|
|
||||||
if (beanClasses != null) {
|
|
||||||
this.beanMappings = new HashMap<Object, String>(beanClasses.length);
|
|
||||||
for (Class beanClass : beanClasses) {
|
|
||||||
String wsdlTypeName = ClassUtils.getShortName(beanClass);
|
|
||||||
this.beanMappings.put(beanClass, wsdlTypeName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
this.beanMappings = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBeanClassLoader(ClassLoader beanClassLoader) {
|
|
||||||
this.beanClassLoader = beanClassLoader;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Register the specified bean mappings on the given Service's
|
|
||||||
* {@link TypeMappingRegistry}.
|
|
||||||
* @see javax.xml.rpc.Service#getTypeMappingRegistry()
|
|
||||||
* @see #setBeanMappings
|
|
||||||
* @see #registerBeanMappings(javax.xml.rpc.encoding.TypeMapping)
|
|
||||||
*/
|
|
||||||
public void postProcessJaxRpcService(Service service) {
|
|
||||||
TypeMappingRegistry registry = service.getTypeMappingRegistry();
|
|
||||||
TypeMapping mapping = registry.createTypeMapping();
|
|
||||||
registerBeanMappings(mapping);
|
|
||||||
if (this.encodingStyleUri != null) {
|
|
||||||
registry.register(this.encodingStyleUri, mapping);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
registry.registerDefault(mapping);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Perform the actual bean mapping registration.
|
|
||||||
* @param mapping the JAX-RPC {@link TypeMapping} to operate on
|
|
||||||
* @see #setBeanMappings
|
|
||||||
* @see #registerBeanMapping(javax.xml.rpc.encoding.TypeMapping, Class, String)
|
|
||||||
*/
|
|
||||||
protected void registerBeanMappings(TypeMapping mapping) {
|
|
||||||
if (this.beanMappings != null) {
|
|
||||||
for (Map.Entry<Object, String> entry : this.beanMappings.entrySet()) {
|
|
||||||
Class javaType = (entry.getKey() instanceof Class ? (Class) entry.getKey() :
|
|
||||||
ClassUtils.resolveClassName(entry.getKey().toString(), this.beanClassLoader));
|
|
||||||
registerBeanMapping(mapping, javaType, entry.getValue());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Register a bean mapping for the given Java type and WSDL type name.
|
|
||||||
* @param mapping the JAX-RPC {@link TypeMapping} to operate on
|
|
||||||
* @param javaType the Java type
|
|
||||||
* @param wsdlTypeName the WSDL type name (as a {@link String})
|
|
||||||
*/
|
|
||||||
protected void registerBeanMapping(TypeMapping mapping, Class javaType, String wsdlTypeName) {
|
|
||||||
registerBeanMapping(mapping, javaType, getTypeQName(wsdlTypeName));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Register a bean mapping for the given Java type and WSDL type.
|
|
||||||
* @param mapping the JAX-RPC {@link TypeMapping} to operate on
|
|
||||||
* @param javaType the Java type
|
|
||||||
* @param wsdlType the WSDL type (as XML {@link QName})
|
|
||||||
*/
|
|
||||||
protected void registerBeanMapping(TypeMapping mapping, Class javaType, QName wsdlType) {
|
|
||||||
mapping.register(javaType, wsdlType,
|
|
||||||
new BeanSerializerFactory(javaType, wsdlType),
|
|
||||||
new BeanDeserializerFactory(javaType, wsdlType));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return a {@link QName} for the given name, relative to the
|
|
||||||
* {@link #setTypeNamespaceUri namespace URI} of this post-processor, if given.
|
|
||||||
*/
|
|
||||||
protected final QName getTypeQName(String name) {
|
|
||||||
return (this.typeNamespaceUri != null ? new QName(this.typeNamespaceUri, name) : new QName(name));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
<html>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
Support for specific JAX-RPC providers. Contains an Axis-specific
|
|
||||||
JaxRpcServicePostProcessor for declaratively registering bean mappings.
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
Loading…
Reference in New Issue