owenb 2002/06/11 08:14:51
Modified: java/src/org/apache/wsif WSIFServiceImpl.java
WSIFClientProxy.java
java/samples/clients DynamicInvoker.java
java/test/faults FaultMsgTest.java
java/test/providers ProvidersInitialisationTest.java
java/src/org/apache/wsif/providers WSIFDynamicTypeMap.java
java/src/org/apache/wsif/providers/jms JMSMessage.java
java/test/headers HeadersTest.java
java/test/async AsyncTest.java
Added: java/src/org/apache/wsif/util WSIFUtils.java
Removed: java/src/org/apache/wsif/stub WSIFUtils.java
Log:
Moved org.apache.wsif.stub.WSIFUtils to org.apache.wsif.util.WSIFUtils
and changed references accordingly
Revision Changes Path
1.2 +1 -1 xml-axis-wsif/java/src/org/apache/wsif/WSIFServiceImpl.java
Index: WSIFServiceImpl.java
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/src/org/apache/wsif/WSIFServiceImpl.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- WSIFServiceImpl.java 6 Jun 2002 08:28:48 -0000 1.1
+++ WSIFServiceImpl.java 11 Jun 2002 15:14:50 -0000 1.2
@@ -95,9 +95,9 @@
import org.apache.wsif.logging.Tr;
import org.apache.wsif.providers.WSIFDynamicTypeMap;
import org.apache.wsif.spi.WSIFProvider;
-import org.apache.wsif.stub.WSIFUtils;
import org.apache.wsif.util.WSIFDefaultMessageFactory;
import org.apache.wsif.util.WSIFProperties;
+import org.apache.wsif.util.WSIFUtils;
import org.apache.wsif.wsdl.extensions.ejb.EJBBindingSerializer;
import org.apache.wsif.wsdl.extensions.format.FormatBindingSerializer;
import org.apache.wsif.wsdl.extensions.java.JavaBindingSerializer;
1.3 +1 -1 xml-axis-wsif/java/src/org/apache/wsif/WSIFClientProxy.java
Index: WSIFClientProxy.java
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/src/org/apache/wsif/WSIFClientProxy.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- WSIFClientProxy.java 10 Jun 2002 17:03:54 -0000 1.2
+++ WSIFClientProxy.java 11 Jun 2002 15:14:50 -0000 1.3
@@ -78,7 +78,7 @@
import org.apache.wsif.logging.Tr;
import org.apache.wsif.providers.WSIFDynamicTypeMap;
import org.apache.wsif.providers.WSIFDynamicTypeMapping;
-import org.apache.wsif.stub.WSIFUtils;
+import org.apache.wsif.util.WSIFUtils;
/**
* @author Owen Burroughs <[EMAIL PROTECTED]>
1.2 +1 -1 xml-axis-wsif/java/samples/clients/DynamicInvoker.java
Index: DynamicInvoker.java
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/samples/clients/DynamicInvoker.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DynamicInvoker.java 6 Jun 2002 08:28:46 -0000 1.1
+++ DynamicInvoker.java 11 Jun 2002 15:14:50 -0000 1.2
@@ -77,7 +77,7 @@
import org.apache.wsif.WSIFServiceFactory;
import org.apache.wsif.WSIFServiceImpl;
import org.apache.wsif.providers.soap.apacheaxis.WSIFDynamicProvider_ApacheAxis;
-import org.apache.wsif.stub.WSIFUtils;
+import org.apache.wsif.util.WSIFUtils;
/**
* This sample shows how to use WSIF for completely dynamic invocations
1.1 xml-axis-wsif/java/src/org/apache/wsif/util/WSIFUtils.java
Index: WSIFUtils.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
*
* Copyright (c) 2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "WSIF" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation and was
* originally based on software copyright (c) 2001, 2002, International
* Business Machines, Inc., http://www.apache.org. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.wsif.util;
import java.io.Reader;
import java.io.StringReader;
import java.io.Writer;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.StringTokenizer;
import javax.wsdl.Binding;
import javax.wsdl.Definition;
import javax.wsdl.Import;
import javax.wsdl.Message;
import javax.wsdl.Operation;
import javax.wsdl.Part;
import javax.wsdl.PortType;
import javax.wsdl.QName;
import javax.wsdl.Service;
import javax.wsdl.WSDLException;
import javax.wsdl.extensions.ExtensibilityElement;
import javax.wsdl.factory.WSDLFactory;
import javax.wsdl.xml.WSDLReader;
import javax.wsdl.xml.WSDLWriter;
import org.apache.wsif.WSIFConstants;
import org.apache.wsif.WSIFException;
import org.apache.wsif.WSIFService;
import org.apache.wsif.WSIFServiceImpl;
import org.apache.wsif.format.WSIFFormatHandler;
import org.apache.wsif.logging.MessageLogger;
import org.apache.wsif.logging.Tr;
import org.apache.wsif.wsdl.extensions.format.TypeMapping;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.InputSource;
import com.ibm.wsdl.Constants;
/**
* This class provides utilities for WSIF runtime and generated stubs.
*
* @author Alekander Slominski
* @author Matthew J. Duftler
* @author Sanjiva Weerawarana
* @author Owen Burroughs <[EMAIL PROTECTED]>
* @author Ant Elder <[EMAIL PROTECTED]>
* @author Jeremy Hughes <[EMAIL PROTECTED]>
* @author Mark Whitlock <[EMAIL PROTECTED]>
*/
public class WSIFUtils {
private final static String DEF_FACTORY_PROPERTY_NAME =
"javax.wsdl.factory.WSDLFactory";
private static Class initContextClass;
private static final String SLASH = "/";
private static final String DOT = ".";
private static final String FORMAT_HANDLER = "FormatHandler";
private static final String ELEMENT_FORMAT_HANDLER = "ElementFormatHandler";
private static final String PHYSICALREP = "physicalrep/";
private static final String FORMATBINDING = "formatbinding/";
private static final String XMLSEPARATORS =
"\u002D\u002E\u003A\u005F\u00B7\u0387\u06DD\u06DE";
private static final String lookupPrefix = "java:comp/env/";
private static final String emptyString = "";
/**
* This checks whether JNDI classes are available at runtime.
* If the return value is true, then generated stubs should
* invoke lookupFactoryFromJNDI to get the WSIFService.
* If not, then there's no need to do so.
*/
public static boolean isJNDIAvailable() {
Tr.entry(null);
initContextClass =
(Class) AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
try {
return Class.forName(
"javax.naming.InitialContext",
true,
Thread.currentThread().getContextClassLoader());
} catch (Throwable ignored) {
}
return null;
}
});
boolean b = true;
if (initContextClass == null)
b = false;
Tr.exit(b);
return b;
}
/**
* Given the service and portType identification, return a factory
* that can produce WSIFPorts for that service/portType combination.
*/
public static WSIFService lookupFactoryFromJNDI(
String serviceNS,
String serviceName,
String portTypeNS,
String portTypeName)
throws WSIFException {
Tr.entry(null, serviceNS, serviceName, portTypeNS, portTypeName);
if (serviceNS == null)
throw new IllegalArgumentException("service namespace can not be null");
if (serviceName == null)
throw new IllegalArgumentException("service name can not be null");
if (portTypeNS == null)
throw new IllegalArgumentException("port type namespace can not be
null");
if (portTypeName == null)
throw new IllegalArgumentException("port type name can not be null");
WSIFService ws = null;
try {
if (initContextClass == null) {
initContextClass =
Class.forName(
"javax.naming.InitialContext",
true,
WSIFUtils.class.getClassLoader());
}
Object ic = initContextClass.newInstance();
Class[] lookupSig = new Class[] { String.class };
Object[] lookupArgs =
new String[] {
serviceNS + "::" + serviceName + "::" + portTypeNS + "::" +
portTypeName };
Method m = initContextClass.getMethod("lookup", lookupSig);
ws = (WSIFService) m.invoke(ic, lookupArgs);
} catch (Exception e) {
throw new WSIFException(
"Exception while looking up JNDI factory: " + e.getMessage(),
e);
}
Tr.exit(ws);
return ws;
}
public static Service selectService(
Definition def,
String serviceNS,
String serviceName)
throws WSIFException {
Tr.entry(null, def, serviceNS, serviceName);
Map services = getAllItems(def, "Service");
QName serviceQName =
((serviceNS != null && serviceName != null)
? new QName(serviceNS, serviceName)
: null);
Service service = (Service) getNamedItem(services, serviceQName, "Service");
Tr.exit(service);
return service;
}
public static PortType selectPortType(
Definition def,
String portTypeNS,
String portTypeName)
throws WSIFException {
Tr.entry(null, def, portTypeNS, portTypeName);
Map portTypes = getAllItems(def, "PortType");
QName portTypeQName =
((portTypeNS != null && portTypeName != null)
? new QName(portTypeNS, portTypeName)
: null);
PortType portType =
(PortType) getNamedItem(portTypes, portTypeQName, "PortType");
Tr.exit(portType);
return portType;
}
public static void addDefinedItems(
Map fromItems,
String itemType,
Map toItems) {
Tr.entry(null, fromItems, itemType, toItems);
if (fromItems != null) {
Iterator entryIterator = fromItems.entrySet().iterator();
if (itemType.equals("Message")) {
while (entryIterator.hasNext()) {
Map.Entry entry = (Map.Entry) entryIterator.next();
Message message = (Message) entry.getValue();
if (!message.isUndefined()) {
toItems.put(entry.getKey(), message);
}
}
} else if (itemType.equals("Operation")) {
while (entryIterator.hasNext()) {
Map.Entry entry = (Map.Entry) entryIterator.next();
Operation operation = (Operation) entry.getValue();
if (!operation.isUndefined()) {
toItems.put(entry.getKey(), operation);
}
}
} else if (itemType.equals("PortType")) {
while (entryIterator.hasNext()) {
Map.Entry entry = (Map.Entry) entryIterator.next();
PortType portType = (PortType) entry.getValue();
if (!portType.isUndefined()) {
toItems.put(entry.getKey(), portType);
}
}
} else if (itemType.equals("Binding")) {
while (entryIterator.hasNext()) {
Map.Entry entry = (Map.Entry) entryIterator.next();
Binding binding = (Binding) entry.getValue();
if (!binding.isUndefined()) {
toItems.put(entry.getKey(), binding);
}
}
} else if (itemType.equals("Service")) {
while (entryIterator.hasNext()) {
Map.Entry entry = (Map.Entry) entryIterator.next();
Service service = (Service) entry.getValue();
toItems.put(entry.getKey(), service);
}
}
}
Tr.exit();
}
private static void getAllItems(Definition def, String itemType, Map toItems) {
Tr.entry(null, def, itemType, toItems);
Map items = null;
if (itemType.equals("PortType")) {
items = def.getPortTypes();
} else if (itemType.equals("Service")) {
items = def.getServices();
} else {
throw new IllegalArgumentException(
"Don't know how to find all " + itemType + "s.");
}
addDefinedItems(items, itemType, toItems);
Map imports = def.getImports();
if (imports != null) {
Iterator valueIterator = imports.values().iterator();
while (valueIterator.hasNext()) {
List importList = (List) valueIterator.next();
if (importList != null) {
Iterator importIterator = importList.iterator();
while (importIterator.hasNext()) {
Import tempImport = (Import) importIterator.next();
if (tempImport != null) {
Definition importedDef = tempImport.getDefinition();
if (importedDef != null) {
getAllItems(importedDef, itemType, toItems);
}
}
}
}
}
}
Tr.exit();
}
public static Map getAllItems(Definition def, String itemType) {
Tr.entry(null, def, itemType);
Map ret = new HashMap();
getAllItems(def, itemType, ret);
Tr.exit(ret);
return ret;
}
public static Object getNamedItem(Map items, QName qname, String itemType)
throws WSIFException {
Tr.entry(null, items, qname, itemType);
if (qname != null) {
Object item = items.get(qname);
if (item != null) {
Tr.exit(item);
return item;
} else {
throw new WSIFException(
itemType
+ " '"
+ qname
+ "' not found. Choices are: "
+ getCommaListFromQNameMap(items));
}
} else {
int size = items.size();
if (size == 1) {
Iterator valueIterator = items.values().iterator();
Object o = valueIterator.next();
Tr.exit(o);
return o;
} else if (size == 0) {
throw new WSIFException("WSDL document contains no " + itemType +
"s.");
} else {
throw new WSIFException(
"Please specify a "
+ itemType
+ ". Choices are: "
+ getCommaListFromQNameMap(items));
}
}
}
private static String getCommaListFromQNameMap(Map qnameMap) {
StringBuffer strBuf = new StringBuffer("{");
Set keySet = qnameMap.keySet();
Iterator keyIterator = keySet.iterator();
int index = 0;
while (keyIterator.hasNext()) {
QName key = (QName) keyIterator.next();
strBuf.append((index > 0 ? ", " : "") + key);
index++;
}
strBuf.append("}");
return strBuf.toString();
}
/**
* Read WSDL - it is different from standard readWSDL method as it is
* using extensibility elements that were registered for dynamic port
* factory.
*/
public static Definition readWSDL(String contextURL, String wsdlLoc)
throws WSDLException {
Tr.entry(null, contextURL, wsdlLoc);
initializeProviders();
Properties props = System.getProperties();
String oldPropValue = props.getProperty(DEF_FACTORY_PROPERTY_NAME);
props.setProperty(DEF_FACTORY_PROPERTY_NAME, WSIFConstants.WSIF_WSDLFACTORY);
WSDLFactory factory = WSDLFactory.newInstance();
WSDLReader wsdlReader = factory.newWSDLReader();
wsdlReader.setFeature(Constants.FEATURE_VERBOSE, false);
try {
Definition def = wsdlReader.readWSDL(contextURL, wsdlLoc);
if (oldPropValue != null) {
props.setProperty(DEF_FACTORY_PROPERTY_NAME, oldPropValue);
} else {
props.remove(DEF_FACTORY_PROPERTY_NAME);
}
Tr.exitExpandWsdl(def);
return def;
} catch (WSDLException e) {
// Log message
MessageLogger messageLog =
MessageLogger.newMessageLogger("WSIF",
"org.apache.wsif.catalog.Messages");
messageLog.message(
WSIFConstants.TYPE_ERROR,
"WSIF.0002E",
new Object[] { wsdlLoc });
messageLog.destroy();
// End message
throw e;
}
}
/**
* Read WSDL - it is different from standard readWSDL method as it is
* using extensibility elements that were registered for dynamic port
* factory. It also uses the accompanying class loader to load imported WSDL
* resources.
*/
public static Definition readWSDL(
URL contextURL,
Reader reader,
ClassLoader cl)
throws WSDLException {
Tr.entry(null, contextURL, reader, cl);
initializeProviders();
Properties props = System.getProperties();
String oldPropValue = props.getProperty(DEF_FACTORY_PROPERTY_NAME);
props.setProperty(DEF_FACTORY_PROPERTY_NAME, WSIFConstants.WSIF_WSDLFACTORY);
WSDLFactory factory = WSDLFactory.newInstance();
WSDLReader wsdlReader = factory.newWSDLReader();
wsdlReader.setFeature(Constants.FEATURE_VERBOSE, false);
try {
String url = (contextURL == null) ? null : contextURL.toString();
Definition def = wsdlReader.readWSDL(url, new InputSource(reader), cl);
if (oldPropValue != null) {
props.setProperty(DEF_FACTORY_PROPERTY_NAME, oldPropValue);
} else {
props.remove(DEF_FACTORY_PROPERTY_NAME);
}
Tr.exitExpandWsdl(def);
return def;
} catch (WSDLException e) {
// Log message
MessageLogger messageLog =
MessageLogger.newMessageLogger("WSIF",
"org.apache.wsif.catalog.Messages");
messageLog.message(
WSIFConstants.TYPE_ERROR,
"WSIF.0002E",
new Object[] { contextURL });
messageLog.destroy();
// End message
throw e;
}
}
/**
* Read WSDL - it is different from standard readWSDL method as it is
* using extensibility elements that were registered for dynamic port
* factory. It also uses the accompanying class loader to load imported WSDL
* resources.
*/
public static Definition readWSDL(
URL contextURL,
String wsdlLoc,
ClassLoader cl)
throws WSDLException {
Tr.entry(null, contextURL, wsdlLoc, cl);
initializeProviders();
Properties props = System.getProperties();
String oldPropValue = props.getProperty(DEF_FACTORY_PROPERTY_NAME);
props.setProperty(DEF_FACTORY_PROPERTY_NAME, WSIFConstants.WSIF_WSDLFACTORY);
WSDLFactory factory = WSDLFactory.newInstance();
WSDLReader wsdlReader = factory.newWSDLReader();
wsdlReader.setFeature(Constants.FEATURE_VERBOSE, false);
try {
String url = (contextURL == null) ? null : contextURL.toString();
Definition def = wsdlReader.readWSDL(url, wsdlLoc, cl);
if (oldPropValue != null) {
props.setProperty(DEF_FACTORY_PROPERTY_NAME, oldPropValue);
} else {
props.remove(DEF_FACTORY_PROPERTY_NAME);
}
Tr.exitExpandWsdl(def);
return def;
} catch (WSDLException e) {
// Log message
MessageLogger messageLog =
MessageLogger.newMessageLogger("WSIF",
"org.apache.wsif.catalog.Messages");
messageLog.message(
WSIFConstants.TYPE_ERROR,
"WSIF.0002E",
new Object[] { wsdlLoc });
messageLog.destroy();
// End message
throw e;
}
}
/**
* Read WSDL - it is different from standard readWSDL method as it is
* using extensibility elements that were registered for dynamic port
* factory.
*/
public static Definition readWSDL(String contextURL, Reader reader)
throws WSDLException {
Tr.entry(null, contextURL, reader);
initializeProviders();
Properties props = System.getProperties();
String oldPropValue = props.getProperty(DEF_FACTORY_PROPERTY_NAME);
props.setProperty(DEF_FACTORY_PROPERTY_NAME, WSIFConstants.WSIF_WSDLFACTORY);
WSDLFactory factory = WSDLFactory.newInstance();
WSDLReader wsdlReader = factory.newWSDLReader();
wsdlReader.setFeature(Constants.FEATURE_VERBOSE, false);
Definition def = wsdlReader.readWSDL(contextURL, new InputSource(reader));
if (oldPropValue != null) {
props.setProperty(DEF_FACTORY_PROPERTY_NAME, oldPropValue);
} else {
props.remove(DEF_FACTORY_PROPERTY_NAME);
}
Tr.exitExpandWsdl(def);
return def;
}
/**
* Read WSDL - it is different from standard readWSDL method as it is
* using extensibility elements that were registered for dynamic port
* factory.
*/
public static Definition readWSDL(String contextURL, Document wsdlDocument)
throws WSDLException {
Tr.entry(null, contextURL, wsdlDocument);
initializeProviders();
Properties props = System.getProperties();
String oldPropValue = props.getProperty(DEF_FACTORY_PROPERTY_NAME);
props.setProperty(DEF_FACTORY_PROPERTY_NAME, WSIFConstants.WSIF_WSDLFACTORY);
WSDLFactory factory = WSDLFactory.newInstance();
WSDLReader wsdlReader = factory.newWSDLReader();
wsdlReader.setFeature(Constants.FEATURE_VERBOSE, false);
Definition def = wsdlReader.readWSDL(contextURL, wsdlDocument);
if (oldPropValue != null) {
props.setProperty(DEF_FACTORY_PROPERTY_NAME, oldPropValue);
} else {
props.remove(DEF_FACTORY_PROPERTY_NAME);
}
Tr.exitExpandWsdl(def);
return def;
}
/**
* Read WSDL - it is different from standard readWSDL method as it is
* using extensibility elements that were registered for dynamic port
* factory.
*/
public static Definition readWSDL(
String contextURL,
Element wsdlServicesElement)
throws WSDLException {
Tr.entry(null, contextURL, wsdlServicesElement);
initializeProviders();
Properties props = System.getProperties();
String oldPropValue = props.getProperty(DEF_FACTORY_PROPERTY_NAME);
props.setProperty(DEF_FACTORY_PROPERTY_NAME, WSIFConstants.WSIF_WSDLFACTORY);
WSDLFactory factory = WSDLFactory.newInstance();
WSDLReader wsdlReader = factory.newWSDLReader();
wsdlReader.setFeature(Constants.FEATURE_VERBOSE, false);
Definition def = wsdlReader.readWSDL(contextURL, wsdlServicesElement);
if (oldPropValue != null) {
props.setProperty(DEF_FACTORY_PROPERTY_NAME, oldPropValue);
} else {
props.remove(DEF_FACTORY_PROPERTY_NAME);
}
Tr.exitExpandWsdl(def);
return def;
}
/**
* Write WSDL - it is different from standard writeWSDL method as it is
* using extensibility elements that were registered for dynamic port
* factory.
*/
public static void writeWSDL(Definition def, Writer sink)
throws WSDLException {
Tr.entry(null, def, sink);
Properties props = System.getProperties();
String oldPropValue = props.getProperty(DEF_FACTORY_PROPERTY_NAME);
props.setProperty(DEF_FACTORY_PROPERTY_NAME, WSIFConstants.WSIF_WSDLFACTORY);
WSDLFactory factory = WSDLFactory.newInstance();
WSDLWriter wsdlWriter = factory.newWSDLWriter();
wsdlWriter.writeWSDL(def, sink);
if (oldPropValue != null) {
props.setProperty(DEF_FACTORY_PROPERTY_NAME, oldPropValue);
} else {
props.remove(DEF_FACTORY_PROPERTY_NAME);
}
Tr.exit();
}
public static Definition getDefinitionFromLocation(
String contextURL,
String location)
throws WSIFException {
Tr.entry(null, contextURL, location);
if (location == null) {
throw new WSIFException("WSDL location must not be null.");
}
Definition def = null;
try {
def = WSIFUtils.readWSDL(contextURL, location);
} catch (WSDLException e) {
throw new WSIFException("Problem reading WSDL document.", e);
}
Tr.exitExpandWsdl(def);
return def;
}
public static Definition getDefinitionFromContent(
String contextURL,
String content)
throws WSIFException {
Tr.entry(null, contextURL, content);
if (content == null) {
throw new WSIFException("WSDL content must not be null.");
}
Definition def = null;
try {
def = WSIFUtils.readWSDL(contextURL, new StringReader(content));
} catch (WSDLException e) {
throw new WSIFException("Problem reading WSDL document.", e);
}
Tr.exitExpandWsdl(def);
return def;
}
private static Boolean providersInitialized = new Boolean(false);
/**
* Initialize the WSIF providers. Each provider initializes its WSDL
* extension registries. This has no effect if AutoLoad providers has
* been turned off on WSIFServiceImpl ... in that case it is the
* responsibility of the application to initialize providers.
*/
private static void initializeProviders() {
synchronized (providersInitialized) {
if (!providersInitialized.booleanValue()) {
WSIFServiceImpl.getDynamicWSIFProvider("/");
providersInitialized = new Boolean(true);
}
}
}
// the following code copied from JCAUtils
public static WSIFFormatHandler getFormatHandler(
Part part,
Definition definition,
javax.wsdl.Binding binding)
throws
java.lang.InstantiationException,
java.lang.IllegalAccessException,
java.lang.ClassNotFoundException {
Tr.entry(null, part, definition, binding);
WSIFFormatHandler formatHandler = null;
javax.wsdl.QName partTypeQName = part.getTypeName();
if (partTypeQName == null)
partTypeQName = part.getElementName();
if (partTypeQName == null)
throw new ClassNotFoundException(part.getName());
String typePackageName =
getPackageNameFromNamespaceURI(partTypeQName.getNamespaceURI());
String formatHandlerName = typePackageName;
String bindingShortName =
getPackageNameFromXMLName(definition.getPrefix(getBindingNamespace(binding)));
if (bindingShortName != null)
formatHandlerName = formatHandlerName + DOT + bindingShortName;
if (getFormatStylePackage(binding) != null)
formatHandlerName = formatHandlerName + DOT +
getFormatStylePackage(binding);
String formatHandlerShortName =
formatHandlerName
+ DOT
+ getJavaClassNameFromXMLName(partTypeQName.getLocalPart());
try {
ClassLoader cl = Thread.currentThread().getContextClassLoader();
formatHandler =
(WSIFFormatHandler) cl
.loadClass(formatHandlerShortName + FORMAT_HANDLER)
.newInstance();
} catch (ClassNotFoundException exn1) {
try {
ClassLoader cl = Thread.currentThread().getContextClassLoader();
formatHandler =
(WSIFFormatHandler) cl
.loadClass(formatHandlerShortName + ELEMENT_FORMAT_HANDLER)
.newInstance();
} catch (ClassNotFoundException exn2) {
try {
formatHandler =
(WSIFFormatHandler) Class
.forName(formatHandlerShortName + FORMAT_HANDLER)
.newInstance();
} catch (ClassNotFoundException exn3) {
//try {
formatHandler =
(WSIFFormatHandler) Class
.forName(formatHandlerShortName + ELEMENT_FORMAT_HANDLER)
.newInstance();
//}
//catch (ClassNotFoundException exn4) {
// throw new
ClassNotFoundException(JCAResource.get("IWAA0101E", formatHandlerName));
//}
}
}
}
//catch (Throwable exn3) {
//throw new ClassNotFoundException(JCAResource.get("IWAA0102E",
formatHandlerName, exn3.getLocalizedMessage()));
//}
if (formatHandler == null)
//throw new ClassNotFoundException(JCAResource.get("IWAA0101E",
formatHandlerName));
throw new ClassNotFoundException(formatHandlerName);
else {
Tr.exit(formatHandler);
return formatHandler;
}
}
public static String getPackageNameFromNamespaceURI(String namespaceURI) {
Tr.entry(null, namespaceURI);
// Get the segments in the namespace URI
List segments = getNamespaceURISegments(namespaceURI);
StringBuffer packageNameBuffer = new StringBuffer();
for (int i = 0; i < segments.size(); i++) {
String name;
// The first segment is the host name
if (i == 0) {
// Turn segment into a valid package segment name
name = getPackageNameFromXMLName((String) segments.get(i));
// Reverse its components
StringTokenizer tokenizer = new StringTokenizer(name, ".");
List host = new ArrayList();
for (; tokenizer.hasMoreTokens();) {
host.add(0, tokenizer.nextToken());
}
StringBuffer buffer = new StringBuffer();
for (Iterator hi = host.iterator(); hi.hasNext();) {
if (buffer.length() != 0)
buffer.append('.');
String nextSegment = (String) hi.next();
if
(!Character.isJavaIdentifierStart(nextSegment.toCharArray()[0]))
nextSegment = "_" + nextSegment;
buffer.append(nextSegment);
}
name = buffer.toString();
} else {
// Turn segment into a valid java name
name = getJavaNameFromXMLName((String) segments.get(i));
if (!Character.isJavaIdentifierStart(name.toCharArray()[0]))
name = "_" + name;
}
// Concatenate segments, separated by '.'
if (name.length() == 0)
continue;
if (packageNameBuffer.length() != 0)
packageNameBuffer.append('.');
packageNameBuffer.append(name);
}
Tr.exit(packageNameBuffer.toString());
return packageNameBuffer.toString();
}
public static String getJavaNameFromXMLName(String xmlName, String delims) {
Tr.entry(null, xmlName, delims);
StringTokenizer tokenizer = new StringTokenizer(xmlName, delims);
StringBuffer buffer = new StringBuffer();
while (tokenizer.hasMoreTokens()) {
buffer.append(tokenizer.nextToken());
}
String result = buffer.toString();
if (!Character.isJavaIdentifierStart(result.toCharArray()[0]))
result = "_" + result;
Tr.exit(result);
return result;
}
public static String getJavaNameFromXMLName(String xmlName) {
Tr.entry(null, xmlName);
String s =
getJavaNameFromXMLName(
xmlName,
"\u002D\u002E\u003A\u005F\u00B7\u0387\u06DD\u06DE");
Tr.exit(s);
return s;
}
public static String getPackageNameFromXMLName(String xmlName) {
Tr.entry(null, xmlName);
// Tokenize, don't consider '.' as a delimiter here
String name =
getJavaNameFromXMLName(xmlName,
"\u002D\u003A\u005F\u00B7\u0387\u06DD\u06DE");
// Tokenize using delimiter '.' and add the tokens separated by '.'
// This is to ensure that we have no heading/trailing/dup '.' in the string
StringTokenizer tokenizer = new StringTokenizer(name, ".");
StringBuffer buffer = new StringBuffer();
for (; tokenizer.hasMoreTokens();) {
if (buffer.length() != 0)
buffer.append('.');
// -->
String nextSegment = (String) tokenizer.nextToken();
if (!Character.isJavaIdentifierStart(nextSegment.toCharArray()[0]))
nextSegment = "_" + nextSegment;
buffer.append(nextSegment);
// buffer.append(tokenizer.nextToken());
// <--
}
Tr.exit(buffer.toString());
return buffer.toString();
}
private static List getNamespaceURISegments(String namespaceURI) {
Tr.entry(null, namespaceURI);
// Tokenize
List segments = new ArrayList();
StringTokenizer tokenizer = new StringTokenizer(namespaceURI, ":/");
while (tokenizer.hasMoreTokens()) {
segments.add(tokenizer.nextToken());
}
// Remove protocol
if (!segments.isEmpty()) {
try {
URL url = new URL(namespaceURI);
if (segments.get(0).equals(url.getProtocol()))
segments.remove(0);
} catch (MalformedURLException exn) {
}
}
Tr.exit(segments);
return segments;
}
private static String getBindingNamespace(Binding bindingModel) {
Tr.entry(null, bindingModel);
Iterator iterator = bindingModel.getExtensibilityElements().iterator();
String returnNamespace = null;
while (iterator.hasNext()) {
ExtensibilityElement ee = (ExtensibilityElement) iterator.next();
if (returnNamespace == null) {
String namespace = ee.getElementType().getNamespaceURI();
if (!namespace.endsWith(PHYSICALREP) &&
!namespace.endsWith(FORMATBINDING)) {
returnNamespace = namespace;
}
}
}
Tr.exit(returnNamespace);
return returnNamespace;
}
public static String getFormatStylePackage(Binding bindingModel) {
Tr.entry(null, bindingModel);
Iterator iterator = bindingModel.getExtensibilityElements().iterator();
String formatPackageName = null;
while (iterator.hasNext()) {
ExtensibilityElement ee = (ExtensibilityElement) iterator.next();
if (ee instanceof TypeMapping) {
TypeMapping typeMapping = (TypeMapping) ee;
formatPackageName = typeMapping.getEncoding();
if (typeMapping.getStyle() != null)
formatPackageName += typeMapping.getStyle();
}
if (formatPackageName != null)
break;
}
String s = null;
if (formatPackageName != null) {
// return
getJavaNameFromXMLName(formatPackageName);
s = getPackageNameFromXMLName(formatPackageName);
} else {
s = formatPackageName;
}
Tr.exit(s);
return s;
}
public static String getFormatHandlerName(
Part part,
Definition definition,
Binding binding)
throws
java.lang.InstantiationException,
java.lang.IllegalAccessException,
java.lang.ClassNotFoundException {
Tr.entry(null, part, definition, binding);
javax.wsdl.QName partTypeQName = part.getTypeName();
if (partTypeQName == null)
partTypeQName = part.getElementName();
if (partTypeQName == null)
throw new ClassNotFoundException(part.getName());
String typePackageName =
getPackageNameFromNamespaceURI(partTypeQName.getNamespaceURI());
String formatHandlerName = typePackageName;
String bindingShortName =
getPackageNameFromXMLName(definition.getPrefix(getBindingNamespace(binding)));
if (bindingShortName != null)
formatHandlerName = formatHandlerName + DOT + bindingShortName;
if (getFormatStylePackage(binding) != null)
formatHandlerName = formatHandlerName + DOT +
getFormatStylePackage(binding);
formatHandlerName =
formatHandlerName
+ DOT
+ getJavaClassNameFromXMLName(partTypeQName.getLocalPart())
+ FORMAT_HANDLER;
Tr.exit(formatHandlerName);
return formatHandlerName;
}
public static String getJavaClassNameFromXMLName(String xmlName) {
Tr.entry(null, xmlName);
String s =
getJavaClassNameFromXMLName(
xmlName,
"\u002D\u002E\u003A\u005F\u00B7\u0387\u06DD\u06DE");
Tr.exit(s);
return s;
}
public static String getJavaClassNameFromXMLName(
String xmlName,
String delims) {
Tr.entry(null, xmlName, delims);
StringTokenizer tokenizer = new StringTokenizer(xmlName, delims);
StringBuffer buffer = new StringBuffer();
while (tokenizer.hasMoreTokens()) {
String nextSegment = (String) tokenizer.nextToken();
if (nextSegment.length() > 0) {
nextSegment =
Character.toUpperCase((nextSegment.toCharArray())[0])
+ nextSegment.substring(1);
}
buffer.append(nextSegment);
}
String result = buffer.toString();
if (!Character.isJavaIdentifierStart(result.toCharArray()[0]))
result = "_" + result;
Tr.exit(result);
return result;
}
}
1.2 +2 -1 xml-axis-wsif/java/test/faults/FaultMsgTest.java
Index: FaultMsgTest.java
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/test/faults/FaultMsgTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- FaultMsgTest.java 6 Jun 2002 08:28:55 -0000 1.1
+++ FaultMsgTest.java 11 Jun 2002 15:14:51 -0000 1.2
@@ -74,7 +74,8 @@
import org.apache.wsif.WSIFServiceFactory;
import org.apache.wsif.WSIFServiceImpl;
import org.apache.wsif.providers.soap.apacheaxis.WSIFDynamicProvider_ApacheAxis;
-import org.apache.wsif.stub.WSIFUtils;
+import org.apache.wsif.util.WSIFUtils;
+
import util.TestUtilities;
/**
1.2 +2 -1
xml-axis-wsif/java/test/providers/ProvidersInitialisationTest.java
Index: ProvidersInitialisationTest.java
===================================================================
RCS file:
/home/cvs/xml-axis-wsif/java/test/providers/ProvidersInitialisationTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ProvidersInitialisationTest.java 6 Jun 2002 08:28:58 -0000 1.1
+++ ProvidersInitialisationTest.java 11 Jun 2002 15:14:51 -0000 1.2
@@ -67,7 +67,8 @@
import org.apache.wsif.WSIFPort;
import org.apache.wsif.WSIFService;
import org.apache.wsif.WSIFServiceFactory;
-import org.apache.wsif.stub.WSIFUtils;
+import org.apache.wsif.util.WSIFUtils;
+
import util.TestUtilities;
public class ProvidersInitialisationTest extends TestCase {
1.2 +1 -1
xml-axis-wsif/java/src/org/apache/wsif/providers/WSIFDynamicTypeMap.java
Index: WSIFDynamicTypeMap.java
===================================================================
RCS file:
/home/cvs/xml-axis-wsif/java/src/org/apache/wsif/providers/WSIFDynamicTypeMap.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- WSIFDynamicTypeMap.java 6 Jun 2002 08:28:50 -0000 1.1
+++ WSIFDynamicTypeMap.java 11 Jun 2002 15:14:51 -0000 1.2
@@ -64,7 +64,7 @@
import javax.wsdl.QName;
import org.apache.wsif.logging.Tr;
-import org.apache.wsif.stub.WSIFUtils;
+import org.apache.wsif.util.WSIFUtils;
/**
* Container for type mappings that can be used by dynamic providers.
1.2 +2 -2
xml-axis-wsif/java/src/org/apache/wsif/providers/jms/JMSMessage.java
Index: JMSMessage.java
===================================================================
RCS file:
/home/cvs/xml-axis-wsif/java/src/org/apache/wsif/providers/jms/JMSMessage.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- JMSMessage.java 6 Jun 2002 08:28:51 -0000 1.1
+++ JMSMessage.java 11 Jun 2002 15:14:51 -0000 1.2
@@ -83,8 +83,8 @@
import org.apache.wsif.WSIFException;
import org.apache.wsif.format.jms.JMSFormatHandler;
import org.apache.wsif.logging.Tr;
-import org.apache.wsif.stub.WSIFUtils;
import org.apache.wsif.util.WSIFDefaultMessage;
+import org.apache.wsif.util.WSIFUtils;
import org.apache.wsif.wsdl.extensions.format.TypeMapping;
import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.TextSerializer;
@@ -677,7 +677,7 @@
else
fh = (org.apache.wsif.format.jms.JMSFormatHandler)
//antxxx
org.apache.wsif.jca.util.JCAUtil.getFormatHandler(
- org.apache.wsif.stub.WSIFUtils.getFormatHandler(
+ org.apache.wsif.util.WSIFUtils.getFormatHandler(
partModel,
this.fieldDefinitionModel,
this.fieldBindingModel);
1.2 +2 -1 xml-axis-wsif/java/test/headers/HeadersTest.java
Index: HeadersTest.java
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/test/headers/HeadersTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HeadersTest.java 7 Jun 2002 08:25:45 -0000 1.1
+++ HeadersTest.java 11 Jun 2002 15:14:51 -0000 1.2
@@ -72,8 +72,9 @@
import org.apache.wsif.WSIFServiceFactory;
import org.apache.wsif.WSIFServiceImpl;
import org.apache.wsif.providers.soap.apacheaxis.WSIFDynamicProvider_ApacheAxis;
-import org.apache.wsif.stub.WSIFUtils;
import org.apache.wsif.util.WSIFDefaultMessage;
+import org.apache.wsif.util.WSIFUtils;
+
import util.TestUtilities;
/**
1.6 +1 -1 xml-axis-wsif/java/test/async/AsyncTest.java
Index: AsyncTest.java
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/test/async/AsyncTest.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- AsyncTest.java 10 Jun 2002 10:35:29 -0000 1.5
+++ AsyncTest.java 11 Jun 2002 15:14:51 -0000 1.6
@@ -75,8 +75,8 @@
import org.apache.wsif.util.WSIFDefaultMessage;
import org.apache.wsif.util.WSIFDefaultCorrelationService;
import org.apache.wsif.util.WSIFCorrelationServiceLocator;
+import org.apache.wsif.util.WSIFUtils;
import org.apache.wsif.providers.soap.apacheaxis.WSIFDynamicProvider_ApacheAxis;
-import org.apache.wsif.stub.WSIFUtils;
import util.TestUtilities;
import org.apache.wsif.util.jms.JMSAsyncListener;