Author: jonesde
Date: Tue Jul 3 03:17:05 2007 New Revision: 552772 URL: http://svn.apache.org/viewvc?view=rev&rev=552772 Log: Some changes to the processShipment service (which is now oagisProcessShipment to separate it further) so it can do various things with the export output Modified: ofbiz/trunk/specialpurpose/oagis/config/oagis.properties ofbiz/trunk/specialpurpose/oagis/servicedef/secas.xml ofbiz/trunk/specialpurpose/oagis/servicedef/services.xml ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisShipmentServices.java Modified: ofbiz/trunk/specialpurpose/oagis/config/oagis.properties URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/oagis/config/oagis.properties?view=diff&rev=552772&r1=552771&r2=552772 ============================================================================== --- ofbiz/trunk/specialpurpose/oagis/config/oagis.properties (original) +++ ofbiz/trunk/specialpurpose/oagis/config/oagis.properties Tue Jul 3 03:17:05 2007 @@ -27,7 +27,10 @@ Oagis.Template.ReceiveDelivery=component://oagis/widget/MessageInfoScreens.xml#ReceiveDelivery Oagis.Template.ProcessShipment=component://oagis/widget/MessageInfoScreens.xml#ProcessShipment +# Client Cert, etc settings +auth.client.certificate.alias=testrpckey + # URLs for outgoing messages -url.send.processShipment=https://foo.bar.baz/oagis/control/processShipment -url.send.confirmBod=https://foo.bar.baz/oagis/control/confirmBod -url.send.receiveDelivery=https://foo.bar.baz/oagis/control/receiveDelivery +#url.send.processShipment=https://foo.bar.baz/oagis/control/processShipment +#url.send.confirmBod=https://foo.bar.baz/oagis/control/confirmBod +#url.send.receiveDelivery=https://foo.bar.baz/oagis/control/receiveDelivery Modified: ofbiz/trunk/specialpurpose/oagis/servicedef/secas.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/oagis/servicedef/secas.xml?view=diff&rev=552772&r1=552771&r2=552772 ============================================================================== --- ofbiz/trunk/specialpurpose/oagis/servicedef/secas.xml (original) +++ ofbiz/trunk/specialpurpose/oagis/servicedef/secas.xml Tue Jul 3 03:17:05 2007 @@ -26,7 +26,7 @@ <condition field-name="statusId" operator="equals" value="ORDER_APPROVED"/> <condition field-name="orderTypeId" operator="equals" value="SALES_ORDER"/> <condition-field field-name="statusId" operator="not-equals" to-field-name="oldStatusId"/> - <action service="processShipment" mode="sync"/> + <action service="oagisProcessShipment" mode="sync"/> </eca--> <eca service="processShipment" event="commit" run-on-error="false"> <action service="createOagisMessageInfo" mode="sync"/> Modified: ofbiz/trunk/specialpurpose/oagis/servicedef/services.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/oagis/servicedef/services.xml?view=diff&rev=552772&r1=552771&r2=552772 ============================================================================== --- ofbiz/trunk/specialpurpose/oagis/servicedef/services.xml (original) +++ ofbiz/trunk/specialpurpose/oagis/servicedef/services.xml Tue Jul 3 03:17:05 2007 @@ -104,11 +104,16 @@ <attribute name="bodyParameters" type="Map" mode="IN" optional="true"/> <attribute name="body" type="String" mode="OUT" optional="true"/> </service> - <service name="processShipment" max-retry="0" engine="java" - location="org.ofbiz.oagis.OagisShipmentServices" invoke="processShipment"> - <description>Process Shipment</description> + <service name="oagisProcessShipment" max-retry="0" engine="java" + location="org.ofbiz.oagis.OagisShipmentServices" invoke="oagisProcessShipment"> + <description>Prepare and Optionally Send OAGIS Process Shipment Message. + Note on usage: you can pass in either sendToUrl, saveToFilename, or outputStream. + If none are passed in the URL in oagis.properties will be used at the target for the message.</description> <implements service="oagisMessageInfoInterface"/> - <attribute name="outputStream" type="java.io.OutputStream" mode="IN"/> + <attribute name="sendToUrl" type="String" mode="IN" optional="true"/> + <attribute name="saveToFilename" type="String" mode="IN" optional="true"/> + <attribute name="saveToDirectory" type="String" mode="IN" optional="true"/> + <attribute name="outputStream" type="java.io.OutputStream" mode="IN" optional="true"/> <override name="orderId" mode="INOUT" type="String" optional="false"/> </service> <service name="sendProcessShipmentMsg" max-retry="0" engine="simple" Modified: ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisShipmentServices.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisShipmentServices.java?view=diff&rev=552772&r1=552771&r2=552772 ============================================================================== --- ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisShipmentServices.java (original) +++ ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisShipmentServices.java Tue Jul 3 03:17:05 2007 @@ -18,9 +18,14 @@ specific language governing permissions and limitations under the License. **/ +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.io.StringWriter; import java.io.Writer; import java.sql.Timestamp; import java.text.DateFormat; @@ -37,9 +42,12 @@ import javolution.util.FastList; import org.ofbiz.base.util.Debug; +import org.ofbiz.base.util.HttpClient; +import org.ofbiz.base.util.SSLUtil; import org.ofbiz.base.util.UtilDateTime; import org.ofbiz.base.util.UtilMisc; import org.ofbiz.base.util.UtilProperties; +import org.ofbiz.base.util.UtilValidate; import org.ofbiz.base.util.UtilXml; import org.ofbiz.base.util.collections.MapStack; import org.ofbiz.entity.GenericDelegator; @@ -71,6 +79,8 @@ protected static final FoFormRenderer foFormRenderer = new FoFormRenderer(); public static final String resource = "OagisUiLabels"; + + public static final String certAlias = UtilProperties.getPropertyValue("oagis.properties", "auth.client.certificate.alias"); public static Map showShipment(DispatchContext ctx, Map context) { InputStream in = (InputStream) context.get("inputStream"); @@ -177,12 +187,18 @@ return result; } - public static Map processShipment(DispatchContext ctx, Map context) { + public static Map oagisProcessShipment(DispatchContext ctx, Map context) { LocalDispatcher dispatcher = ctx.getDispatcher(); GenericDelegator delegator = ctx.getDelegator(); String orderId = (String) context.get("orderId"); String shipmentId = (String) context.get("shipmentId"); GenericValue userLogin = (GenericValue) context.get("userLogin"); + + String sendToUrl = (String) context.get("sendToUrl"); + String saveToFilename = (String) context.get("saveToFilename"); + String saveToDirectory = (String) context.get("saveToDirectory"); + OutputStream out = (OutputStream) context.get("outputStream"); + Map result = ServiceUtil.returnSuccess(); MapStack bodyParameters = MapStack.create(); if (userLogin == null) { @@ -241,8 +257,10 @@ while (oiIter.hasNext()) { GenericValue orderItem = (GenericValue) oiIter.next(); String correspondingPoId = orderItem.getString("correspondingPoId"); - correspondingPoIdSet.add(correspondingPoId); - bodyParameters.put("correspondingPoIdSet", correspondingPoIdSet); + if (correspondingPoId != null) { + correspondingPoIdSet.add(correspondingPoId); + bodyParameters.put("correspondingPoIdSet", correspondingPoIdSet); + } } } catch (GenericEntityException e) { Debug.logError(e, module); @@ -315,14 +333,60 @@ bodyParameters.put("orderId", orderId); bodyParameters.put("userLogin", userLogin); String bodyScreenUri = UtilProperties.getPropertyValue("oagis.properties", "Oagis.Template.ProcessShipment"); - OutputStream out = (OutputStream) context.get("outputStream"); - Writer writer = new OutputStreamWriter(out); + + Writer writer = null; + if (out != null) { + writer = new OutputStreamWriter(out); + } else if (UtilValidate.isNotEmpty(saveToFilename)) { + try { + File outdir = new File(saveToDirectory); + if (!outdir.exists()) { + outdir.mkdir(); + } + writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(outdir, saveToFilename)), "UTF-8"))); + } catch (Exception e) { + String errMsg = "Error opening file to save message to [" + saveToFilename + "]: " + e.toString(); + Debug.logError(e, errMsg, module); + return ServiceUtil.returnError(errMsg); + } + } else if (UtilValidate.isNotEmpty(sendToUrl)) { + writer = new StringWriter(); + } + ScreenRenderer screens = new ScreenRenderer(writer, bodyParameters, new HtmlScreenRenderer()); try { screens.render(bodyScreenUri); + writer.close(); } catch (Exception e) { - Debug.logError(e, "Error rendering [text/xml]: ", module); + String errMsg = "Error rendering message: " + e.toString(); + Debug.logError(e, errMsg, module); + return ServiceUtil.returnError(errMsg); } + + // TODO: call service with require-new-transaction=true to save the OagisMessageInfo data (to make sure it saves before) + + if (UtilValidate.isNotEmpty(sendToUrl)) { + HttpClient http = new HttpClient(sendToUrl); + + // test parameters + http.setHostVerificationLevel(SSLUtil.HOSTCERT_NO_CHECK); + http.setAllowUntrusted(true); + http.setDebug(true); + + // needed XML post parameters + http.setClientCertificateAlias(certAlias); + http.setContentType("text/xml"); + http.setKeepAlive(true); + + try { + String resp = http.post(writer.toString()); + } catch (Exception e) { + String errMsg = "Error posting message to server with UTL [" + sendToUrl + "]: " + e.toString(); + Debug.logError(e, errMsg, module); + return ServiceUtil.returnError(errMsg); + } + } + // prepare map to Create Oagis Message Info result.put("component", "INVENTORY"); result.put("task", "SHIPREQUES"); // Actual value of task is "SHIPREQUEST" which is more than 10 char |
Free forum by Nabble | Edit this page |