[ 
https://issues.apache.org/jira/browse/OFBIZ-5047?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13482136#comment-13482136
 ] 

Jacques Le Roux commented on OFBIZ-5047:
----------------------------------------

Hi Chung,

Please try this patch:
{code}
Index: 
framework/webtools/webapp/webtools/WEB-INF/actions/entity/XmlDsDump.groovy
===================================================================
--- framework/webtools/webapp/webtools/WEB-INF/actions/entity/XmlDsDump.groovy  
(revision 1401164)
+++ framework/webtools/webapp/webtools/WEB-INF/actions/entity/XmlDsDump.groovy  
(working copy)
@@ -34,7 +34,8 @@
 filename = parameters.filename;
 maxRecStr = parameters.maxrecords;
 entitySyncId = parameters.entitySyncId;
-passedEntityNames = parameters.entityName instanceof Collection ? 
parameters.entityName as TreeSet : [parameters.entityName] as TreeSet;
+passedEntityNames = null;
+if (parameters.entityName) passedEntityNames = parameters.entityName 
instanceof Collection ? parameters.entityName as TreeSet : 
[parameters.entityName] as TreeSet;
 
 // get the max records per file setting and convert to a int
 maxRecordsPerFile = 0;
@@ -179,151 +180,153 @@
 modelEntities = reader.getEntityCache().values() as TreeSet;
 context.modelEntities = modelEntities;
 
-if (tobrowser) {
-    session.setAttribute("xmlrawdump_entitylist", passedEntityNames);
-    session.setAttribute("entityDateCond", entityDateCond);
-} else {
-    efo = new EntityFindOptions(true, 
EntityFindOptions.TYPE_SCROLL_INSENSITIVE, EntityFindOptions.CONCUR_READ_ONLY, 
true);
-    numberOfEntities = passedEntityNames?.size() ?: 0;
-    context.numberOfEntities = numberOfEntities;
-    numberWritten = 0;
-
-    // single file
-    if (filename && numberOfEntities) {
-        writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new 
FileOutputStream(filename), "UTF-8")));
-        writer.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
-        writer.println("<entity-engine-xml>");
-
-        passedEntityNames.each { curEntityName ->
-            if (entityFrom) {
-                curModelEntity = reader.getModelEntity(curEntityName);
-                if (curModelEntity instanceof ModelViewEntity) {
-                    return;
-                }
-            }
-
-            beganTransaction = TransactionUtil.begin(3600);
-            try {
-                me = reader.getModelEntity(curEntityName);
-                if (me.getNoAutoStamp() || me instanceof ModelViewEntity) {
-                    values = delegator.find(curEntityName, null, null, null, 
me.getPkFieldNames(), efo);
-                } else {
-                    values = delegator.find(curEntityName, entityDateCond, 
null, null, UtilMisc.toList("-createdTxStamp"), efo);
-                }
-
-                curNumberWritten = 0;
-                while (value = values.next()) {
-                    value.writeXmlText(writer, "");
-                    numberWritten++;
-                    curNumberWritten++;
-                    if (curNumberWritten % 500 == 0 || curNumberWritten == 1) {
-                        Debug.log("Records written [$curEntityName]: 
$curNumberWritten Total: $numberWritten");
+if (passedEntityNames) {
+    if (tobrowser) {
+        session.setAttribute("xmlrawdump_entitylist", passedEntityNames);
+        session.setAttribute("entityDateCond", entityDateCond);
+    } else {
+        efo = new EntityFindOptions(true, 
EntityFindOptions.TYPE_SCROLL_INSENSITIVE, EntityFindOptions.CONCUR_READ_ONLY, 
true);
+        numberOfEntities = passedEntityNames?.size() ?: 0;
+        context.numberOfEntities = numberOfEntities;
+        numberWritten = 0;
+    
+        // single file
+        if (filename && numberOfEntities) {
+            writer = new PrintWriter(new BufferedWriter(new 
OutputStreamWriter(new FileOutputStream(filename), "UTF-8")));
+            writer.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
+            writer.println("<entity-engine-xml>");
+    
+            passedEntityNames.each { curEntityName ->
+                if (entityFrom) {
+                    curModelEntity = reader.getModelEntity(curEntityName);
+                    if (curModelEntity instanceof ModelViewEntity) {
+                        return;
                     }
                 }
-                values.close();
-                Debug.log("Wrote [$curNumberWritten] from entity : 
$curEntityName");
-                TransactionUtil.commit(beganTransaction);
-            } catch (Exception e) {
-                errMsg = "Error reading data for XML export:";
-                Debug.logError(e, errMsg, "JSP");
-                TransactionUtil.rollback(beganTransaction, errMsg, e);
-            }
-        }
-        writer.println("</entity-engine-xml>");
-        writer.close();
-        Debug.log("Total records written from all entities: $numberWritten");
-        context.numberWritten = numberWritten;
-    }
-
-    // multiple files in a directory
-    results = [];
-    fileNumber = 1;
-    context.results = results;
-    if (outpath) {
-        outdir = new File(outpath);
-        if (!outdir.exists()) {
-            outdir.mkdir();
-        }
-        if (outdir.isDirectory() && outdir.canWrite()) {
-            passedEntityNames.each { curEntityName ->
-                numberWritten = 0;
-                fileName = preConfiguredSetName ? 
UtilFormatOut.formatPaddedNumber((long) fileNumber, 3) + "_" : "";
-                fileName = fileName + curEntityName;
-
-                values = null;
-                beganTransaction = false;
+    
+                beganTransaction = TransactionUtil.begin(3600);
                 try {
-                    beganTransaction = TransactionUtil.begin(3600);
-
-                    me = delegator.getModelEntity(curEntityName);
-                    if (me instanceof ModelViewEntity) {
-                        results.add("[$fileNumber] [vvv] $curEntityName 
skipping view entity");
-                        return;
-                    }
+                    me = reader.getModelEntity(curEntityName);
                     if (me.getNoAutoStamp() || me instanceof ModelViewEntity) {
                         values = delegator.find(curEntityName, null, null, 
null, me.getPkFieldNames(), efo);
                     } else {
-                        values = delegator.find(curEntityName, entityDateCond, 
null, null, me.getPkFieldNames(), efo);
+                        values = delegator.find(curEntityName, entityDateCond, 
null, null, UtilMisc.toList("-createdTxStamp"), efo);
                     }
-                    isFirst = true;
-                    writer = null;
-                    fileSplitNumber = 1;
+    
+                    curNumberWritten = 0;
                     while (value = values.next()) {
-                        //Don't bother writing the file if there's nothing
-                        //to put into it
-                        if (isFirst) {
-                            writer = new PrintWriter(new BufferedWriter(new 
OutputStreamWriter(new FileOutputStream(new File(outdir, fileName +".xml")), 
"UTF-8")));
-                            writer.println("<?xml version=\"1.0\" 
encoding=\"UTF-8\"?>");
-                            writer.println("<entity-engine-xml>");
-                            isFirst = false;
-                        }
                         value.writeXmlText(writer, "");
                         numberWritten++;
-
-                        // split into small files
-                        if (maxRecordsPerFile > 0 && (numberWritten % 
maxRecordsPerFile == 0)) {
-                            fileSplitNumber++;
-                            // close the file
+                        curNumberWritten++;
+                        if (curNumberWritten % 500 == 0 || curNumberWritten == 
1) {
+                            Debug.log("Records written [$curEntityName]: 
$curNumberWritten Total: $numberWritten");
+                        }
+                    }
+                    values.close();
+                    Debug.log("Wrote [$curNumberWritten] from entity : 
$curEntityName");
+                    TransactionUtil.commit(beganTransaction);
+                } catch (Exception e) {
+                    errMsg = "Error reading data for XML export:";
+                    Debug.logError(e, errMsg, "JSP");
+                    TransactionUtil.rollback(beganTransaction, errMsg, e);
+                }
+            }
+            writer.println("</entity-engine-xml>");
+            writer.close();
+            Debug.log("Total records written from all entities: 
$numberWritten");
+            context.numberWritten = numberWritten;
+        }
+    
+        // multiple files in a directory
+        results = [];
+        fileNumber = 1;
+        context.results = results;
+        if (outpath) {
+            outdir = new File(outpath);
+            if (!outdir.exists()) {
+                outdir.mkdir();
+            }
+            if (outdir.isDirectory() && outdir.canWrite()) {
+                passedEntityNames.each { curEntityName ->
+                    numberWritten = 0;
+                    fileName = preConfiguredSetName ? 
UtilFormatOut.formatPaddedNumber((long) fileNumber, 3) + "_" : "";
+                    fileName = fileName + curEntityName;
+    
+                    values = null;
+                    beganTransaction = false;
+                    try {
+                        beganTransaction = TransactionUtil.begin(3600);
+    
+                        me = delegator.getModelEntity(curEntityName);
+                        if (me instanceof ModelViewEntity) {
+                            results.add("[$fileNumber] [vvv] $curEntityName 
skipping view entity");
+                            return;
+                        }
+                        if (me.getNoAutoStamp() || me instanceof 
ModelViewEntity) {
+                            values = delegator.find(curEntityName, null, null, 
null, me.getPkFieldNames(), efo);
+                        } else {
+                            values = delegator.find(curEntityName, 
entityDateCond, null, null, me.getPkFieldNames(), efo);
+                        }
+                        isFirst = true;
+                        writer = null;
+                        fileSplitNumber = 1;
+                        while (value = values.next()) {
+                            //Don't bother writing the file if there's nothing
+                            //to put into it
+                            if (isFirst) {
+                                writer = new PrintWriter(new 
BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(outdir, 
fileName +".xml")), "UTF-8")));
+                                writer.println("<?xml version=\"1.0\" 
encoding=\"UTF-8\"?>");
+                                writer.println("<entity-engine-xml>");
+                                isFirst = false;
+                            }
+                            value.writeXmlText(writer, "");
+                            numberWritten++;
+    
+                            // split into small files
+                            if (maxRecordsPerFile > 0 && (numberWritten % 
maxRecordsPerFile == 0)) {
+                                fileSplitNumber++;
+                                // close the file
+                                writer.println("</entity-engine-xml>");
+                                writer.close();
+    
+                                // create a new file
+                                splitNumStr = 
UtilFormatOut.formatPaddedNumber((long) fileSplitNumber, 3);
+                                writer = new PrintWriter(new 
BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(outdir, 
fileName + "_" + splitNumStr +".xml")), "UTF-8")));
+                                writer.println("<?xml version=\"1.0\" 
encoding=\"UTF-8\"?>");
+                                writer.println("<entity-engine-xml>");
+                            }
+    
+                            if (numberWritten % 500 == 0 || numberWritten == 
1) {
+                                Debug.log("Records written [$curEntityName]: 
$numberWritten");
+                            }
+    
+                        }
+                        if (writer) {
                             writer.println("</entity-engine-xml>");
                             writer.close();
-
-                            // create a new file
-                            splitNumStr = 
UtilFormatOut.formatPaddedNumber((long) fileSplitNumber, 3);
-                            writer = new PrintWriter(new BufferedWriter(new 
OutputStreamWriter(new FileOutputStream(new File(outdir, fileName + "_" + 
splitNumStr +".xml")), "UTF-8")));
-                            writer.println("<?xml version=\"1.0\" 
encoding=\"UTF-8\"?>");
-                            writer.println("<entity-engine-xml>");
+                            String thisResult = "[$fileNumber] 
[$numberWritten] $curEntityName wrote $numberWritten records";
+                            Debug.log(thisResult);
+                            results.add(thisResult);
+                        } else {
+                            thisResult = "[$fileNumber] [---] $curEntityName 
has no records, not writing file";
+                            Debug.log(thisResult);
+                            results.add(thisResult);
                         }
-
-                        if (numberWritten % 500 == 0 || numberWritten == 1) {
-                            Debug.log("Records written [$curEntityName]: 
$numberWritten");
+                        values.close();
+                    } catch (Exception ex) {
+                        if (values != null) {
+                            values.close();
                         }
-
-                    }
-                    if (writer) {
-                        writer.println("</entity-engine-xml>");
-                        writer.close();
-                        String thisResult = "[$fileNumber] [$numberWritten] 
$curEntityName wrote $numberWritten records";
+                        thisResult = "[$fileNumber] [xxx] Error when writing 
$curEntityName: $ex";
                         Debug.log(thisResult);
                         results.add(thisResult);
-                    } else {
-                        thisResult = "[$fileNumber] [---] $curEntityName has 
no records, not writing file";
-                        Debug.log(thisResult);
-                        results.add(thisResult);
+                        TransactionUtil.rollback(beganTransaction, thisResult, 
ex);
+                    } finally {
+                        // only commit the transaction if we started one... 
this will throw an exception if it fails
+                        TransactionUtil.commit(beganTransaction);
                     }
-                    values.close();
-                } catch (Exception ex) {
-                    if (values != null) {
-                        values.close();
-                    }
-                    thisResult = "[$fileNumber] [xxx] Error when writing 
$curEntityName: $ex";
-                    Debug.log(thisResult);
-                    results.add(thisResult);
-                    TransactionUtil.rollback(beganTransaction, thisResult, ex);
-                } finally {
-                    // only commit the transaction if we started one... this 
will throw an exception if it fails
-                    TransactionUtil.commit(beganTransaction);
+                    fileNumber++;
                 }
-                fileNumber++;
             }
         }
     }
{code}
                
> Import/export
> -------------
>
>                 Key: OFBIZ-5047
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-5047
>             Project: OFBiz
>          Issue Type: Bug
>          Components: framework
>    Affects Versions: Release Branch 12.04
>         Environment: ubuntu 12_4, ofBIZ_12_4
>            Reporter: sergio kosik
>            Assignee: Jacques Le Roux
>         Attachments: ofbiz_result_screen.png, start_screen.png
>
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> I just check out code from SVN,
> - invoked <ant load-demo> command and  
> - just tried invoke Import/export functionality from backoffice page
> The Faield :ERROR MESSAGE: was result:
> https://localhost:8443/webtools/control/xmldsdump
> org.ofbiz.widget.screen.ScreenRenderException: Error rendering screen 
> [component://webtools/widget/EntityScreens.xml#xmldsdump]: 
> java.lang.IllegalArgumentException: Error running script at location 
> [component://webtools/webapp/webtools/WEB-INF/actions/entity/XmlDsDump.groovy]:
>  javax.script.ScriptException: 
> org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast 
> object '[null]' with class 'java.util.ArrayList' to class 'java.util.TreeSet' 
> due to: java.lang.NullPointerException (Error running script at location 
> [component://webtools/webapp/webtools/WEB-INF/actions/entity/XmlDsDump.groovy]:
>  javax.script.ScriptException: 
> org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast 
> object '[null]' with class 'java.util.ArrayList' to class 'java.util.TreeSet' 
> due to: java.lang.NullPointerException)
> ---- stack trace 
> ---------------------------------------------------------------
> java.lang.IllegalArgumentException: Error running script at location 
> [component://webtools/webapp/webtools/WEB-INF/actions/entity/XmlDsDump.groovy]:
>  javax.script.ScriptException: 
> org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast 
> object '[null]' with class 'java.util.ArrayList' to class 'java.util.TreeSet' 
> due to: java.lang.NullPointerException
> org.ofbiz.base.util.ScriptUtil.executeScript(ScriptUtil.java:348)
> org.ofbiz.base.util.ScriptUtil.executeScript(ScriptUtil.java:324)
> org.ofbiz.widget.ModelWidgetAction$Script.runAction(ModelWidgetAction.java:416)
> org.ofbiz.widget.ModelWidgetAction.runSubActions(ModelWidgetAction.java:116)
> org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:184)
> org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:396)
> org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:135)
> org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:97)
> org.ofbiz.widget.screen.MacroScreenViewHandler.render(MacroScreenViewHandler.java:104)
> org.ofbiz.webapp.control.RequestHandler.renderView(RequestHandler.java:864)
> org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:581)
> org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:224)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
> org.ofbiz.webapp.control.ContextFilter.doFilter(ContextFilter.java:337)
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
> java.lang.Thread.run(Thread.java:722)
> ----------------------------------------------------------------------------
> I will check it for 11_x release soon

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to