Author: gnodet Date: Fri Feb 9 06:08:07 2007 New Revision: 505301 URL: http://svn.apache.org/viewvc?view=rev&rev=505301 Log: ODE-98: Provide a way to lazy discover the JBI endpoint, so that processes can refer to JBI endpoints activated later
Modified: incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/BindingContextImpl.java incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/JbiEndpointReference.java Modified: incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/BindingContextImpl.java URL: http://svn.apache.org/viewvc/incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/BindingContextImpl.java?view=diff&rev=505301&r1=505300&r2=505301 ============================================================================== --- incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/BindingContextImpl.java (original) +++ incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/BindingContextImpl.java Fri Feb 9 06:08:07 2007 @@ -22,7 +22,6 @@ import org.apache.commons.logging.LogFactory; import org.apache.ode.bpel.iapi.*; -import javax.jbi.servicedesc.ServiceEndpoint; import javax.wsdl.PortType; import javax.xml.namespace.QName; @@ -63,17 +62,12 @@ public PartnerRoleChannel createPartnerRoleChannel(QName processId, PortType portType, Endpoint initialPartnerEndpoint) { - if (initialPartnerEndpoint != null) { - ServiceEndpoint se = _ode.getContext().getEndpoint(initialPartnerEndpoint.serviceName,initialPartnerEndpoint.portName); - if (se == null) - throw new ContextException("Unknown endpoint: " + initialPartnerEndpoint, null); - JbiEndpointReference jbiEpr = new JbiEndpointReference(se); + JbiEndpointReference jbiEpr = new JbiEndpointReference(initialPartnerEndpoint, _ode); return new PartnerRoleChannelImpl(jbiEpr); } else { return new PartnerRoleChannelImpl(); } - } Modified: incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/JbiEndpointReference.java URL: http://svn.apache.org/viewvc/incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/JbiEndpointReference.java?view=diff&rev=505301&r1=505300&r2=505301 ============================================================================== --- incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/JbiEndpointReference.java (original) +++ incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/JbiEndpointReference.java Fri Feb 9 06:08:07 2007 @@ -26,6 +26,8 @@ import org.w3c.dom.DocumentFragment; import org.w3c.dom.Element; +import org.apache.ode.bpel.iapi.ContextException; +import org.apache.ode.bpel.iapi.Endpoint; import org.apache.ode.bpel.iapi.EndpointReference; import org.apache.ode.utils.DOMUtils; @@ -36,9 +38,17 @@ */ class JbiEndpointReference implements EndpointReference { + private OdeContext _ode; + private Endpoint _initialPartnerEndpoint; private ServiceEndpoint _se; private QName _type; + JbiEndpointReference(Endpoint initialPartnerEndpoint, OdeContext ode) { + _initialPartnerEndpoint = initialPartnerEndpoint; + _ode = ode; + } + + JbiEndpointReference(ServiceEndpoint se) { if (se == null) throw new NullPointerException("Null ServiceEndpoint"); @@ -51,10 +61,9 @@ } public Document toXML() { - DocumentFragment fragment = _se.getAsReference(_type); + DocumentFragment fragment = getServiceEndpoint().getAsReference(_type); if (fragment == null) return null; - Document doc = DOMUtils.newDocument(); Element root = doc.createElementNS(SERVICE_REF_QNAME.getNamespaceURI(),SERVICE_REF_QNAME.getLocalPart()); root.appendChild(doc.importNode(fragment,true)); @@ -64,15 +73,33 @@ public boolean equals(Object other) { if (other instanceof JbiEndpointReference) - return _se.getServiceName().equals(((JbiEndpointReference)other)._se.getServiceName()); + return getServiceEndpoint().getServiceName().equals(((JbiEndpointReference)other).getServiceEndpoint().getServiceName()); return false; } public int hashCode() { - return _se.getServiceName().hashCode(); + return getServiceEndpoint().getServiceName().hashCode(); + } + + public String toString() { + if (_se != null) { + return "JbiEndpointReference[" + _se.getServiceName() + ":" + _se.getEndpointName() + "]"; + } else if (_initialPartnerEndpoint != null) { + return "JbiEndpointReference[" + _initialPartnerEndpoint.serviceName + ":" + _initialPartnerEndpoint.portName + "]"; + } else { + return "JbiEndpointReference[unknown]"; + } } ServiceEndpoint getServiceEndpoint() { + if (_se == null) { + if (_initialPartnerEndpoint != null) { + _se = _ode.getContext().getEndpoint(_initialPartnerEndpoint.serviceName, _initialPartnerEndpoint.portName); + if (_se == null) { + throw new ContextException("Unknown endpoint: " + _initialPartnerEndpoint, null); + } + } + } return _se; } }