| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| 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. |
| --> |
| |
| <simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/simple-methods.xsd"> |
| |
| |
| <simple-method method-name="transmitRequest" short-description="" login-required="false"> |
| <!-- Connect, there may be ofbiz HttpClient.java that may handle this well --> |
| <call-service service-name="connectToGoogleCheckoutServer"> |
| <result-to-field result-name="conn"/> |
| </call-service> |
| <log level="info" message="step 1 done"/> |
| <!-- Get the Content --> |
| <call-simple-method method-name="createXMLOutput"/> |
| <log level="info" message="step 2 done"/> |
| <!-- Setup the Content --> |
| <call-simple-method method-name="setupContent"/> |
| <log level="info" message="step 3 done ${content}"/> |
| <!-- Get Response --> |
| <call-simple-method method-name="getResponse"/> |
| <log level="info" message="step 4 done"/> |
| <!-- Get Redirect from xml document response --> |
| <log level="info" message="${response}"/> |
| <call-simple-method method-name="getReDirectFromXmlDoc"/> |
| <log level="info" message="step 5 done"/> |
| <field-to-result field="redirect"/> |
| </simple-method> |
| <!-- Step 1 --> |
| <simple-method method-name="connectToGoogleCheckoutServer" short-description="create connection to Google Checkout server" login-required="false"> |
| <call-simple-method method-name="createRequestUrl"/> |
| <call-simple-method method-name="getHttpAuth"/> |
| <call-bsh><![CDATA[ |
| HttpURLConnection conn = (HttpURLConnection)url.openConnection(); |
| conn.setDoInput (true); |
| conn.setDoOutput (true); |
| conn.setUseCaches (false); |
| conn.setFollowRedirects(true); |
| conn.setInstanceFollowRedirects(false); |
| conn.setRequestMethod("POST"); |
| conn.setRequestProperty("Authorization", HttpAuth); |
| conn.setRequestProperty("Host", conn.getURL().getHost()); |
| conn.setRequestProperty("content-type", "application/xml"); |
| conn.setRequestProperty("accept", "application/xml"); |
| conn.connect(); |
| return org.ofbiz.base.util.UtilMisc.toMap("conn", conn); |
| ]]></call-bsh> |
| <field-to-result field="conn"/> |
| </simple-method> |
| <simple-method method-name="createRequestUrl" short-description="" login-required="false"> |
| <!-- Setup Url spec --> |
| <property-to-field resource="googleCheckout" property="basePostUrl" field="basePostUrl"/> |
| <property-to-field resource="googleCheckout" property="merchantId" field="merchantId"/> |
| <property-to-field resource="googleCheckout" property="request" field="request"/> |
| <set field="urlSpec" value="${basePostUrl}${merchantId}"/> |
| <create-object class-name="java.net.URL" field="url"> |
| <field field="urlSpec"/> |
| </create-object> |
| </simple-method> |
| <simple-method method-name="getHttpAuth" short-description="" login-required="false"> |
| <property-to-field resource="googleCheckout" property="merchantId" field="merchantId"/> |
| <property-to-field resource="googleCheckout" property="merchantKey" field="merchantKey"/> |
| <set field="userNameAndPass" value="${merchantId}:${merchantKey}"/> |
| <call-class-method method-name="base64Encode" class-name="org.ofbiz.base.util.Base64" ret-field="encodedValue"> |
| <field field="userNameAndPass"/> |
| </call-class-method> |
| <set field="HttpAuth" value="Basic ${encodedValue}"/> |
| </simple-method> |
| <!-- Step 2 --> |
| <simple-method method-name="createXMLOutput" short-description="" login-required="false"> |
| <!-- create writer --> |
| <create-object class-name="java.io.StringWriter" field="XMLWriter"/> |
| <!-- create screen context --> |
| <call-class-method method-name="create" class-name="org.ofbiz.base.util.collections.MapStack" ret-field="xscreenContext"/> |
| <!-- Add the shoppingCart to the MapStack --> |
| <set field="inMap.shoppingCart" from-field="parameters.shoppingCart"/> |
| <set-service-fields map="inMap" service-name="ConvertOfbizCartToGoogle" to-map="serMap"/> |
| <call-service service-name="ConvertOfbizCartToGoogle" in-map-name="serMap"> |
| <result-to-field result-name="googleCart"/> |
| <result-to-field result-name="flowSupport"/> |
| <result-to-field result-name="sendInitialAuthDetails"/> |
| </call-service> |
| <set field="xscreenContext.googleCart" from-field="googleCart"/> |
| <set field="xscreenContext.flowSupport" from-field="flowSupport"/> |
| <set field="xscreenContext.sendInitialAuthDetails" from-field="sendInitialAuthDetails"/> |
| <set field="xscreenContext.shoppingCart" from-field="parameters.shoppingCart"/> |
| <!-- create string renderer --> |
| <create-object class-name="org.ofbiz.widget.html.HtmlScreenRenderer" field="xhtmlStringRenderer"></create-object> |
| <!-- create screen renderer --> |
| <create-object class-name="org.ofbiz.widget.screen.ScreenRenderer" field="screens"> |
| <field field="XMLWriter" type="java.lang.Appendable"/> |
| <field field="xscreenContext" type="org.ofbiz.base.util.collections.MapStack"/> |
| <field field="xhtmlStringRenderer" type="org.ofbiz.widget.screen.ScreenStringRenderer"/> |
| </create-object> |
| <set field="xscreenContext.screens" from-field="screens"/> |
| <create-object class-name="org.ofbiz.widget.screen.ScreenRenderer" field="xscreens"> |
| <field field="XMLWriter" type="java.lang.Appendable"/> |
| <field field="xscreenContext" type="org.ofbiz.base.util.collections.MapStack"/> |
| <field field="xhtmlStringRenderer" type="org.ofbiz.widget.screen.ScreenStringRenderer"/> |
| </create-object> |
| <!-- get uri --> |
| <property-to-field resource="googleCheckout" property="xmlTemplateUri" field="screenUri"/> |
| <call-object-method method-name="render" obj-field="xscreens"> |
| <field field="screenUri" type="String"/> |
| </call-object-method> |
| <set field="content" value="${groovy:XMLWriter.toString()}"/> |
| </simple-method> |
| <!-- Step 3 --> |
| <simple-method method-name="setupContent" short-description="" login-required="false"> |
| <call-bsh><![CDATA[ |
| sWriter = new OutputStreamWriter(conn.getOutputStream()); |
| return org.ofbiz.base.util.UtilMisc.toMap("sWriter", sWriter); |
| ]]></call-bsh> |
| <create-object class-name="java.io.BufferedWriter" field="writer"> |
| <field field="sWriter" type="java.io.Writer"/> |
| </create-object> |
| <call-object-method method-name="write" obj-field="writer"> |
| <field field="content" type="String"/> |
| </call-object-method> |
| <call-object-method method-name="close" obj-field="writer"/> |
| </simple-method> |
| <!-- Step 4 --> |
| <simple-method method-name="getResponse" short-description="" login-required="false"> |
| <clear-field field="sReader"/> |
| <call-bsh><![CDATA[ |
| try { |
| sReader = new InputStreamReader(conn.getInputStream()); |
| } catch (IOException ex) { |
| sReader = new InputStreamReader(conn.getErrorStream()); |
| } |
| return org.ofbiz.base.util.UtilMisc.toMap("sReader", sReader); |
| ]]></call-bsh> |
| |
| <create-object class-name="java.io.BufferedReader" field="reader"> |
| <field field="sReader" type="java.io.Reader"/> |
| </create-object> |
| <call-bsh><![CDATA[ |
| StringBuffer buffer = new StringBuffer(); |
| String line = null; |
| while (null != (line = reader.readLine())) { |
| buffer.append(line); |
| } |
| return org.ofbiz.base.util.UtilMisc.toMap("buffer", buffer); |
| ]]></call-bsh> |
| <set field="response" value="${groovy:buffer.toString()}"/> |
| </simple-method> |
| <!-- Step 5 --> |
| <simple-method method-name="getReDirectFromXmlDoc" short-description="" login-required="false"> |
| <call-bsh><![CDATA[ |
| document = org.ofbiz.base.util.UtilXml.readXmlDocument(response, false); |
| return org.ofbiz.base.util.UtilMisc.toMap("document", document); |
| ]]></call-bsh> |
| <call-object-method method-name="getDocumentElement" obj-field="document" ret-field="rootElement"/> |
| <!-- May want to get the serial number to store eventually; would be an attribute of this rootElement, |
| Skipping for now --> |
| <call-simple-method method-name="getRedirectFromRootElement"/> |
| </simple-method> |
| <simple-method method-name="getRedirectFromRootElement" short-description="" login-required="false"> |
| <call-class-method method-name="childElementList" class-name="org.ofbiz.base.util.UtilXml" ret-field="childList"> |
| <field field="rootElement" type="org.w3c.dom.Element"/> |
| </call-class-method> |
| <call-bsh><![CDATA[ |
| redirect = null; |
| childListIter = childList.iterator(); |
| while (childListIter.hasNext()){ |
| child = childListIter.next(); |
| org.ofbiz.base.util.Debug.logInfo("child =" + child,null); |
| nodeName = child.getNodeName(); |
| if ("redirect-url".equals(nodeName)){ |
| redirect = org.ofbiz.base.util.UtilXml.elementValue(child); |
| } else { |
| redirect = document; |
| } |
| |
| } |
| return org.ofbiz.base.util.UtilMisc.toMap("redirect", redirect.toString()); |
| ]]></call-bsh> |
| </simple-method> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <simple-method method-name="setupHeaders" short-description=""> |
| <set field="true" value="true" type="Boolean"/> |
| <set field="false" value="false" type="Boolean"/> |
| |
| <call-object-method method-name="setDoInput" obj-field="conn"> |
| <field field="true" type="boolean"/> |
| </call-object-method> |
| |
| <call-object-method method-name="setDoOutput" obj-field="conn"> |
| <field field="true" type="boolean"/> |
| </call-object-method> |
| |
| <call-object-method method-name="setUseCaches" obj-field="conn"> |
| <field field="false" type="boolean"/> |
| </call-object-method> |
| |
| <call-object-method method-name="setFollowRedirects" obj-field="conn"> |
| <field field="true" type="boolean"/> |
| </call-object-method> |
| |
| <call-object-method method-name="setInstanceFollowRedirects" obj-field="conn"> |
| <field field="true" type="boolean"/> |
| </call-object-method> |
| |
| <call-object-method method-name="setRequestMethod" obj-field="conn"> |
| <string value="POST"/> |
| </call-object-method> |
| |
| <call-simple-method method-name="getHttpAuth"/> |
| <call-object-method method-name="setRequestProperty" obj-field="conn"> |
| <string value="Authorization"/> |
| <field field="HttpAuth"/> |
| </call-object-method> |
| |
| <call-simple-method method-name="getHttpHost"/> |
| <call-object-method method-name="setRequestProperty" obj-field="conn"> |
| <string value="Host"/> |
| <field field="HttpHost"/> |
| </call-object-method> |
| |
| <call-object-method method-name="setRequestProperty" obj-field="conn"> |
| <string value="content-type"/> |
| <string value="application/xml"/> |
| </call-object-method> |
| |
| <call-object-method method-name="setRequestProperty" obj-field="conn"> |
| <string value="accept"/> |
| <string value="application/xml"/> |
| </call-object-method> |
| |
| </simple-method> |
| <simple-method method-name="getHttpHost" short-description=""> |
| <call-bsh><![CDATA[ |
| HttpHost = conn.getURL().getHost(); |
| return org.ofbiz.base.util.UtilMisc.toMap("HttpHost", HttpHost); |
| ]]></call-bsh> |
| </simple-method> |
| |
| </simple-methods> |
| |
| |
| |
| |