GithubHelp home page GithubHelp logo

moqui / moqui-framework Goto Github PK

View Code? Open in Web Editor NEW
271.0 56.0 194.0 10.84 MB

Use Moqui Framework to build enterprise applications based on Java. It includes tools for databases (relational, graph, document), local and web services, web and other UI with screens and forms, security, file/resource access, scripts, templates, l10n, caching, logging, search, rules, workflow, multi-instance, and integration.

Home Page: http://www.moqui.org

License: Other

Java 36.18% Groovy 62.83% FreeMarker 0.71% Shell 0.21% Dockerfile 0.07% Procfile 0.01%
java moqui framework web application-framework rest service server entity database-access

moqui-framework's Introduction

Welcome to Moqui Framework

license build release commits since release downloads downloads

Discourse Forum Google Group LinkedIn Group Gitter Chat at https://gitter.im/moqui/moqui-framework Stack Overflow

For information about community infrastructure for code, discussions, support, etc see the Community Guide:

https://www.moqui.org/docs/moqui/Community+Guide

For details about running and deploying Moqui see:

https://www.moqui.org/docs/framework/Run+and+Deploy

Note that a runtime directory is required for Moqui Framework to run, but is not included in the source repository. The Gradle get component, load, and run tasks will automatically add the default runtime (from the moqui-runtime repository).

For information about the current and near future status of Moqui Framework see the ReleaseNotes.md file.

For an overview of features see:

https://www.moqui.org/docs/framework/Framework+Features

Get started with Moqui development quickly using the Tutorial at:

https://www.moqui.org/docs/framework/Quick+Tutorial

For comprehensive documentation of Moqui Framework see the wiki based documentation on moqui.org (running on Moqui HiveMind):

https://www.moqui.org/m/docs/framework

moqui-framework's People

Contributors

aabiabdallah avatar acetousk avatar akhiar avatar amiranjom avatar ayanf avatar ccarlow avatar chunlinyao avatar danieltaylor-nz avatar dixitdeepak avatar eigood avatar gitter-badger avatar hansbak avatar hellozhangwei avatar jenshp avatar jonesde avatar mphaney avatar nirendra10695 avatar oandreyev avatar pythys avatar rohitpawar2811 avatar samhamilton avatar sbessire avatar shendepu avatar zhangshifeng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

moqui-framework's Issues

Moqui website typo

Hi David,

There's a typo on your website in the Framework -> Home -> Introduction (True 3-Tier Architecture) section.

"role your own logic layer" should be "roll your own logic layer"

Regards
Scott

H2 database does not start when using a non-embedded runtime directory in tomcat

I am attempting to deploy moqui in tomcat (tried 7.0.54 and 8.0.32).
The runtime is specified in the MoquiInit.properties and is not embedded, so it will not be added to the system properties anymore. As the EntityFacade attempts to expand the URL for the database, it has no moqui.runtime system property and thus attempts to open the DB at the "/db" location instead of "${moqui_runtime}/db".

Following is the exception that results:

18-Aug-2016 15:48:23.562 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class org.moqui.impl.webapp.MoquiContextListener
bitronix.tm.resource.ResourceConfigurationException: cannot create JDBC datasource named DEFAULT_transactional_DS
at bitronix.tm.resource.jdbc.PoolingDataSource.init(PoolingDataSource.java:90)
at org.moqui.impl.context.TransactionInternalBitronix.getDataSource(TransactionInternalBitronix.groovy:133)
at org.moqui.impl.entity.EntityDatasourceFactoryImpl.init(EntityDatasourceFactoryImpl.groovy:82)
at org.moqui.impl.entity.EntityFacadeImpl.initAllDatasources(EntityFacadeImpl.groovy:191)
at org.moqui.impl.entity.EntityFacadeImpl.(EntityFacadeImpl.groovy:120)
at org.moqui.impl.context.ExecutionContextFactoryImpl.initEntityFacade(ExecutionContextFactoryImpl.groovy:689)
at org.moqui.impl.context.ExecutionContextFactoryImpl.(ExecutionContextFactoryImpl.groovy:197)
at org.moqui.impl.webapp.MoquiContextListener.contextInitialized(MoquiContextListener.groovy:69)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4812)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5255)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:939)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1812)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.h2.jdbc.JdbcSQLException: Error while creating file "/db" [90062-192]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
at org.h2.message.DbException.get(DbException.java:179)
at org.h2.message.DbException.get(DbException.java:155)
at org.h2.store.fs.FilePathDisk.createDirectory(FilePathDisk.java:274)
at org.h2.store.fs.FileUtils.createDirectory(FileUtils.java:42)
at org.h2.store.fs.FileUtils.createDirectories(FileUtils.java:309)
at org.h2.store.fs.FileUtils.createDirectories(FileUtils.java:308)
at org.h2.mvstore.db.MVTableEngine.init(MVTableEngine.java:73)
at org.h2.engine.Database.getPageStore(Database.java:2463)
at org.h2.engine.Database.open(Database.java:692)
at org.h2.engine.Database.openDatabase(Database.java:270)
at org.h2.engine.Database.(Database.java:264)
at org.h2.engine.Engine.openSession(Engine.java:64)
at org.h2.engine.Engine.openSession(Engine.java:176)
at org.h2.engine.Engine.createSessionAndValidate(Engine.java:154)
at org.h2.engine.Engine.createSession(Engine.java:137)
at org.h2.engine.Engine.createSession(Engine.java:27)
at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:349)
at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:118)
at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:102)
at org.h2.Driver.connect(Driver.java:72)
at org.h2.jdbcx.JdbcDataSource.getJdbcConnection(JdbcDataSource.java:190)
at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:353)
at bitronix.tm.resource.jdbc.PoolingDataSource.createPooledConnection(PoolingDataSource.java:422)
at bitronix.tm.resource.jdbc.PoolingDataSource.createPooledConnection(PoolingDataSource.java:52)
at bitronix.tm.resource.common.XAPool.createPooledObject(XAPool.java:472)
at bitronix.tm.resource.common.XAPool.growUntilMinPoolSize(XAPool.java:466)
at bitronix.tm.resource.common.XAPool.init(XAPool.java:105)
at bitronix.tm.resource.common.XAPool.(XAPool.java:98)
at bitronix.tm.resource.jdbc.PoolingDataSource.buildXAPool(PoolingDataSource.java:99)
at bitronix.tm.resource.jdbc.PoolingDataSource.init(PoolingDataSource.java:86)
... 20 more

Different Tenant use same Localized Message

I try to add a new tenant named demo-tenant use the new function 'Tenant Admin', This works very well.

And then i add some localized Message to tenant demo-tenant, after i added, the button's display do not changed, so i tried clear all caches, then it works, some button display correctly.

Then i login in with tenant DEFAULT, some buttons display as same as tenant demo-tenant.

here is the issues:

  1. after localized message added, cache do not refresh.
  2. Different Tenant use same Localized Message( i think this is different tenant share the same localizemessage cache )

i test these issues in version:

  1. release 1.6.0
  2. release 1.6.1
  3. moqui-framework master branch

Conversion failure with auto-parameters in other locales

I am seeing following problem while using the spanish locale (relevant issue is that decimal separator is ',' and thousands separator is '.':
When invoking the service TaskServices.update#Task in mantle-usl, the auto-parameters for the in-parameters gets the decimal numbers wrong. These decimal numbers come directly from the Databse, so are not in the user's locale format. When checking the parameters (checkConvertType method of org.moqui.impl.service.ServiceDefinition), the line:
BigDecimal bdVal = eci.l10n.parseNumber((String) parameterValue, format)
assumes that the parameter is in the locale's format. But when the value comes directly from the DB because it is filled in because of the auto-parameters tag, a value like 1.5 is converted to 15 (eliminating what is considered a thousands separator according to the locale).

The solution would be to either:

  1. format the parameters coming from the DB into the current user's locale, or
  2. identifying when a parameter comes from the DB (it would have the entity-name and field-name attributes) and in that case use a standard parsing instead of going through the L10nFacadeImplementation.

I'm not sure which way would be more suitable.

add locale parameter to l10n.localize and resource.expand

I am implementing a system that interacts with users through messages. These messages should be localized to the recipient's Locale, but currently the l10n.localize method, and the resource.expand methods only support using the current user's locale, which in this case is the sender.
Is it acceptable to add new methods (maintaining the old ones with the same behaviour) in order to achieve this, or is there a better solution?

Datetimepicker's changed format causes conversion error

I experienced a problem with changing format of datetimepicker. I changed screen's datetimepicker format to "dd.MM.yyyy HH:mm" and I received this error:

Error doing type conversion to [Timestamp] for value [30.05.2016 00:00]

org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '30.05.2016 00:00' with class 'java.lang.String' to class 'java.sql.Timestamp'

Config file selection with JAVA is different than ant and gradle

This is more of an observation. When I run the java, ant and gradle load commands, the java strangely picks up the PRODUCTION config file where as all others pick up the DEV file:

ant load

    [java]  Initializing Moqui ExecutionContextFactoryImpl
    [java]  - runtime directory: /Users/ayman/Desktop/moqui-framework-1.6.1-bin/runtime
    [java]  - config file: /Users/ayman/Desktop/moqui-framework-1.6.1-bin/runtime/conf/MoquiDevConf.xml

gradle load

    Initializing Moqui ExecutionContextFactoryImpl
    - runtime directory: /Users/ayman/Desktop/moqui-framework-1.6.1-bin/runtime
    - config file: /Users/ayman/Desktop/moqui-framework-1.6.1-bin/runtime/conf/MoquiDevConf.xml

java -jar moqui-1.6.1.war -load

    Initializing Moqui ExecutionContextFactoryImpl
    - runtime directory: /Users/ayman/Desktop/moqui-framework-1.6.1-bin/runtime
    - config file: /Users/ayman/Desktop/moqui-framework-1.6.1-bin/runtime/conf/MoquiProductionConf.xml

AuthenticationRequiredException while loading data for tenant

While loading data for tenant using command line, for example: >gradlew load -PtenantId=EXAMPLE1
an AuthenticationRequiredExceptioncaused at a service call, i.e org.moqui.impl.EntityServices.clone#DataDocument
I find that in Moqui.java, the code to change tenant L87 should be put before user login action.
It worked after change in accordingly.

Email polling. - 'Unable to load BODYSTRUCTURE.'

javax.mail.MessagingException: Unable to load BODYSTRUCTURE

Preceeded by a java.io.UnsupportedEncodingException: unicode-1-1-utf-7 error (that was resolved by adding jcharset-2.0.jar to jre/lib/ext).

Full log for javax.mail.MessagingException error:

12:05:05.796  WARN oquiWorker-2      o.moqui.i.c.TransactionFacadeImpl Transaction rollback. The rollback was originally caused by: Error running service [org.moqui.impl.EmailServices.poll#EmailServer] (Throwable)
javax.mail.MessagingException: Unable to load BODYSTRUCTURE
        at com.sun.mail.imap.IMAPMessage.loadBODYSTRUCTURE(IMAPMessage.java:1488) ~[javax.mail-1.5.6.jar:1.5.6]
        at com.sun.mail.imap.IMAPMessage.getDataHandler(IMAPMessage.java:746) ~[javax.mail-1.5.6.jar:1.5.6]
        at javax.mail.internet.MimeMessage.getContent(MimeMessage.java:1454) ~[javax.mail-1.5.6.jar:1.5.6]
        at org.moqui.impl.service.EmailEcaRule.makeBodyPartList(EmailEcaRule.groovy:124) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.EmailEcaRule.runIfMatches(EmailEcaRule.groovy:84) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.ServiceFacadeImpl.runEmecaRules(ServiceFacadeImpl.groovy:429) ~[moqui-framework-2.0.0.jar:2.0.0]
        at pollEmailServer_groovy.run(pollEmailServer_groovy:89) ~[script:?]
        at org.moqui.impl.context.runner.GroovyScriptRunner.run(GroovyScriptRunner.groovy:50) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.context.ResourceFacadeImpl.script(ResourceFacadeImpl.groovy:356) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.runner.ScriptServiceRunner.runService(ScriptServiceRunner.groovy:49) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.ServiceCallSyncImpl.callSingle(ServiceCallSyncImpl.groovy:317) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.ServiceCallSyncImpl.call(ServiceCallSyncImpl.groovy:165) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.ServiceCallJobImpl$ServiceJobCallable.call(ServiceCallJobImpl.groovy:207) [moqui-framework-2.0.0.jar:2.0.0]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_45]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_45]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_45]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_45]
12:05:05.814  WARN oquiWorker-2      o.moqui.i.c.TransactionFacadeImpl Transaction rollback for [Error running service [org.moqui.impl.EmailServices.poll#EmailServer] (Throwable)]. Here is the current location: 
org.moqui.BaseException: Rollback location
        at org.moqui.impl.context.TransactionFacadeImpl.rollback(TransactionFacadeImpl.groovy:425) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.context.TransactionFacadeImpl.rollback(TransactionFacadeImpl.groovy:408) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.ServiceCallSyncImpl.callSingle(ServiceCallSyncImpl.groovy:340) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.ServiceCallSyncImpl.call(ServiceCallSyncImpl.groovy:165) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.ServiceCallJobImpl$ServiceJobCallable.call(ServiceCallJobImpl.groovy:207) [moqui-framework-2.0.0.jar:2.0.0]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_45]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_45]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_45]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_45]
12:05:05.915  WARN oquiWorker-2        o.moqui.i.s.ServiceCallSyncImpl Error running service [org.moqui.impl.EmailServices.poll#EmailServer] (Throwable)
javax.mail.MessagingException: Unable to load BODYSTRUCTURE
        at com.sun.mail.imap.IMAPMessage.loadBODYSTRUCTURE(IMAPMessage.java:1488) ~[javax.mail-1.5.6.jar:1.5.6]
        at com.sun.mail.imap.IMAPMessage.getDataHandler(IMAPMessage.java:746) ~[javax.mail-1.5.6.jar:1.5.6]
        at javax.mail.internet.MimeMessage.getContent(MimeMessage.java:1454) ~[javax.mail-1.5.6.jar:1.5.6]
        at org.moqui.impl.service.EmailEcaRule.makeBodyPartList(EmailEcaRule.groovy:124) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.EmailEcaRule.runIfMatches(EmailEcaRule.groovy:84) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.ServiceFacadeImpl.runEmecaRules(ServiceFacadeImpl.groovy:429) ~[moqui-framework-2.0.0.jar:2.0.0]
        at pollEmailServer_groovy.run(pollEmailServer_groovy:89) ~[script:?]
        at org.moqui.impl.context.runner.GroovyScriptRunner.run(GroovyScriptRunner.groovy:50) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.context.ResourceFacadeImpl.script(ResourceFacadeImpl.groovy:356) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.runner.ScriptServiceRunner.runService(ScriptServiceRunner.groovy:49) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.ServiceCallSyncImpl.callSingle(ServiceCallSyncImpl.groovy:317) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.ServiceCallSyncImpl.call(ServiceCallSyncImpl.groovy:165) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.ServiceCallJobImpl$ServiceJobCallable.call(ServiceCallJobImpl.groovy:207) [moqui-framework-2.0.0.jar:2.0.0]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_45]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_45]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_45]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_45]

Full log for java.io.UnsupportedEncodingException error:

11:33:57.544  WARN oquiWorker-3      o.moqui.i.c.TransactionFacadeImpl Transaction rollback. The rollback was originally caused by: Error running service [org.moqui.impl.EmailServices.poll#EmailServer] (Throwable)
java.io.UnsupportedEncodingException: unicode-1-1-utf-7
        at sun.nio.cs.StreamDecoder.forInputStreamReader(StreamDecoder.java:71) ~[?:1.8.0_45]
        at java.io.InputStreamReader.<init>(InputStreamReader.java:100) ~[?:1.8.0_45]
        at com.sun.mail.handlers.text_plain.getContent(text_plain.java:80) ~[javax.mail-1.5.6.jar:1.5.6]
        at javax.activation.DataSourceDataContentHandler.getContent(DataHandler.java:795) ~[?:1.8.0_45]
        at javax.activation.DataHandler.getContent(DataHandler.java:542) ~[?:1.8.0_45]
        at javax.mail.internet.MimeBodyPart.getContent(MimeBodyPart.java:657) ~[javax.mail-1.5.6.jar:1.5.6]
        at org.moqui.impl.service.EmailEcaRule.makeBodyPartList(EmailEcaRule.groovy:124) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.EmailEcaRule.makeBodyPartList(EmailEcaRule.groovy:134) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.EmailEcaRule.runIfMatches(EmailEcaRule.groovy:84) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.ServiceFacadeImpl.runEmecaRules(ServiceFacadeImpl.groovy:429) ~[moqui-framework-2.0.0.jar:2.0.0]
        at pollEmailServer_groovy.run(pollEmailServer_groovy:89) ~[script:?]
        at org.moqui.impl.context.runner.GroovyScriptRunner.run(GroovyScriptRunner.groovy:50) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.context.ResourceFacadeImpl.script(ResourceFacadeImpl.groovy:356) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.runner.ScriptServiceRunner.runService(ScriptServiceRunner.groovy:49) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.ServiceCallSyncImpl.callSingle(ServiceCallSyncImpl.groovy:317) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.ServiceCallSyncImpl.call(ServiceCallSyncImpl.groovy:165) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.ServiceCallJobImpl$ServiceJobCallable.call(ServiceCallJobImpl.groovy:207) [moqui-framework-2.0.0.jar:2.0.0]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_45]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_45]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_45]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_45]
11:33:57.563  WARN oquiWorker-3      o.moqui.i.c.TransactionFacadeImpl Transaction rollback for [Error running service [org.moqui.impl.EmailServices.poll#EmailServer] (Throwable)]. Here is the current location: 
org.moqui.BaseException: Rollback location
        at org.moqui.impl.context.TransactionFacadeImpl.rollback(TransactionFacadeImpl.groovy:425) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.context.TransactionFacadeImpl.rollback(TransactionFacadeImpl.groovy:408) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.ServiceCallSyncImpl.callSingle(ServiceCallSyncImpl.groovy:340) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.ServiceCallSyncImpl.call(ServiceCallSyncImpl.groovy:165) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.ServiceCallJobImpl$ServiceJobCallable.call(ServiceCallJobImpl.groovy:207) [moqui-framework-2.0.0.jar:2.0.0]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_45]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_45]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_45]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_45]
11:33:57.625  WARN oquiWorker-3        o.moqui.i.s.ServiceCallSyncImpl Error running service [org.moqui.impl.EmailServices.poll#EmailServer] (Throwable)
java.io.UnsupportedEncodingException: unicode-1-1-utf-7
        at sun.nio.cs.StreamDecoder.forInputStreamReader(StreamDecoder.java:71) ~[?:1.8.0_45]
        at java.io.InputStreamReader.<init>(InputStreamReader.java:100) ~[?:1.8.0_45]
        at com.sun.mail.handlers.text_plain.getContent(text_plain.java:80) ~[javax.mail-1.5.6.jar:1.5.6]
        at javax.activation.DataSourceDataContentHandler.getContent(DataHandler.java:795) ~[?:1.8.0_45]
        at javax.activation.DataHandler.getContent(DataHandler.java:542) ~[?:1.8.0_45]
        at javax.mail.internet.MimeBodyPart.getContent(MimeBodyPart.java:657) ~[javax.mail-1.5.6.jar:1.5.6]
        at org.moqui.impl.service.EmailEcaRule.makeBodyPartList(EmailEcaRule.groovy:124) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.EmailEcaRule.makeBodyPartList(EmailEcaRule.groovy:134) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.EmailEcaRule.runIfMatches(EmailEcaRule.groovy:84) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.ServiceFacadeImpl.runEmecaRules(ServiceFacadeImpl.groovy:429) ~[moqui-framework-2.0.0.jar:2.0.0]
        at pollEmailServer_groovy.run(pollEmailServer_groovy:89) ~[script:?]
        at org.moqui.impl.context.runner.GroovyScriptRunner.run(GroovyScriptRunner.groovy:50) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.context.ResourceFacadeImpl.script(ResourceFacadeImpl.groovy:356) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.runner.ScriptServiceRunner.runService(ScriptServiceRunner.groovy:49) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.ServiceCallSyncImpl.callSingle(ServiceCallSyncImpl.groovy:317) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.ServiceCallSyncImpl.call(ServiceCallSyncImpl.groovy:165) ~[moqui-framework-2.0.0.jar:2.0.0]
        at org.moqui.impl.service.ServiceCallJobImpl$ServiceJobCallable.call(ServiceCallJobImpl.groovy:207) [moqui-framework-2.0.0.jar:2.0.0]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_45]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_45]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_45]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_45]

Header information and content from one of the problem messages:

Received: from webmail8.myit.local (LHLO webmail8.xxxxxxxxxxxx.ie)
 (10.1.0.19) by webmail8.xxxxxxxxxxxx.ie with LMTP; Mon, 14 Sep 2015
 12:16:27 +0100 (IST)
Received: from localhost (localhost [127.0.0.1])
    by webmail8.xxxxxxxxxxxx.ie (Postfix) with ESMTP id 417563D1DF2
    for <[email protected]>; Mon, 14 Sep 2015 12:16:27 +0100 (IST)
X-Spam-Flag: NO
X-Spam-Score: -3.406
X-Spam-Level:
X-Spam-Status: No, score=-3.406 tagged_above=-10 required=6.6
    tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3,
    RDNS_NONE=0.793] autolearn=ham autolearn_force=no
Received: from webmail8.xxxxxxxxxxxx.ie ([127.0.0.1])
    by localhost (webmail8.xxxxxxxxxxxx.ie [127.0.0.1]) (amavisd-new, port 10032)
    with ESMTP id qD6OPal5dRxW for <[email protected]>;
    Mon, 14 Sep 2015 12:16:24 +0100 (IST)
Received: from localhost (localhost [127.0.0.1])
    by webmail8.xxxxxxxxxxxx.ie (Postfix) with ESMTP id 55D38EB089
    for <[email protected]>; Mon, 14 Sep 2015 12:16:24 +0100 (IST)
X-Virus-Scanned: amavisd-new at webmail8.xxxxxxxxxxxx.ie
Received: from webmail8.xxxxxxxxxxxx.ie ([127.0.0.1])
    by localhost (webmail8.xxxxxxxxxxxx.ie [127.0.0.1]) (amavisd-new, port 10026)
    with ESMTP id L5y00C_28rjW for <[email protected]>;
    Mon, 14 Sep 2015 12:16:23 +0100 (IST)
Received: from incoming2.xxxxxxxxxxxx.ie (myitgfi2.myit.local [10.1.0.7])
    by webmail8.xxxxxxxxxxxx.ie (Postfix) with ESMTP id CEB223E63D6
    for <[email protected]>; Mon, 14 Sep 2015 12:16:23 +0100 (IST)
Received: from mail.xxxxx.xx ([213.190.140.194]) by incoming2.xxxxxxxxxxxx.ie with Microsoft SMTPSVC(6.0.3790.4675);
     Mon, 14 Sep 2015 12:16:11 +0100
Received: from mail.xxxxx.xx (localhost.localdomain [127.0.0.1])
    by localhost (Email Security Appliance) with SMTP id C174BA7AC1_5F6AC7BB
    for <[email protected]>; Mon, 14 Sep 2015 11:16:11 +0000 (GMT)
Received: from UDG-EXCCAS01.ud.plc (unknown [172.17.27.103])
    (using TLSv1 with cipher AES128-SHA (128/128 bits))
    (Client CN "UDG-EXCCAS01", Issuer "UDG-EXCCAS01" (not verified))
    by mail.xxxxx.xx (Sophos Email Appliance) with ESMTPS id 94B58A7ABD_5F6AC7BF
    for <[email protected]>; Mon, 14 Sep 2015 11:16:11 +0000 (GMT)
MIME-Version: 1.0
From: <[email protected]>
To: <[email protected]>
Date: Mon, 14 Sep 2015 12:16:11 +0100
Content-Type: multipart/report; report-type=delivery-status;
    boundary="163d2f30-7ff5-4e62-9b98-b857cd0b3e23"
Content-Language: en-IE
Message-ID: <[email protected]>
In-Reply-To: <[email protected]>
References: <[email protected]>
Subject: Undeliverable: Attached sales note 
X-OriginalArrivalTime: 14 Sep 2015 11:16:11.0991 (UTC) FILETIME=[C3440670:01D0EEDE]


--163d2f30-7ff5-4e62-9b98-b857cd0b3e23
Content-Type: multipart/alternative; differences=Content-Type;
    boundary="9479a5bd-66fa-4aa2-a2c2-fcef081f5754"


--9479a5bd-66fa-4aa2-a2c2-fcef081f5754
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Delivery has failed to these recipients or groups:


Diagnostic information for administrators:

Generating server: xxxxx.xx

[email protected]
#550 5.1.1 RESOLVER.ADR.RecipNotFound; not found ##rfc822;xxxxxxxx.xxxxxx=
@xxxxx.xxx

Original message headers:

Received: from mail.xxxxx.xx (172.17.91.12) by UDG-EXCCAS01.UD.PLC
 (172.17.27.110) with Microsoft SMTP Server (TLS) id 14.3.123.3; Mon, 14 Sep
 2015 12:16:11 +0100
Received: from mail.xxxxx.xx (localhost.localdomain [127.0.0.1])  by
 localhost (Email Security Appliance) with SMTP id 32134A7AB2_5F6AC7BB  for
 <[email protected]>; Mon, 14 Sep 2015 11:16:11 +0000 (GMT)
Received: from incoming2.xxxxxxxxxxxx.ie
 (host225-244-static.99-5-b.business.telecomitalia.it [5.99.244.225])   by
 mail.xxxxx.xx (Sophos Email Appliance) with ESMTP id
 CCD7BA7AAA_5F6AC78F    for <[email protected]>; Mon, 14 Sep =
2015
 11:16:08 +0000 (GMT)
Received: by mail.united-drug.com with SMTP id S7170        for
 <[email protected]>; Mon, 14 Sep 2015 11:11:07 +0058 CEST
MIME-Version: 1.0
X-Received: by 213.190.140.194 with SMTP id 388QRO7VTKI4V6CE;
 Mon, 14 Sep 2015 11:11:07 +0058 CEST
Received: by 213.190.140.194 with HTTP; Mon, 14 Sep 2015 11:11:07 +0058 CEST
Date: Mon, 14 Sep 2015 11:11:07 +0058
Message-ID: <[email protected]>
Subject: Attached sales note
From: xxxxx <[email protected]>
To: <[email protected]>
Content-Type: multipart/mixed;
        boundary=3D"2PW33G54863183M46JUX432TR072WH012HV8"
X-Sophos-SenderHistory: ip=3D5.99.244.225,fs=3D0,da=3D11880510,mc=3D1
X-Sophos-ESA: [mail.xxxxx.xx] 3.9.0.0, Antispam-Engine: 2.7.2.1390750=
, Antispam-Data: 2015.9.14.110617
X-SEA-Spam: Gauge=3DXXXIII, Probability=3D33%, Report=3D'
 ZIP_ATTACHED_EXE 3.5, HTML_00_01 0.05, HTML_00_10 0.05, BODYTEXTP_SIZE_300=
0_LESS 0, BODY_SIZE_10000_PLUS 0, DQ_SUSP_1 0, DQ_SUSP_2 0, DQ_SUSP_4 0, NO=
_URI_FOUND 0, NO_URI_HTTPS 0, RDNS_STATIC 0, SPF_FAIL 0, WEBMAIL_SOURCE 0, =
ZIP_ATTACHED 0, __CT 0, __CTYPE_HAS_BOUNDARY 0, __CTYPE_MULTIPART 0, __CTYP=
E_MULTIPART_MIXED 0, __DQ_HEUR_4 0, __DQ_HEUR_5 0, __DQ_IP_SUSP_1 0, __DQ_I=
P_SUSP_2 0, __DQ_S_HIST_1 0, __DQ_S_IP_100K 0, __DQ_S_IP_10K 0, __DQ_S_IP_1=
K 0, __HAS_FROM 0, __HAS_MSGID 0, __MIME_VERSION 0, __PHISH_SPEAR_GREETING =
0, __PHISH_SPEAR_HTTP_RECEIVED 0, __RDNS_STATIC_1 0, __SANE_MSGID 0, __SUBJ=
_ALPHA_END 0, __TO_MALFORMED_2 0, __TO_NO_NAME 0, __ZIP_ATTACHED 0, __ZIP_A=
TTACHED2 0, __ZIP_ATTACHED_EXE 0, __ZIP_ATTACHED_EXE2 0'
Return-Path: [email protected]


The information in this email is confidential and may be legally privileged=
. It is intended solely for the addressee. Access to this email by anyone e=
lse is unauthorised. If you are not the intended recipient, any disclosure,=
 copying, distribution or any action taken or omitted to be taken in relian=
ce on it, is prohibited and may be unlawful. All views, opinions or advice =
contained in this communication are those of the sender and not necessarily=
 those of xxxxxXXXXXXX plc or its affiliate. xxxxxXXXXXXX plc or its af=
filiate cannot guarantee that this e-mail and attachments are free from vir=
uses and you must ensure that you carry out your own virus checks. UDG Heal=
thcare plc or its affiliate accepts no liability for any loss or damage cau=
sed by software viruses.

ADDRESS REMOVED



--9479a5bd-66fa-4aa2-a2c2-fcef081f5754
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html>
<Head></head><body>
<p><b><font color=3D"#000066" size=3D"3" face=3D"Arial">Delivery has failed=
 to these recipients or groups:</font></b></p>
<font color=3D"#000000" size=3D"2" face=3D"Tahoma"><p><a href=3D"mailto:sio=
[email protected]">[email protected]</a><br>
The e-mail address you entered couldn't be found. Please check the recipien=
t's e-mail address and try to resend the message. If the problem continues,=
 please contact your helpdesk.<br>
</p>
</font>
<br><br><br><br><br><br>
<font color=3D"#808080" size=3D"2" face=3D"Tahoma"><p><b>Diagnostic informa=
tion for administrators:</b></p>
<p>Generating server: xxxxx.xx</p>
<p>[email protected]<br>
 #550 5.1.1 RESOLVER.ADR.RecipNotFound; not found ##rfc822;siobhan.geoghega=
[email protected]</p>
<p>Original message headers:</p>
<pre>Received: from mail.xxxxx.xx (172.17.91.12) by UDG-EXCCAS01.UD.P=
LC
 (172.17.27.110) with Microsoft SMTP Server (TLS) id 14.3.123.3; Mon, 14 Sep
 2015 12:16:11 +0100
Received: from mail.xxxxx.xx (localhost.localdomain [127.0.0.1])    by
 localhost (Email Security Appliance) with SMTP id 32134A7AB2_5F6AC7BB  for
 &lt;[email protected]&gt;; Mon, 14 Sep 2015 11:16:11 +0000 (=
GMT)
Received: from incoming2.xxxxxxxxxxxx.ie
 (host225-244-static.99-5-b.business.telecomitalia.it [5.99.244.225])   by
 mail.xxxxx.xx (Sophos Email Appliance) with ESMTP id
 CCD7BA7AAA_5F6AC78F    for &lt;[email protected]&gt;; Mon, 14 S=
ep 2015
 11:16:08 +0000 (GMT)
Received: by mail.united-drug.com with SMTP id S7170        for
 &lt;[email protected]&gt;; Mon, 14 Sep 2015 11:11:07 +0058 C=
EST=20
MIME-Version: 1.0
X-Received: by 213.190.140.194 with SMTP id 388QRO7VTKI4V6CE;
 Mon, 14 Sep 2015 11:11:07 +0058 CEST=20
Received: by 213.190.140.194 with HTTP; Mon, 14 Sep 2015 11:11:07 +0058 CES=
T=20
Date: Mon, 14 Sep 2015 11:11:07 +0058
Message-ID: &lt;[email protected]&gt;
Subject: Attached sales note=20
From: xxxxx &lt;[email protected]&gt;
To: &lt;[email protected]&gt;
Content-Type: multipart/mixed;
    boundary=3D&quot;2PW33G54863183M46JUX432TR072WH012HV8&quot;
X-Sophos-SenderHistory: ip=3D5.99.244.225,fs=3D0,da=3D11880510,mc=3D1
X-Sophos-ESA: [mail.xxxxx.xx] 3.9.0.0, Antispam-Engine: 2.7.2.1390750=
, Antispam-Data: 2015.9.14.110617
X-SEA-Spam: Gauge=3DXXXIII, Probability=3D33%, Report=3D'
 ZIP_ATTACHED_EXE 3.5, HTML_00_01 0.05, HTML_00_10 0.05, BODYTEXTP_SIZE_300=
0_LESS 0, BODY_SIZE_10000_PLUS 0, DQ_SUSP_1 0, DQ_SUSP_2 0, DQ_SUSP_4 0, NO=
_URI_FOUND 0, NO_URI_HTTPS 0, RDNS_STATIC 0, SPF_FAIL 0, WEBMAIL_SOURCE 0, =
ZIP_ATTACHED 0, __CT 0, __CTYPE_HAS_BOUNDARY 0, __CTYPE_MULTIPART 0, __CTYP=
E_MULTIPART_MIXED 0, __DQ_HEUR_4 0, __DQ_HEUR_5 0, __DQ_IP_SUSP_1 0, __DQ_I=
P_SUSP_2 0, __DQ_S_HIST_1 0, __DQ_S_IP_100K 0, __DQ_S_IP_10K 0, __DQ_S_IP_1=
K 0, __HAS_FROM 0, __HAS_MSGID 0, __MIME_VERSION 0, __PHISH_SPEAR_GREETING =
0, __PHISH_SPEAR_HTTP_RECEIVED 0, __RDNS_STATIC_1 0, __SANE_MSGID 0, __SUBJ=
_ALPHA_END 0, __TO_MALFORMED_2 0, __TO_NO_NAME 0, __ZIP_ATTACHED 0, __ZIP_A=
TTACHED2 0, __ZIP_ATTACHED_EXE 0, __ZIP_ATTACHED_EXE2 0'
Return-Path: [email protected]
</pre>
</font>
<PRE>The information in this email is confidential and may be legally privi=
leged. It is intended solely for the addressee. Access to this email by any=
one else is unauthorised. If you are not the intended recipient, any disclo=
sure, copying, distribution or any action taken or omitted to be taken in r=
eliance on it, is prohibited and may be unlawful. All views, opinions or ad=
vice contained in this communication are those of the sender and not necess=
arily those of xxxxxXXXXXXX plc or its affiliate. xxxxxXXXXXXX plc or i=
ts affiliate cannot guarantee that this e-mail and attachments are free fro=
m viruses and you must ensure that you carry out your own virus checks. UDG=
 Healthcare plc or its affiliate accepts no liability for any loss or damag=
e caused by software viruses.

ADDRESS INFO REMOVED

</PRE></body>
</html>=

--9479a5bd-66fa-4aa2-a2c2-fcef081f5754--

--163d2f30-7ff5-4e62-9b98-b857cd0b3e23
Content-Type: message/delivery-status

Reporting-MTA: dns;xxxxx.xx
Received-From-MTA: dns;mail.xxxxx.xx
Arrival-Date: Mon, 14 Sep 2015 11:16:11 +0000

Original-Recipient: rfc822;[email protected]
Final-Recipient: rfc822;[email protected]
Action: failed
Status: 5.1.1
Diagnostic-Code: smtp;550 5.1.1 RESOLVER.ADR.RecipNotFound; not found


--163d2f30-7ff5-4e62-9b98-b857cd0b3e23
Content-Type: message/rfc822

Received: from mail.xxxxx.xx (172.17.91.12) by UDG-EXCCAS01.UD.PLC
 (172.17.27.110) with Microsoft SMTP Server (TLS) id 14.3.123.3; Mon, 14 Sep
 2015 12:16:11 +0100
Received: from mail.xxxxx.xx (localhost.localdomain [127.0.0.1])    by
 localhost (Email Security Appliance) with SMTP id 32134A7AB2_5F6AC7BB  for
 <[email protected]>; Mon, 14 Sep 2015 11:16:11 +0000 (GMT)
Received: from incoming2.xxxxxxxxxxxx.ie
 (host225-244-static.99-5-b.business.telecomitalia.it [5.99.244.225])   by
 mail.xxxxx.xx (Sophos Email Appliance) with ESMTP id
 CCD7BA7AAA_5F6AC78F    for <[email protected]>; Mon, 14 Sep 2015
 11:16:08 +0000 (GMT)
Received: by mail.united-drug.com with SMTP id S7170        for
 <[email protected]>; Mon, 14 Sep 2015 11:11:07 +0058 CEST 
MIME-Version: 1.0
X-Received: by 213.190.140.194 with SMTP id 388QRO7VTKI4V6CE;
 Mon, 14 Sep 2015 11:11:07 +0058 CEST 
Received: by 213.190.140.194 with HTTP; Mon, 14 Sep 2015 11:11:07 +0058 CEST 
Date: Mon, 14 Sep 2015 11:11:07 +0058
Message-ID: <[email protected]>
Subject: Attached sales note 
From: xxxxx <[email protected]>
To: <[email protected]>
Content-Type: multipart/mixed;
    boundary="2PW33G54863183M46JUX432TR072WH012HV8"
X-Sophos-SenderHistory: ip=5.99.244.225,fs=0,da=11880510,mc=1
X-Sophos-ESA: [mail.xxxxx.xx] 3.9.0.0, Antispam-Engine: 2.7.2.1390750, Antispam-Data: 2015.9.14.110617
X-SEA-Spam: Gauge=XXXIII, Probability=33%, Report='
 ZIP_ATTACHED_EXE 3.5, HTML_00_01 0.05, HTML_00_10 0.05, BODYTEXTP_SIZE_3000_LESS 0, BODY_SIZE_10000_PLUS 0, DQ_SUSP_1 0, DQ_SUSP_2 0, DQ_SUSP_4 0, NO_URI_FOUND 0, NO_URI_HTTPS 0, RDNS_STATIC 0, SPF_FAIL 0, WEBMAIL_SOURCE 0, ZIP_ATTACHED 0, __CT 0, __CTYPE_HAS_BOUNDARY 0, __CTYPE_MULTIPART 0, __CTYPE_MULTIPART_MIXED 0, __DQ_HEUR_4 0, __DQ_HEUR_5 0, __DQ_IP_SUSP_1 0, __DQ_IP_SUSP_2 0, __DQ_S_HIST_1 0, __DQ_S_IP_100K 0, __DQ_S_IP_10K 0, __DQ_S_IP_1K 0, __HAS_FROM 0, __HAS_MSGID 0, __MIME_VERSION 0, __PHISH_SPEAR_GREETING 0, __PHISH_SPEAR_HTTP_RECEIVED 0, __RDNS_STATIC_1 0, __SANE_MSGID 0, __SUBJ_ALPHA_END 0, __TO_MALFORMED_2 0, __TO_NO_NAME 0, __ZIP_ATTACHED 0, __ZIP_ATTACHED2 0, __ZIP_ATTACHED_EXE 0, __ZIP_ATTACHED_EXE2 0'
Return-Path: [email protected]


--2PW33G54863183M46JUX432TR072WH012HV8
Content-Type: text/plain; charset="utf-8"; format=flowed
Content-Transfer-Encoding: 7bit

Potentially dangerous attachments were identified and removed from this
message.

From: "xxxxx" <[email protected]>
To: [email protected]
Subject: Attached sales note 
When: Mon, 14 Sep 2015 11:11:07 +0058 CEST

If you feel this is an error and wish this email to be released, please reply to this email leaving the message intact. The message (excluding the attachment) is included below.



Dear customer,

Please find your sales order #57650  attached.

xxxxx

--2PW33G54863183M46JUX432TR072WH012HV8--

--163d2f30-7ff5-4e62-9b98-b857cd0b3e23--

Additional Information: This is a 'Zimbra' type mail server being polled. One note I made in researching this problem was... "The IMAP BODYSTRUCTURE response includes the exact size of each body part. Normally, this size is used to determine how much data to fetch for each body part. Some servers report this size incorrectly in some cases; this property can be set to work around such server bugs. If this property is set to true, this size is ignored and data is fetched until the server reports the end of data. This will result in an extra fetch if the data size is a multiple of the block size. Defaults to false." (From https://javamail.java.net/nonav/docs/api/com/sun/mail/imap/package-summary.html).

Error :framework:compileGroovy FAILED

Hi,
I'm quite new to Moqui : have only been playing around with for a couple of weeks now.
Anyhow, yesterday when I updated the code repository on my machine, i started getting the following error when i tried to run the code on my machine. ..[ it used to work well before the update yesterday]

/*****************************************************************************************************/
D:\testbed\GitHub\moqui-framework\framework\build\tmp\compileGroovy\groovy-java-stubs\org\moqui\impl\context\ExecutionContextImpl.java:11: error: ExecutionContextImpl is not abstract and does not override abstract method getContextBinding() in ExecutionContext
@groovy.transform.CompileStatic() public class ExecutionContextImpl
^
D:\testbed\GitHub\moqui-framework\framework\build\tmp\compileGroovy\groovy-java-stubs\org\moqui\impl\context\ExecutionContextImpl.java:43: error: getContextBinding() in ExecutionContextImpl cannot implement getContextBinding() in ExecutionContext
public org.moqui.impl.context.ContextBinding getContextBinding() { return (org.moqui.impl.context.ContextBinding)null;}
^
return type org.moqui.impl.context.ContextBinding is not compatible with org.moqui.context.ContextBinding
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
2 errors
startup failed:
Compilation failed; see the compiler error output for details.

1 error

:framework:compileGroovy FAILED

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':framework:compileGroovy'.

    Compilation failed; see the compiler error output for details.

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 1 mins 29.523 secs
/*****************************************************************************************************/

Any advice on what i could be doing wrong or what i can do to share more details on the issue.

Rgds
Sanjeev

Question: is there a way to command Jetty (in embedded mode) to open an https port?

I can run java -jar moqui.war --port=8181 command and force the container to communicate http on 8181.

But is there a way I can do the same with https port? Something similar to the times, when Winstone was used (screenshot from MakingAppsWithMoqui):

image

I keep getting this error: "Screen at location [component://webroot/screen/webroot.xml], which is part of [[error, NotFound]] under screen [component://webroot/screen/webroot.xml] requires an encrypted/secure connection but the request is not secure, sending redirect to secure."

Current MoquiDefaultConf mySQL configuration unable to handle 4 byte characters.

Can't see this issue raised before - in the current MoquiDefaultConf, mySQL implements 'UTF-8'. However, it is not full UTF-8. Only 3 byte characters are encompassed. 4 byte characters such as emojis from twitter cannot be handled. The encoding required is utf8mb4, 'across the board'. (I had an issue with this but circumvented it with regex to strip out non-ASCII characters, so no urgency in my case.)

Service params not showing in ServiceRun tool

If a service with verb "update" has in-params with "required" attribute set to true, that particular param will not shown in ServiceRun tool screen. It is not a bug as it is written explicitly here, but I don't understand why. To make that required param showing, I have to rename the service's verb to something else.

    void addAutoServiceField(ServiceDefinition sd, EntityDefinition nounEd, MNode parameterNode, String fieldType,
                             String serviceVerb, MNode newFieldNode, MNode subFieldNode, MNode baseFormNode) {

...

                if (parameterNode.attribute("required") == "true" && serviceVerb.startsWith("update")) {
                    subFieldNode.append("hidden", null)
                } else {

...

load data error when separate to the 4 standard entity groups.

I set standard entity groups to different datasource (with startup-add-missing="true") ,

<entity-facade crypt-pass="MoquiDefaultPassword:CHANGEME">
        <datasource group-name="transactional" database-conf-name="mysql" schema-name=""  startup-add-missing="true">
            <inline-jdbc jdbc-uri="jdbc:mysql://127.0.0.1:3306/MoquiDEFAULT?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"
                    jdbc-username="moqui" jdbc-password=""/>
        </datasource>

        <datasource group-name="nontransactional" database-conf-name="mysql" schema-name="" startup-add-missing="true">
            <inline-jdbc jdbc-uri="jdbc:mysql://127.0.0.1:3306/MoquiNoSQL?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"
                    jdbc-username="moqui" jdbc-password=""/>
        </datasource>

        <datasource group-name="configuration" database-conf-name="mysql" schema-name="" startup-add-missing="true">
            <inline-jdbc jdbc-uri="jdbc:mysql://127.0.0.1:3306/MoquiConf?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"
                    jdbc-username="moqui" jdbc-password=""/>
        </datasource>

        <datasource group-name="tenantcommon" database-conf-name="mysql" schema-name="" startup-add-missing="true">
            <inline-jdbc jdbc-uri="jdbc:mysql://127.0.0.1:3306/MoquiTENANT?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"
                    jdbc-username="moqui" jdbc-password=""/>
        </datasource>
</entity-facade>

and execute the command "gradlew load". there are some error like :

....
SQL Exception while executing the following SQL [ALTER TABLE SERVICE_JOB_RUN ADD CONSTRAINT ServiceJobRunServiceJob FOREIGN KEY (JOB_NAME) REFERENCES SERVICE_JOB (JOB_NAME)]: java.sql.SQLException: Cannot add foreign key constraint
.....

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'moquidefault.artifact_tarpit' doesn't exist
....

Occasional exception after login

Occasionally, if I keep the login page open for a long time then I login using the John Doe button an exception is thrown:

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 java.util.LinkedList.checkElementIndex(LinkedList.java:555) java.util.LinkedList.get(LinkedList.java:476) org.moqui.impl.screen.ScreenRenderImpl.internalRender(ScreenRenderImpl.groovy:370) org.moqui.impl.screen.ScreenRenderImpl.render(ScreenRenderImpl.groovy:166) org.moqui.impl.webapp.MoquiServlet.doScreenRequest(MoquiServlet.groovy:73) org.moqui.impl.webapp.MoquiServlet.doPost(MoquiServlet.groovy:39) javax.servlet.http.HttpServlet.service(HttpServlet.java:648) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

The only way forward is manually updating the URL to point to the app list.

Search box in dropdown not working (textbox not editable)

The search box that appears in dropdown is not usable, you cannot write to it. Right now I cloned framework from moqui/moqui-frameworked, used gradle to fetch PopCommerce and compiled it. I was not able get into it, my CSS, JavaScript knowledge is insufficient.

On the first screenshot, that is my local version. The second screen is from the official site's PopCommerce app.

image

image

output Map of org.moqui.impl.EmailServices.send#EmailTemplate is not correct

the service interface org.moqui.EmailServices.send#EmailTemplate has following out-parameters

<out-parameters>
            <parameter name="messageId"><description>From the Message-ID email header field.</description></parameter>
            <parameter name="emailMessageId"><description>If createEmailMessage=true the ID of the EmailMessage record.</description></parameter>
        </out-parameters>

In service implementation (org.moqui.impl.EmailServices.send#EmailTemplate), script "sendEmailTemplate.groovy" has last statement as following if email is sent sucessfully:

ec.service.sync().name("update", "moqui.basic.email.EmailMessage").parameters(uemParms).disableAuthz().call()

This will cause service's output Map is the result of this Entity Auto service, which is [oldStatusId, statusChanged].

We must put one more line after this statement to return null, so that correct output Map will be built

Swagger UI 500 Error

Clicking any of the Swagger UI links from http://localhost:8080/apps/tools/ give a error:

--- 14:46:37.704 [ndlerThread[19]] INFO        org.moqui.impl.webapp.MoquiServlet
 Finished request to [/assets/lib/swagger-ui/index.html] of content type [text/html;charset=UTF-8] in [0.009] seconds in session [f6322c38b36612eaab914cedda1eff24] thread [123:RequestHandlerThread[19]]
--- 14:46:39.900 [ndlerThread[19]] INFO    org.moqui.impl.entity.EntityFacadeImpl
 Created 726 automatic reverse relationships
--- 14:46:39.934 [ndlerThread[19]] ERROR         org.moqui.impl.actions.XmlAction
 Error running groovy script (java.lang.NullPointerException):
1 : import org.moqui.impl.StupidUtilities
2 : // these are in the context by default: ExecutionContext ec, Map<String, Object> context, Map<String, Object> result
3 :
4 :     // begin inline script
5 :     ec.web.handleServiceRestSwagger(sri.screenUrlInfo.extraPathNameList, ec.web.getHostName(true), "/rest/s1")
6 :     // end inline script
7 : // make sure the last statement is not considered the return value
8 : return;


--- 14:46:39.935 [ndlerThread[19]] WARN  moqui.impl.context.TransactionFacadeImpl
 Transaction rollback. The rollback was originally caused by: Error running transition in [http://localhost:8080/rest/service.swagger/mantle/products]

Thanks
Sam

Field focus lost when using keyboard to pick in dropdown (in modal)

This occurs in dialog, opened as modal (dialog).

After I fill the value in the first dropdown using keyboard (search party, then hit Enter to confirm the selection), the field focus is lost (I would expect the focus to jump to the next field on the dialog). But when I hit TAB, the fields on the parent form are focused instead (starting with icon as seen on the screenshot).

If I want to get back on the next field in the dialog, I have to TAB over all items on the parent. This makes use of keyboard quite ineffective.

Can I set the tab index of the fields somehow?

image

image

image

Session token required (in moquiSessionToken)

Built and loaded the demo data the usual way, tried popc of adding to the cart and then logging in as joe - comes back with this -
"
_java.lang.IllegalArgumentException: Session token required (in moquiSessionToken) for URL http://localhost:8080/popc/Login/login
at org.moqui.impl.screen.ScreenRenderImpl.internalRender(ScreenRenderImpl.groovy:297)
at org.moqui.impl.screen.ScreenRenderImpl.render(ScreenRenderImpl.groovy:158)
at org.moqui.impl.webapp.MoquiServlet.doScreenRequest(MoquiServlet.groovy:73)
at org.moqui.impl.webapp.MoquiServlet.doPost(MoquiServlet.groovy:39)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at net.winstone.core.ServletConfiguration.execute(ServletConfiguration.java:270)
at net.winstone.core.SimpleRequestDispatcher.forward(SimpleRequestDispatcher.java:290)
at net.winstone.core.listener.RequestHandlerThread.processRequest(RequestHandlerThread.java:212)
at net.winstone.core.listener.RequestHandlerThread.run(RequestHandlerThread.java:143)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at net.winstone.util.BoundedExecutorService$1.run(BoundedExecutorService.java:81)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
_"
Replaced framework with the latest from github but still get the same error. Need further investigation but thought I would post it in any case.
Thank you,

xml-form-2.0.xsd - error in form-list.multi attribute description

Default to false:

<xs:attribute name="multi" default="false" type="boolean">
xs:annotationxs:documentationMake the form a multi-submit form where all rows on a page are
submitted together in a single request with a "_${rowNumber}" suffix on each field. Also passes a
_isMulti=true parameter so the Service Facade knows to run the service (a single service-call in a
transition) for each row. Defaults to true, so set to false to disable this behavior and have a
separate form (submitted separately) for each row./xs:documentation/xs:annotation
/xs:attribute

After login UserFacadeImpl.currentInfo.internalArtifactAuthzCheckList retain dirty information

A bug introduced by commit 11ca1d5, After user login loginAfterAlways method will call some services, which call isPermitted and populate currentInfo.internalArtifactAuthzCheckList. Then pushUserSubject method will call setInfo on currentInfo other than create a new UserInfo.

Following command can show the result, AppList will not list any apps because isPermitted == false.
curl -u username:password -o - http://localhost:8080/apps

Cannot add product item in POP Commerce

I got the following error when adding product item by http://localhost:8080/apps/PopcAdmin/Order/OrderDetail?orderId=100051

--- 2016-08-22 17:17:16.676 [qtp396873410-15] ERROR org.moqui.impl.service.ServiceCallSyncImpl []
Error running service [create#mantle.order.OrderItem]
java.lang.NullPointerException
at org.moqui.impl.entity.EntityListIteratorImpl.next(EntityListIteratorImpl.java:190) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.entity.EntityListIteratorImpl.getCompleteList(EntityListIteratorImpl.java:241) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.entity.EntityFindBase.listInternal(EntityFindBase.groovy:1105) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.entity.EntityFindBase.list(EntityFindBase.groovy:982) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.entity.EntityValueBase.setSequencedIdSecondary(EntityValueBase.groovy:505) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.runner.EntityAutoServiceRunner.checkAllPkFields(EntityAutoServiceRunner.groovy:152) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.runner.EntityAutoServiceRunner.createRecursive(EntityAutoServiceRunner.groovy:186) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.runner.EntityAutoServiceRunner.createEntity(EntityAutoServiceRunner.groovy:176) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.ServiceCallSyncImpl.runImplicitEntityAuto(ServiceCallSyncImpl.groovy:507) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.ServiceCallSyncImpl.callSingle(ServiceCallSyncImpl.groovy:254) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.ServiceCallSyncImpl.call(ServiceCallSyncImpl.groovy:165) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.service.ServiceCallSync$call$1.call(Unknown Source) [moqui-framework-2.0.0.jar:2.0.0]
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) [groovy-all-2.4.7.jar:2.4.7]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) [groovy-all-2.4.7.jar:2.4.7]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117) [groovy-all-2.4.7.jar:2.4.7]
at mantle_order_OrderServices_create_OrderItem.run(mantle_order_OrderServices_create_OrderItem:35) [script:?]
at org.moqui.impl.actions.XmlAction.run(XmlAction.groovy:66) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.runner.InlineServiceRunner.runService(InlineServiceRunner.groovy:53) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.ServiceCallSyncImpl.callSingle(ServiceCallSyncImpl.groovy:322) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.ServiceCallSyncImpl.call(ServiceCallSyncImpl.groovy:165) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.service.ServiceCallSync$call$1.call(Unknown Source) [moqui-framework-2.0.0.jar:2.0.0]
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) [groovy-all-2.4.7.jar:2.4.7]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) [groovy-all-2.4.7.jar:2.4.7]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117) [groovy-all-2.4.7.jar:2.4.7]
at mantle_order_OrderServices_add_OrderProductQuantity.run(mantle_order_OrderServices_add_OrderProductQuantity:111) [script:?]
at org.moqui.impl.actions.XmlAction.run(XmlAction.groovy:66) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.runner.InlineServiceRunner.runService(InlineServiceRunner.groovy:53) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.ServiceCallSyncImpl.callSingle(ServiceCallSyncImpl.groovy:322) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.ServiceCallSyncImpl.call(ServiceCallSyncImpl.groovy:165) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.service.ServiceCallSync$call$1.call(Unknown Source) [moqui-framework-2.0.0.jar:2.0.0]
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) [groovy-all-2.4.7.jar:2.4.7]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) [groovy-all-2.4.7.jar:2.4.7]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117) [groovy-all-2.4.7.jar:2.4.7]
at OrderDetail_xml_transition_addProductItem_service_call.run(OrderDetail_xml_transition_addProductItem_service_call:5) [script:?]
at org.moqui.impl.actions.XmlAction.run(XmlAction.groovy:66) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenDefinition$TransitionItem.run(ScreenDefinition.groovy:702) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:239) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:233) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:233) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:233) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:233) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenRenderImpl.internalRender(ScreenRenderImpl.groovy:349) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenRenderImpl.render(ScreenRenderImpl.groovy:176) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.webapp.MoquiServlet.doScreenRequest(MoquiServlet.groovy:79) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.webapp.MoquiServlet.service(MoquiServlet.groovy:54) [moqui-framework-2.0.0.jar:2.0.0]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [moqui-2.0.0.war:3.1.0]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1689) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:225) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676) [moqui-2.0.0.war:9.3.11.v20160721]
at com.hazelcast.web.WebFilter.doFilter(WebFilter.java:370) [moqui-framework-2.0.0.jar:3.6.4]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:397) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.Server.handle(Server.java:524) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:319) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:253) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589) [moqui-2.0.0.war:9.3.11.v20160721]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_40]
--- 2016-08-22 17:17:16.680 [qtp396873410-15] WARN org.moqui.impl.context.TransactionFacadeImpl []
Transaction set rollback only. The rollback was originally caused by: Error running service create#mantle.order.OrderItem
java.lang.NullPointerException
at org.moqui.impl.entity.EntityListIteratorImpl.next(EntityListIteratorImpl.java:190) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.entity.EntityListIteratorImpl.getCompleteList(EntityListIteratorImpl.java:241) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.entity.EntityFindBase.listInternal(EntityFindBase.groovy:1105) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.entity.EntityFindBase.list(EntityFindBase.groovy:982) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.entity.EntityValueBase.setSequencedIdSecondary(EntityValueBase.groovy:505) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.runner.EntityAutoServiceRunner.checkAllPkFields(EntityAutoServiceRunner.groovy:152) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.runner.EntityAutoServiceRunner.createRecursive(EntityAutoServiceRunner.groovy:186) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.runner.EntityAutoServiceRunner.createEntity(EntityAutoServiceRunner.groovy:176) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.ServiceCallSyncImpl.runImplicitEntityAuto(ServiceCallSyncImpl.groovy:507) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.ServiceCallSyncImpl.callSingle(ServiceCallSyncImpl.groovy:254) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.ServiceCallSyncImpl.call(ServiceCallSyncImpl.groovy:165) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.service.ServiceCallSync$call$1.call(Unknown Source) [moqui-framework-2.0.0.jar:2.0.0]
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) [groovy-all-2.4.7.jar:2.4.7]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) [groovy-all-2.4.7.jar:2.4.7]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117) [groovy-all-2.4.7.jar:2.4.7]
at mantle_order_OrderServices_create_OrderItem.run(mantle_order_OrderServices_create_OrderItem:35) [script:?]
at org.moqui.impl.actions.XmlAction.run(XmlAction.groovy:66) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.runner.InlineServiceRunner.runService(InlineServiceRunner.groovy:53) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.ServiceCallSyncImpl.callSingle(ServiceCallSyncImpl.groovy:322) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.ServiceCallSyncImpl.call(ServiceCallSyncImpl.groovy:165) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.service.ServiceCallSync$call$1.call(Unknown Source) [moqui-framework-2.0.0.jar:2.0.0]
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) [groovy-all-2.4.7.jar:2.4.7]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) [groovy-all-2.4.7.jar:2.4.7]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117) [groovy-all-2.4.7.jar:2.4.7]
at mantle_order_OrderServices_add_OrderProductQuantity.run(mantle_order_OrderServices_add_OrderProductQuantity:111) [script:?]
at org.moqui.impl.actions.XmlAction.run(XmlAction.groovy:66) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.runner.InlineServiceRunner.runService(InlineServiceRunner.groovy:53) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.ServiceCallSyncImpl.callSingle(ServiceCallSyncImpl.groovy:322) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.ServiceCallSyncImpl.call(ServiceCallSyncImpl.groovy:165) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.service.ServiceCallSync$call$1.call(Unknown Source) [moqui-framework-2.0.0.jar:2.0.0]
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) [groovy-all-2.4.7.jar:2.4.7]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) [groovy-all-2.4.7.jar:2.4.7]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117) [groovy-all-2.4.7.jar:2.4.7]
at OrderDetail_xml_transition_addProductItem_service_call.run(OrderDetail_xml_transition_addProductItem_service_call:5) [script:?]
at org.moqui.impl.actions.XmlAction.run(XmlAction.groovy:66) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenDefinition$TransitionItem.run(ScreenDefinition.groovy:702) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:239) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:233) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:233) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:233) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:233) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenRenderImpl.internalRender(ScreenRenderImpl.groovy:349) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenRenderImpl.render(ScreenRenderImpl.groovy:176) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.webapp.MoquiServlet.doScreenRequest(MoquiServlet.groovy:79) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.webapp.MoquiServlet.service(MoquiServlet.groovy:54) [moqui-framework-2.0.0.jar:2.0.0]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [moqui-2.0.0.war:3.1.0]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1689) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:225) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676) [moqui-2.0.0.war:9.3.11.v20160721]
at com.hazelcast.web.WebFilter.doFilter(WebFilter.java:370) [moqui-framework-2.0.0.jar:3.6.4]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:397) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.Server.handle(Server.java:524) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:319) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:253) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589) [moqui-2.0.0.war:9.3.11.v20160721]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_40]
--- 2016-08-22 17:17:16.681 [qtp396873410-15] WARN org.moqui.impl.context.TransactionFacadeImpl []
Transaction set rollback only for [Error running service create#mantle.order.OrderItem]. Here is the current location:
org.moqui.BaseException: Set rollback only location
at org.moqui.impl.context.TransactionFacadeImpl.setRollbackOnly(TransactionFacadeImpl.groovy:447) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.context.TransactionFacadeImpl.rollback(TransactionFacadeImpl.groovy:409) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.ServiceCallSyncImpl.runImplicitEntityAuto(ServiceCallSyncImpl.groovy:524) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.ServiceCallSyncImpl.callSingle(ServiceCallSyncImpl.groovy:254) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.ServiceCallSyncImpl.call(ServiceCallSyncImpl.groovy:165) ~[moqui-framework-2.0.0.jar:2.0.0]
at mantle_order_OrderServices_create_OrderItem.run(mantle_order_OrderServices_create_OrderItem:35) ~[script:?]
at org.moqui.impl.actions.XmlAction.run(XmlAction.groovy:66) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.runner.InlineServiceRunner.runService(InlineServiceRunner.groovy:53) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.ServiceCallSyncImpl.callSingle(ServiceCallSyncImpl.groovy:322) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.ServiceCallSyncImpl.call(ServiceCallSyncImpl.groovy:165) ~[moqui-framework-2.0.0.jar:2.0.0]
at mantle_order_OrderServices_add_OrderProductQuantity.run(mantle_order_OrderServices_add_OrderProductQuantity:111) ~[script:?]
at org.moqui.impl.actions.XmlAction.run(XmlAction.groovy:66) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.runner.InlineServiceRunner.runService(InlineServiceRunner.groovy:53) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.ServiceCallSyncImpl.callSingle(ServiceCallSyncImpl.groovy:322) ~[moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.service.ServiceCallSyncImpl.call(ServiceCallSyncImpl.groovy:165) ~[moqui-framework-2.0.0.jar:2.0.0]
at OrderDetail_xml_transition_addProductItem_service_call.run(OrderDetail_xml_transition_addProductItem_service_call:5) [script:?]
at org.moqui.impl.actions.XmlAction.run(XmlAction.groovy:66) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenDefinition$TransitionItem.run(ScreenDefinition.groovy:702) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:239) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:233) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:233) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:233) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:233) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenRenderImpl.internalRender(ScreenRenderImpl.groovy:349) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.screen.ScreenRenderImpl.render(ScreenRenderImpl.groovy:176) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.webapp.MoquiServlet.doScreenRequest(MoquiServlet.groovy:79) [moqui-framework-2.0.0.jar:2.0.0]
at org.moqui.impl.webapp.MoquiServlet.service(MoquiServlet.groovy:54) [moqui-framework-2.0.0.jar:2.0.0]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [moqui-2.0.0.war:3.1.0]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1689) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:225) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676) [moqui-2.0.0.war:9.3.11.v20160721]
at com.hazelcast.web.WebFilter.doFilter(WebFilter.java:370) [moqui-framework-2.0.0.jar:3.6.4]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:397) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.Server.handle(Server.java:524) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:319) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:253) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671) [moqui-2.0.0.war:9.3.11.v20160721]
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589) [moqui-2.0.0.war:9.3.11.v20160721]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_40]
--- 2016-08-22 17:17:16.690 [qtp396873410-15] INFO org.moqui.impl.screen.ScreenRenderImpl []
Transition apps/PopcAdmin/Order/OrderDetail/addProductItem in 697ms, redirecting to screen path URL: http://localhost:8080/apps/PopcAdmin/Order/OrderDetail?orderId=100051
--- 2016-08-22 17:17:18.753 [qtp396873410-13] INFO org.moqui.impl.webapp.MoquiServlet []
/apps/PopcAdmin/Order/OrderDetail in 2058ms (text/html;charset=utf-8) session HZ4E6B9C1320104D699E67A7A252FF021F thread 13:qtp396873410-13
--- 2016-08-22 17:17:19.173 [qtp396873410-19] INFO org.moqui.impl.webapp.NotificationEndpoint []
Notification subscribe user EX_JOHN_DOE topics [ALL] session 0:0:0:0:0:0:0:1:8080->0:0:0:0:0:0:0:1:57711
--- 2016-08-22 17:17:19.406 [qtp396873410-12] INFO org.moqui.impl.screen.ScreenRenderImpl []
Transition apps/PopcAdmin/Order/OrderDetail/getProductList in 4ms, type none response

Wiki - can't move page to other location if new Parent dir not created

Replicate scenario:

  1. Existing page to be moved: /OldParent/Page1.md
  2. Create new page, i.e /NewParent
  3. Edit Page1, change Parent Path to: /NewParent

Result: the service update#WikiPage complete sucessfully, and Moqui redirect to new URL .../NewParent/Page1. However, the Page1 is not moved to NewParent yet, then system display a blank new Create Page form.

Note: it worked well if at step 3, we created new page under NewParent, or we move an existing page to an existing Folder, not page.

problem with execute <entity-find-one/> on ViewEntity

Scenario 1:
In screen: component/SimpleScreens/User/EditUser (call via url /apps/PopcAdmin/User/EditUser)
record ID is existing, but record value is empty (checked via debug)

After checking following code:

<actions>
        <entity-find-one entity-name="mantle.party.PersonAndUserAccount" value-field="personAndUserAccount"/>
...

into new one:

<actions>
       <entity-find-one entity-name="mantle.party.PersonAndUserAccount" value-field="personAndUserAccount">
            <field-map field-name="partyId"/>
        </entity-find-one>
...

it works as expected

Scenario 2:
In screen: component/SimpleScreens/Supplier/

  1. Create New Supplier & submit
  2. System complete creating new Supplier and redirect to /EditSupplier with new partyId
  3. all fields of new record is blank (although no error occurred, no problem with new ID)
  4. I navigate back to FindSupplier screen, error message occurred due to party.pseudoId is null
  5. If I use Tool/AutoScreen to find the viewentity PartyDetail, the find result list display new ID together with pseudoId (AutoFind screen). However, if I select to edit the problematic record, the pseudoId is blank in AutoEditMaster screen.

I got problem with scenario 2 once and I can't replicate it.

I guess there's something wrong with entity-find-one with viewentity with cache.

Support multiple semaphores per service with a semaphore key

I've often come across situations where I wish I could declare a semaphore for a certain service context rather than globally locking against the service name.

An example might be a service that pulls in data from external sources where an input parameter (datasourceId) defines which external source to pull from. If this service runs hourly against each datasourceId but sometimes an import takes longer than an hour, then you end up with two executions of the service trying to pull in from the same datasourceId. It would be nice if you could fail the 2nd call to that datasourceId but allow instances of the service to run against other datasourceIds.

Moqui can execute Javascript which request by user

Today i tried some test to moqui-framework.

here is steps

  1. run the framework and use Test Login button to login.
  2. request http://localhost:8080/apps/system/Security/UserAccount/UserAccountDetail?userId=EX_JOHN_DOE (this works well)
  3. request http://localhost:8080/apps/system/Security/UserAccount/UserAccountDetail?userId=%3Cscript%3Ealert(%27Test%20Crack!%27);location.href=%27https://github.com/moqui/moqui-framework%27%3C/script%3E (this replace userId param with javascript)
  4. http://localhost:8080/apps/system/Security/UserAccount/UserAccountDetail?userId=EX_JOHN_DOE ( after step 3, request as step 2 again )
  5. after step 4, you will see an alert dialog with message 'Test Crack!', and after click ok button,the browser will redirect to moqui-framework's github

this issue happens in other request ,such as :

moqui-framework version i tested is master branch

the browser i use is chrome

Error while update child WikiPage

I got this issue when update a child WikiPage, i.e in Demo Wiki which has following hierachy:

  • Demo Page 1
    • Child Page 1
    • Child Page 2

I accessed Child Page 2 using this url: http://localhost:8080/apps/hm/wiki/DEMO/Child+Page+2
Page is found & rendered correctly. However, when edit this child (just the content, don't touch the Parent nor Page Name), error message raised like this:

Error in update of [[moqui.resource.wiki.WikiPage: [restrictUpdate:null, createdByUserId:EX_JOHN_DOE, lastUpdatedStamp:2016-06-03 22:00:47.282, restrictView:null, wikiPageId:100053, parentWikiPageId:null, wikiSpaceId:DEMO, pagePath:Demo Page 1/Child Page 2]]]

Error in update for:UPDATE public.WIKI_PAGE SET PAGE_PATH=?, LAST_UPDATED_STAMP=? WHERE WIKI_PAGE_ID=?

ERROR: duplicate key value violates unique constraint "wikipage_spcpth"
Detail: Key (wiki_space_id, page_path)=(DEMO, Demo Page 1/Child Page 2) already exists.

If I accessed Child Page 2 using the url with full path: http://localhost:8080/apps/hm/wiki/DEMO/Demo+Page+1/Child+Page+2, the update works well.

After checking the related service in WikiServices, I find that in the problematic case, pagePath='Child Page 2', (expected as 'Demo Page 1/Child Page 2') that cause service to update the entity and the index as well.

Pressing the "Clear All Artifact" button on the Cache List screen causes an exception

Screen: System >Cache
Exception:
keyType and/or valueType can't be null
at javax.cache.configuration.MutableConfiguration.setTypes(MutableConfiguration.java:194)
at org.moqui.impl.context.CacheFacadeImpl.initCache(CacheFacadeImpl.groovy:251)
at org.moqui.impl.context.CacheFacadeImpl.getCacheInternal(CacheFacadeImpl.groovy:138)
at org.moqui.impl.context.CacheFacadeImpl.getCache(CacheFacadeImpl.groovy:115)
at org.moqui.context.CacheFacade$getCache.call(Unknown Source)
at CacheList_xml_transition_clearArtifactCaches_actions$_run_closure1.doCall(CacheList_xml_transition_clearArtifactCaches_actions:13)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024)
at groovy.lang.Closure.call(Closure.java:414)
at groovy.lang.Closure.call(Closure.java:430)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2030)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2015)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2056)
at org.codehaus.groovy.runtime.dgm$162.invoke(Unknown Source)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:274)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:56)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
at CacheList_xml_transition_clearArtifactCaches_actions.run(CacheList_xml_transition_clearArtifactCaches_actions:6)
at org.moqui.impl.actions.XmlAction.run(XmlAction.groovy:66)
at org.moqui.impl.screen.ScreenDefinition$TransitionItem.run(ScreenDefinition.groovy:702)
at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:239)
at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:233)
at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:233)
at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:233)
at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:233)
at org.moqui.impl.screen.ScreenRenderImpl.internalRender(ScreenRenderImpl.groovy:349)
at org.moqui.impl.screen.ScreenRenderImpl.render(ScreenRenderImpl.groovy:176)
at org.moqui.impl.webapp.MoquiServlet.doScreenRequest(MoquiServlet.groovy:79)
at org.moqui.impl.webapp.MoquiServlet.service(MoquiServlet.groovy:54)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:837)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1689)
at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:225)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:397)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
at org.eclipse.jetty.server.Server.handle(Server.java:524)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:319)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:253)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
at java.lang.Thread.run(Thread.java:745)

Problem when navigating WikiPage by SpacePageTree

Issue happen when access a WikiPage with blank in name (i.e "Demo Page 1") from the WikiSpace tree.

The url of this page in the tree link is: http://localhost:8080/apps/hm/wiki/DEMO/Demo+Page+1

As a result, HM wiki screen can't find that Page and open the screen to create new one with default name is "Demo+Page+1".

If I create a child page of "Demo Page 1", i.e "Child Page 1", then the new page name is "Child+Page+1" and parent "Demo+Page+1". After commit, the new child page will not exist to expected path due to wrong parent.

Maybe there's problem when encode the page name with blank into url. The blank space char should be encoded into "%20" instead of "+"

cannot login - deploy moqui 1.6.3 and runtime in apache-tomcat-8.0.12 in a non-ROOT folder

I'm trying to deploy moqui 1.6.3 and runtime in apache-tomcat-8.0.12 in a non-ROOT folder.

I have done below modification in build.gradle:

task deployTomcatRuntime << { delete file(tomcatHome + '/runtime'); delete file(tomcatHome + '/webapps/myweb'); delete file(tomcatHome + '/webapps/myweb.war') copy { from file(plusRuntimeName); into file(tomcatHome + '/webapps'); rename(plusRuntimeName, 'myweb.war') } }

After commands: gradle cleanAll, gradle buid, gradle addRuntimeTomcat, myweb.war is deployed in tomcat webapp folder successfully.

After that, I use "http://localhost:8080/myweb" to open the root page, and the login page comes "http://localhost:8080/myweb/Login".

And then I give the username and password and click login, but I'm still in login page without any error.

If I change myweb.war to ROOT.war, it will work fine to log into the system.

I put some logs in ScreenRenderImpl and find that the reason is userId lost, but I cannot find out how it is.

logger.debug("=======internalRender-userId-1.5:" + ec.getUser().getUserId())
// check webapp settings for each screen in the path
for (ScreenDefinition checkSd in screenUrlInfo.screenRenderDefList) {
logger.debug("=======internalRender-ScreenDefinition:" + checkSd.location)
if (!checkWebappSettings(checkSd)) return
}

--- 2016-05-03 10:31:55.275 [nio-8080-exec-1] DEBUG org.moqui.impl.screen.ScreenRenderImpl []
=======internalRender-userId-1.5:null
--- 2016-05-03 10:31:55.275 [nio-8080-exec-1] DEBUG org.moqui.impl.screen.ScreenRenderImpl []
=======internalRender-ScreenDefinition:component://webroot/screen/webroot.xml
--- 2016-05-03 10:31:55.275 [nio-8080-exec-1] DEBUG org.moqui.impl.screen.ScreenRenderImpl []
=======internalRender-ScreenDefinition:component://webroot/screen/webroot/apps.xml
--- 2016-05-03 10:31:55.275 [nio-8080-exec-1] DEBUG org.moqui.impl.screen.ScreenRenderImpl []
=======internalRender-ScreenDefinition:component://webroot/screen/webroot/apps/AppList.xml
--- 2016-05-03 10:31:55.276 [nio-8080-exec-1] INFO org.moqui.impl.screen.ScreenRenderImpl []
Screen at location [component://webroot/screen/webroot/apps/AppList.xml], which is part of [[apps, AppList]] under screen [component://webroot/screen/webroot.xml] requires authentication but no user is currently logged in.

When cache enabled, list view-entity with selectFields will return wrong results.

Have a view-entity using function, the group by clause will depend on selectFields.
The following line of code will add all fields, which return wrong results.
https://github.com/moqui/moqui-framework/blob/master/framework/src/main/groovy/org/moqui/impl/entity/EntityFindBase.groovy#L834

Because EntityCache not distinguish between selectFields difference. These type of view-entity should never cached. But If I enabled trasaction-cache, it will cache all entity event @cache="never".

Not able to start in tomcat 7

The feature of looking for the ServerContainer triggers a casting Exception (see below). This does not happen in tomcat 8. Is this a problem with Tomcat, or the servlet spec used (3.0 for tomcat 7, 3.1 for tomcat 8)? Does this mean moqui-2.0 will not work with tomcat 7?

Aug 18, 2016 2:17:24 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.moqui.impl.webapp.MoquiContextListener
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'org.apache.tomcat.websocket.server.WsServerContainer@1344f181' with class 'org.apache.tomcat.websocket.server.WsServerContainer' to class 'javax.websocket.server.ServerContainer'
at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.continueCastOnSAM(DefaultTypeTransformation.java:405)
at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.continueCastOnNumber(DefaultTypeTransformation.java:319)
at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.castToType(DefaultTypeTransformation.java:232)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.castToType(ScriptBytecodeAdapter.java:603)
at org.moqui.impl.context.ExecutionContextFactoryImpl.initServletContext(ExecutionContextFactoryImpl.groovy:1019)
at org.moqui.impl.webapp.MoquiContextListener.contextInitialized(MoquiContextListener.groovy:81)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1880)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

MySql performance >10 times slower than H2 on Speed Test

I used the moqui-framework (c983718) with MySql database, it is simply use the default MySql datasource configuration, the performance on entity operation (without cache) is more than 10 times slower than H2 database.

Below are snapshots of two environments (only change is the datasource configuration)
H2:
speed-test-with-h2

MySql:
speed-test-with-mysql

this is run at my Macbook Pro with SSD. and it is similar (10 times difference) at server with HDD.

I recall it was not so bad with MySql datasource before.

ec.user.context does not have content when after-login actions in web-app set ec.user.context

I add service call of setup#UserOrganizationInfo in after-login actions in web-app element. The service setup#UserOrganizationInfo set ec.user.context.userOrgIds, filterOrgIds and activeOrgId. They have content immediately after service call in after login actions (the are logged). But they can't be access outside of after-login actions. I printed them in a screen, but ec.user.context is empty.

Concurrency for dbresource

When I create product content in dbresouces://mantle/product/{productId}/... with multiple threads at same time (web client calls aps at same time) it will create two branches for mantle/product with different nodes. Semantically there should be only one path for /mantle/product.

When searching for dbrerouces://mantle/product/... resource facade find root node for "mantle" whose parent is null, but there are two record in dbresources table.

image

Ocassionly I get below exeption

Caused by: org.h2.jdbc.JdbcSQLException: Unique index or primary key violation: "DB_RES_PAR_FN ON PUBLIC.DB_RESOURCE(PARENT_RESOURCE_ID, FILENAME) VALUES ('100004', 'ZC_AgentPurchaseInvoice_1', 103)"; SQL statement:
INSERT INTO DB_RESOURCE (RESOURCE_ID, PARENT_RESOURCE_ID, FILENAME, IS_FILE, LAST_UPDATED_STAMP) VALUES (?, ?, ?, ?, ?) [23505-192]

client is saving two product content with same prefix "dbresources://mantle/product/ZC_AgentPurchaseInvoice_1". Since they are running in different tranaction, each transaction find no "/mantle/product/ZC_AgentPurchaseInvoice_1" has been created, so both they will create node for "ZC_AgentPurchaseInvoice_1", then first one succeed, the second one fails due to unique index constraint on (parentResourceId, filename).

Is there a way to avoid such duplication creation of node in dbreource and possible collision in concurrent transactions

(Unexpectedly) Loading "config file" from a different directory than the "runtime directory"

I am running Moqui in a Tomcat. I attempted to deploy a new WAR on the same server using connect to a different database (set in MoquiProductionConf.xml). I experienced strange behavior. A new application was started but it loaded config from a different directory (a different application) than it was supposed to load.

Checkout the directories of "runtime directory" and "config file" settings included in the attachment.

image

Is toString() method in EmailECARule.groovy appending extra \n?

I'm trying to trace back the toString() method to see if there is an Override somewhere. Or not?

The outcome of the method is that single line breaks are turned into double line breaks in parsing of contentText.

E.g. Emails are formatted as follows: (EDIT: GITHUB IS ACTUALLY REMOVING THE DOUBLE LINEBREAKS I INSERTED BELOW... SO FOR EACH NEW LINE, ADD AN EXTRA ONE...)

Dear John Doe

FYI

https://www.xxxxxxxxxxx.ie/help-resources/information-videos/how-to-submit....

Regards

John

John Smith

Head of Company

Acme

Address 1

Address 2

T: xxx

E: xxx

W: xxxxxxxx

Screen history list "context" as a parameter key.

Screen history show something like this.

Tools - Dashboard (========== Start stack level 0
========== End stack level 0
========== Start stack level 1
========== End stack level 1
========== Start combined Map
==>[context]:<Instance of ContextStack, not printing to avoid infinite recursion>
========== End combined Map
)

I think this is because web.requestParameters use ContextStack to combine all parameter maps.

Return escaped string via json reponse

The REST api can save unicode characters correctly in database, but return escaped string to client.

So I simply test with ec.web.sendJsonResponse

ec.web.sendJsonResponse([contentText: '测试'])

The return is

{ "contentText": "\u6d4b\u8bd5" }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.