/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.cxf.systest.ws.addr_feature;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.concurrent.Future;
import javax.jws.WebService;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.ws.AsyncHandler;
import javax.xml.ws.Endpoint;
import javax.xml.ws.Response;
import javax.xml.ws.soap.Addressing;
import org.apache.cxf.BusFactory;
import org.apache.cxf.jaxws.EndpointImpl;
import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
import org.apache.cxf.ws.addressing.WSAddressingFeature;
import org.apache.cxf.ws.addressing.soap.DecoupledFaultHandler;
import org.apache.hello_world_soap_http.BadRecordLitFault;
import org.apache.hello_world_soap_http.Greeter;
import org.apache.hello_world_soap_http.NoSuchCodeLitFault;
import org.apache.hello_world_soap_http.types.BareDocumentResponse;
import org.apache.hello_world_soap_http.types.GreetMeLaterResponse;
import org.apache.hello_world_soap_http.types.GreetMeResponse;
import org.apache.hello_world_soap_http.types.GreetMeSometimeResponse;
import org.apache.hello_world_soap_http.types.SayHiResponse;
import org.apache.hello_world_soap_http.types.TestDocLitFaultResponse;
import org.apache.hello_world_soap_http.types.TestNillableResponse;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
public class FaultToEndpointServer extends AbstractBusTestServerBase {
static final String FAULT_PORT = allocatePort(FaultToEndpointServer.class);
static final String FAULT_PORT2 = allocatePort(FaultToEndpointServer.class, 2);
static final String PORT = allocatePort(FaultToEndpointServer.class, 1);
EndpointImpl ep;
private org.eclipse.jetty.server.Server faultToserver;
protected void run() {
faultToserver = new org.eclipse.jetty.server.Server(Integer.parseInt(FAULT_PORT));
faultToserver.setHandler(new HelloHandler());
try {
faultToserver.start();
} catch (Exception e) {
e.printStackTrace();
}
setBus(BusFactory.getDefaultBus());
Object implementor = new AddNumberImpl();
String address = "http://localhost:" + PORT + "/jaxws/add";
ep = (EndpointImpl) Endpoint.create(implementor);
ep.getInInterceptors().add(new DecoupledFaultHandler());
ep.getFeatures().add(new WSAddressingFeature());
ep.publish(address);
Object implementor2 = new GreeterImpl();
String address2 = "http://localhost:" + PORT + "/jaxws/greeter";
ep = (EndpointImpl) Endpoint.create(implementor2);
ep.getInInterceptors().add(new DecoupledFaultHandler());
ep.getFeatures().add(new WSAddressingFeature());
ep.publish(address2);
}
public void tearDown() throws Exception {
if (faultToserver != null) {
faultToserver.stop();
faultToserver.destroy();
faultToserver = null;
}
ep.stop();
ep = null;
}
public static void main(String[] args) {
try {
FaultToEndpointServer server = new FaultToEndpointServer();
server.start();
} catch (Exception ex) {
ex.printStackTrace();
System.exit(-1);
} finally {
System.out.println("done!");
}
}
public static class HelloHandler extends AbstractHandler {
private static String faultRequestPath;
public void handle(String target, Request baseRequest, HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
response.setContentType("text/html;charset=utf-8");
//System.out.println("In handler: " + request.getContentLength());
byte bytes[] = new byte[1024];
InputStream in = request.getInputStream();
while (in.read(bytes) > -1) {
//nothing
}
faultRequestPath = request.getPathInfo();
if ("/faultTo".equals(faultRequestPath)) {
response.setStatus(HttpServletResponse.SC_ACCEPTED);
} else {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
}
PrintWriter writer = response.getWriter();
writer.println("Received");
writer.close();
baseRequest.setHandled(true);
}
public static String getFaultRequestPath() {
return faultRequestPath;
}
}
@WebService(serviceName = "SOAPServiceAddressing",
portName = "SoapPort",
endpointInterface = "org.apache.hello_world_soap_http.Greeter",
targetNamespace = "http://apache.org/hello_world_soap_http",
wsdlLocation = "testutils/hello_world.wsdl")
@Addressing
public class GreeterImpl implements Greeter {
public String greetMe(String me) {
return "Hello " + me;
}
public String greetMeLater(long delay) {
if (delay > 0) {
try {
Thread.sleep(delay);
} catch (InterruptedException ex) {
// ignore
}
}
return "Hello, finally";
}
public void greetMeOneWay(String requestType) {
throw new RuntimeException("intended error");
}
public String sayHi() {
return null;
}
public void testDocLitFault(String faultType) throws BadRecordLitFault, NoSuchCodeLitFault {
}
public BareDocumentResponse testDocLitBare(String in) {
return null;
}
public String greetMeSometime(String me) {
return null;
}
public Future<?> greetMeSometimeAsync(String requestType,
AsyncHandler<GreetMeSometimeResponse> asyncHandler) {
return null;
}
public Response<GreetMeSometimeResponse> greetMeSometimeAsync(String requestType) {
return null;
}
public Response<TestDocLitFaultResponse> testDocLitFaultAsync(String faultType) {
return null;
}
public Response<BareDocumentResponse> testDocLitBareAsync(String bare) {
return null;
}
public Future<?> greetMeAsync(String requestType, AsyncHandler<GreetMeResponse> asyncHandler) {
return null;
}
public Response<GreetMeResponse> greetMeAsync(String requestType) {
return null;
}
public Future<?> greetMeLaterAsync(long requestType, AsyncHandler<GreetMeLaterResponse> asyncHandler) {
return null;
}
public Response<GreetMeLaterResponse> greetMeLaterAsync(long requestType) {
return null;
}
public Future<?> sayHiAsync(AsyncHandler<SayHiResponse> asyncHandler) {
return null;
}
public Response<SayHiResponse> sayHiAsync() {
return null;
}
public String testNillable(String nillElem, int intElem) {
return null;
}
public Response<TestNillableResponse> testNillableAsync(String nillElem,
int intElem) {
return null;
}
public Future<?> testNillableAsync(String nillElem,
int intElem,
AsyncHandler<TestNillableResponse> asyncHandler) {
return null;
}
public Future<?> testDocLitFaultAsync(String faultType,
AsyncHandler<TestDocLitFaultResponse> asyncHandler) {
return null;
}
}
}