01: /**
02: * Licensed to the Apache Software Foundation (ASF) under one
03: * or more contributor license agreements. See the NOTICE file
04: * distributed with this work for additional information
05: * regarding copyright ownership. The ASF licenses this file
06: * to you under the Apache License, Version 2.0 (the
07: * "License"); you may not use this file except in compliance
08: * with the License. You may obtain a copy of the License at
09: *
10: * http://www.apache.org/licenses/LICENSE-2.0
11: *
12: * Unless required by applicable law or agreed to in writing,
13: * software distributed under the License is distributed on an
14: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15: * KIND, either express or implied. See the License for the
16: * specific language governing permissions and limitations
17: * under the License.
18: */package org.apache.cxf.jaxws.handler.logical;
19:
20: import javax.xml.ws.Binding;
21:
22: import org.apache.cxf.jaxws.handler.AbstractJAXWSHandlerInterceptor;
23: import org.apache.cxf.jaxws.handler.HandlerChainInvoker;
24: import org.apache.cxf.jaxws.handler.soap.SOAPHandlerFaultInInterceptor;
25: import org.apache.cxf.message.Message;
26: import org.apache.cxf.phase.Phase;
27:
28: public class LogicalHandlerFaultInInterceptor<T extends Message>
29: extends AbstractJAXWSHandlerInterceptor<T> {
30:
31: public LogicalHandlerFaultInInterceptor(Binding binding) {
32: super (binding, Phase.PRE_PROTOCOL);
33: addAfter(SOAPHandlerFaultInInterceptor.class.getName());
34: }
35:
36: public void handleMessage(T message) {
37: HandlerChainInvoker invoker = getInvoker(message);
38: if (invoker.getLogicalHandlers().isEmpty()) {
39: return;
40: }
41:
42: LogicalMessageContextImpl lctx = new LogicalMessageContextImpl(
43: message);
44: invoker.setLogicalMessageContext(lctx);
45: boolean requestor = isRequestor(message);
46: if (!invoker.invokeLogicalHandlersHandleFault(requestor, lctx)) {
47: if (!requestor) {
48: //server side, wont get here
49: } else {
50: //Client side inbound, thus no response expected, do nothing, the close will
51: //be handled by MEPComplete later
52: }
53: }
54:
55: //If this is the inbound and end of MEP, call MEP completion
56: if (!isOutbound(message) && isMEPComlete(message)) {
57: onCompletion(message);
58: }
59: }
60:
61: public void handleFault(T message) {
62: // TODO
63: }
64: }
|