blob: c8d6f9a4b2969a2358f4093ce7e1cad986a961fd [file] [log] [blame]
/*
* Copyright 2001-2004 The Apache Software Foundation.
*
* 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.apache.axis.encoding;
import java.io.Serializable;
import javax.xml.namespace.QName;
import javax.xml.rpc.JAXRPCException;
import javax.xml.rpc.encoding.DeserializerFactory;
import javax.xml.rpc.encoding.SerializerFactory;
/**
* This interface describes the AXIS TypeMapping.
*/
public interface TypeMapping
extends javax.xml.rpc.encoding.TypeMapping, Serializable {
/**
* Gets the SerializerFactory registered for the specified pair
* of Java type and XML data type.
*
* @param javaType - Class of the Java type
*
* @return Registered SerializerFactory
*
* @throws JAXRPCException - If there is no registered SerializerFactory
* for this pair of Java type and XML data type
* java.lang.IllegalArgumentException
* If invalid or unsupported XML/Java type is specified
*/
public SerializerFactory getSerializer(Class javaType)
throws JAXRPCException;
/**
* Gets the DeserializerFactory registered for the specified XML data type.
*
* @param xmlType - Qualified name of the XML data type
*
* @return Registered DeserializerFactory
*
* @throws JAXRPCException - If there is no registered DeserializerFactory
* for this pair of Java type and XML data type
* java.lang.IllegalArgumentException -
* If invalid or unsupported XML/Java type is specified
*/
public DeserializerFactory getDeserializer(QName xmlType)
throws JAXRPCException;
/**
* Gets the QName for the type mapped to Class.
* @param javaType class or type
* @return xmlType qname or null
*/
public QName getTypeQName(Class javaType);
/**
* Get the QName for this Java class, but only return a specific
* mapping if there is one. In other words, don't do special array
* processing, etc.
*
* @param javaType
* @return
*/
public QName getTypeQNameExact(Class javaType);
/**
* Gets the Class mapped to QName.
* @param xmlType qname or null
* @return javaType class for type or null for no mapping
*/
public Class getClassForQName(QName xmlType);
public Class getClassForQName(QName xmlType, Class javaType);
/**
* Returns an array of all the classes contained within this mapping
*/
public Class [] getAllClasses();
/**
* Get the exact XML type QName which will be used when serializing a
* given Class to a given type QName. In other words, if we have:
*
* Class TypeQName
* ----------------------
* Base myNS:Base
* Child myNS:Child
*
* and call getXMLType(Child.class, BASE_QNAME), we should get
* CHILD_QNAME.
*
* @param javaType
* @param xmlType
* @return the type's QName
* @throws javax.xml.rpc.JAXRPCException
*/
QName getXMLType(Class javaType, QName xmlType, boolean encoded)
throws JAXRPCException;
}