blob: 2b40b4ced29a08e8c620523696f10fc4ffbcf16f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.bpel.model.extensions;
import java.util.HashMap;
import java.util.Map;
import javax.wsdl.WSDLException;
import javax.wsdl.extensions.ExtensibilityElement;
import javax.wsdl.extensions.ExtensionDeserializer;
import javax.wsdl.extensions.ExtensionRegistry;
import javax.wsdl.extensions.ExtensionSerializer;
import javax.xml.namespace.QName;
import org.eclipse.emf.ecore.EPackage;
/**
* An extension registry for BPEL extensions instead of WSDL extensions.
*/
@SuppressWarnings("nls")
public class BPELExtensionRegistry extends ExtensionRegistry
{
/**
*
*/
private static final long serialVersionUID = 2780795931782427742L;
protected Map<String,ServiceReferenceSerializer> serviceReferenceSerializers;
protected Map<String,ServiceReferenceDeserializer> serviceReferenceDeserializers;
protected Map<QName,BPELActivitySerializer> activitySerializers;
protected Map<QName,BPELActivityDeserializer> activityDeserializers;
/** Extension registry instance */
public static BPELExtensionRegistry INSTANCE;
private BPELExtensionRegistry() {
serviceReferenceSerializers = new HashMap<String,ServiceReferenceSerializer> ();
serviceReferenceDeserializers = new HashMap<String,ServiceReferenceDeserializer>();
activitySerializers = new HashMap<QName,BPELActivitySerializer>();
activityDeserializers = new HashMap<QName,BPELActivityDeserializer>();
}
/**
* @return Returns a singleton instance.
*/
public synchronized static BPELExtensionRegistry getInstance() {
if (INSTANCE == null) {
INSTANCE = new BPELExtensionRegistry();
INSTANCE.setDefaultDeserializer(new BPELUnknownExtensionDeserializer());
INSTANCE.setDefaultSerializer(new BPELUnknownExtensionSerializer());
}
return INSTANCE;
}
/**
* @see javax.wsdl.extensions.ExtensionRegistry#createExtension(Class, QName)
*/
@Override
public ExtensibilityElement createExtension (Class parentType, QName qname) throws WSDLException {
// Make sure that the EMF package corresponding to the given namespace is initialized
EPackage.Registry.INSTANCE.getEPackage(qname.getNamespaceURI());
return super.createExtension(parentType, qname);
}
/**
* @see javax.wsdl.extensions.ExtensionRegistry#queryDeserializer(Class, QName)
*/
@Override
public ExtensionDeserializer queryDeserializer (Class parentType, QName qname) throws WSDLException {
// Make sure that the EMF package corresponding to the given namespace is initialized
EPackage.Registry.INSTANCE.getEPackage(qname.getNamespaceURI());
return super.queryDeserializer(parentType, qname);
}
/**
* @see javax.wsdl.extensions.ExtensionRegistry#querySerializer(Class, QName)
*/
@Override
public ExtensionSerializer querySerializer (Class parentType, QName qname) throws WSDLException {
// Make sure that the EMF package corresponding to the given namespace is initialized
EPackage.Registry.INSTANCE.getEPackage(qname.getNamespaceURI());
return super.querySerializer(parentType, qname);
}
/**
* @param es must be a {@link BPELExtensionSerializer}
*/
@Override
public void registerSerializer (Class parentType, QName elementType, ExtensionSerializer es) {
if (!(es instanceof BPELExtensionSerializer)) {
throw new IllegalArgumentException("ExtensionSerializer is not a BPELExtensionSerializer");
}
super.registerSerializer(parentType, elementType, es);
}
/**
* @param ed deserializer must be a {@link BPELExtensionDeserializer}
*/
@Override
public void registerDeserializer(Class parentType, QName elementType, ExtensionDeserializer ed) {
if (!(ed instanceof BPELExtensionDeserializer)) {
throw new IllegalArgumentException("ExtensionDeserializer is not a BPELExtensionDeserializer");
}
super.registerDeserializer(parentType, elementType, ed);
}
/**
* @param referenceScheme
* @param serializer
*/
public void registerServiceReferenceSerializer(String referenceScheme, ServiceReferenceSerializer serializer) {
serviceReferenceSerializers.put(referenceScheme, serializer);
}
/**
* @param referenceScheme
* @param deserializer
*/
public void registerServiceReferenceDeserializer(String referenceScheme, ServiceReferenceDeserializer deserializer) {
serviceReferenceDeserializers.put(referenceScheme, deserializer);
}
/**
* @param referenceScheme
* @return return the ServiceReferenceSerializer for the given reference scheme.
*/
public ServiceReferenceSerializer getServiceReferenceSerializer(String referenceScheme) {
if (referenceScheme == null) {
return null;
}
return serviceReferenceSerializers.get(referenceScheme);
}
/**
* @param referenceScheme
* @return return the ServiceReferenceDeserializer for the given reference scheme.
*/
public ServiceReferenceDeserializer getServiceReferenceDeserializer(String referenceScheme) {
if (referenceScheme == null) {
return null;
}
return serviceReferenceDeserializers.get(referenceScheme);
}
/**
* Register activity serializer.
*
* @param qname
* @param serializer
*/
public void registerActivitySerializer (QName qname, BPELActivitySerializer serializer) {
activitySerializers.put(qname, serializer);
}
/**
* @param qname
* @param deserializer
*/
public void registerActivityDeserializer (QName qname, BPELActivityDeserializer deserializer) {
activityDeserializers.put(qname, deserializer);
}
/**
* @param qname
* @return return the activity serializer.
*/
public BPELActivitySerializer getActivitySerializer(QName qname) {
if (qname == null) {
return null;
}
return activitySerializers.get(qname);
}
/**
* @param qname
* @return return the activity deserializer.
*/
public BPELActivityDeserializer getActivityDeserializer(QName qname) {
if (qname == null) {
return null;
}
return activityDeserializers.get(qname);
}
}