blob: 75eee86644d3a5596f2389eb141491543d044c51 [file] [log] [blame]
<%
/*******************************************************************************
* Copyright (c) 2001, 2007 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
* yyyymmdd bug Email and other contact information
* -------- -------- -----------------------------------------------------------
* 20060222 127443 jesper@selskabet.org - Jesper S Moller
* 20060726 144824 mahutch@ca.ibm.com - Mark Hutchinson
* 20070305 117034 makandre@ca.ibm.com - Andrew Mak, Web Services Explorer should support SOAP Headers
* 20070413 176493 makandre@ca.ibm.com - Andrew Mak, WSE: Make message/transport stack pluggable
*******************************************************************************/
%>
<%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.wsdl.perspective.*,
org.eclipse.wst.ws.internal.explorer.platform.wsdl.datamodel.*,
org.eclipse.wst.ws.internal.explorer.platform.wsdl.fragment.*,
org.eclipse.wst.ws.internal.explorer.platform.wsdl.constants.*,
org.eclipse.wst.ws.internal.explorer.platform.wsdl.util.*,
org.eclipse.wst.ws.internal.explorer.platform.constants.*,
org.eclipse.wst.ws.internal.explorer.platform.util.*,
org.eclipse.wst.ws.internal.explorer.transport.*,
org.eclipse.wst.wsdl.binding.soap.SOAPHeader,
org.w3c.dom.*,
javax.wsdl.*,
javax.wsdl.extensions.ExtensibilityElement,
javax.wsdl.extensions.soap.SOAPBody,
java.util.*" %>
<jsp:useBean id="controller" class="org.eclipse.wst.ws.internal.explorer.platform.perspective.Controller" scope="session"/>
<jsp:useBean id="fragID" class="java.lang.StringBuffer" scope="request"/>
<%
WSDLPerspective wsdlPerspective = controller.getWSDLPerspective();
WSDLOperationElement operElement = (WSDLOperationElement)(wsdlPerspective.getNodeManager().getSelectedNode().getTreeElement());
ISOAPTransport soapTransport = operElement.getSOAPTransportProvider().newTransport();
ISOAPMessage soapMessage = soapTransport.newMessage(operElement.getMessageContext());
operElement.setPropertyAsObject(WSDLModelConstants.PROP_SOAP_REQUEST_TMP, soapMessage);
Hashtable soapEnvelopeNamespaceTable = new Hashtable(soapMessage.getNamespaceTable());
String cachedHeaderContent = operElement.getPropertyAsString(WSDLModelConstants.PROP_SOURCE_CONTENT_HEADER);
String cachedBodyContent = operElement.getPropertyAsString(WSDLModelConstants.PROP_SOURCE_CONTENT);
// if either header or body has been cached, need to ensure namespace table is updated
// from the cached copy
if (cachedHeaderContent != null || cachedBodyContent != null) {
if (SOAPMessageUtils.decodeNamespaceTable(soapEnvelopeNamespaceTable, operElement))
soapMessage.setNamespaceTable(soapEnvelopeNamespaceTable);
}
String headerContent;
String bodyContent;
if (cachedHeaderContent != null)
headerContent = cachedHeaderContent;
else {
try {
SOAPMessageUtils.setHeaderContentFromModel(soapEnvelopeNamespaceTable, operElement, soapMessage);
// ensure namespace table updated in message before serialize operation
soapMessage.setNamespaceTable(soapEnvelopeNamespaceTable);
headerContent = soapTransport.newSerializer().serialize(ISOAPMessage.HEADER_CONTENT, soapMessage);
}
catch (Exception e) {
headerContent = "";
}
}
if (cachedBodyContent != null)
bodyContent = cachedBodyContent;
else {
try {
SOAPMessageUtils.setBodyContentFromModel(soapEnvelopeNamespaceTable, operElement, soapMessage);
// ensure namespace table updated in message before serialize operation
soapMessage.setNamespaceTable(soapEnvelopeNamespaceTable);
bodyContent = soapTransport.newSerializer().serialize(ISOAPMessage.BODY_CONTENT, soapMessage);
}
catch (Exception e) {
bodyContent = "";
}
}
// cache the namespace table
Enumeration enm = soapEnvelopeNamespaceTable.keys();
while (enm.hasMoreElements())
{
String uri = (String)enm.nextElement();
String prefix = (String)soapEnvelopeNamespaceTable.get(uri);
String value = SoapHelper.encodeNamespaceDeclaration(prefix, uri);
%>
<input type="hidden" name="<%=FragmentConstants.SOURCE_CONTENT_NAMESPACE%>" value="<%=value%>">
<%
}
%>
<table width="95%" border=0 cellpadding=0 cellspacing=0>
<tr>
<td height=30 valign="bottom" class="labels">
<%
Element soapEnvelopeElement = soapMessage.getEnvelope(false);
StringBuffer header = new StringBuffer("<");
header.append(soapEnvelopeElement.getTagName());
NamedNodeMap attributes = soapEnvelopeElement.getAttributes();
int numberOfAttributes = attributes.getLength();
if (numberOfAttributes == 0)
header.append('>');
%>
<%=HTMLUtils.charactersToHTMLEntitiesStrict(header.toString())%>
</td>
</tr>
</table>
<%
for (int i=0;i<numberOfAttributes;i++)
{
header.setLength(0);
Node attrNode = attributes.item(i);
header.append(attrNode.getNodeName()).append("=\"").append(attrNode.getNodeValue()).append('\"');
if (i == numberOfAttributes-1)
header.append('>');
%>
<table width="95%" border=0 cellpadding=0 cellspacing=0>
<tr>
<td width=8>
<img width=8 height=16 src="<%=response.encodeURL(controller.getPathWithContext("images/space.gif"))%>" alt="">
</td>
<td valign="bottom" class="labels">
<%=HTMLUtils.charactersToHTMLEntities(header.toString())%>
</td>
</tr>
</table>
<%
}
Element soapHeaderElement = soapMessage.getHeader(false);
header.setLength(0);
header.append('<').append(soapHeaderElement.getTagName());
attributes = soapHeaderElement.getAttributes();
numberOfAttributes = attributes.getLength();
if (numberOfAttributes == 0)
header.append('>');
%>
<table width="95%" border=0 cellpadding=0 cellspacing=0>
<tr>
<td width=8>
<img width=8 height=16 src="<%=response.encodeURL(controller.getPathWithContext("images/space.gif"))%>" alt="">
</td>
<td valign="bottom" class="labels">
<%=HTMLUtils.charactersToHTMLEntities(header.toString())%>
</td>
</tr>
</table>
<%
for (int i=0;i<numberOfAttributes;i++)
{
header.setLength(0);
Node attrNode = attributes.item(i);
header.append(attrNode.getNodeName()).append("=\"").append(attrNode.getNodeValue()).append('\"');
if (i == numberOfAttributes-1)
header.append('>');
%>
<table width="95%" border=0 cellpadding=0 cellspacing=0>
<tr>
<td width=16>
<img width=16 height=16 src="<%=response.encodeURL(controller.getPathWithContext("images/space.gif"))%>" alt="">
</td>
<td valign="bottom" class="labels">
<%=HTMLUtils.charactersToHTMLEntities(header.toString())%>
</td>
</tr>
</table>
<%
}
%>
<table border=0 cellpadding=3 cellspacing=3>
<tr>
<td width="16">
<img width="16" height=16 src="<%=response.encodeURL(controller.getPathWithContext("images/space.gif"))%>" alt="">
</td>
<td valign="center" align="left" nowrap>
<input type="file" name="<%=WSDLActionInputs.SELECTED_FILE_HEADER%>" title="<%=wsdlPerspective.getMessage("FORM_CONTROL_TITLE_SOAP_FILE")%>">
</td>
<td valign="center" align="left" class="labels" nowrap>
<a href="javascript:doAction('<%=WSDLActionInputs.SUBMISSION_ACTION_BROWSE_FILE_HEADER%>')"><%=wsdlPerspective.getMessage("BUTTON_LABEL_LOAD")%></a>
</td>
<td valign="center" align="left" class="labels" nowrap>
<a href="javascript:doAction('<%=WSDLActionInputs.SUBMISSION_ACTION_SAVE_AS_HEADER%>')"><%=wsdlPerspective.getMessage("BUTTON_LABEL_SAVE_AS")%></a>
</td>
</tr>
</table>
<table width="95%" border=0 cellpadding=3 cellspacing=3>
<tr>
<td width="16">
<img width="16" height="16" src="<%=response.encodeURL(controller.getPathWithContext("images/space.gif"))%>" alt="">
</td>
<td width="100%">
<textarea id="soap_header_content" name="<%=FragmentConstants.SOURCE_CONTENT_HEADER%>" class="textareaenter"><%=HTMLUtils.charactersToHTMLEntitiesStrict(headerContent)%></textarea>
</td>
</tr>
</table>
<%
header.setLength(0);
header.append("</").append(soapHeaderElement.getTagName()).append('>');
%>
<table width="95%" cellpadding=1 cellspacing=0>
<tr>
<td width=8>
<img width=8 height=16 src="<%=response.encodeURL(controller.getPathWithContext("images/space.gif"))%>" alt="">
</td>
<td valign="bottom" class="labels">
<%=HTMLUtils.charactersToHTMLEntities(header.toString())%>
</td>
</tr>
</table>
<%
Element soapBodyElement = soapMessage.getBody(false);
header.setLength(0);
header.append('<').append(soapBodyElement.getTagName());
attributes = soapBodyElement.getAttributes();
numberOfAttributes = attributes.getLength();
if (numberOfAttributes == 0)
header.append('>');
%>
<table width="95%" border=0 cellpadding=0 cellspacing=0>
<tr>
<td width=8>
<img width=8 height=16 src="<%=response.encodeURL(controller.getPathWithContext("images/space.gif"))%>" alt="">
</td>
<td valign="bottom" class="labels">
<%=HTMLUtils.charactersToHTMLEntities(header.toString())%>
</td>
</tr>
</table>
<%
for (int i=0;i<numberOfAttributes;i++)
{
header.setLength(0);
Node attrNode = attributes.item(i);
header.append(attrNode.getNodeName()).append("=\"").append(attrNode.getNodeValue()).append('\"');
if (i == numberOfAttributes-1)
header.append('>');
%>
<table width="95%" border=0 cellpadding=0 cellspacing=0>
<tr>
<td width=16>
<img width=16 height=16 src="<%=response.encodeURL(controller.getPathWithContext("images/space.gif"))%>" alt="">
</td>
<td valign="bottom" class="labels">
<%=HTMLUtils.charactersToHTMLEntities(header.toString())%>
</td>
</tr>
</table>
<%
}
Element wrapperElement = null;
if (!operElement.isDocumentStyle())
{
// Generate an RPC style wrapper element.
wrapperElement = (Element) soapBodyElement.getFirstChild();
header.setLength(0);
header.append('<').append(wrapperElement.getTagName());
attributes = wrapperElement.getAttributes();
numberOfAttributes = attributes.getLength();
if (numberOfAttributes == 0)
header.append('>');
%>
<table width="95%" border=0 cellpadding=0 cellspacing=0>
<tr>
<td width=16>
<img width=16 height=16 src="<%=response.encodeURL(controller.getPathWithContext("images/space.gif"))%>" alt="">
</td>
<td valign="bottom" class="labels">
<%=HTMLUtils.charactersToHTMLEntities(header.toString())%>
</td>
</tr>
</table>
<%
for (int i=0;i<numberOfAttributes;i++)
{
header.setLength(0);
Node attrNode = attributes.item(i);
header.append(attrNode.getNodeName()).append("=\"").append(attrNode.getNodeValue()).append('\"');
if (i == numberOfAttributes-1)
header.append('>');
%>
<table width="95%" border=0 cellpadding=0 cellspacing=0>
<tr>
<td width=24>
<img width=24 height=16 src="<%=response.encodeURL(controller.getPathWithContext("images/space.gif"))%>" alt="">
</td>
<td valign="bottom" class="labels">
<%=HTMLUtils.charactersToHTMLEntities(header.toString())%>
</td>
</tr>
</table>
<%
}
}
int sourceContentIndentationImageWidth = 16;
if (wrapperElement != null)
sourceContentIndentationImageWidth += 8;
%>
<table border=0 cellpadding=3 cellspacing=3>
<tr>
<td width=<%=sourceContentIndentationImageWidth%>>
<img width=<%=sourceContentIndentationImageWidth%> height=16 src="<%=response.encodeURL(controller.getPathWithContext("images/space.gif"))%>" alt="">
</td>
<td valign="center" align="left" nowrap>
<input type="file" name="<%=WSDLActionInputs.SELECTED_FILE%>" title="<%=wsdlPerspective.getMessage("FORM_CONTROL_TITLE_SOAP_FILE")%>">
</td>
<td valign="center" align="left" class="labels" nowrap>
<a href="javascript:doAction('<%=WSDLActionInputs.SUBMISSION_ACTION_BROWSE_FILE%>')"><%=wsdlPerspective.getMessage("BUTTON_LABEL_LOAD")%></a>
</td>
<td valign="center" align="left" class="labels" nowrap>
<a href="javascript:doAction('<%=WSDLActionInputs.SUBMISSION_ACTION_SAVE_AS%>')"><%=wsdlPerspective.getMessage("BUTTON_LABEL_SAVE_AS")%></a>
</td>
</tr>
</table>
<table width="95%" border=0 cellpadding=3 cellspacing=3>
<tr>
<td width=<%=sourceContentIndentationImageWidth%>>
<img width=<%=sourceContentIndentationImageWidth%> height=16 src="<%=response.encodeURL(controller.getPathWithContext("images/space.gif"))%>" alt="">
</td>
<td width="100%">
<textarea id="soap_body_content" name="<%=FragmentConstants.SOURCE_CONTENT%>" class="bigtextareaenter"><%=HTMLUtils.charactersToHTMLEntitiesStrict(bodyContent)%></textarea>
</td>
</tr>
</table>
<%
if (wrapperElement != null)
{
header.setLength(0);
header.append("</").append(wrapperElement.getTagName()).append('>');
%>
<table width="95%" border=0 cellpadding=0 cellspacing=0>
<tr>
<td width=16>
<img width=16 height=16 src="<%=response.encodeURL(controller.getPathWithContext("images/space.gif"))%>" alt="">
</td>
<td valign="bottom" class="labels">
<%=HTMLUtils.charactersToHTMLEntities(header.toString())%>
</td>
</tr>
</table>
<%
}
header.setLength(0);
header.append("</").append(soapBodyElement.getTagName()).append('>');
%>
<table width="95%" cellpadding=1 cellspacing=0>
<tr>
<td width=8>
<img width=8 height=16 src="<%=response.encodeURL(controller.getPathWithContext("images/space.gif"))%>" alt="">
</td>
<td valign="bottom" class="labels">
<%=HTMLUtils.charactersToHTMLEntities(header.toString())%>
</td>
</tr>
</table>
<%
header.setLength(0);
header.append("</").append(soapEnvelopeElement.getTagName()).append('>');
%>
<table width="95%" cellpadding=1 cellspacing=0>
<tr>
<td valign="bottom" class="labels">
<%=HTMLUtils.charactersToHTMLEntities(header.toString())%>
</td>
</tr>
</table>