blob: cc0e4a0f4d2e47e08106f91423d775d3b35166f4 [file] [log] [blame]
/*
* 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.client.async;
import org.apache.axis2.client.async.AsyncResult;
import org.apache.axis2.jaxws.ExceptionFactory;
import org.apache.axis2.jaxws.core.MessageContext;
import org.apache.axis2.jaxws.util.Constants;
import org.apache.axis2.util.ThreadContextMigratorUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import javax.xml.ws.WebServiceException;
public class AsyncUtils {
private static final Log log = LogFactory.getLog(AsyncUtils.class);
private static final boolean debug = log.isDebugEnabled();
public static MessageContext createJAXWSMessageContext(AsyncResult result)
throws WebServiceException {
return AsyncUtils.createJAXWSMessageContext(result.getResponseMessageContext());
}
public static MessageContext createJAXWSMessageContext(
org.apache.axis2.context.MessageContext mc) throws WebServiceException {
MessageContext response = null;
if (debug) {
log.debug("Creating response MessageContext");
}
// Create the JAX-WS response MessageContext from the Axis2 response
response = new MessageContext(mc);
// don't set the response.setMEPContext() here.
// REVIEW: Are we on the final thread of execution here or does this get handed off to the executor?
// TODO: Remove workaround for WS-Addressing running in thin client (non-server) environment
try {
ThreadContextMigratorUtil
.performMigrationToThread(Constants.THREAD_CONTEXT_MIGRATOR_LIST_ID, mc);
}
catch (Throwable t) {
if (debug) {
log.debug(mc.getLogIDString() +
" An error occurred in the ThreadContextMigratorUtil " + t);
log.debug("...caused by " + t.getCause());
}
throw ExceptionFactory.makeWebServiceException(t);
}
return response;
}
}