Author: eglynn
Date: Wed Sep 13 06:43:37 2006
New Revision: 442984
URL: http://svn.apache.org/viewvc?view=rev&rev=442984
Log:
Moved SoapPreProtocolOutInterceptor to take account of updated package
organization
Added:
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/addressing/WSAContextUtils.java
- copied, changed from r438444,
incubator/cxf/branches/post_apache_integration/api/src/main/java/org/objectweb/celtix/ws/addressing/WSAContextUtils.java
incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java
- copied, changed from r438444,
incubator/cxf/branches/post_apache_integration/rt/ws/addr/src/main/java/org/objectweb/celtix/ws/addressing/MAPAggregator.java
incubator/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/AddressingBuilderImplTest.java
- copied, changed from r438444,
incubator/cxf/branches/post_apache_integration/rt/ws/addr/src/test/java/org/objectweb/celtix/ws/addressing/AddressingBuilderImplTest.java
incubator/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/AddressingBuilderTest.java
- copied, changed from r438444,
incubator/cxf/branches/post_apache_integration/rt/ws/addr/src/test/java/org/objectweb/celtix/ws/addressing/AddressingBuilderTest.java
incubator/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/AddressingConstantsImplTest.java
- copied, changed from r438444,
incubator/cxf/branches/post_apache_integration/rt/ws/addr/src/test/java/org/objectweb/celtix/ws/addressing/AddressingConstantsImplTest.java
incubator/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/MAPAggregatorTest.java
- copied, changed from r438444,
incubator/cxf/branches/post_apache_integration/rt/ws/addr/src/test/java/org/objectweb/celtix/ws/addressing/MAPAggregatorTest.java
Modified:
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/BindingOperationInfo.java
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/OperationInfo.java
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/addressing/JAXWSAConstants.java
incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java
Modified:
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/BindingOperationInfo.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/BindingOperationInfo.java?view=diff&rev=442984&r1=442983&r2=442984
==============================================================================
---
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/BindingOperationInfo.java
(original)
+++
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/BindingOperationInfo.java
Wed Sep 13 06:43:37 2006
@@ -31,16 +31,19 @@
*
*/
public class BindingOperationInfo extends AbstractPropertiesHolder {
-
- final BindingInfo bindingInfo;
- OperationInfo opInfo;
- final BindingMessageInfo inputMessage;
- final BindingMessageInfo outputMessage;
+ protected OperationInfo opInfo;
+
+ BindingInfo bindingInfo;
+
+ BindingMessageInfo inputMessage;
+ BindingMessageInfo outputMessage;
Map<QName, BindingFaultInfo> faults;
BindingOperationInfo opHolder;
+ public BindingOperationInfo() {
+ }
BindingOperationInfo(BindingInfo bi, OperationInfo opinfo) {
bindingInfo = bi;
Modified:
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/OperationInfo.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/OperationInfo.java?view=diff&rev=442984&r1=442983&r2=442984
==============================================================================
---
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/OperationInfo.java
(original)
+++
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/OperationInfo.java
Wed Sep 13 06:43:37 2006
@@ -35,7 +35,7 @@
*/
public class OperationInfo extends AbstractPropertiesHolder {
private static final Logger LOG =
LogUtils.getL7dLogger(OperationInfo.class);
- final InterfaceInfo intf;
+ InterfaceInfo intf;
QName opName;
String inName;
MessageInfo inputMessage;
@@ -44,6 +44,9 @@
Map<QName, FaultInfo> faults;
OperationInfo unwrappedOperation;
+
+ public OperationInfo() {
+ }
OperationInfo(InterfaceInfo it, QName n) {
intf = it;
Modified:
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/addressing/JAXWSAConstants.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/addressing/JAXWSAConstants.java?view=diff&rev=442984&r1=442983&r2=442984
==============================================================================
---
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/addressing/JAXWSAConstants.java
(original)
+++
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/addressing/JAXWSAConstants.java
Wed Sep 13 06:43:37 2006
@@ -50,7 +50,7 @@
* Used by AddressingBuilder factory method.
*/
public static final String DEFAULT_ADDRESSING_BUILDER =
- "org.objectweb.celtix.ws.addressing.AddressingBuilderImpl";
+ "org.apache.cxf.ws.addressing.AddressingBuilderImpl";
/**
* Prevents instantiation.
Copied:
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/addressing/WSAContextUtils.java
(from r438444,
incubator/cxf/branches/post_apache_integration/api/src/main/java/org/objectweb/celtix/ws/addressing/WSAContextUtils.java)
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/addressing/WSAContextUtils.java?view=diff&rev=442984&p1=incubator/cxf/branches/post_apache_integration/api/src/main/java/org/objectweb/celtix/ws/addressing/WSAContextUtils.java&r1=438444&p2=incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/addressing/WSAContextUtils.java&r2=442984
==============================================================================
---
incubator/cxf/branches/post_apache_integration/api/src/main/java/org/objectweb/celtix/ws/addressing/WSAContextUtils.java
(original)
+++
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/ws/addressing/WSAContextUtils.java
Wed Sep 13 06:43:37 2006
@@ -1,23 +1,40 @@
-package org.objectweb.celtix.ws.addressing;
+/**
+ * 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.ws.addressing;
-import java.io.IOException;
-import javax.xml.ws.handler.MessageContext;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.transport.Conduit;
-import org.objectweb.celtix.transports.ClientTransport;
/**
* Holder for utility methods relating to contexts.
*/
-
public final class WSAContextUtils {
private static final String TO_PROPERTY =
- "org.objectweb.celtix.ws.addressing.to";
+ "org.apache.cxf.ws.addressing.to";
private static final String REPLYTO_PROPERTY =
- "org.objectweb.celtix.ws.addressing.replyto";
+ "org.apache.cxf.ws.addressing.replyto";
private static final String USING_PROPERTY =
- "org.objectweb.celtix.ws.addressing.using";
+ "org.apache.cxf.ws.addressing.using";
/**
* Prevents instantiation.
@@ -29,21 +46,20 @@
* Store UsingAddressing override flag in the context
*
* @param override true if UsingAddressing should be overridden
- * @param context the message context
+ * @param message the current message
*/
- public static void storeUsingAddressing(boolean override, MessageContext
context) {
- context.put(USING_PROPERTY, Boolean.valueOf(override));
- context.setScope(USING_PROPERTY, MessageContext.Scope.APPLICATION);
+ public static void storeUsingAddressing(boolean override, Message message)
{
+ message.put(USING_PROPERTY, Boolean.valueOf(override));
}
/**
* Retrieve UsingAddressing override flag from the context
*
* @param override true if UsingAddressing should be overridden
- * @param context the message context
+ * @param message the current message
*/
- public static boolean retrieveUsingAddressing(MessageContext context) {
- Boolean override = (Boolean)context.get(USING_PROPERTY);
+ public static boolean retrieveUsingAddressing(Message message) {
+ Boolean override = (Boolean)message.get(USING_PROPERTY);
return override != null && override.booleanValue();
}
@@ -51,28 +67,27 @@
* Store To EPR in the context
*
* @param to the To EPR
- * @param context the message context
+ * @param message the current message
*/
public static void storeTo(EndpointReferenceType to,
- MessageContext context) {
- context.put(TO_PROPERTY, to);
- context.setScope(TO_PROPERTY, MessageContext.Scope.APPLICATION);
+ Message message) {
+ message.put(TO_PROPERTY, to);
}
/**
* Retrieve To EPR from the context.
*
- * @param transport the ClientTransport if available
- * @param context the message context
+ * @param conduit the Conduit if available
+ * @param message the current message
* @returned the retrieved EPR
*/
- public static EndpointReferenceType retrieveTo(ClientTransport transport,
- MessageContext context) {
+ public static EndpointReferenceType retrieveTo(Conduit conduit,
+ Message message) {
EndpointReferenceType to = null;
- if (transport != null) {
- to = transport.getTargetEndpoint();
+ if (conduit != null) {
+ to = conduit.getTarget();
} else {
- to = (EndpointReferenceType)context.get(TO_PROPERTY);
+ to = (EndpointReferenceType)message.get(TO_PROPERTY);
}
return to;
}
@@ -81,33 +96,24 @@
* Store ReplyTo EPR in the context
*
* @param replyTo the ReplyTo EPR
- * @param context the message context
+ * @param message the current message
*/
public static void storeReplyTo(EndpointReferenceType replyTo,
- MessageContext context) {
- context.put(REPLYTO_PROPERTY, replyTo);
- context.setScope(REPLYTO_PROPERTY, MessageContext.Scope.APPLICATION);
+ Message message) {
+ message.put(REPLYTO_PROPERTY, replyTo);
}
/**
* Retrieve ReplyTo EPR from the context.
*
- * @param transport the ClientTransport if available
- * @param context the message context
+ * @param conduit the Conduit if available
+ * @param message the current message
* @returned the retrieved EPR
*/
- public static EndpointReferenceType retrieveReplyTo(ClientTransport
transport,
- MessageContext
context) {
- EndpointReferenceType replyTo = null;
- if (transport != null) {
- try {
- replyTo = transport.getDecoupledEndpoint();
- } catch (IOException ioe) {
- // ignore
- }
- } else {
- replyTo = (EndpointReferenceType)context.get(REPLYTO_PROPERTY);
- }
- return replyTo;
+ public static EndpointReferenceType retrieveReplyTo(Conduit conduit,
+ Message message) {
+ return conduit != null
+ ? conduit.getBackChannel().getAddress()
+ : (EndpointReferenceType)message.get(REPLYTO_PROPERTY);
}
}
Modified:
incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java?view=diff&rev=442984&r1=442983&r2=442984
==============================================================================
---
incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java
(original)
+++
incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java
Wed Sep 13 06:43:37 2006
@@ -20,17 +20,29 @@
package org.apache.cxf.ws.addressing;
+import java.lang.reflect.Method;
import java.util.UUID;
import java.util.logging.Level;
import java.util.logging.Logger;
+import javax.jws.WebMethod;
+import javax.jws.WebService;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
+import javax.xml.ws.RequestWrapper;
+import javax.xml.ws.ResponseWrapper;
+import javax.xml.ws.WebFault;
+
import static javax.xml.ws.handler.MessageContext.MESSAGE_OUTBOUND_PROPERTY;
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.common.util.PackageUtils;
import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageImpl;
+import org.apache.cxf.service.model.BindingOperationInfo;
+import org.apache.cxf.service.model.OperationInfo;
+import org.apache.cxf.transport.Conduit;
+import org.apache.cxf.transport.Destination;
import static org.apache.cxf.message.Message.CORRELATION_IN;
import static org.apache.cxf.message.Message.CORRELATION_OUT;
@@ -60,8 +72,7 @@
* Used to fabricate a Uniform Resource Name from a UUID string
*/
private static final String URN_UUID = "urn:uuid:";
-
-
+
private static JAXBContext jaxbContext;
/**
@@ -75,6 +86,12 @@
*/
private static final String MAP_FAULT_REASON_PROPERTY =
"org.apache.cxf.ws.addressing.map.fault.reason";
+
+ /**
+ * Indicates a partial response has already been sent
+ */
+ private static final String PARTIAL_REPONSE_SENT_PROPERTY =
+ "org.apache.cxf.ws.addressing.partial.response.sent";
/**
* Prevents instantiation.
@@ -155,7 +172,7 @@
/**
* Store MAPs in the message.
*
- * @param context the message context
+ * @param message the current message
* @param isOutbound true iff the message is outbound
*/
public static void storeMAPs(AddressingProperties maps,
@@ -168,7 +185,7 @@
* Store MAPs in the message.
*
* @param maps the MAPs to store
- * @param context the message context
+ * @param message the current message
* @param isOutbound true iff the message is outbound
* @param isRequestor true iff the current messaging role is that of
* requestor
@@ -186,7 +203,7 @@
* Store MAPs in the message.
*
* @param maps the MAPs to store
- * @param context the message context
+ * @param message the current message
* @param isOutbound true iff the message is outbound
* @param isRequestor true iff the current messaging role is that of
* requestor
@@ -210,7 +227,7 @@
/**
- * @param context the message context
+ * @param message the current message
* @param isProviderContext true if the binding provider request context
* available to the client application as opposed to the message context
* visible to handlers
@@ -296,12 +313,50 @@
}
return empty;
}
+
+ /**
+ * Rebase server transport on replyTo
+ *
+ * @param reference the replyTo reference
+ * @param namespaceURI determines the WS-A version
+ * @param inMessage the current message
+ */
+ public static void rebaseTransport(EndpointReferenceType reference,
+ String namespaceURI,
+ Message inMessage) {
+ if (!retrievePartialResponseSent(inMessage)) {
+ // ensure there is a MAPs instance available for the outbound
+ // partial response that contains appropriate To and ReplyTo
+ // properties (i.e. anonymous & none respectively)
+ AddressingPropertiesImpl maps = new AddressingPropertiesImpl();
+
maps.setTo(ContextUtils.getAttributedURI(Names.WSA_ANONYMOUS_ADDRESS));
+ maps.setReplyTo(WSA_OBJECT_FACTORY.createEndpointReferenceType());
+
maps.getReplyTo().setAddress(getAttributedURI(Names.WSA_NONE_ADDRESS));
+ maps.setAction(getAttributedURI(""));
+ maps.exposeAs(namespaceURI);
+ Message partialResponse = new MessageImpl();
+ storeMAPs(maps, partialResponse, true, true, true, true);
+
+ try {
+ Destination target = inMessage.getDestination();
+ Conduit backChannel = target.getBackChannel(inMessage,
+ partialResponse,
+ reference);
+ if (backChannel != null) {
+ // REVISIT set up interceptor chains and send message
+
+ }
+ } catch (Exception e) {
+ LOG.log(Level.WARNING, "SERVER_TRANSPORT_REBASE_FAILURE_MSG",
e);
+ }
+ }
+ }
/**
* Store bad MAP fault name in the message.
*
* @param faultName the fault name to store
- * @param context the message context
+ * @param message the current message
*/
public static void storeMAPFaultName(String faultName,
Message message) {
@@ -311,7 +366,7 @@
/**
* Retrieve MAP fault name from the message.
*
- * @param context the message context
+ * @param message the current message
* @returned the retrieved fault name
*/
public static String retrieveMAPFaultName(Message message) {
@@ -322,7 +377,7 @@
* Store MAP fault reason in the message.
*
* @param reason the fault reason to store
- * @param context the message context
+ * @param message the current message
*/
public static void storeMAPFaultReason(String reason,
Message message) {
@@ -332,7 +387,7 @@
/**
* Retrieve MAP fault reason from the message.
*
- * @param context the message context
+ * @param message the current message
* @returned the retrieved fault reason
*/
public static String retrieveMAPFaultReason(Message message) {
@@ -344,7 +399,7 @@
*
* @param id the correlation ID
* @param isOutbound true if message is outbound
- * @param context the message context
+ * @param message the current message
*/
public static void storeCorrelationID(RelatesToType id,
boolean isOutbound,
@@ -357,7 +412,7 @@
*
* @param id the correlation ID
* @param isOutbound true if message is outbound
- * @param context the message context
+ * @param message the current message
*/
public static void storeCorrelationID(AttributedURIType id,
boolean isOutbound,
@@ -370,7 +425,7 @@
*
* @param id the correlation ID
* @param isOutbound true if message is outbound
- * @param context the message context
+ * @param message the current message
*/
protected static void storeCorrelationID(String id,
boolean isOutbound,
@@ -381,7 +436,7 @@
/**
* Retrieve correlation ID from the message.
*
- * @param context the message context
+ * @param message the current message
* @param isOutbound true if message is outbound
* @returned the retrieved correlation ID
*/
@@ -391,6 +446,32 @@
}
/**
+ * Store an indication that a partial response has been sent.
+ * Relavant if *both* the replyTo & faultTo are decoupled,
+ * and a fault occurs, then we would already have sent the
+ * partial response (pre-dispatch) for the replyTo, so
+ * no need to send again.
+ *
+ * @param message the current message
+ */
+ public static void storePartialResponseSent(Message message) {
+ message.put(PARTIAL_REPONSE_SENT_PROPERTY, Boolean.TRUE);
+ }
+
+ /**
+ * Retrieve indication that a partial response has been sent.
+ *
+ * @param message the current message
+ * @returned the retrieved indication that a partial response
+ * has been sent
+ */
+ public static boolean retrievePartialResponseSent(Message message) {
+ Boolean ret = (Boolean)message.get(PARTIAL_REPONSE_SENT_PROPERTY);
+ return ret != null && ret.booleanValue();
+ }
+
+
+ /**
* Retrieve a JAXBContext for marshalling and unmarshalling JAXB generated
* types.
*
@@ -422,7 +503,117 @@
*/
public static String generateUUID() {
return URN_UUID + UUID.randomUUID();
- }
+ }
+
+ /**
+ * Construct the Action URI.
+ *
+ * @param message the current message
+ * @return the Action URI
+ */
+ public static AttributedURIType getAction(Message message) {
+ String action = null;
+ // REVISIT: add support for @{Fault}Action annotation (generated
+ // from the wsaw:Action WSDL element)
+ LOG.fine("Determining action");
+ Exception fault = message.getContent(Exception.class);
+ Method method = getMethod(message);
+ LOG.fine("method: " + method + ", fault: " + fault);
+ if (method != null) {
+ if (fault != null) {
+ WebFault webFault =
fault.getClass().getAnnotation(WebFault.class);
+ action = getAction(webFault.targetNamespace(),
+ method,
+ webFault.name(),
+ true);
+ } else {
+ if (ContextUtils.isRequestor(message)) {
+ RequestWrapper requestWrapper =
+ method.getAnnotation(RequestWrapper.class);
+ if (requestWrapper != null) {
+ action = getAction(requestWrapper.targetNamespace(),
+ method,
+ requestWrapper.localName(),
+ false);
+ } else {
+ WebService wsAnnotation =
method.getDeclaringClass().getAnnotation(WebService.class);
+ WebMethod wmAnnotation =
method.getAnnotation(WebMethod.class);
+
+ action = getAction(wsAnnotation.targetNamespace(),
+ method,
+ wmAnnotation.operationName(),
+ false);
+ }
+
+ } else {
+ ResponseWrapper responseWrapper =
+ method.getAnnotation(ResponseWrapper.class);
+ if (responseWrapper != null) {
+ action = getAction(responseWrapper.targetNamespace(),
+ method,
+ responseWrapper.localName(),
+ false);
+ } else {
+ //RPC-Literal case.
+ WebService wsAnnotation =
method.getDeclaringClass().getAnnotation(WebService.class);
+ WebMethod wmAnnotation =
method.getAnnotation(WebMethod.class);
+
+ action = getAction(wsAnnotation.targetNamespace(),
+ method,
+ wmAnnotation.operationName(),
+ false);
+ }
+ }
+ }
+ }
+ return action != null ? getAttributedURI(action) : null;
+ }
+
+
+ /**
+ * Construct the Action string.
+ *
+ * @param targetNamespace the target namespace
+ * @param method the method
+ * @param localName the local name
+ * @param isFault true if a fault
+ * @return action string
+ */
+ private static String getAction(String targetNamespace,
+ Method method,
+ String localName,
+ boolean isFault) {
+ String action = null;
+ action = targetNamespace;
+ action += Names.WSA_ACTION_DELIMITER;
+ action += method.getDeclaringClass().getSimpleName();
+ if (isFault) {
+ action += method.getName();
+ action += Names.WSA_FAULT_DELIMITER;
+ }
+ action += Names.WSA_ACTION_DELIMITER;
+ action += localName;
+ return action;
+ }
+
+ /**
+ * Get the current Method.
+ *
+ * @param message the current message
+ * @return the Method from the BindingOperationInfo
+ */
+ private static Method getMethod(Message message) {
+ Method method = null;
+ BindingOperationInfo bindingOpInfo =
+ message.getExchange().get(BindingOperationInfo.class);
+ if (bindingOpInfo != null) {
+ OperationInfo opInfo = bindingOpInfo.getOperationInfo();
+ if (opInfo != null) {
+ method = (Method)opInfo.getProperty(Method.class.getName());
+ }
+ }
+ return method;
+ }
}
Copied:
incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java
(from r438444,
incubator/cxf/branches/post_apache_integration/rt/ws/addr/src/main/java/org/objectweb/celtix/ws/addressing/MAPAggregator.java)
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java?view=diff&rev=442984&p1=incubator/cxf/branches/post_apache_integration/rt/ws/addr/src/main/java/org/objectweb/celtix/ws/addressing/MAPAggregator.java&r1=438444&p2=incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java&r2=442984
==============================================================================
---
incubator/cxf/branches/post_apache_integration/rt/ws/addr/src/main/java/org/objectweb/celtix/ws/addressing/MAPAggregator.java
(original)
+++
incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java
Wed Sep 13 06:43:37 2006
@@ -1,47 +1,53 @@
-package org.objectweb.celtix.ws.addressing;
+/**
+ * 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.ws.addressing;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Level;
import java.util.logging.Logger;
-import javax.annotation.PostConstruct;
-import javax.annotation.Resource;
-import javax.wsdl.Port;
import javax.wsdl.extensions.ExtensibilityElement;
-import javax.xml.ws.handler.LogicalHandler;
-import javax.xml.ws.handler.LogicalMessageContext;
-import javax.xml.ws.handler.MessageContext;
-
-
-import org.objectweb.celtix.bindings.AbstractBindingBase;
-import org.objectweb.celtix.bindings.ClientBinding;
-import org.objectweb.celtix.bindings.JAXWSConstants;
-import org.objectweb.celtix.bindings.ServerBinding;
-import org.objectweb.celtix.common.logging.LogUtils;
-import org.objectweb.celtix.configuration.CompoundName;
-import org.objectweb.celtix.configuration.Configuration;
-import org.objectweb.celtix.configuration.ConfigurationBuilder;
-import org.objectweb.celtix.transports.ClientTransport;
-import org.objectweb.celtix.transports.ServerTransport;
-import org.objectweb.celtix.wsdl.EndpointReferenceUtils;
+
+import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.phase.AbstractPhaseInterceptor;
+import org.apache.cxf.phase.Phase;
+import org.apache.cxf.service.model.EndpointInfo;
+import org.apache.cxf.transport.Conduit;
+import org.apache.cxf.transport.Destination;
/**
* Logical Handler responsible for aggregating the Message Addressing
* Properties for outgoing messages.
*/
-public class MAPAggregator implements LogicalHandler<LogicalMessageContext> {
+public class MAPAggregator extends AbstractPhaseInterceptor<Message> {
- public static final String WSA_CONFIGURATION_URI =
- "http://celtix.objectweb.org/bus/ws/addressing/wsa-config";
- public static final String WSA_CONFIGURATION_ID = "wsa-handler";
-
private static final Logger LOG =
LogUtils.getL7dLogger(MAPAggregator.class);
private static final ResourceBundle BUNDLE = LOG.getResourceBundle();
@@ -51,171 +57,132 @@
new HashMap<String, String>();
/**
- * resources injected by client/server endpoints
- */
- @Resource(name = JAXWSConstants.SERVER_BINDING_PROPERTY) protected
ServerBinding serverBinding;
- @Resource(name = JAXWSConstants.CLIENT_BINDING_PROPERTY) protected
ClientBinding clientBinding;
- @Resource(name = JAXWSConstants.CLIENT_TRANSPORT_PROPERTY) protected
ClientTransport clientTransport;
- @Resource(name = JAXWSConstants.SERVER_TRANSPORT_PROPERTY) protected
ServerTransport serverTransport;
-
- /**
* Whether the endpoint supports WS-Addressing.
*/
private final AtomicBoolean usingAddressingDetermined = new
AtomicBoolean(false);
private final AtomicBoolean usingAddressing = new AtomicBoolean(false);
- private Configuration configuration;
-
/**
- * Constructor.
+ * REVISIT allow this policy to be configured.
*/
- public MAPAggregator() {
- }
+ private final boolean allowDuplicates = true;
- @PostConstruct
- protected synchronized void initConfiguration() {
- AbstractBindingBase binding = (AbstractBindingBase)
- (clientBinding == null ? serverBinding : clientBinding);
- Configuration busCfg = binding.getBus().getConfiguration();
- org.objectweb.celtix.ws.addressing.EndpointReferenceType ref =
- binding.getEndpointReference();
- CompoundName id = null;
- if (null != clientBinding) {
- id = new CompoundName(
- busCfg.getId().toString(),
- EndpointReferenceUtils.getServiceName(ref).toString()
- + "/" + EndpointReferenceUtils.getPortName(ref),
- WSA_CONFIGURATION_ID
- );
- } else {
- id = new CompoundName(
- busCfg.getId().toString(),
- EndpointReferenceUtils.getServiceName(ref).toString(),
- WSA_CONFIGURATION_ID
- );
- }
- ConfigurationBuilder builder =
binding.getBus().getConfigurationBuilder();
- configuration = builder.getConfiguration(WSA_CONFIGURATION_URI, id);
- }
-
-
/**
- * Initialize the handler.
+ * Constructor.
*/
- public void init(Map<String, Object> map) {
+ public MAPAggregator() {
+ super();
+ setPhase(Phase.PRE_LOGICAL);
}
-
+
/**
* Invoked for normal processing of inbound and outbound messages.
*
- * @param context the messsage context
+ * @param message the current message
*/
- public boolean handleMessage(LogicalMessageContext context) {
- return mediate(context, false);
+ public void handleMessage(Message message) {
+ mediate(message, false);
}
/**
* Invoked for fault processing.
*
- * @param context the messsage context
- */
- public boolean handleFault(LogicalMessageContext context) {
- return mediate(context, true);
- }
-
- /**
- * Called at the conclusion of a message exchange pattern just prior to
- * the JAX-WS runtime dispatching a message, fault or exception.
- *
- * @param context the message context
+ * @param message the current message
*/
- public void close(MessageContext context) {
- }
-
- /**
- * Release handler resources.
- */
- public void destroy() {
+ public void handleFault(Message message) {
+ mediate(message, true);
}
/**
* Determine if addressing is being used
*
- * @param context the messsage context
+ * @param message the current message
* @pre message is outbound
*/
- private boolean usingAddressing(LogicalMessageContext context) {
+ private boolean usingAddressing(Message message) {
boolean ret = false;
- if (ContextUtils.isRequestor(context)) {
+ if (ContextUtils.isRequestor(message)) {
if (!usingAddressingDetermined.get()) {
- Port port = clientTransport == null ? null :
clientTransport.getPort();
- if (port != null) {
- Iterator<?> portExts =
- port.getExtensibilityElements().iterator();
- Iterator<?> bindingExts =
-
port.getBinding().getExtensibilityElements().iterator();
- ret = hasUsingAddressing(portExts)
- || hasUsingAddressing(bindingExts);
+ Endpoint endpoint = message.getExchange().get(Endpoint.class);
+ if (endpoint != null) {
+ EndpointInfo endpointInfo = endpoint.getEndpointInfo();
+ List<ExtensibilityElement> endpointExts =
+ endpointInfo != null
+ ? endpointInfo.getExtensors(ExtensibilityElement.class)
+ : null;
+ List<ExtensibilityElement> bindingExts =
+ endpointInfo != null
+ && endpointInfo.getBinding() != null
+ ?
endpointInfo.getBinding().getExtensors(ExtensibilityElement.class)
+ : null;
+ List<ExtensibilityElement> serviceExts =
+ endpointInfo != null
+ && endpointInfo.getService() != null
+ ?
endpointInfo.getService().getExtensors(ExtensibilityElement.class)
+ : null;
+ ret = hasUsingAddressing(endpointExts)
+ || hasUsingAddressing(bindingExts)
+ || hasUsingAddressing(serviceExts);
} else {
- ret = WSAContextUtils.retrieveUsingAddressing(context);
+ ret = WSAContextUtils.retrieveUsingAddressing(message);
}
setUsingAddressing(ret);
} else {
ret = usingAddressing.get();
}
} else {
- ret = getMAPs(context, false, false) != null;
+ ret = getMAPs(message, false, false) != null;
}
return ret;
}
/**
- * @param extensionElements iterator over extension elements
+ * @param exts list of extension elements
* @return true iff the UsingAddressing element is found
*/
- private boolean hasUsingAddressing(Iterator<?> extensionElements) {
+ private boolean hasUsingAddressing(List<ExtensibilityElement> exts) {
boolean found = false;
- while (extensionElements.hasNext() && !found) {
- ExtensibilityElement ext =
- (ExtensibilityElement)extensionElements.next();
- found =
Names.WSAW_USING_ADDRESSING_QNAME.equals(ext.getElementType());
-
- }
+ if (exts != null) {
+ Iterator<ExtensibilityElement> extensionElements = exts.iterator();
+ while (extensionElements.hasNext() && !found) {
+ ExtensibilityElement ext =
+ (ExtensibilityElement)extensionElements.next();
+ found =
Names.WSAW_USING_ADDRESSING_QNAME.equals(ext.getElementType());
+ }
+ }
return found;
}
/**
* Mediate message flow.
*
- * @param context the messsage context
+ * @param message the current message
* @param isFault true if a fault is being mediated
* @return true if processing should continue on dispatch path
*/
- private boolean mediate(LogicalMessageContext context, boolean isFault) {
+ private boolean mediate(Message message, boolean isFault) {
boolean continueProcessing = true;
- if (ContextUtils.isOutbound(context)) {
- if (usingAddressing(context)) {
+ if (ContextUtils.isOutbound(message)) {
+ if (usingAddressing(message)) {
// request/response MAPs must be aggregated
- aggregate(context, isFault);
+ aggregate(message, isFault);
}
- } else if (!ContextUtils.isRequestor(context)) {
+ } else if (!ContextUtils.isRequestor(message)) {
// responder validates incoming MAPs
- AddressingPropertiesImpl maps = getMAPs(context, false, false);
+ AddressingPropertiesImpl maps = getMAPs(message, false, false);
setUsingAddressing(true);
- continueProcessing = validateIncomingMAPs(maps, context);
+ continueProcessing = validateIncomingMAPs(maps, message);
if (continueProcessing) {
- if (ContextUtils.isOneway(context)
+ if (ContextUtils.isOneway(message)
|| !ContextUtils.isGenericAddress(maps.getReplyTo())) {
ContextUtils.rebaseTransport(maps.getReplyTo(),
maps.getNamespaceURI(),
- context,
- serverBinding,
- serverTransport);
+ message);
}
} else {
// validation failure => dispatch is aborted, response MAPs
// must be aggregated
- aggregate(context, isFault);
+ aggregate(message, isFault);
}
}
return continueProcessing;
@@ -224,30 +191,30 @@
/**
* Perform MAP aggregation.
*
- * @param context the messsage context
+ * @param message the current message
* @param isFault true if a fault is being mediated
*/
- private void aggregate(LogicalMessageContext context, boolean isFault) {
- AddressingPropertiesImpl maps = assembleGeneric(context);
- boolean isRequestor = ContextUtils.isRequestor(context);
- addRoleSpecific(maps, context, isRequestor, isFault);
+ private void aggregate(Message message, boolean isFault) {
+ AddressingPropertiesImpl maps = assembleGeneric(message);
+ boolean isRequestor = ContextUtils.isRequestor(message);
+ addRoleSpecific(maps, message, isRequestor, isFault);
// outbound property always used to store MAPs, as this handler
// aggregates only when either:
// a) message really is outbound
// b) message is currently inbound, but we are about to abort dispatch
// due to an incoming MAPs validation failure, so the dispatch
// will shortly traverse the outbound path
- ContextUtils.storeMAPs(maps, context, true, isRequestor, true);
+ ContextUtils.storeMAPs(maps, message, true, isRequestor, true);
}
/**
* Assemble the generic MAPs (for both requests and responses).
*
- * @param context the messsage context
+ * @param message the current message
* @return AddressingProperties containing the generic MAPs
*/
- private AddressingPropertiesImpl assembleGeneric(MessageContext context) {
- AddressingPropertiesImpl maps = getMAPs(context, true, true);
+ private AddressingPropertiesImpl assembleGeneric(Message message) {
+ AddressingPropertiesImpl maps = getMAPs(message, true, true);
// MessageID
if (maps.getMessageID() == null) {
String messageID = ContextUtils.generateUUID();
@@ -255,16 +222,17 @@
}
// To
if (maps.getTo() == null) {
- // To cached in context by transport
- EndpointReferenceType reference =
- WSAContextUtils.retrieveTo(clientTransport, context);
+ Conduit conduit = message.getConduit();
+ EndpointReferenceType reference = conduit != null
+ ? conduit.getTarget()
+ : null;
maps.setTo(reference != null
? reference.getAddress()
:
ContextUtils.getAttributedURI(Names.WSA_NONE_ADDRESS));
}
// Action
if (ContextUtils.hasEmptyAction(maps)) {
- maps.setAction(ContextUtils.getAction(context));
+ maps.setAction(ContextUtils.getAction(message));
}
return maps;
}
@@ -273,25 +241,30 @@
* Add MAPs which are specific to the requestor or responder role.
*
* @param maps the MAPs being assembled
- * @param context the messsage context
+ * @param message the current message
* @param isRequestor true iff the current messaging role is that of
* requestor
* @param isFault true if a fault is being mediated
*/
private void addRoleSpecific(AddressingPropertiesImpl maps,
- MessageContext context,
+ Message message,
boolean isRequestor,
boolean isFault) {
if (isRequestor) {
// add request-specific MAPs
- boolean isOneway = ContextUtils.isOneway(context);
+ boolean isOneway = ContextUtils.isOneway(message);
// ReplyTo, set if null in MAPs or if set to a generic address
// (anonymous or none) that may not be appropriate for the
// current invocation
EndpointReferenceType replyTo = maps.getReplyTo();
if (ContextUtils.isGenericAddress(replyTo)) {
- replyTo =
- WSAContextUtils.retrieveReplyTo(clientTransport, context);
+ Conduit conduit = message.getConduit();
+ if (conduit != null) {
+ Destination backChannel =
message.getConduit().getBackChannel();
+ if (backChannel != null) {
+ replyTo = backChannel.getAddress();
+ }
+ }
if (replyTo == null || isOneway) {
AttributedURIType address =
ContextUtils.getAttributedURI(isOneway
@@ -304,15 +277,15 @@
maps.setReplyTo(replyTo);
}
if (!isOneway) {
- // REVISIT FaultTo if cached by transport in context
+ // REVISIT FaultTo if cached by transport in message
}
// cache correlation ID
- if (ContextUtils.isOutbound(context)) {
- ContextUtils.storeCorrelationID(maps.getMessageID(), true,
context);
+ if (ContextUtils.isOutbound(message)) {
+ ContextUtils.storeCorrelationID(maps.getMessageID(), true,
message);
}
} else {
// add response-specific MAPs
- AddressingPropertiesImpl inMAPs = getMAPs(context, false, false);
+ AddressingPropertiesImpl inMAPs = getMAPs(message, false, false);
maps.exposeAs(inMAPs.getNamespaceURI());
// To taken from ReplyTo in incoming MAPs
if (inMAPs.getReplyTo() != null) {
@@ -328,9 +301,7 @@
&& !ContextUtils.isGenericAddress(inMAPs.getFaultTo())) {
ContextUtils.rebaseTransport(inMAPs.getFaultTo(),
inMAPs.getNamespaceURI(),
- context,
- serverBinding,
- serverTransport);
+ message);
}
}
}
@@ -339,22 +310,22 @@
* Get the starting point MAPs (either empty or those set explicitly
* by the application on the binding provider request context).
*
- * @param context the messsage context
+ * @param message the current message
* @param isProviderContext true if the binding provider request context
* available to the client application as opposed to the message context
* visible to handlers
* @param isOutbound true iff the message is outbound
* @return AddressingProperties retrieved MAPs
*/
- private AddressingPropertiesImpl getMAPs(MessageContext context,
+ private AddressingPropertiesImpl getMAPs(Message message,
boolean isProviderContext,
boolean isOutbound) {
AddressingPropertiesImpl maps = null;
- maps = ContextUtils.retrieveMAPs(context,
+ maps = ContextUtils.retrieveMAPs(message,
isProviderContext,
isOutbound);
- LOG.log(Level.INFO, "MAPs retrieved from context {0}", maps);
+ LOG.log(Level.INFO, "MAPs retrieved from message {0}", maps);
if (maps == null && isProviderContext) {
maps = new AddressingPropertiesImpl();
@@ -365,16 +336,14 @@
/**
* Validate incoming MAPs
* @param maps the incoming MAPs
- * @param context the messsage context
+ * @param message the current message
* @return true if incoming MAPs are valid
* @pre inbound message, not requestor
*/
private boolean validateIncomingMAPs(AddressingProperties maps,
- MessageContext context) {
+ Message message) {
boolean valid = true;
- if ((null == configuration
- || !configuration.getBoolean("allowDuplicates"))
- && maps != null) {
+ if (allowDuplicates && maps != null) {
AttributedURIType messageID = maps.getMessageID();
if (messageID != null
&& messageIDs.put(messageID.getValue(),
@@ -387,8 +356,8 @@
String l7dReason =
MessageFormat.format(reason, messageID.getValue());
ContextUtils.storeMAPFaultName(Names.DUPLICATE_MESSAGE_ID_NAME,
- context);
- ContextUtils.storeMAPFaultReason(l7dReason, context);
+ message);
+ ContextUtils.storeMAPFaultReason(l7dReason, message);
valid = false;
}
}
Copied:
incubator/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/AddressingBuilderImplTest.java
(from r438444,
incubator/cxf/branches/post_apache_integration/rt/ws/addr/src/test/java/org/objectweb/celtix/ws/addressing/AddressingBuilderImplTest.java)
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/AddressingBuilderImplTest.java?view=diff&rev=442984&p1=incubator/cxf/branches/post_apache_integration/rt/ws/addr/src/test/java/org/objectweb/celtix/ws/addressing/AddressingBuilderImplTest.java&r1=438444&p2=incubator/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/AddressingBuilderImplTest.java&r2=442984
==============================================================================
---
incubator/cxf/branches/post_apache_integration/rt/ws/addr/src/test/java/org/objectweb/celtix/ws/addressing/AddressingBuilderImplTest.java
(original)
+++
incubator/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/AddressingBuilderImplTest.java
Wed Sep 13 06:43:37 2006
@@ -1,7 +1,30 @@
-package org.objectweb.celtix.ws.addressing;
+/**
+ * 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.ws;
import junit.framework.TestCase;
+
+import org.apache.cxf.ws.addressing.AddressingBuilderImpl;
+import org.apache.cxf.ws.addressing.AddressingConstants;
+import org.apache.cxf.ws.addressing.AddressingProperties;
public class AddressingBuilderImplTest extends TestCase {
private AddressingBuilderImpl builder;
Copied:
incubator/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/AddressingBuilderTest.java
(from r438444,
incubator/cxf/branches/post_apache_integration/rt/ws/addr/src/test/java/org/objectweb/celtix/ws/addressing/AddressingBuilderTest.java)
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/AddressingBuilderTest.java?view=diff&rev=442984&p1=incubator/cxf/branches/post_apache_integration/rt/ws/addr/src/test/java/org/objectweb/celtix/ws/addressing/AddressingBuilderTest.java&r1=438444&p2=incubator/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/AddressingBuilderTest.java&r2=442984
==============================================================================
---
incubator/cxf/branches/post_apache_integration/rt/ws/addr/src/test/java/org/objectweb/celtix/ws/addressing/AddressingBuilderTest.java
(original)
+++
incubator/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/AddressingBuilderTest.java
Wed Sep 13 06:43:37 2006
@@ -1,4 +1,23 @@
-package org.objectweb.celtix.ws.addressing;
+/**
+ * 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.ws.addressing;
import junit.framework.TestCase;
Copied:
incubator/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/AddressingConstantsImplTest.java
(from r438444,
incubator/cxf/branches/post_apache_integration/rt/ws/addr/src/test/java/org/objectweb/celtix/ws/addressing/AddressingConstantsImplTest.java)
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/AddressingConstantsImplTest.java?view=diff&rev=442984&p1=incubator/cxf/branches/post_apache_integration/rt/ws/addr/src/test/java/org/objectweb/celtix/ws/addressing/AddressingConstantsImplTest.java&r1=438444&p2=incubator/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/AddressingConstantsImplTest.java&r2=442984
==============================================================================
---
incubator/cxf/branches/post_apache_integration/rt/ws/addr/src/test/java/org/objectweb/celtix/ws/addressing/AddressingConstantsImplTest.java
(original)
+++
incubator/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/AddressingConstantsImplTest.java
Wed Sep 13 06:43:37 2006
@@ -1,4 +1,23 @@
-package org.objectweb.celtix.ws.addressing;
+/**
+ * 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.ws.addressing;
import javax.xml.namespace.QName;
@@ -140,7 +159,7 @@
public void testGetPackageName() throws Exception {
assertEquals("unexpected constant",
- "org.objectweb.celtix.ws.addressing",
+ "org.apache.cxf.ws.addressing",
constants.getPackageName());
}