/* | |
* 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.axis2.jaxws.sample.addnumbershandler; | |
import org.apache.axis2.jaxws.TestLogger; | |
import org.test.addnumbershandler.AddNumbersHandlerFault; | |
import org.test.addnumbershandler.AddNumbersHandlerResponse; | |
import javax.annotation.Resource; | |
import javax.jws.HandlerChain; | |
import javax.jws.WebService; | |
import javax.xml.ws.AsyncHandler; | |
import javax.xml.ws.WebServiceContext; | |
import javax.xml.ws.handler.MessageContext; | |
import java.util.concurrent.Future; | |
@WebService(serviceName="AddNumbersHandlerService",endpointInterface="org.apache.axis2.jaxws.sample.addnumbershandler.AddNumbersHandlerPortType") | |
@HandlerChain(file = "AddNumbersHandlers.xml", name = "") | |
public class AddNumbersHandlerPortTypeImpl implements AddNumbersHandlerPortType { | |
private WebServiceContext ctx; | |
/* (non-Javadoc) | |
* @see org.apache.axis2.jaxws.sample.addnumbershandler.AddNumbersHandlerPortType#addNumbersHandler(int, int) | |
*/ | |
public int addNumbersHandler(int arg0, int arg1) throws AddNumbersHandlerFault_Exception { | |
/* FIXME: getHeaders() is currently not called | |
if (!tracker.isCalled(HandlerTracker.Methods.GET_HEADERS)) { | |
throw new RuntimeException("getHeaders() was not called on the handler"); | |
} | |
*/ | |
// for these properties tests to always pass, an inbound server-side handler must "put" them | |
MessageContext mc = ctx.getMessageContext(); | |
String propKey1 = "AddNumbersLogicalHandlerInboundAppScopedProperty"; | |
String propKey2 = "AddNumbersLogicalHandlerInboundHandlerScopedProperty"; | |
String value = (String)mc.get(propKey1); | |
if (value == null) | |
throw new RuntimeException("Property value for key \"" + propKey1 + "\" was null, but is APPLICATION scoped and should be accessible by the endpoint"); | |
if (mc.containsKey(propKey2)) // instead of "get", use "containsKey" to be a little more robust in testing | |
throw new RuntimeException("MessageContext.containsKey reported true for key \"" + propKey2 + "\" was not null. This property is HANDLER scoped and should not be accessible by the endpoint"); | |
TestLogger.logger.debug(">> Received addNumbersHandler request for " + arg0 + " and " + arg1); | |
if (arg0 == 101) { | |
throw new RuntimeException("Got value 101. " + | |
"AddNumbersHandlerPortTypeImpl.addNumbersHandler method is " + | |
"correctly throwing this exception as part of testing"); | |
} | |
long sum = (long) arg0 + (long) arg1; | |
TestLogger.logger.debug(">> Sum is " + sum); | |
TestLogger.logger.debug(">> MAX_VALUE is " + Integer.MAX_VALUE); | |
TestLogger.logger.debug(">> MIN_VALUE is " + Integer.MIN_VALUE); | |
// For testing purposes, an overflow triggers an application exception AddNumbersHandlerPortType | |
// For testing purposes, an underflow triggers an NPE. | |
if (sum > Integer.MAX_VALUE) { | |
TestLogger.logger.debug("Overflow detected. Throwing AddNumbersHandlerFault"); | |
AddNumbersHandlerFault faultInfo = new AddNumbersHandlerFault(); | |
faultInfo.setFaultInfo("overflow"); | |
faultInfo.setMessage("overflow"); | |
throw new AddNumbersHandlerFault_Exception("overflow", faultInfo); | |
} else if (sum < Integer.MIN_VALUE) { | |
TestLogger.logger.debug("Underflow detected. Throwing NullPointerException"); | |
throw new NullPointerException("underflow"); | |
} | |
return (int) sum; | |
} | |
public Future<?> addNumbersHandlerAsync(int arg0, int arg1, AsyncHandler<AddNumbersHandlerResponse> asyncHandler) { | |
return null; | |
} | |
/* (non-Javadoc) | |
* @see org.apache.axis2.jaxws.sample.addnumbershandler.AddNumbersHandlerPortType#oneWayInt(int) | |
*/ | |
public void oneWayInt(int arg0) { | |
TestLogger.logger.debug(">> Received one-way request."); | |
return; | |
} | |
@Resource | |
public void setCtx(WebServiceContext ctx) { | |
this.ctx = ctx; | |
} | |
} |