From: ekawas <edw...@us...> - 2009-01-23 18:34:37
|
Update of /cvsroot/taverna/t2activities/biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv15920/biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby Modified Files: BiomobyActivity.java Log Message: fix for async services (thanks Jose Maria Fernandez) Index: BiomobyActivity.java =================================================================== RCS file: /cvsroot/taverna/t2activities/biomoby-activity/src/main/java/net/sf/taverna/t2/activities/biomoby/BiomobyActivity.java,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** BiomobyActivity.java 8 Jan 2009 21:12:38 -0000 1.11 --- BiomobyActivity.java 23 Jan 2009 18:34:30 -0000 1.12 *************** *** 151,154 **** --- 151,159 ---- configureSecondaries(); doInit = false; + configurationBean.setCategory(mobyService.getCategory()); + configurationBean.setServiceType( + mobyService.getServiceType() == null ? + "Service" : + mobyService.getServiceType().getName()); } else { configureSecondaries(); *************** *** 1704,1734 **** { try { ! DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); ! dbf.setNamespaceAware(true); ! dbf.setValidating(false); ! DocumentBuilder db = dbf.newDocumentBuilder(); ! ! Service service=Service.create(new QName(MobyService.BIOMOBY_SERVICE_URI,msName + "Service")); ! QName mQName=new QName(MobyService.BIOMOBY_SERVICE_URI,msName + "Port"); ! ! service.addPort(mQName,SOAPBinding.SOAP11HTTP_BINDING,endpoint); ! Dispatch<Source> dispatch = service.createDispatch(mQName,Source.class,Service.Mode.PAYLOAD); ! Map<String,Object> rc = dispatch.getRequestContext(); ! rc.put(BindingProvider.SOAPACTION_USE_PROPERTY, new Boolean(true)); ! rc.put(BindingProvider.SOAPACTION_URI_PROPERTY, MobyService.BIOMOBY_SERVICE_URI+"#" + msName+"_submit"); ! ! org.w3c.dom.Document mobyMessage = db.newDocument(); ! org.w3c.dom.Element rootMessage = mobyMessage.createElementNS(MobyService.BIOMOBY_SERVICE_URI, msName + "_submit"); ! mobyMessage.appendChild(rootMessage); ! org.w3c.dom.Element data=mobyMessage.createElementNS(MobyService.BIOMOBY_SERVICE_URI, "data"); ! rootMessage.appendChild(data); ! data.setAttributeNS(XMLNS_NS,"xmlns:xsi",MobyPrefixResolver.XSI_NAMESPACE2001); ! data.setAttributeNS(XMLNS_NS,"xmlns:xsd",XSD_NS); ! // data.setAttributeNS("http://www.w3.org/2000/xmlns/","xsd","http://www.w3.org/2001/XMLSchema"); ! data.setAttributeNS(MobyPrefixResolver.XSI_NAMESPACE2001, "type", "xsd:string"); ! data.appendChild(mobyMessage.createTextNode(mobyXML)); ! ! Source input=new DOMSource(mobyMessage); ! Source output = dispatch.invoke(input); StringWriter sw=new StringWriter(); --- 1709,1754 ---- { try { ! Service service = Service.create(new QName( ! MobyService.BIOMOBY_SERVICE_URI, msName + "Service")); ! QName mQName = new QName(MobyService.BIOMOBY_SERVICE_URI, msName ! + "Port"); ! ! service.addPort(mQName, SOAPBinding.SOAP11HTTP_BINDING, endpoint); ! Dispatch<SOAPMessage> dispatch = service.createDispatch(mQName, ! SOAPMessage.class, Service.Mode.MESSAGE); ! Map<String, Object> rc = dispatch.getRequestContext(); ! rc.put(BindingProvider.SOAPACTION_USE_PROPERTY, new Boolean(true)); ! rc.put(BindingProvider.SOAPACTION_URI_PROPERTY, ! MobyService.BIOMOBY_SERVICE_URI + "#" + msName + "_submit"); ! ! MessageFactory mf = MessageFactory.newInstance(); ! SOAPMessage request = mf.createMessage(); ! SOAPPart part = request.getSOAPPart(); ! ! String mobyPrefix = "mobyws"; ! String xsiPrefix = "xsi"; ! ! // Obtain the SOAPEnvelope and header and body elements. ! SOAPEnvelope env = part.getEnvelope(); ! SOAPBody body = env.getBody(); ! ! // Now the SOAP body ! body.addNamespaceDeclaration(mobyPrefix, ! MobyService.BIOMOBY_SERVICE_URI); ! SOAPElement rootMessage = body.addChildElement(msName + "_submit", ! mobyPrefix, MobyService.BIOMOBY_SERVICE_URI); ! SOAPElement data = rootMessage.addChildElement("data", mobyPrefix, ! MobyService.BIOMOBY_SERVICE_URI); ! data.addNamespaceDeclaration(xsiPrefix, ! MobyPrefixResolver.XSI_NAMESPACE2001); ! data.addNamespaceDeclaration("xsd", XSD_NS); ! data.addAttribute(env.createName("type", xsiPrefix, ! MobyPrefixResolver.XSI_NAMESPACE2001), "xsd:string"); ! data.addTextNode(mobyXML); ! ! request.saveChanges(); ! SOAPMessage outputMessage = dispatch.invoke(request); ! DOMSource output = new DOMSource(outputMessage.getSOAPPart() ! .getEnvelope()); StringWriter sw=new StringWriter(); *************** *** 1739,1744 **** String response=sw.toString(); return EndpointReference.createFromXML(response); ! } catch(ParserConfigurationException pce) { ! throw new MobyException("Unable to create document builder for MOBY asynchronous call submission",pce); } catch(TransformerConfigurationException tce) { throw new MobyException("Unable to create transformer factory for MOBY asynchronous call response",tce); --- 1759,1764 ---- String response=sw.toString(); return EndpointReference.createFromXML(response); ! } catch(SOAPException pce) { ! throw new MobyException("Unable to create SOAP document builder for MOBY asynchronous call submission",pce); } catch(TransformerConfigurationException tce) { throw new MobyException("Unable to create transformer factory for MOBY asynchronous call response",tce); |