Added: 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/at/TransactionManagerImpl.java
URL: 
http://svn.apache.org/viewcvs/webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/at/TransactionManagerImpl.java?rev=368901&view=auto
==============================================================================
--- 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/at/TransactionManagerImpl.java
 (added)
+++ 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/at/TransactionManagerImpl.java
 Fri Jan 13 14:58:04 2006
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.kandula.coordinator.at;
+
+import java.rmi.RemoteException;
+
+import org.apache.axis.message.addressing.EndpointReference;
+import org.apache.kandula.coordinator.ActivationStub;
+import org.apache.kandula.coordinator.CoordinationContext;
+import org.apache.kandula.coordinator.CoordinationService;
+
+public class TransactionManagerImpl {
+       
+       private static TransactionManagerImpl instance = new 
TransactionManagerImpl();
+
+       private static ThreadLocal threadInfo = new ThreadLocal();
+
+       public static TransactionManagerImpl getInstance() {
+               return instance;
+       }
+
+       private TransactionManagerImpl() {
+       }
+
+       public void begin() throws RemoteException {
+               
begin(CoordinationService.getInstance().getActivationCoordinatorService());
+       }
+
+       public void begin(EndpointReference epr) throws RemoteException {
+               if (threadInfo.get() != null)
+                       throw new IllegalStateException();
+               CoordinationContext ctx;
+               try {
+                       ctx = new 
ActivationStub(epr).createCoordinationContext(ATCoordinator.COORDINATION_TYPE_ID);
+                       threadInfo.set(new TransactionImpl(ctx));
+               } catch (RemoteException e) {
+                       throw e;
+               } catch (Exception e) {
+                       e.printStackTrace();
+                       throw new RuntimeException(e);
+               }
+       }
+
+       public void commit() throws RemoteException {
+               TransactionImpl tx = getTransaction();
+               if (tx == null)
+                       throw new IllegalStateException();
+               forget();
+               tx.commit();
+       }
+
+       public void rollback() throws RemoteException {
+               TransactionImpl tx = getTransaction();
+               if (tx == null)
+                       throw new IllegalStateException();
+               forget();
+               tx.rollback();
+       }
+
+       public TransactionImpl suspend() {
+               TransactionImpl tx = getTransaction();
+               forget();
+               return tx;
+       }
+
+       public void resume(TransactionImpl tx) {
+               if (threadInfo.get() != null)
+                       throw new IllegalStateException();
+               threadInfo.set(tx);
+       }
+
+       public void forget() {
+               threadInfo.set(null);
+       }
+
+       public TransactionImpl getTransaction() {
+               return (TransactionImpl) threadInfo.get();
+       }
+}
\ No newline at end of file

Added: 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/at/TxHandler.java
URL: 
http://svn.apache.org/viewcvs/webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/at/TxHandler.java?rev=368901&view=auto
==============================================================================
--- 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/at/TxHandler.java
 (added)
+++ 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/at/TxHandler.java
 Fri Jan 13 14:58:04 2006
@@ -0,0 +1,71 @@
+/*
+ * Copyright  2004 The Apache Software Foundation.
+ *
+ *  Licensed 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.kandula.coordinator.at;
+
+import java.util.Iterator;
+
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPHeader;
+
+import org.apache.axis.AxisFault;
+import org.apache.axis.MessageContext;
+import org.apache.axis.handlers.BasicHandler;
+import org.apache.kandula.coordinator.CoordinationContext;
+
+/**
+ * @author Dasarath Weeratunge
+ */
+public class TxHandler extends BasicHandler {
+       TransactionManagerImpl tm = TransactionManagerImpl.getInstance();
+
+       public void invoke(MessageContext mc) throws AxisFault {
+               if (mc.isClient()) {
+                       TransactionImpl tx = tm.getTransaction();
+                       if (tx != null) {
+                               try {
+                                       SOAPHeader header = 
mc.getCurrentMessage().getSOAPEnvelope().getHeader();
+                                       
tx.getCoordinationContex().toSOAPHeaderElement(header);
+                               } catch (Exception e) {
+                                       throw AxisFault.makeFault(e);
+                               }
+                       }
+               }
+               else {
+                       if (mc.getPastPivot())
+                               tm.forget();
+                       else {
+                               try {
+                               SOAPHeader header = 
mc.getCurrentMessage().getSOAPEnvelope().getHeader();
+                               Iterator iter = header.getChildElements();
+                               while (iter.hasNext()) {
+                                       SOAPElement e = (SOAPElement) 
iter.next();
+                                       if (CoordinationContext.is(e)) {
+                                               CoordinationContext ctx = new 
CoordinationContext(e);
+                                               tm.resume(new 
TransactionImpl(ctx));
+                                               return;
+                                       }
+                               }
+                               } catch (SOAPException e){
+                                       e.printStackTrace();
+                                       throw new AxisFault();
+                               }
+                       }
+
+               }
+       }
+}
\ No newline at end of file

Added: 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/geronimo/Bridge.java
URL: 
http://svn.apache.org/viewcvs/webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/geronimo/Bridge.java?rev=368901&view=auto
==============================================================================
--- 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/geronimo/Bridge.java
 (added)
+++ 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/geronimo/Bridge.java
 Fri Jan 13 14:58:04 2006
@@ -0,0 +1,83 @@
+/*
+ * Created on Dec 26, 2005
+ *
+ */
+package org.apache.kandula.geronimo;
+
+import java.rmi.RemoteException;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.transaction.Transaction;
+import javax.transaction.TransactionManager;
+import javax.transaction.xa.XAException;
+
+import org.apache.geronimo.transaction.manager.TransactionManagerImpl;
+import org.apache.kandula.coordinator.CoordinationContext;
+import org.apache.kandula.wscoor.Expires;
+
+/**
+ * @author Dasarath Weeratunge
+ *  
+ */
+public class Bridge {
+
+       private static Bridge instance = new Bridge();
+
+       private static final int TIMEOUT_S = 60 * 60;
+
+       public static Bridge getInstance() {
+               return instance;
+       }
+
+       private Map inM = new HashMap();
+
+       TransactionManagerImpl tm;
+
+       private Bridge() {
+               try {
+                       tm = new TransactionManagerImpl(TIMEOUT_S, null, null);
+               } catch (XAException e) {
+                       e.printStackTrace();
+                       throw new RuntimeException(e);
+               }
+       }
+
+       public TransactionManager getTM() {
+               return tm;
+       }
+
+       public synchronized Transaction mediate(CoordinationContext ctx)
+                       throws RemoteException {
+               String id = ctx.getIdentifier().toString();
+               Transaction tx = (Transaction) inM.get(id);
+               if (tx != null)
+                       return tx;
+               Expires expires = ctx.getExpires();
+               long timeout = 0;
+               if (expires != null)
+                       timeout = expires.get_value().longValue();
+
+               try {
+                       tm.begin(timeout);
+                       tx = tm.suspend();
+               } catch (Exception e) {
+                       e.printStackTrace();
+                       throw new RuntimeException(e);
+               }
+
+               new Mediator(tx, ctx);
+
+               inM.put(id, tx);
+               return tx;
+       }
+
+       public synchronized CoordinationContext mediate(Transaction tx) {
+               return null;
+
+       }
+
+       public void forget(String id) {
+               inM.remove(id);
+       }
+}
\ No newline at end of file

Added: 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/geronimo/Mediator.java
URL: 
http://svn.apache.org/viewcvs/webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/geronimo/Mediator.java?rev=368901&view=auto
==============================================================================
--- 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/geronimo/Mediator.java
 (added)
+++ 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/geronimo/Mediator.java
 Fri Jan 13 14:58:04 2006
@@ -0,0 +1,168 @@
+/*
+ * Created on Dec 27, 2005
+ *
+ */
+package org.apache.kandula.geronimo;
+
+import java.rmi.RemoteException;
+
+import javax.transaction.Status;
+import javax.transaction.SystemException;
+import javax.transaction.Transaction;
+import javax.transaction.xa.XAException;
+import javax.transaction.xa.XAResource;
+import javax.transaction.xa.Xid;
+
+import org.apache.geronimo.transaction.manager.NamedXAResource;
+import org.apache.geronimo.transaction.manager.TransactionManagerImpl;
+import org.apache.kandula.coordinator.CoordinationContext;
+import org.apache.kandula.coordinator.at.AT2PCStatus;
+import org.apache.kandula.coordinator.at.AbstractParticipant;
+
+/**
+ * @author Dasarath Weeratunge
+ *  
+ */
+public class Mediator extends AbstractParticipant implements NamedXAResource {
+
+       private int timeout = Integer.MAX_VALUE;
+
+       private String id;
+
+       private Transaction tx;
+
+       private static Bridge bridge = Bridge.getInstance();
+
+       private static TransactionManagerImpl tm = (TransactionManagerImpl) 
bridge.getTM();
+
+       private boolean bridged = true;
+
+       public Mediator(Transaction tx, CoordinationContext ctx)
+                       throws RemoteException {
+               register(true, ctx);
+               id = ctx.getIdentifier().toString();
+               this.tx = tx;
+               try {
+                       tx.enlistResource(this);
+               } catch (Exception e) {
+                       throw new RuntimeException(e);
+               }
+       }
+
+       public void commit(Xid arg0, boolean arg1) throws XAException {
+               if (bridged) {
+                       forget();
+                       try {
+                               getCoordinator().committedOperation(null);
+                       } catch (Exception e) {
+                       }
+               }
+       }
+
+       public void end(Xid arg0, int arg1) throws XAException {
+       }
+
+       public void forget(Xid arg0) throws XAException {
+       }
+
+       public String getName() {
+               return getClass().getName();
+       }
+
+       public int getTransactionTimeout() throws XAException {
+               return timeout;
+       }
+
+       public boolean isSameRM(XAResource rm) throws XAException {
+               return this == rm;
+       }
+
+       public int prepare(Xid arg0) throws XAException {
+               if (bridged) {
+                       forget();
+                       try {
+                               getCoordinator().abortedOperation(null);
+                       } catch (Exception e) {
+                       }
+                       throw new XAException();
+               } else
+                       return XAResource.XA_RDONLY;
+       }
+
+       public Xid[] recover(int arg0) throws XAException {
+               return null;
+       }
+
+       public void rollback(Xid arg0) throws XAException {
+               if (bridged) {
+                       forget();
+                       try {
+                               getCoordinator().abortedOperation(null);
+                       } catch (Exception e) {
+                       }
+               }
+       }
+
+       public boolean setTransactionTimeout(int timeout) throws XAException {
+               this.timeout = timeout;
+               return true;
+       }
+
+       public void start(Xid arg0, int arg1) throws XAException {
+       }
+
+       public int prepare() throws XAException {
+               forget();
+               return tm.prepare(tx);
+       }
+
+       public void commit() throws XAException {
+               tm.commit(tx, false);
+       }
+
+       public void rollback() throws XAException {
+               tm.rollback(tx);
+       }
+
+       public void forget() {
+               if (bridged) {
+                       bridge.forget(id);
+                       bridged = false;
+               }
+       }
+
+       public int getStatus() {
+               try {
+                       switch (tm.getStatus()) {
+                       case Status.STATUS_ACTIVE:
+                       case Status.STATUS_MARKED_ROLLBACK:
+                               return AT2PCStatus.ACTIVE;
+
+                       case Status.STATUS_PREPARING:
+                               return AT2PCStatus.PREPARING;
+
+                       case Status.STATUS_ROLLING_BACK:
+                       case Status.STATUS_ROLLEDBACK:
+                               return AT2PCStatus.ABORTING;
+
+                       case Status.STATUS_PREPARED:
+                               return AT2PCStatus.PREPARED;
+
+                       case Status.STATUS_COMMITTING:
+                       case Status.STATUS_COMMITTED:
+                               return AT2PCStatus.COMMITTING;
+
+                       case Status.STATUS_NO_TRANSACTION:
+                               return AT2PCStatus.NONE;
+
+                       case Status.STATUS_UNKNOWN:
+                       default:
+                               throw new RuntimeException();
+                       }
+               } catch (SystemException e) {
+                       e.printStackTrace();
+                       throw new RuntimeException(e);
+               }
+       }
+
+}
\ No newline at end of file

Added: 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/geronimo/TxHandler.java
URL: 
http://svn.apache.org/viewcvs/webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/geronimo/TxHandler.java?rev=368901&view=auto
==============================================================================
--- 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/geronimo/TxHandler.java
 (added)
+++ 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/geronimo/TxHandler.java
 Fri Jan 13 14:58:04 2006
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.kandula.geronimo;
+
+import java.util.Iterator;
+
+import javax.transaction.Transaction;
+import javax.transaction.TransactionManager;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPHeader;
+
+import org.apache.axis.AxisFault;
+import org.apache.axis.MessageContext;
+import org.apache.axis.handlers.BasicHandler;
+import org.apache.kandula.coordinator.CoordinationContext;
+
+public class TxHandler extends BasicHandler {
+       private Bridge bridge = Bridge.getInstance();
+
+       private TransactionManager tm = bridge.getTM();
+
+       static private ThreadLocal threadInfo = new ThreadLocal();
+
+       public void invoke(MessageContext mc) throws AxisFault {
+               try {
+                       if (mc.getCurrentMessage() == null)
+                               return;
+
+                       if (mc.isClient() && !mc.getPastPivot()) {
+//                             Transaction tx = tm.getTransaction();
+//                             if (tx == null)
+//                                     return;
+//
+//                             SOAPHeader header = 
mc.getCurrentMessage().getSOAPEnvelope().getHeader();
+//                             CoordinationContext ctx = bridge.mediate(tx);
+//                             ctx.toSOAPHeaderElement(header);
+                       } else {
+                               if (mc.getPastPivot()) {
+                                       if (threadInfo.get() == null)
+                                               return;
+
+                                       tm.suspend();
+                                       threadInfo.set(null);
+                               } else {
+                                       SOAPHeader header = 
mc.getCurrentMessage().getSOAPEnvelope().getHeader();
+                                       Iterator iter = 
header.getChildElements();
+                                       while (iter.hasNext()) {
+                                               SOAPElement e = (SOAPElement) 
iter.next();
+                                               if (CoordinationContext.is(e)) {
+                                                       CoordinationContext ctx 
= new CoordinationContext(e);
+                                                       Transaction tx = 
bridge.mediate(ctx);
+                                                       tm.resume(tx);
+                                                       threadInfo.set(tx);
+                                                       return;
+                                               }
+                                       }
+                               }
+                       }
+               } catch (Exception e) {
+                       throw AxisFault.makeFault(e);
+               }
+       }
+}
\ No newline at end of file

Added: 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/utils/AddressingHeaders.java
URL: 
http://svn.apache.org/viewcvs/webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/utils/AddressingHeaders.java?rev=368901&view=auto
==============================================================================
--- 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/utils/AddressingHeaders.java
 (added)
+++ 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/utils/AddressingHeaders.java
 Fri Jan 13 14:58:04 2006
@@ -0,0 +1,51 @@
+/*
+ * Created on Jan 6, 2006
+ *
+ */
+package org.apache.kandula.utils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.axis.components.uuid.UUIDGenFactory;
+import org.apache.axis.message.addressing.EndpointReference;
+import org.apache.axis.message.addressing.MessageID;
+import org.apache.axis.message.addressing.RelatesTo;
+import org.apache.axis.message.addressing.RelationshipTypeValues;
+import org.apache.axis.types.URI;
+import org.apache.axis.types.URI.MalformedURIException;
+
+/**
+ * @author Dasarath Weeratunge
+ *  
+ */
+public class AddressingHeaders extends
+               org.apache.axis.message.addressing.AddressingHeaders {
+
+       public AddressingHeaders(EndpointReference to, EndpointReference from) {
+               super(to);
+               MessageID id;
+               try {
+                       id = new MessageID(new URI("uuid:"
+                                       + 
UUIDGenFactory.getUUIDGen().nextUUID()));
+               } catch (MalformedURIException e) {
+                       e.printStackTrace();
+                       throw new RuntimeException(e);
+               }
+               setMessageID(id);
+               if (from != null)
+                       setFrom(from);
+       }
+
+       public AddressingHeaders(EndpointReference to, EndpointReference from,
+                       EndpointReference replyTo) {
+               this(to, from);
+               setReplyTo(replyTo);
+       }
+
+       public void setRelatesTo(MessageID id) {
+               List l = new ArrayList(1);
+               l.add(new RelatesTo(id, RelationshipTypeValues.RESPONSE));
+               setRelatesTo(l);
+       }
+}
\ No newline at end of file

Added: 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/utils/Service.java
URL: 
http://svn.apache.org/viewcvs/webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/utils/Service.java?rev=368901&view=auto
==============================================================================
--- 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/utils/Service.java
 (added)
+++ 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/utils/Service.java
 Fri Jan 13 14:58:04 2006
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.kandula.utils;
+
+import javax.xml.namespace.QName;
+import javax.xml.rpc.Call;
+import javax.xml.rpc.ServiceException;
+
+import org.apache.axis.message.addressing.AddressingHeaders;
+import org.apache.axis.message.addressing.Constants;
+
+public class Service extends org.apache.axis.client.Service {
+       AddressingHeaders headers;
+
+       //      Callback callback;
+
+       public Service() {
+       }
+
+       //      public Service(EndpointReference to) {
+       //              headers = new AddressingHeaders(to);
+       //      }
+       //
+       //      public Service(EndpointReference to, Callback callback) {
+       //              headers = new AddressingHeaders(to);
+       //              setCallback(callback);
+       //      }
+       //
+       //      public Service(EndpointReference to, EndpointReference replyTo,
+       //                      Callback callback) {
+       //              headers = new AddressingHeaders(to);
+       //              headers.setReplyTo(replyTo);
+       //      }
+       //
+       //      public void setCallback(Callback callback) {
+       //              this.callback = callback;
+       //              CoordinationService cs = 
CoordinationService.getInstance();
+       //              
headers.setFaultTo(cs.getFaultDispatcherService(callback));
+       //      }
+       //
+       //      public void setRelatesTo(MessageID id) {
+       //              List l = new ArrayList(1);
+       //              l.add(new RelatesTo(id, 
RelationshipTypeValues.RESPONSE));
+       //              headers.setRelatesTo(l);
+       //      }
+
+       public void setAddressingHeaders(AddressingHeaders headers) {
+               this.headers = headers;
+       }
+
+       public Call createCall() throws ServiceException {
+               Call call = super.createCall();
+               //              if (callback != null) {
+               //                      try {
+               //                              MessageID id = new 
MessageID(new URI("uuid:"
+               //                                              + 
UUIDGenFactory.getUUIDGen().nextUUID()));
+               //                              headers.setMessageID(id);
+               //                              String ref = id.toString();
+               //                              
CallbackRegistry.getInstance().registerCallback(ref, callback);
+               //                              MessageElement e = new 
MessageElement(
+               //                                              
CallbackRegistry.CALLBACK_REF, ref);
+               //                              
headers.getReplyTo().getProperties().add(e);
+               //                      } catch (MalformedURIException e) {
+               //                              throw new 
ServiceException(e.getMessage());
+               //                      }
+               //              }
+               call.setProperty(Constants.ENV_ADDRESSING_REQUEST_HEADERS, 
headers);
+               return call;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see javax.xml.rpc.Service#createCall(javax.xml.namespace.QName,
+        *      javax.xml.namespace.QName)
+        */
+       public Call createCall(QName arg0, QName arg1) throws ServiceException {
+               throw new UnsupportedOperationException();
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see javax.xml.rpc.Service#createCall(javax.xml.namespace.QName,
+        *      java.lang.String)
+        */
+       public Call createCall(QName arg0, String arg1) throws ServiceException 
{
+               throw new UnsupportedOperationException();
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see javax.xml.rpc.Service#createCall(javax.xml.namespace.QName)
+        */
+       public Call createCall(QName arg0) throws ServiceException {
+               throw new UnsupportedOperationException();
+       }
+
+}
\ No newline at end of file

Added: 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/utils/SoapFaultSender.java
URL: 
http://svn.apache.org/viewcvs/webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/utils/SoapFaultSender.java?rev=368901&view=auto
==============================================================================
--- 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/utils/SoapFaultSender.java
 (added)
+++ 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/utils/SoapFaultSender.java
 Fri Jan 13 14:58:04 2006
@@ -0,0 +1,60 @@
+/*
+ * Created on Jan 3, 2006
+ *
+ */
+package org.apache.kandula.utils;
+
+import java.net.MalformedURLException;
+
+import javax.xml.rpc.ServiceException;
+
+import org.apache.axis.AxisFault;
+import org.apache.axis.MessageContext;
+import org.apache.axis.client.Call;
+import org.apache.axis.message.SOAPEnvelope;
+import org.apache.axis.message.SOAPFault;
+import org.apache.axis.message.addressing.Constants;
+import org.apache.axis.message.addressing.EndpointReference;
+import org.apache.axis.message.addressing.MessageID;
+import org.apache.axis.soap.SOAPConstants;
+
+/**
+ * @author Dasarath Weeratunge
+ *  
+ */
+public class SoapFaultSender {
+
+       private static MessageID getCurrentMessageID() {
+               org.apache.axis.message.addressing.AddressingHeaders headers = 
(org.apache.axis.message.addressing.AddressingHeaders) 
MessageContext.getCurrentContext().getProperty(
+                       Constants.ENV_ADDRESSING_REQUEST_HEADERS);
+               return headers.getMessageID();
+       }
+
+       public static void invoke(EndpointReference faultTo, String action,
+                       AxisFault fault) throws AxisFault, 
MalformedURLException,
+                       ServiceException {
+               if (faultTo == null)
+                       throw fault;
+
+               AddressingHeaders headers = new AddressingHeaders(faultTo, 
null);
+               headers.setRelatesTo(getCurrentMessageID());
+               Service service = new Service();
+               service.setAddressingHeaders(headers);
+               Call call = (Call) service.createCall();
+               
call.setTargetEndpointAddress(TCPSnifferHelper.redirect(faultTo.getAddress().toString()));
+               call.setSOAPActionURI(action);
+
+               SOAPEnvelope env = new SOAPEnvelope();
+               SOAPFault faultElement = new SOAPFault(fault);
+               env.addBodyElement(faultElement);
+               // FIXME:
+               
faultElement.setQName(SOAPConstants.SOAP11_CONSTANTS.getFaultQName());
+               // FIXME:
+               fault.setFaultDetail(null);
+
+               try {
+                       call.invoke(env);
+               } catch (Exception e) {
+               }
+       }
+}
\ No newline at end of file

Added: 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/utils/TCPSnifferHelper.java
URL: 
http://svn.apache.org/viewcvs/webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/utils/TCPSnifferHelper.java?rev=368901&view=auto
==============================================================================
--- 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/utils/TCPSnifferHelper.java
 (added)
+++ 
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/utils/TCPSnifferHelper.java
 Fri Jan 13 14:58:04 2006
@@ -0,0 +1,19 @@
+/*
+ * Created on Dec 23, 2005
+ *
+ */
+package org.apache.kandula.utils;
+
+
+/**
+ * @author Dasarath Weeratunge
+ *  
+ */
+public class TCPSnifferHelper {
+
+       public static String redirect(String url) {
+               return url.replaceAll("wsi\\.alphaworks\\.ibm\\.com:8080",
+                               "localhost:8082");
+       }
+       
+}
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to