/*
* Copyright 2001-2004 The Apache Software Foundation.
*
* Licensed 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.axis.transport.http;
import org.apache.axis.AxisEngine;
import org.apache.axis.AxisFault;
import org.apache.axis.MessageContext;
import org.apache.axis.client.Call;
import org.apache.axis.client.Transport;
/**
* Extends Transport by implementing the setupMessageContext function to
* set HTTP-specific message context fields and transport chains.
* May not even be necessary if we arrange things differently somehow.
* Can hold state relating to URL properties.
*
* @author Rob Jellinghaus (robj@unrealities.com)
* @author Doug Davis (dug@us.ibm.com)
* @author Glen Daniels (gdaniels@allaire.com)
*/
public class HTTPTransport extends Transport
{
public static final String DEFAULT_TRANSPORT_NAME = "http";
/**
* HTTP properties
*/
public static final String URL = MessageContext.TRANS_URL;
private Object cookie;
private Object cookie2;
private String action;
public HTTPTransport () {
transportName = DEFAULT_TRANSPORT_NAME;
}
/**
* helper constructor
*/
public HTTPTransport (String url, String action)
{
transportName = DEFAULT_TRANSPORT_NAME;
this.url = url;
this.action = action;
}
/**
* Set up any transport-specific derived properties in the message context.
* @param mc the context to set up
* @param call the call (unused?)
* @param engine the engine containing the registries
* @throws AxisFault if service cannot be found
*/
public void setupMessageContextImpl(MessageContext mc,
Call call,
AxisEngine engine)
throws AxisFault
{
if (action != null) {
mc.setUseSOAPAction(true);
mc.setSOAPActionURI(action);
}
// Set up any cookies we know about
if (cookie != null)
mc.setProperty(HTTPConstants.HEADER_COOKIE, cookie);
if (cookie2 != null)
mc.setProperty(HTTPConstants.HEADER_COOKIE2, cookie2);
// Allow the SOAPAction to determine the service, if the service
// (a) has not already been determined, and (b) if a service matching
// the soap action has been deployed.
if (mc.getService() == null) {
mc.setTargetService( (String)mc.getSOAPActionURI() );
}
}
public void processReturnedMessageContext(MessageContext context) {
cookie = context.getProperty(HTTPConstants.HEADER_COOKIE);
cookie2 = context.getProperty(HTTPConstants.HEADER_COOKIE2);
}
}
|