| /******************************************************************************* |
| * Copyright (c) 2002, 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 v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.wst.ws.internal.explorer.platform.wsdl.fragment.util; |
| |
| import java.util.Hashtable; |
| import javax.xml.parsers.ParserConfigurationException; |
| import org.apache.axis.Constants; |
| import org.eclipse.wst.ws.internal.explorer.platform.util.URLUtils; |
| import org.eclipse.wst.ws.internal.explorer.platform.util.XMLUtils; |
| import org.eclipse.wst.ws.internal.explorer.platform.wsdl.constants.FragmentConstants; |
| import org.eclipse.wst.ws.internal.explorer.platform.wsdl.fragment.IXSDFragment; |
| import org.eclipse.wst.ws.internal.explorer.platform.wsdl.fragment.IXSDSimpleAtomicFragment; |
| import org.eclipse.wst.ws.internal.explorer.platform.wsdl.fragment.IXSDSimpleListFragment; |
| import org.w3c.dom.Element; |
| |
| public class HTTPUtil |
| { |
| private HTTPUtil() |
| { |
| } |
| |
| public static String genURLEncodedParameters(IXSDFragment fragment) |
| { |
| if (fragment instanceof IXSDSimpleListFragment) |
| return genURLEncodedParamsFromListFragment((IXSDSimpleListFragment)fragment); |
| else if (fragment instanceof IXSDSimpleAtomicFragment) |
| return genURLEncodedParamsFromAtomicFragment((IXSDSimpleAtomicFragment)fragment); |
| else |
| return genURLEncodedXMLParameters(fragment); |
| } |
| |
| private static String genURLEncodedParamsFromAtomicFragment(IXSDSimpleAtomicFragment fragment) |
| { |
| StringBuffer urlEncodedParam = new StringBuffer(); |
| String[] params = fragment.getParameterValues(fragment.getID()); |
| for (int i = 0; i < params.length; i++) |
| { |
| urlEncodedParam.append(URLUtils.encode(fragment.getName())); |
| urlEncodedParam.append("="); |
| urlEncodedParam.append(URLUtils.encode(params[i])); |
| if (i < params.length - 1) |
| urlEncodedParam.append("&"); |
| } |
| return urlEncodedParam.toString(); |
| } |
| |
| private static String genURLEncodedParamsFromListFragment(IXSDSimpleListFragment fragment) |
| { |
| StringBuffer urlEncodedParam = new StringBuffer(); |
| IXSDFragment[] childFrags = fragment.getAllFragments(); |
| for (int i = 0; i < childFrags.length; i++) |
| { |
| urlEncodedParam.append(URLUtils.encode(fragment.getName())); |
| urlEncodedParam.append("="); |
| String[] params = childFrags[i].getParameterValues(childFrags[i].getID()); |
| StringBuffer paramBuffer = new StringBuffer(); |
| for (int j = 0; j < params.length; j++) |
| { |
| paramBuffer.append(params[j]); |
| if (j < params.length - 1) |
| paramBuffer.append(FragmentConstants.LIST_SEPERATOR); |
| } |
| urlEncodedParam.append(URLUtils.encode(paramBuffer.toString())); |
| if (i < childFrags.length - 1) |
| urlEncodedParam.append("&"); |
| } |
| return urlEncodedParam.toString(); |
| } |
| |
| private static String genURLEncodedXMLParameters(IXSDFragment fragment) |
| { |
| StringBuffer urlEncodedParam = new StringBuffer(); |
| Hashtable soapEnvelopeNamespaceTable = new Hashtable(); |
| soapEnvelopeNamespaceTable.put(Constants.URI_SOAP11_ENV, Constants.NS_PREFIX_SOAP_ENV); |
| soapEnvelopeNamespaceTable.put(Constants.URI_2001_SCHEMA_XSI, Constants.NS_PREFIX_SCHEMA_XSI); |
| soapEnvelopeNamespaceTable.put(Constants.URI_2001_SCHEMA_XSD, Constants.NS_PREFIX_SCHEMA_XSD); |
| Element[] instanceDocuments = new Element[0]; |
| try |
| { |
| instanceDocuments = fragment.genInstanceDocumentsFromParameterValues(true, soapEnvelopeNamespaceTable, XMLUtils.createNewDocument(null)); |
| } |
| catch (ParserConfigurationException pce) |
| { |
| } |
| for (int i = 0; i < instanceDocuments.length; i++) |
| { |
| urlEncodedParam.append(URLUtils.encode(fragment.getName())); |
| urlEncodedParam.append("="); |
| urlEncodedParam.append(URLUtils.encode(XMLUtils.serialize(instanceDocuments[i], true))); |
| if (i < instanceDocuments.length - 1) |
| urlEncodedParam.append("&"); |
| } |
| return urlEncodedParam.toString(); |
| } |
| } |