blob: 9ef429eb9c951e65f3a2c4de427528e4b9733475 [file] [log] [blame]
/*
* 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.ode.bpel.compiler.wsdl;
import javax.wsdl.Definition;
import javax.wsdl.Operation;
import javax.wsdl.WSDLException;
import javax.wsdl.extensions.AttributeExtensible;
import javax.wsdl.extensions.ExtensionRegistry;
import javax.wsdl.factory.WSDLFactory;
import javax.wsdl.xml.WSDLReader;
import javax.wsdl.xml.WSDLWriter;
import javax.xml.namespace.QName;
/**
* Implementation of the BPEL-aware {@link javax.wsdl.factory.WSDLFactory}.
*/
abstract class WSDLFactoryImpl extends WSDLFactory implements WSDLFactory4BPEL {
private WSDLFactory _wsdlFactory;
/** BPEL Namespace (<code>bpws</code>). */
protected String _bpwsNS;
/** Partner Link Namespace (<code>plnk</code>). */
protected String _plnkNS;
/** Property and Alias Namespace (<code>plnk</code>). */
protected String _propNS;
WSDLFactoryImpl(String bpwsNS, String plnkNS, String propNS) {
try {
_wsdlFactory = WSDLFactory.newInstance();
} catch (WSDLException e) {
throw new AssertionError("Unable to load WSDL4J!");
}
_bpwsNS = bpwsNS;
_plnkNS = plnkNS;
_propNS = propNS;
}
/**
* Create a {@link Definition4BPEL} object out of a standard
* WSDL {@link Definition}.
* @param wsdlDef WSDL {@link Definition}
* @return new {@link Definition4BPEL} object
*/
public Definition4BPEL narrow(Definition wsdlDef) {
if (wsdlDef instanceof Definition4BPEL)
return (Definition4BPEL) wsdlDef;
return new Definition4BPELImpl(wsdlDef, _bpwsNS, _plnkNS, _propNS);
}
public Definition newDefinition() {
Definition def = _wsdlFactory.newDefinition();
def.setExtensionRegistry(newPopulatedExtensionRegistry());
return new Definition4BPELImpl(def, _bpwsNS, _plnkNS, _propNS);
}
public WSDLReader newWSDLReader() {
WSDLReader reader = new WSDLReaderImpl(this);
reader.setFactoryImplName(getClass().getName());
reader.setFeature("javax.wsdl.verbose", false);
reader.setExtensionRegistry(newPopulatedExtensionRegistry());
return reader;
}
public WSDLWriter newWSDLWriter() {
WSDLWriter writer = _wsdlFactory.newWSDLWriter();
writer.setFeature("javax.wsdl.verbose", false);
return writer;
}
public ExtensionRegistry newPopulatedExtensionRegistry() {
ExtensionRegistry extRegistry = _wsdlFactory.newPopulatedExtensionRegistry();
extRegistry.registerExtensionAttributeType(Operation.class,
new QName("http://www.w3.org/ns/wsdl-extensions","safe"), AttributeExtensible.STRING_TYPE);
return extRegistry;
}
}