/* * 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; } }