Return-Path: Delivered-To: apmail-ws-axis-dev-archive@www.apache.org Received: (qmail 36275 invoked from network); 14 Jul 2005 07:37:30 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 14 Jul 2005 07:37:30 -0000 Received: (qmail 82981 invoked by uid 500); 14 Jul 2005 07:37:28 -0000 Delivered-To: apmail-ws-axis-dev-archive@ws.apache.org Received: (qmail 82952 invoked by uid 500); 14 Jul 2005 07:37:27 -0000 Mailing-List: contact axis-cvs-help@ws.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list axis-cvs@ws.apache.org Received: (qmail 82936 invoked by uid 99); 14 Jul 2005 07:37:27 -0000 X-ASF-Spam-Status: No, hits=-7.9 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME,WEIRD_QUOTING X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Thu, 14 Jul 2005 00:37:13 -0700 Received: (qmail 36240 invoked by uid 65534); 14 Jul 2005 07:37:11 -0000 Message-ID: <20050714073711.36239.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r219006 - in /webservices/axis/trunk/java/modules: core/src/org/apache/axis2/clientapi/ core/src/org/apache/axis2/context/ core/src/org/apache/axis2/transport/http/ samples/src/sample/yahooservices/ samples/src/sample/yahooservices/RESTSearch/ Date: Thu, 14 Jul 2005 07:37:10 -0000 To: axis-cvs@ws.apache.org From: deepal@apache.org X-Mailer: svnmailer-1.0.2 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: deepal Date: Thu Jul 14 00:37:09 2005 New Revision: 219006 URL: http://svn.apache.org/viewcvs?rev=219006&view=rev Log: applying Samindas' patch Added: webservices/axis/trunk/java/modules/samples/src/sample/yahooservices/ webservices/axis/trunk/java/modules/samples/src/sample/yahooservices/RESTSearch/ webservices/axis/trunk/java/modules/samples/src/sample/yahooservices/RESTSearch/RESTSearchClient.java Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis2/clientapi/MEPClient.java webservices/axis/trunk/java/modules/core/src/org/apache/axis2/context/MessageContext.java webservices/axis/trunk/java/modules/core/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis2/clientapi/MEPClient.java URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis2/clientapi/MEPClient.java?rev=219006&r1=219005&r2=219006&view=diff ============================================================================== --- webservices/axis/trunk/java/modules/core/src/org/apache/axis2/clientapi/MEPClient.java (original) +++ webservices/axis/trunk/java/modules/core/src/org/apache/axis2/clientapi/MEPClient.java Thu Jul 14 00:37:09 2005 @@ -1,20 +1,20 @@ /* - * Copyright 2004,2005 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. - * - * Runtime state of the engine - */ +* Copyright 2004,2005 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. +* +* Runtime state of the engine +*/ package org.apache.axis2.clientapi; import org.apache.axis2.addressing.EndpointReference; @@ -41,8 +41,15 @@ protected String soapVersionURI = SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI; protected String soapAction = ""; protected boolean doREST = false; + protected boolean doRestThroughPOST = false; protected String wsaAction; + public void setRestThroughPOST(boolean b) { + doRestThroughPOST = b; + } + + + public void setDoREST(boolean b) { doREST = b; } @@ -75,6 +82,7 @@ serviceContext.getServiceConfig().addOperation(axisop); } msgCtx.setDoingREST(doREST); + msgCtx.setRestThroughPOST(doRestThroughPOST); if (wsaAction != null) { msgCtx.setWSAAction(wsaAction); } Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis2/context/MessageContext.java URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis2/context/MessageContext.java?rev=219006&r1=219005&r2=219006&view=diff ============================================================================== --- webservices/axis/trunk/java/modules/core/src/org/apache/axis2/context/MessageContext.java (original) +++ webservices/axis/trunk/java/modules/core/src/org/apache/axis2/context/MessageContext.java Thu Jul 14 00:37:09 2005 @@ -1,18 +1,18 @@ /* - * Copyright 2004,2005 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. - */ +* Copyright 2004,2005 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.axis2.context; import org.apache.axis2.addressing.EndpointReference; @@ -130,6 +130,10 @@ private boolean doingMTOM = false; //Are we doing REST now? private boolean doingREST = false; + //Rest through GET of HTTP + private boolean doRESTthroughPOST = false; + + /** * Conveniance Method, but before call engine.send() or engine.receive() one must send transport in/out @@ -507,12 +511,12 @@ } /* (non-Javadoc) - * @see org.apache.axis2.context.AbstractContext#getProperty(java.lang.Object, boolean) - */ + * @see org.apache.axis2.context.AbstractContext#getProperty(java.lang.Object, boolean) + */ public Object getProperty(String key, boolean persistent) { Object obj = super.getProperty(key, persistent); - //The context hirachy might not have constructed fully, the check should + //The context hirachy might not have constructed fully, the check should //look for the disconnected grandparents if (obj == null && operationContext == null && serviceContext != null) { obj = serviceContext.getProperty(key, persistent); @@ -602,5 +606,13 @@ public void setDoingREST(boolean b) { doingREST = b; } + + public void setRestThroughPOST(boolean b){ + doRESTthroughPOST = b; + } + public boolean isRestThroughPOST(){ + return doRESTthroughPOST; + } + } Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java?rev=219006&r1=219005&r2=219006&view=diff ============================================================================== --- webservices/axis/trunk/java/modules/core/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java (original) +++ webservices/axis/trunk/java/modules/core/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java Thu Jul 14 00:37:09 2005 @@ -21,7 +21,6 @@ import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.context.ConfigurationContext; import org.apache.axis2.context.MessageContext; -import org.apache.axis2.context.OperationContext; import org.apache.axis2.description.Parameter; import org.apache.axis2.description.TransportOutDescription; import org.apache.axis2.engine.AxisFault; @@ -29,7 +28,6 @@ import org.apache.axis2.om.OMElement; import org.apache.axis2.om.impl.OMOutputImpl; import org.apache.axis2.transport.TransportSender; -import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HostConfiguration; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; @@ -37,6 +35,7 @@ import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.RequestEntity; +import org.apache.commons.httpclient.methods.GetMethod; import javax.xml.stream.FactoryConfigurationError; import javax.xml.stream.XMLOutputFactory; @@ -53,6 +52,8 @@ TransportSender { private boolean chuncked = false; + private boolean doMTOM = false; + private String httpVersion = HTTPConstants.HEADER_PROTOCOL_10; public static final String HTTP_METHOD = "HTTP_METHOD"; @@ -112,112 +113,27 @@ } - public void writeMessageWithCommons(MessageContext msgContext, + public void writeMessageWithCommons(MessageContext msgContext, EndpointReference toURL, - OMElement dataout) throws AxisFault { + OMElement dataout) + throws AxisFault { try { URL url = new URL(toURL.getAddress()); //Configure the transport String soapAction = msgContext.getWSAAction(); //settign soapAction - String soapActionString = soapAction == null ? "" : soapAction; + String soapActionString = soapAction == null ? "" : soapAction.toString(); - PostMethod postMethod = new PostMethod(); - postMethod.setPath(url.getFile()); - msgContext.setProperty(HTTP_METHOD, postMethod); - postMethod.setRequestEntity( - new AxisRequestEntity(dataout, - chuncked, msgContext.isDoingMTOM())); - if (!httpVersion.equals(HTTPConstants.HEADER_PROTOCOL_10) - && chuncked) { - postMethod.setContentChunked(true); - } + //supporting RESTFacility.. - if (msgContext.isDoingMTOM()) { - postMethod.setRequestHeader(HTTPConstants.HEADER_CONTENT_TYPE, - omOutput.getOptimizedContentType()); - } else { - postMethod.setRequestHeader(HTTPConstants.HEADER_CONTENT_TYPE, - "text/xml; charset=utf-8"); - } - postMethod.setRequestHeader(HTTPConstants.HEADER_ACCEPT, - HTTPConstants.HEADER_ACCEPT_APPL_SOAP - + HTTPConstants.HEADER_ACCEPT_APPLICATION_DIME - + HTTPConstants.HEADER_ACCEPT_MULTIPART_RELATED - + HTTPConstants.HEADER_ACCEPT_TEXT_ALL); - postMethod.setRequestHeader(HTTPConstants.HEADER_HOST, url - .getHost()); - postMethod.setRequestHeader(HTTPConstants.HEADER_CACHE_CONTROL, - "no-cache"); - postMethod - .setRequestHeader(HTTPConstants.HEADER_PRAGMA, "no-cache"); - //content length is not set yet - //setting HTTP vesion - - if (httpVersion != null) { - if (httpVersion.equals(HTTPConstants.HEADER_PROTOCOL_10)) { - //postMethod.setHttp11(false); todo method to findout the - // transport version... - //allowing keep-alive for 1.0 - postMethod.setRequestHeader( - HTTPConstants.HEADER_CONNECTION, - HTTPConstants.HEADER_CONNECTION_KEEPALIVE); - } else { - // allowing keep-alive for 1.1 - postMethod.setRequestHeader( - HTTPConstants.HEADER_CONNECTION, - HTTPConstants.HEADER_CONNECTION_KEEPALIVE); - } - } - // othervise assumes HTTP 1.1 and keep-alive is default. if (!msgContext.isDoingREST()) { - postMethod.setRequestHeader(HTTPConstants.HEADER_SOAP_ACTION, - soapActionString); + this.transportConfigurationPOST(msgContext,dataout,url,soapActionString,doMTOM); } - - //execuite the HtttpMethodBase - a connection manager can be given - // for handle multiple - httpClient = new HttpClient(); - //hostConfig handles the socket functions.. - HostConfiguration hostConfig = getHostConfiguration(msgContext, - url); - - //code that wirte the stream to the wire - - this.httpClient.executeMethod(hostConfig, postMethod); - if (postMethod.getStatusCode() == HttpStatus.SC_OK) { - InputStream in = postMethod.getResponseBodyAsStream(); - if (in == null) { - throw new AxisFault("Input Stream can not be Null"); - } - msgContext.getOperationContext().setProperty( - MessageContext.TRANSPORT_IN, in); - Header contentTypeHeader = postMethod - .getResponseHeader(HTTPConstants.HEADER_CONTENT_TYPE); - if (contentTypeHeader != null) { - String contentType = contentTypeHeader.getValue(); - if (contentType != null - && - contentType - .indexOf( - HTTPConstants.HEADER_ACCEPT_MULTIPART_RELATED) >= - 0) { - OperationContext opContext = msgContext - .getOperationContext(); - if (opContext != null) { - opContext.setProperty( - HTTPConstants.MTOM_RECIVED_CONTENT_TYPE, - contentType); - } - } - } - - } else if (postMethod.getStatusCode() == HttpStatus.SC_ACCEPTED) { - return; - } else { - throw new AxisFault("Error " + postMethod.getStatusCode() - + " Error Message is " - + postMethod.getResponseBodyAsString()); + if (msgContext.isDoingREST() && !msgContext.isRestThroughPOST()) { + this.transportConfigurationGET(msgContext,url); + } + if (msgContext.isDoingREST() && msgContext.isRestThroughPOST()) { + this.transportConfigurationPOST(msgContext,dataout,url,soapActionString,doMTOM); } } catch (MalformedURLException e) { throw new AxisFault(e); @@ -228,7 +144,6 @@ } } - protected HostConfiguration getHostConfiguration(MessageContext context, URL targetURL) { //TODO cheaking wheather the host is a proxy @@ -359,5 +274,90 @@ } } + + private void transportConfigurationPOST(MessageContext msgContext, + OMElement dataout, URL url, String soapActionString, boolean doMTOM) throws MalformedURLException, AxisFault, IOException { + PostMethod postMethod = new PostMethod(); + postMethod.setPath(url.getFile()); + msgContext.setProperty(HTTP_METHOD, postMethod); + postMethod.setRequestEntity(new AxisRequestEntity(dataout, chuncked,doMTOM)); + if (!httpVersion.equals(HTTPConstants.HEADER_PROTOCOL_10) && chuncked) { + ((PostMethod) postMethod).setContentChunked(true); + } + + postMethod.setRequestHeader(HTTPConstants.HEADER_CONTENT_TYPE, + "text/xml; charset=utf-8"); + postMethod.setRequestHeader(HTTPConstants.HEADER_ACCEPT, + HTTPConstants.HEADER_ACCEPT_APPL_SOAP + + HTTPConstants.HEADER_ACCEPT_APPLICATION_DIME + + HTTPConstants.HEADER_ACCEPT_MULTIPART_RELATED + + HTTPConstants.HEADER_ACCEPT_TEXT_ALL); + postMethod.setRequestHeader(HTTPConstants.HEADER_HOST, url.getHost()); + postMethod.setRequestHeader(HTTPConstants.HEADER_CACHE_CONTROL, "no-cache"); + postMethod.setRequestHeader(HTTPConstants.HEADER_PRAGMA, "no-cache"); + //content length is not set yet + //setting HTTP vesion + + if (httpVersion != null) { + if (httpVersion.equals(HTTPConstants.HEADER_PROTOCOL_10)) { + //postMethod.setHttp11(false); todo method to findout the transport version... + //allowing keep-alive for 1.0 + postMethod.setRequestHeader(HTTPConstants.HEADER_CONNECTION, + HTTPConstants.HEADER_CONNECTION_KEEPALIVE); + } else { + // allowing keep-alive for 1.1 + postMethod.setRequestHeader(HTTPConstants.HEADER_CONNECTION, + HTTPConstants.HEADER_CONNECTION_KEEPALIVE); + } + } + // othervise assumes HTTP 1.1 and keep-alive is default. + if (!msgContext.isDoingREST()) { + postMethod.setRequestHeader(HTTPConstants.HEADER_SOAP_ACTION, soapActionString); + } + + //execuite the HtttpMethodBase - a connection manager can be given for handle multiple + httpClient = new HttpClient(); + //hostConfig handles the socket functions.. + HostConfiguration hostConfig = getHostConfiguration(msgContext, url); + + //code that wirte the stream to the wire + + this.httpClient.executeMethod(hostConfig, postMethod); + if (postMethod.getStatusCode() == HttpStatus.SC_OK) { + InputStream in = postMethod.getResponseBodyAsStream(); + if (in == null) { + throw new AxisFault("Input Stream can not be Null"); + } + msgContext.getOperationContext().setProperty(MessageContext.TRANSPORT_IN, in); + } else if (postMethod.getStatusCode() == HttpStatus.SC_ACCEPTED) { + return; + } else { + throw new AxisFault("Error " + postMethod.getStatusCode() + " Error Message is " + postMethod.getResponseBodyAsString()); + } + + } + private void transportConfigurationGET(MessageContext msgContext, URL url) throws MalformedURLException, AxisFault, IOException { + GetMethod getMehtod = new GetMethod(); + getMehtod.setPath(url.getFile()); + getMehtod.setRequestHeader(HTTPConstants.HEADER_CONTENT_TYPE, + "text/xml; charset=utf-8"); + this.httpClient = new HttpClient(); + HostConfiguration hostConfig = this.getHostConfiguration(msgContext, url); + + this.httpClient.executeMethod(hostConfig, getMehtod); + if (getMehtod.getStatusCode() == HttpStatus.SC_OK) { + + InputStream in = getMehtod.getResponseBodyAsStream(); + if (in == null) { + throw new AxisFault("Input Stream can not be Null"); + } + msgContext.getOperationContext().setProperty(MessageContext.TRANSPORT_IN, in); + } else if (getMehtod.getStatusCode() == HttpStatus.SC_ACCEPTED) { + return; + } else { + throw new AxisFault("Error " + getMehtod.getStatusCode() + " Error Message is " + getMehtod.getResponseBodyAsString()); + } + } + } Added: webservices/axis/trunk/java/modules/samples/src/sample/yahooservices/RESTSearch/RESTSearchClient.java URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/src/sample/yahooservices/RESTSearch/RESTSearchClient.java?rev=219006&view=auto ============================================================================== --- webservices/axis/trunk/java/modules/samples/src/sample/yahooservices/RESTSearch/RESTSearchClient.java (added) +++ webservices/axis/trunk/java/modules/samples/src/sample/yahooservices/RESTSearch/RESTSearchClient.java Thu Jul 14 00:37:09 2005 @@ -0,0 +1,51 @@ +package sample.yahooservices.RESTSearch; + +import org.apache.axis2.clientapi.Call; +import org.apache.axis2.addressing.EndpointReference; +import org.apache.axis2.addressing.AddressingConstants; +import org.apache.axis2.Constants; +import org.apache.axis2.om.OMAbstractFactory; +import org.apache.axis2.om.OMElement; +import org.apache.axis2.om.impl.OMOutputImpl; + + +import javax.xml.stream.XMLStreamWriter; +import javax.xml.stream.XMLOutputFactory; + + +/** + * Created by IntelliJ IDEA. + * User: saminda + * Date: Jul 11, 2005 + * Time: 2:25:56 PM + * To change this template use File | Settings | File Templates. + */ +public class RESTSearchClient { + private static String eprGet = + "http://api.search.yahooservices.com/WebSearchService/V1/webSearch?appid=ApacheRestDemo&query=finances&format=pdf"; + + + + public static void main(String[] args) { + try{ + Call call = new Call(); + call.setTo(new EndpointReference(AddressingConstants.WSA_TO, eprGet)); + call.setTransportInfo(Constants.TRANSPORT_COMMONS_HTTP,Constants.TRANSPORT_HTTP, false); + call.setDoREST(true); + call.setRestThroughPOST(false); + + //if post is through GET of HTTP + OMElement response = call.invokeBlocking("",OMAbstractFactory.getOMFactory().createOMElement("","","")); + + XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(System.out); + response.serializeWithCache(new OMOutputImpl(writer)); + writer.flush(); + + }catch(Exception e){ + e.printStackTrace(); + } + } + + + +}