[jboss-svn-commits] JBL Code SVN: r33578 - in labs/jbossrules/trunk/drools-guvnor/src/main: java/org/drools/guvnor/client and 8 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Jun 21 17:01:42 EDT 2010


Author: KrisVerlaenen
Date: 2010-06-21 17:01:41 -0400 (Mon, 21 Jun 2010)
New Revision: 33578

Added:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/processeditor/
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/processeditor/BusinessProcessEditor.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/GuvnorAPIServlet.java
Modified:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/Guvnor.gwt.xml
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RuleFlowContentModel.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/EditorLauncher.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/contenthandler/BPMN2ProcessHandler.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/files/PackageDeploymentURIHelper.java
   labs/jbossrules/trunk/drools-guvnor/src/main/resources/preferences.properties
   labs/jbossrules/trunk/drools-guvnor/src/main/webapp/WEB-INF/web.xml
Log:
JBRULES-2519: Support integration with external editor for BPMN 2.0 edition
 - adding in Oryx integration

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/Guvnor.gwt.xml
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/Guvnor.gwt.xml	2010-06-21 20:59:16 UTC (rev 33577)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/Guvnor.gwt.xml	2010-06-21 21:01:41 UTC (rev 33578)
@@ -33,7 +33,7 @@
 	<script src="js/ext/adapter/ext/ext-base.js" />
 	<script src="js/ext/ext-all.js" />
 
-
+    <servlet path="/guvnorAPI" class="org.drools.guvnor.server.GuvnorAPIServlet" />
 	<servlet path="/guvnorService" class="org.drools.guvnor.server.RepositoryServiceServlet" />
 	<servlet path="/securityService" class="org.drools.guvnor.server.SecurityServiceServlet" />
     <servlet path="/asset" class="org.drools.guvnor.server.files.AssetFileServlet"/>

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/processeditor/BusinessProcessEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/processeditor/BusinessProcessEditor.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/processeditor/BusinessProcessEditor.java	2010-06-21 21:01:41 UTC (rev 33578)
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * 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.drools.guvnor.client.processeditor;
+
+import org.drools.guvnor.client.common.DirtyableComposite;
+import org.drools.guvnor.client.rpc.RuleAsset;
+import org.drools.guvnor.client.rpc.RuleFlowContentModel;
+import org.drools.guvnor.client.ruleeditor.SaveEventListener;
+
+import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.IFrameElement;
+import com.google.gwt.user.client.ui.Frame;
+
+/**
+ * The Business Process Editor, wrapping the Process Editor
+ *
+ * @author <a href="mailto:atoulme at intalio.com">Antoine Toulme</a>
+ */
+public class BusinessProcessEditor extends DirtyableComposite implements SaveEventListener {
+
+    private String modelUUID;
+    private RuleAsset asset;
+    private Frame frame;
+    
+    public BusinessProcessEditor(RuleAsset asset) {
+        this.asset = asset;
+        modelUUID = asset.uuid;
+        initWidgets();
+    }
+    
+    protected void initWidgets() {
+        String name = "/designer/editor";
+        name += "?uuid=" + modelUUID;
+        frame = new Frame(name);
+        frame.getElement().setAttribute("domain", Document.get().getDomain());
+        frame.setWidth("100%");
+        frame.setHeight("100%");
+        initWidget(frame);
+        setWidth("100%");
+        setHeight("100%");
+    }
+    
+    private final native String callSave(Document frameDoc) /*-{
+        //console.log(frameDoc.defaultView.ORYX.EDITOR.getSerializedJSON());
+        return frameDoc.defaultView.ORYX.EDITOR.getSerializedJSON();
+    }-*/;
+
+    public void onSave() {
+        //we replace the model by the new model:
+        String s = callSave(((IFrameElement) 
+                ((com.google.gwt.dom.client.Element) 
+                        frame.getElement())).getContentDocument());
+        if (asset.content == null) {
+            asset.content = new RuleFlowContentModel();
+        }
+        ((RuleFlowContentModel) asset.content).setXml(null);
+    	((RuleFlowContentModel) asset.content).setJson(s);
+    }
+    
+    public void onAfterSave() {
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RuleFlowContentModel.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RuleFlowContentModel.java	2010-06-21 20:59:16 UTC (rev 33577)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RuleFlowContentModel.java	2010-06-21 21:01:41 UTC (rev 33578)
@@ -32,6 +32,7 @@
     private List<TransferNode>             nodes       = new ArrayList<TransferNode>();
     private Collection<TransferConnection> connections = new ArrayList<TransferConnection>();
     private String                         xml;
+    private String						   json;
 
     public void setNodes(List<TransferNode> nodes) {
         this.nodes = nodes;
@@ -57,4 +58,12 @@
         return xml;
     }
 
+    public void setJson(String json) {
+        this.json = json;
+    }
+
+    public String getJson() {
+        return json;
+    }
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/EditorLauncher.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/EditorLauncher.java	2010-06-21 20:59:16 UTC (rev 33577)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/EditorLauncher.java	2010-06-21 21:01:41 UTC (rev 33578)
@@ -28,8 +28,8 @@
 import org.drools.guvnor.client.factmodel.FactModelWidget;
 import org.drools.guvnor.client.modeldriven.ui.RuleModeller;
 import org.drools.guvnor.client.modeldriven.ui.RuleModellerWidgetFactory;
-import org.drools.guvnor.client.modeldriven.ui.RuleTemplateEditor;
 import org.drools.guvnor.client.packages.ModelAttachmentFileWidget;
+import org.drools.guvnor.client.processeditor.BusinessProcessEditor;
 import org.drools.guvnor.client.qa.ScenarioWidget;
 import org.drools.guvnor.client.rpc.RuleAsset;
 
@@ -54,52 +54,57 @@
     /**
      * This will return the appropriate viewer for the asset.
      */
-	public static Widget getEditorViewer(RuleAsset asset, RuleViewer viewer) {
-		RulePackageSelector.currentlySelectedPackage = asset.metaData.packageName;
-		// depending on the format, load the appropriate editor
-		if (asset.metaData.format.equals(AssetFormats.BUSINESS_RULE)) {
-			return new RuleModeller(asset, new RuleModellerWidgetFactory());
-		} else if (asset.metaData.format.equals(AssetFormats.DSL_TEMPLATE_RULE)) {
-			return new RuleValidatorWrapper(new DSLRuleEditor(asset), asset);
-		} else if (asset.metaData.format.equals(AssetFormats.BPEL_PACKAGE)
-				&& Preferences.getBooleanPref("flex-bpel-editor")) {
-			return new BPELWrapper(asset, viewer);
-		} else if (asset.metaData.format.equals(AssetFormats.MODEL)) {
-			return new ModelAttachmentFileWidget(asset, viewer);
-		} else if (asset.metaData.format.equals(AssetFormats.DECISION_SPREADSHEET_XLS)) {
-			return new DecisionTableXLSWidget(asset, viewer);
-		} else if (asset.metaData.format.equals(AssetFormats.RULE_FLOW_RF)) {
-			return new RuleFlowWrapper(asset, viewer);
-		} else if (asset.metaData.format.equals(AssetFormats.BPMN2_PROCESS)) {
-			return new RuleFlowWrapper(asset, viewer);
-		} else if (asset.metaData.format.equals(AssetFormats.DRL)) {
-			return new DrlEditor(asset);
-		} else if (asset.metaData.format.equals(AssetFormats.ENUMERATION)) {
-			return new DefaultRuleContentWidget(asset);
-		} else if (asset.metaData.format.equals(AssetFormats.TEST_SCENARIO)) {
-			return new ScenarioWidget(asset);
-		} else if (asset.metaData.format.equals(AssetFormats.DECISION_TABLE_GUIDED)) {
-			return new GuidedDecisionTableWidget(asset);
-		} else if (asset.metaData.format.equals(AssetFormats.DRL_MODEL)) {
-			return new FactModelWidget(asset);
-		} else if (asset.metaData.format.equals(AssetFormats.DSL)) {
-			return new DefaultRuleContentWidget(asset);
-		} else if (asset.metaData.format.equals(AssetFormats.PROPERTIES)) {
-			return new PropertiesWidget(asset, viewer);
-		} else if (asset.metaData.format.equals(AssetFormats.XML)) {
-			return new XmlFileWidget(asset, viewer);
-		} else if (asset.metaData.format.equals(AssetFormats.FUNCTION)) {
-			return new FunctionEditor(asset);
-		} else if (asset.metaData.format.equals(AssetFormats.WORKING_SET)) {
-			return new WorkingSetEditor(asset);
-        } else if (asset.metaData.format.equals(AssetFormats.RULE_TEMPLATE)) {
-            return new RuleTemplateEditor(asset);
-		} else {
-			return new DefaultContentUploadEditor(asset, viewer);
-		}
+    public static Widget getEditorViewer(RuleAsset asset,
+                                         RuleViewer viewer) {
+        RulePackageSelector.currentlySelectedPackage = asset.metaData.packageName;
+        //depending on the format, load the appropriate editor
+        if ( asset.metaData.format.equals( AssetFormats.BUSINESS_RULE ) ) {
+            return new RuleModeller( asset, new RuleModellerWidgetFactory());
+        } else if ( asset.metaData.format.equals( AssetFormats.DSL_TEMPLATE_RULE ) ) {
+            return new RuleValidatorWrapper( new DSLRuleEditor( asset ),
+                                             asset );
+        } else if ( asset.metaData.format.equals( AssetFormats.BPEL_PACKAGE ) && Preferences.getBooleanPref( "flex-bpel-editor" ) ) {
+            return new BPELWrapper( asset,
+                                    viewer );
+        } else if ( asset.metaData.format.equals( AssetFormats.MODEL ) ) {
+            return new ModelAttachmentFileWidget( asset,
+                                                  viewer );
+        } else if ( asset.metaData.format.equals( AssetFormats.DECISION_SPREADSHEET_XLS ) ) {
+            return new DecisionTableXLSWidget( asset,
+                                               viewer );
 
-	}
+        } else if ( asset.metaData.format.equals( AssetFormats.RULE_FLOW_RF ) ) {
+            return new RuleFlowWrapper( asset,
+                                        viewer );
+        } else if (asset.metaData.format.equals(AssetFormats.BPMN2_PROCESS) && Preferences.getBooleanPref( "oryx-bpmn-editor" ) ) {
+			return new BusinessProcessEditor(asset);
+		} else if ( asset.metaData.format.equals( AssetFormats.DRL ) ) {
+            return new DrlEditor( asset );
+        } else if ( asset.metaData.format.equals( AssetFormats.ENUMERATION ) ) {
+            return new DefaultRuleContentWidget( asset );
+        } else if ( asset.metaData.format.equals( AssetFormats.TEST_SCENARIO ) ) {
+            return new ScenarioWidget( asset );
+        } else if ( asset.metaData.format.equals( AssetFormats.DECISION_TABLE_GUIDED ) ) {
+            return new GuidedDecisionTableWidget( asset );
+        } else if ( asset.metaData.format.equals( AssetFormats.DRL_MODEL ) ) {
+            return new FactModelWidget( asset );
+        } else if ( asset.metaData.format.equals( AssetFormats.DSL ) ) {
+            return new DefaultRuleContentWidget( asset );
+        } else if ( asset.metaData.format.equals( AssetFormats.PROPERTIES ) ) {
+            return new PropertiesWidget( asset,
+                                         viewer );
+        } else if ( asset.metaData.format.equals( AssetFormats.XML ) ) {
+            return new XmlFileWidget( asset,
+                                      viewer );
+        } else if ( asset.metaData.format.equals( AssetFormats.FUNCTION ) ) {
+            return new FunctionEditor( asset );
+        } else {
+            return new DefaultContentUploadEditor( asset,
+                                                   viewer );
+        }
 
+    }
+
     private static Map<String, String> getTypeImages() {
         Map<String, String> result = new HashMap<String, String>();
 

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/GuvnorAPIServlet.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/GuvnorAPIServlet.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/GuvnorAPIServlet.java	2010-06-21 21:01:41 UTC (rev 33578)
@@ -0,0 +1,142 @@
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * 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.drools.guvnor.server;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLEncoder;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.log4j.Logger;
+import org.drools.guvnor.client.rpc.RuleAsset;
+import org.drools.guvnor.client.rpc.RuleFlowContentModel;
+import org.drools.guvnor.server.util.LoggingHelper;
+
+import com.google.gwt.user.client.rpc.SerializableException;
+
+/**
+ * A servlet opening an API into the Guvnor services.
+ *
+ * @author <a href="mailto:atoulme at intalio.com">Antoine Toulme</a>
+ */
+public class GuvnorAPIServlet extends HttpServlet {
+
+    private static final Logger     log  = LoggingHelper.getLogger(GuvnorAPIServlet.class);
+    
+    public void service(HttpServletRequest request, HttpServletResponse response)
+            throws ServletException, IOException {
+        if (log.isDebugEnabled()) {
+            log.debug("Incoming request for Guvnor API:" + request.getRequestURL());
+        }
+        String action = request.getParameter("action");
+        if ("load".equals(action)) {
+            String uuid = request.getParameter("uuid");
+            if (uuid == null) {
+                throw new ServletException(new IllegalArgumentException("The load action requires the parameter uuid"));
+            }
+            try { 
+                RuleAsset asset = RepositoryServiceServlet.getService().loadRuleAsset(uuid);
+                if (asset.content != null) {
+                    response.setContentType("application/json");
+                    String content = null;
+                    if (asset.content instanceof RuleFlowContentModel) {
+                        content = ((RuleFlowContentModel) asset.content).getXml();
+                    } else {
+                        content = asset.content.toString();
+                    }
+                    try {
+                    	// TODO fix for non-localhost
+                    	content = deserialize(
+                			"http://localhost:8080/designer/bpmn2_0deserialization", content);
+                    } catch (IOException e) {
+                    	log.error(e.getMessage(), e);
+                        throw new ServletException(e.getMessage(), e);
+                    }
+                    if (log.isDebugEnabled()) {
+                        log.debug("Sending model");
+                        log.debug(content);
+                        log.debug("End of sending model");
+                    }
+                    response.setContentLength(content.getBytes().length);
+                    response.getOutputStream().write(content.getBytes());
+                    response.getOutputStream().close();
+                }
+            } catch (SerializableException e) {
+                log.error(e.getMessage(), e);
+                throw new ServletException(e.getMessage(), e);
+            }
+            
+        } else {
+            throw  new ServletException(new IllegalArgumentException("The servlet requires a parameter named action"));
+        }
+    }
+
+    public static String deserialize(String deserializeUrl, String modelXml) throws IOException {
+		OutputStream out = null;
+		InputStream content = null;
+		ByteArrayOutputStream bos = null;
+
+		try {
+			URL bpmn2_0SerializationURL = new URL(deserializeUrl);
+			modelXml = "data=" + URLEncoder.encode(modelXml, "UTF-8");
+			byte[] bytes = modelXml.getBytes("UTF-8");
+
+			HttpURLConnection connection = (HttpURLConnection) bpmn2_0SerializationURL.openConnection();
+			connection.setRequestMethod("POST");
+			connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
+			connection.setFixedLengthStreamingMode(bytes.length);
+			connection.setDoOutput(true);
+			out = connection.getOutputStream();
+			out.write(bytes);
+			out.close();
+
+			content = connection.getInputStream();
+
+			bos = new ByteArrayOutputStream();
+			int b = 0;
+			while ((b = content.read()) > -1) {
+				bos.write(b);
+			}
+			bytes = bos.toByteArray();
+			content.close();
+			bos.close();
+			return new String(bytes);
+		} finally {
+			try {
+				if (out != null) {
+					out.close();
+				}
+				if (content != null) {
+					content.close();
+				}
+				if (bos != null) {
+					bos.close();
+				}
+			} catch (IOException e) {
+			}
+		}
+	}
+
+}

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/contenthandler/BPMN2ProcessHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/contenthandler/BPMN2ProcessHandler.java	2010-06-21 20:59:16 UTC (rev 33577)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/contenthandler/BPMN2ProcessHandler.java	2010-06-21 21:01:41 UTC (rev 33578)
@@ -17,10 +17,16 @@
  */
 
 import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLEncoder;
 
+import org.apache.log4j.Logger;
 import org.drools.bpmn2.xml.BPMNSemanticModule;
 import org.drools.bpmn2.xml.XmlBPMNProcessDumper;
 import org.drools.compiler.DroolsParserException;
@@ -28,12 +34,18 @@
 import org.drools.compiler.xml.XmlProcessReader;
 import org.drools.guvnor.client.rpc.RuleAsset;
 import org.drools.guvnor.client.rpc.RuleFlowContentModel;
+import org.drools.guvnor.server.GuvnorAPIServlet;
 import org.drools.guvnor.server.builder.BRMSPackageBuilder;
 import org.drools.guvnor.server.builder.RuleFlowContentModelBuilder;
+import org.drools.guvnor.server.builder.RuleFlowProcessBuilder;
 import org.drools.guvnor.server.builder.ContentPackageAssembler.ErrorLogger;
+import org.drools.guvnor.server.util.LoggingHelper;
 import org.drools.repository.AssetItem;
 import org.drools.repository.PackageItem;
+import org.drools.repository.RulesRepositoryException;
 import org.drools.ruleflow.core.RuleFlowProcess;
+import org.drools.compiler.xml.XmlProcessReader;
+import org.drools.compiler.xml.XmlRuleFlowProcessDumper;
 
 import com.google.gwt.user.client.rpc.SerializableException;
 
@@ -41,6 +53,8 @@
     implements
     ICompilable {
 
+    private static final Logger     log  = LoggingHelper.getLogger(BPMN2ProcessHandler.class);
+    
     public void retrieveAssetContent(RuleAsset asset,
                                      PackageItem pkg,
                                      AssetItem item) throws SerializableException {
@@ -49,7 +63,12 @@
             RuleFlowContentModel content = RuleFlowContentModelBuilder.createModel( process );
             content.setXml( item.getContent() );
             asset.content = content;
-        }
+		} else {
+			// we are very fault tolerant
+			RuleFlowContentModel content = new RuleFlowContentModel();
+			content.setXml(item.getContent());
+			asset.content = content;
+		}
     }
 
     protected RuleFlowProcess readProcess(InputStream is) {
@@ -77,8 +96,90 @@
 
     public void storeAssetContent(RuleAsset asset,
                                   AssetItem repoAsset) throws SerializableException {
+    	RuleFlowContentModel content = (RuleFlowContentModel) asset.content;
+    	System.out.println(content);
+        // 
+        // Migrate v4 ruleflows to v5
+        // Added guards to check for nulls in the case where the ruleflows
+        // have not been migrated from drools 4 to 5.
+        //
+        if ( content != null ) {
+            if ( content.getXml() != null ) {
+                RuleFlowProcess process = readProcess( new ByteArrayInputStream( content.getXml().getBytes() ) );
+
+                if ( process != null ) {
+                    RuleFlowProcessBuilder.updateProcess( process,
+                                                          content.getNodes() );
+
+                    XmlRuleFlowProcessDumper dumper = XmlRuleFlowProcessDumper.INSTANCE;
+                    String out = dumper.dump( process );
+
+                    repoAsset.updateContent( out );
+                } else {
+                    //
+                    // Migrate v4 ruleflows to v5
+                    // Put the old contents back as there is no updating possible
+                    //
+                    repoAsset.updateContent( content.getXml() );
+                }
+            }
+            if ( content.getJson() != null) {
+            	try {
+            		String xml = serialize( "http://localhost:8080/designer/bpmn2_0serialization", content.getJson());
+            		System.out.println("xml = " + xml);
+            		repoAsset.updateContent(xml);
+            	} catch (Exception e) {
+            		log.error(e.getMessage(), e);
+            	}
+            }
+        }
     }
 
+    public static String serialize(String serializeUrl, String modelJson) throws IOException {
+    	OutputStream out = null;
+		InputStream content = null;
+		ByteArrayOutputStream bos = null;
+
+		try {
+			modelJson = "data=" + URLEncoder.encode(modelJson, "UTF-8")	+ "&xml=true";
+			byte[] bytes = modelJson.getBytes("UTF-8");
+
+			HttpURLConnection connection = (HttpURLConnection) new URL(serializeUrl).openConnection();
+			connection.setRequestMethod("POST");
+			connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
+			connection.setFixedLengthStreamingMode(bytes.length);
+			connection.setDoOutput(true);
+			out = connection.getOutputStream();
+			out.write(bytes);
+			out.close();
+
+			content = connection.getInputStream();
+
+			bos = new ByteArrayOutputStream();
+			int b = 0;
+			while ((b = content.read()) > -1) {
+				bos.write(b);
+			}
+			bytes = bos.toByteArray();
+			content.close();
+			bos.close();
+			return new String(bytes);
+		} finally {
+			try {
+				if (out != null) {
+					out.close();
+				}
+				if (content != null) {
+					content.close();
+				}
+				if (bos != null) {
+					bos.close();
+				}
+			} catch (IOException e) {
+			}
+		}
+	}
+
     /**
      * The rule flow can not be built if the package name is not the same as the
      * package that it exists in. This changes the package name.

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/files/PackageDeploymentURIHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/files/PackageDeploymentURIHelper.java	2010-06-21 20:59:16 UTC (rev 33577)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/files/PackageDeploymentURIHelper.java	2010-06-21 21:01:41 UTC (rev 33578)
@@ -36,7 +36,7 @@
     private String  version;
     private String  packageName;
     private String  assetName = null;
-    private boolean source;
+    private boolean source = true;
     private boolean documentation;
 
     public PackageDeploymentURIHelper(String uri) throws UnsupportedEncodingException {
@@ -44,15 +44,21 @@
         String url = URLDecoder.decode( uri,
                                         "UTF-8" );
 
-        if ( url.endsWith( ".drl" ) || url.endsWith( ".pdf" ) ) {
+        if ( url.endsWith( ".drl" ) || url.endsWith( ".bpmn" ) || url.endsWith( ".pdf" ) ) {
+        	int subs = 0;
             if ( url.endsWith( ".drl" ) ) {
                 source = true;
+                subs = 4;
+            } else if ( url.endsWith( ".bpmn" ) ) {
+                source = true;
+                subs = 5;
             } else if ( url.endsWith( ".pdf" ) ) {
                 documentation = true;
+                subs = 4;
             }
 
             url = url.substring( 0,
-                                 url.length() - 4 );
+                                 url.length() - subs );
 
         }
 

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/resources/preferences.properties
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/resources/preferences.properties	2010-06-21 20:59:16 UTC (rev 33577)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/resources/preferences.properties	2010-06-21 21:01:41 UTC (rev 33578)
@@ -6,6 +6,7 @@
 visual-ruleflow=true
 flex-bpel-editor=true
 verifier=true
+oryx-bpmn-editor=true
 # Date and language settings
 drools.dateformat=dd-MMM-yyyy
 drools.defaultlanguage=en

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/webapp/WEB-INF/web.xml
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/webapp/WEB-INF/web.xml	2010-06-21 20:59:16 UTC (rev 33577)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/webapp/WEB-INF/web.xml	2010-06-21 21:01:41 UTC (rev 33578)
@@ -58,8 +58,11 @@
 		<servlet-name>WSDLParserServlet</servlet-name>
 		<servlet-class>	org.gridcc.mce.mceworkflow.servlets.WSDLParserServlet</servlet-class>
 	</servlet>
+    <servlet>
+        <servlet-name>guvnorAPI</servlet-name>
+        <servlet-class>org.drools.guvnor.server.GuvnorAPIServlet</servlet-class>
+    </servlet>
 
-
 	<servlet-mapping>
 		<servlet-name>guvnorService</servlet-name>
 		<url-pattern>/org.drools.guvnor.Guvnor/guvnorService</url-pattern>
@@ -100,8 +103,11 @@
 		<servlet-name>WSDLParserServlet</servlet-name>
 		<url-pattern>/org.drools.guvnor.Guvnor/wsdlparser/*</url-pattern>
 	</servlet-mapping>
+	<servlet-mapping>
+		<servlet-name>guvnorAPI</servlet-name>
+		<url-pattern>/org.drools.guvnor.Guvnor/guvnorAPI</url-pattern>
+	</servlet-mapping>
 
-
     <session-config>
         <session-timeout>180</session-timeout>
     </session-config>



More information about the jboss-svn-commits mailing list