| MetaDataRegistry.java |
/**
* JBoss, the OpenSource J2EE webOS
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.webservice.deployment;
// $Id: MetaDataRegistry.java,v 1.2.4.3 2004/11/17 10:51:34 tdiesler Exp $
import org.jboss.logging.Logger;
import javax.xml.namespace.QName;
import java.util.HashMap;
/**
* A registry that holds typeMapping child elements.
* <p/>
* For example the ws4ee-deployment.xml may contain a typeMapping like this, then
* the <typeDesc> element will be registered under the qname {http://MarshallTest.org/xsd}AllStruct
* <p/>
* <typeMapping
* qname='ns1:AllStruct' xmlns:ns1='http://MarshallTest.org/xsd'
* type='java:org.jboss.ws4ee.test.marshalltest.rpcenc.AllStruct'
* serializer='org.jboss.ws4ee.test.marshalltest.rpcenc.ser.AllStructSerializerFactory'
* deserializer='org.jboss.ws4ee.test.marshalltest.rpcenc.ser.AllStructDeserializerFactory'
* encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>
* <typeDesc >
* <elementDesc fieldName="varBase64Binary" xmlName="varBase64Binary" xmlType="xsd:base64Binary"/>
* <elementDesc fieldName="varHexBinary" xmlName="varHexBinary" xmlType="xsd:hexBinary"/>
* <elementDesc fieldName="varSoapString" xmlName="varSoapString" xmlType="soapenc:string"/>
* <elementDesc fieldName="varSoapBoolean" xmlName="varSoapBoolean" xmlType="soapenc:boolean"/>
* <elementDesc fieldName="varSoapFloat" xmlName="varSoapFloat" xmlType="soapenc:float"/>
* <elementDesc fieldName="varSoapDouble" xmlName="varSoapDouble" xmlType="soapenc:double"/>
* <elementDesc fieldName="varSoapDecimal" xmlName="varSoapDecimal" xmlType="soapenc:decimal"/>
* <elementDesc fieldName="varSoapInt" xmlName="varSoapInt" xmlType="soapenc:int"/>
* <elementDesc fieldName="varSoapShort" xmlName="varSoapShort" xmlType="soapenc:short"/>
* <elementDesc fieldName="varSoapByte" xmlName="varSoapByte" xmlType="soapenc:byte"/>
* <elementDesc fieldName="varSoapBase64" xmlName="varSoapBase64" xmlType="soapenc:base64"/>
* </typeDesc>
* </typeMapping>
*
* @author thomas.diesler@jboss.org
* @since 08-June-2004
*/
public class MetaDataRegistry
{
// provide logging
private final Logger log = Logger.getLogger(MetaDataRegistry.class);
private HashMap typeMappingMetaData = new HashMap();
public void registerTypeMappingMetaData(TypeMappingDescription typeMapping)
{
QName qname = typeMapping.getTypeQName();
BeanXMLMetaData metaData = typeMapping.getMetaData();
if (metaData == null)
throw new IllegalArgumentException("Cannot register null meta data");
if (isTypeMappingMetaDataRegisterd(qname) == false || typeMapping.isUserDefined())
{
log.debug("Register type mapping meta data for: " + qname);
typeMappingMetaData.put(qname, metaData);
}
else
{
log.debug("Ignore register type mapping meta data for: " + qname);
}
}
public BeanXMLMetaData getTypeMappingMetaData(QName typeName)
{
return (BeanXMLMetaData)typeMappingMetaData.get(typeName);
}
public boolean isTypeMappingMetaDataRegisterd(QName typeName)
{
return typeMappingMetaData.get(typeName) != null;
}
public void unregisterTypeMappingMetaData(QName typeName)
{
typeMappingMetaData.remove(typeName);
}
}
| MetaDataRegistry.java |