Branches
Hi folks, Following yesterday's release of 1.16.0, just to say that the dev/2.0.0-M1 branch is now merged onto master, and so I've deleted that dev/2.0.0-M1 branch. Also, I've rebased dev/2.0.0-M2 on top of the new master, and pushed (git rebase master --preserve-merges). In master, the pom.xml version is set to 2.0.0-M1-SNAPSHOT In dev/2.0.0-M2 branch, the pom.xml version is set to 2.0.0-M2-SNAPSHOT. Thx Dan
[jira] [Commented] (ISIS-1767) JEE 7+ Support
[ https://issues.apache.org/jira/browse/ISIS-1767?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317896#comment-16317896 ] ASF subversion and git services commented on ISIS-1767: --- Commit fe41a1dc138066c12836f4bc811bf0a4c5c3cb1a in isis's branch refs/heads/dev/2.0.0-M2 from [~danhaywood] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=fe41a1d ] Merge branch 'ISIS-1767-jee-7' into dev/2.0.0-M2 > JEE 7+ Support > -- > > Key: ISIS-1767 > URL: https://issues.apache.org/jira/browse/ISIS-1767 > Project: Isis > Issue Type: Improvement > Components: Core >Reporter: Andi Huber >Assignee: Andi Huber > Fix For: 2.0.0-M2 > > > Collective tasks for Java EE 7+ support. > Designated branch ... > {code}dev/2.0.0/ISIS-1767-jee-7{code} > +Tests+ > * *Server*: JEE 7+ implementation (or similar), launched with JDK8 (Version > 1.8.0_152); for deployment we use the HelloWorld artifact 1.15.1 with minor > modifications > * *fat-war*: deploy all dependencies with single war (hsqldb in memory) > * *skinny-war*: prepare container with shared libraries and shared domain > objects, deploy only a subset of domain classes with single war (hsqldb in > memory) > * *restEasy*: check whether restEasy responds > * managed connection pool (*con.pool*): use mysql db connection pool managed > by the JEE container and provided via JNDI > * domain events (*dom.events*): test whether domain events are emitted and > handled using AxonFramework's SimpleEventBus > * *swagger-ui*: test whether the static index.html from swagger-ui is served > and verify that a request for '//restful/swagger/private' > returns a JSON, that has the 'basePath' set to '//restful' > * *redeploy*: test whether all previous tests succeed if we do a > deploy-undeploy-deploy process > ||Server ||fat-war ||skinny-war >||restEasy ||con.pool ||dom.events > ||swagger-ui||redeploy|| > |Payara (full 4.1.2.173) |{color:green}*OK*{color} > |{color:green}*OK*{color}|{color:green}*OK*{color}|{color:green}*OK*{color}|{color:green}*OK*{color}|{color:green}*OK*{color}|{color:green}*OK*{color}(6)| > |Payara (web 4.1.2.173) |{color:green}*OK*{color} > |{color:green}*OK*{color}|{color:green}*OK*{color}|{color:green}*OK*{color}|{color:green}*OK*{color}|{color:green}*OK*{color}|{color:green}*OK*{color}(6)| > |Glassfish (full 4.1.2) |*OK*(1) |*OK*(1) >|{color:green}*OK*{color}|todo > |{color:green}*OK*{color}|{color:green}*OK*{color}|{color:green}*OK*{color}(6)| > |Glassfish (web 5.0.1 beta)|{color:green}*OK*{color} > |{color:green}*OK*{color}|*OK*(5)|todo > |{color:green}*OK*{color}|{color:green}*OK*{color}|todo| > |Glassfish (full 5.0) |{color:red}*FAILED*(2){color}|todo >|todo|todo|todo > |todo|todo| > |Wildfly (full 11.0.0)|{color:red}*FAILED*(3){color}|todo >|todo|todo|todo > |todo|todo| > |TomEE (plume 7.0.4) |*OK*(4) |todo >|{color:green}*OK*{color}|todo|todo > |todo|todo| > Notes: > (1) > Guava version conflict: GF 4.2.1 has Guava-13, Isis has Guava-19; > WORKAROUND modify your glassfish installation ... > * in glassfish/modules/ replace guava.jar with that which comes packaged with > Payara-4.1.2.173 (Guava-19) > * you need to clear the OSGI cache: delete the folder > glassfish/domains/domainXXX/osgi-cache/felix > (2) > ON-HOLD waiting for GF 5.0.1 release! > class-loading issues with Hibernate Validator, though library is included in > war ... java.lang.ClassNotFoundException: org.joda.time.ReadableInstant; > using patch https://github.com/hibernate/hibernate-validator/pull/857/files > does not help: introduces new class-loading issues; > (3) > class-loading issues, though library is included in war ... > javax.persistence.PersistenceException: WFLYJPA0057: PersistenceProvider > 'org.apache.isis.core.webapp.jee.PersistenceUnitNoopProvider' not found; > (4) > requires CXF to be disabled, see > https://stackoverflow.com/questions/41496204/tomee-7-0-2-how-to-disable-cxf-rs > > throws exceptions on undeploy > (5) > JAX-RS API version clash > requires 4.0.0.Beta1 > see https://issues.apache.org/jira/browse/ISIS-1779 > (6) > successfully tested against DN-5.1.5-SNAPSHOT (dedicated issue > https://issues.apache.org/jira/browse/ISIS-1754) -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ISIS-1744) Update DataNucleus to the latest version (5.1.5 or later)
[ https://issues.apache.org/jira/browse/ISIS-1744?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317898#comment-16317898 ] ASF subversion and git services commented on ISIS-1744: --- Commit 66c4a7de037ade5f9c9881053137b7d59be6cfcd in isis's branch refs/heads/dev/2.0.0-M2 from [~danhaywood] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=66c4a7d ] ISIS-1744: updates to DN 5.1.5 > Update DataNucleus to the latest version (5.1.5 or later) > - > > Key: ISIS-1744 > URL: https://issues.apache.org/jira/browse/ISIS-1744 > Project: Isis > Issue Type: Improvement > Components: Core >Affects Versions: 1.15.1 >Reporter: Sergey Sverdlov >Assignee: Dan Haywood > Fix For: 2.0.0-M2 > > > Please update dependencies to DataNucleus to the latest available versions: > org.datanucleus:datanucleus-api-jdo ...4.1.1 -> 5.1.5 > org.datanucleus:datanucleus-core .. 4.1.7 -> 5.1.4 > org.datanucleus:datanucleus-jdo-query ...4.0.5 -> 5.0.2 > org.datanucleus:datanucleus-jodatime 4.1.0-release -> > 5.1.0-release > org.datanucleus:datanucleus-rdbms 4.1.9 -> 5.1.5 -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ISIS-1756) JEE Support - IsisContext requires proper lifecycling.
[ https://issues.apache.org/jira/browse/ISIS-1756?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317894#comment-16317894 ] ASF subversion and git services commented on ISIS-1756: --- Commit b72a01c31644df7c4e251597617c0c4de3f89d58 in isis's branch refs/heads/dev/2.0.0-M2 from [~hobrom] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=b72a01c ] ISIS-1756 on shutdown purge any state associated with the current web-app classloader > JEE Support - IsisContext requires proper lifecycling. > -- > > Key: ISIS-1756 > URL: https://issues.apache.org/jira/browse/ISIS-1756 > Project: Isis > Issue Type: Improvement >Affects Versions: 1.15.1 >Reporter: Dan Haywood >Assignee: Andi Huber > Fix For: 2.0.0-M2 > > > as per > https://lists.apache.org/thread.html/a815c6d3e50c02111d0cd3df93b70b529c18193f321e613b116119b4@%3Cdev.isis.apache.org%3E > The isis-context needs a proper lifecycling, meaning a deploy/undeploy cycle > should properly invalidate any state. (e.g meta model validation is currently > not cleared after an undeploy, in my case after calling > IsisContext.testReset()) -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ISIS-1767) JEE 7+ Support
[ https://issues.apache.org/jira/browse/ISIS-1767?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317897#comment-16317897 ] ASF subversion and git services commented on ISIS-1767: --- Commit 44429ea34ee79eb322e3ca1304bb84abb4b1370f in isis's branch refs/heads/dev/2.0.0-M2 from [~danhaywood] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=44429ea ] ISIS-1767: fixes dependency convergence issue with com.sun.mail > JEE 7+ Support > -- > > Key: ISIS-1767 > URL: https://issues.apache.org/jira/browse/ISIS-1767 > Project: Isis > Issue Type: Improvement > Components: Core >Reporter: Andi Huber >Assignee: Andi Huber > Fix For: 2.0.0-M2 > > > Collective tasks for Java EE 7+ support. > Designated branch ... > {code}dev/2.0.0/ISIS-1767-jee-7{code} > +Tests+ > * *Server*: JEE 7+ implementation (or similar), launched with JDK8 (Version > 1.8.0_152); for deployment we use the HelloWorld artifact 1.15.1 with minor > modifications > * *fat-war*: deploy all dependencies with single war (hsqldb in memory) > * *skinny-war*: prepare container with shared libraries and shared domain > objects, deploy only a subset of domain classes with single war (hsqldb in > memory) > * *restEasy*: check whether restEasy responds > * managed connection pool (*con.pool*): use mysql db connection pool managed > by the JEE container and provided via JNDI > * domain events (*dom.events*): test whether domain events are emitted and > handled using AxonFramework's SimpleEventBus > * *swagger-ui*: test whether the static index.html from swagger-ui is served > and verify that a request for '//restful/swagger/private' > returns a JSON, that has the 'basePath' set to '//restful' > * *redeploy*: test whether all previous tests succeed if we do a > deploy-undeploy-deploy process > ||Server ||fat-war ||skinny-war >||restEasy ||con.pool ||dom.events > ||swagger-ui||redeploy|| > |Payara (full 4.1.2.173) |{color:green}*OK*{color} > |{color:green}*OK*{color}|{color:green}*OK*{color}|{color:green}*OK*{color}|{color:green}*OK*{color}|{color:green}*OK*{color}|{color:green}*OK*{color}(6)| > |Payara (web 4.1.2.173) |{color:green}*OK*{color} > |{color:green}*OK*{color}|{color:green}*OK*{color}|{color:green}*OK*{color}|{color:green}*OK*{color}|{color:green}*OK*{color}|{color:green}*OK*{color}(6)| > |Glassfish (full 4.1.2) |*OK*(1) |*OK*(1) >|{color:green}*OK*{color}|todo > |{color:green}*OK*{color}|{color:green}*OK*{color}|{color:green}*OK*{color}(6)| > |Glassfish (web 5.0.1 beta)|{color:green}*OK*{color} > |{color:green}*OK*{color}|*OK*(5)|todo > |{color:green}*OK*{color}|{color:green}*OK*{color}|todo| > |Glassfish (full 5.0) |{color:red}*FAILED*(2){color}|todo >|todo|todo|todo > |todo|todo| > |Wildfly (full 11.0.0)|{color:red}*FAILED*(3){color}|todo >|todo|todo|todo > |todo|todo| > |TomEE (plume 7.0.4) |*OK*(4) |todo >|{color:green}*OK*{color}|todo|todo > |todo|todo| > Notes: > (1) > Guava version conflict: GF 4.2.1 has Guava-13, Isis has Guava-19; > WORKAROUND modify your glassfish installation ... > * in glassfish/modules/ replace guava.jar with that which comes packaged with > Payara-4.1.2.173 (Guava-19) > * you need to clear the OSGI cache: delete the folder > glassfish/domains/domainXXX/osgi-cache/felix > (2) > ON-HOLD waiting for GF 5.0.1 release! > class-loading issues with Hibernate Validator, though library is included in > war ... java.lang.ClassNotFoundException: org.joda.time.ReadableInstant; > using patch https://github.com/hibernate/hibernate-validator/pull/857/files > does not help: introduces new class-loading issues; > (3) > class-loading issues, though library is included in war ... > javax.persistence.PersistenceException: WFLYJPA0057: PersistenceProvider > 'org.apache.isis.core.webapp.jee.PersistenceUnitNoopProvider' not found; > (4) > requires CXF to be disabled, see > https://stackoverflow.com/questions/41496204/tomee-7-0-2-how-to-disable-cxf-rs > > throws exceptions on undeploy > (5) > JAX-RS API version clash > requires 4.0.0.Beta1 > see https://issues.apache.org/jira/browse/ISIS-1779 > (6) > successfully tested against DN-5.1.5-SNAPSHOT (dedicated issue > https://issues.apache.org/jira/browse/ISIS-1754) -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ISIS-1754) JEE Support - Investigate Class Loading on Payara 4.1.2
[ https://issues.apache.org/jira/browse/ISIS-1754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317892#comment-16317892 ] ASF subversion and git services commented on ISIS-1754: --- Commit 2e28d44af689f33dca0694fcb563fb41af1ad591 in isis's branch refs/heads/dev/2.0.0-M2 from [~hobrom] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=2e28d44 ] ISIS-1754 proper DN class-loading > JEE Support - Investigate Class Loading on Payara 4.1.2 > --- > > Key: ISIS-1754 > URL: https://issues.apache.org/jira/browse/ISIS-1754 > Project: Isis > Issue Type: Improvement >Reporter: Dan Haywood >Assignee: Andi Huber > Fix For: 2.0.0-M2 > > > Investigating whether there are class-loading issues specifically on Payara > (full 4.1.2.173). > This requires a proper test case: > * skinny-war scenario with shared libraries > * test deployment > * also test a deploy/undeploy/deploy cycle > This issue will be closed, once this test-case is developed, automated and > tests are successful. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ISIS-1811) Release tasks for 2.0.0-M2
[ https://issues.apache.org/jira/browse/ISIS-1811?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317901#comment-16317901 ] ASF subversion and git services commented on ISIS-1811: --- Commit 3a07319074edecd36b44bed204b7a12a238aa6ef in isis's branch refs/heads/dev/2.0.0-M2 from [~danhaywood] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=3a07319 ] ISIS-1811: updates versions to 2.0.0-M2-SNAPSHOT > Release tasks for 2.0.0-M2 > -- > > Key: ISIS-1811 > URL: https://issues.apache.org/jira/browse/ISIS-1811 > Project: Isis > Issue Type: Task >Reporter: Dan Haywood >Assignee: Dan Haywood > Fix For: 2.0.0-M2 > > -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ISIS-1755) JEE Support - dummy bean as workaround for CDI
[ https://issues.apache.org/jira/browse/ISIS-1755?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317893#comment-16317893 ] ASF subversion and git services commented on ISIS-1755: --- Commit 14f99d6d5fe121ca4c343b9011dbe2ddde237513 in isis's branch refs/heads/dev/2.0.0-M2 from [~hobrom] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=14f99d6 ] ISIS-1755 veto ExceptionRecognizer on CDI scan > JEE Support - dummy bean as workaround for CDI > -- > > Key: ISIS-1755 > URL: https://issues.apache.org/jira/browse/ISIS-1755 > Project: Isis > Issue Type: Improvement >Affects Versions: 1.15.1 >Reporter: Dan Haywood >Assignee: Andi Huber > Fix For: 2.0.0-M2 > > > as per > https://lists.apache.org/thread.html/a815c6d3e50c02111d0cd3df93b70b529c18193f321e613b116119b4@%3Cdev.isis.apache.org%3E > During JEE-Application bootstrapping the JEE container identifies a > list of Isis classes it feels responsible for, but does not know how to > instantiate; so errors are thrown. For me it was sufficient to provide a > single stateless JEE bean that states, that it produces all these > classes. As long as you deploy your Isis application including this > dummy-bean, CDI does not complain. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ISIS-1756) JEE Support - IsisContext requires proper lifecycling.
[ https://issues.apache.org/jira/browse/ISIS-1756?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317895#comment-16317895 ] ASF subversion and git services commented on ISIS-1756: --- Commit 4b89ae76f1e52fb7cec066bb4bc8dcd4b9b4e732 in isis's branch refs/heads/dev/2.0.0-M2 from [~hobrom] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=4b89ae7 ] ISIS-1756 remove reflective access to DN's EnhancementHelper since we've got a dedicated method instead > JEE Support - IsisContext requires proper lifecycling. > -- > > Key: ISIS-1756 > URL: https://issues.apache.org/jira/browse/ISIS-1756 > Project: Isis > Issue Type: Improvement >Affects Versions: 1.15.1 >Reporter: Dan Haywood >Assignee: Andi Huber > Fix For: 2.0.0-M2 > > > as per > https://lists.apache.org/thread.html/a815c6d3e50c02111d0cd3df93b70b529c18193f321e613b116119b4@%3Cdev.isis.apache.org%3E > The isis-context needs a proper lifecycling, meaning a deploy/undeploy cycle > should properly invalidate any state. (e.g meta model validation is currently > not cleared after an undeploy, in my case after calling > IsisContext.testReset()) -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ISIS-1744) Update DataNucleus to the latest version (5.1.5 or later)
[ https://issues.apache.org/jira/browse/ISIS-1744?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317900#comment-16317900 ] ASF subversion and git services commented on ISIS-1744: --- Commit 6551c428b131248aeab10a1b766b7d3421bbe86f in isis's branch refs/heads/dev/2.0.0-M2 from [~danhaywood] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=6551c42 ] Merge branch 'ISIS-1744-update-to-dn-515' into dev/2.0.0-M2 > Update DataNucleus to the latest version (5.1.5 or later) > - > > Key: ISIS-1744 > URL: https://issues.apache.org/jira/browse/ISIS-1744 > Project: Isis > Issue Type: Improvement > Components: Core >Affects Versions: 1.15.1 >Reporter: Sergey Sverdlov >Assignee: Dan Haywood > Fix For: 2.0.0-M2 > > > Please update dependencies to DataNucleus to the latest available versions: > org.datanucleus:datanucleus-api-jdo ...4.1.1 -> 5.1.5 > org.datanucleus:datanucleus-core .. 4.1.7 -> 5.1.4 > org.datanucleus:datanucleus-jdo-query ...4.0.5 -> 5.0.2 > org.datanucleus:datanucleus-jodatime 4.1.0-release -> > 5.1.0-release > org.datanucleus:datanucleus-rdbms 4.1.9 -> 5.1.5 -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ISIS-1744) Update DataNucleus to the latest version (5.1.5 or later)
[ https://issues.apache.org/jira/browse/ISIS-1744?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317899#comment-16317899 ] ASF subversion and git services commented on ISIS-1744: --- Commit df035130f4b1bc10fe5101dd775ffa5939f67f55 in isis's branch refs/heads/dev/2.0.0-M2 from [~danhaywood] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=df03513 ] ISIS-1744: removes work-around code for prior to DN 5.1.5 > Update DataNucleus to the latest version (5.1.5 or later) > - > > Key: ISIS-1744 > URL: https://issues.apache.org/jira/browse/ISIS-1744 > Project: Isis > Issue Type: Improvement > Components: Core >Affects Versions: 1.15.1 >Reporter: Sergey Sverdlov >Assignee: Dan Haywood > Fix For: 2.0.0-M2 > > > Please update dependencies to DataNucleus to the latest available versions: > org.datanucleus:datanucleus-api-jdo ...4.1.1 -> 5.1.5 > org.datanucleus:datanucleus-core .. 4.1.7 -> 5.1.4 > org.datanucleus:datanucleus-jdo-query ...4.0.5 -> 5.0.2 > org.datanucleus:datanucleus-jodatime 4.1.0-release -> > 5.1.0-release > org.datanucleus:datanucleus-rdbms 4.1.9 -> 5.1.5 -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ISIS-1632) Support meta annotations for @Property/@Collection/@Action + @XxxLayout
[ https://issues.apache.org/jira/browse/ISIS-1632?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317869#comment-16317869 ] ASF subversion and git services commented on ISIS-1632: --- Commit d5bacdb3944a1e42dffc4dbed21a9ccfee97da87 in isis's branch refs/heads/master from [~danhaywood] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=d5bacdb ] ISIS-1632: fixes test regression > Support meta annotations for @Property/@Collection/@Action + @XxxLayout > --- > > Key: ISIS-1632 > URL: https://issues.apache.org/jira/browse/ISIS-1632 > Project: Isis > Issue Type: New Feature >Reporter: Dan Haywood >Assignee: Dan Haywood > Fix For: 2.0.0-M1 > > -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ISIS-1636) Support for Java 8 Time API
[ https://issues.apache.org/jira/browse/ISIS-1636?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317873#comment-16317873 ] ASF subversion and git services commented on ISIS-1636: --- Commit 18562c46c8ab91cac592db86fe7298dde59d082d in isis's branch refs/heads/master from [~hobrom] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=18562c4 ] ISIS-1636 UI enhancement - java 8 Time > Support for Java 8 Time API > --- > > Key: ISIS-1636 > URL: https://issues.apache.org/jira/browse/ISIS-1636 > Project: Isis > Issue Type: Improvement > Components: Core: Viewer: Wicket >Reporter: Andi Huber >Assignee: Andi Huber >Priority: Minor > Labels: Ready-for-Merge > Fix For: 2.0.0-M1 > > > ISIS should support domain object properties of type > * java.time.LocalDate > * java.time.LocalDateTime > * java.time.OffsetDateTime > Sooner or later the new Java 8 time API will conquer the developers minds and > those using ISIS will demand ISIS built-in support for these basic types. > Note: JDO support for the types listed above is already there (via plugin). > So the persistence part of the problem is solved, only the UI part is missing. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ISIS-1636) Support for Java 8 Time API
[ https://issues.apache.org/jira/browse/ISIS-1636?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317874#comment-16317874 ] ASF subversion and git services commented on ISIS-1636: --- Commit 6a9e1cdf9c0f059cb41768f525a98d463e2eb0da in isis's branch refs/heads/master from [~danhaywood] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=6a9e1cd ] Merge branch 'dev/2.0.0/ISIS-1636-j8-time' into dev/2.0.0-M1 > Support for Java 8 Time API > --- > > Key: ISIS-1636 > URL: https://issues.apache.org/jira/browse/ISIS-1636 > Project: Isis > Issue Type: Improvement > Components: Core: Viewer: Wicket >Reporter: Andi Huber >Assignee: Andi Huber >Priority: Minor > Labels: Ready-for-Merge > Fix For: 2.0.0-M1 > > > ISIS should support domain object properties of type > * java.time.LocalDate > * java.time.LocalDateTime > * java.time.OffsetDateTime > Sooner or later the new Java 8 time API will conquer the developers minds and > those using ISIS will demand ISIS built-in support for these basic types. > Note: JDO support for the types listed above is already there (via plugin). > So the persistence part of the problem is solved, only the UI part is missing. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ISIS-1809) Convenience adapter implementations of UrlEncodingService
[ https://issues.apache.org/jira/browse/ISIS-1809?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317875#comment-16317875 ] ASF subversion and git services commented on ISIS-1809: --- Commit d727de10bfd011e9c1d1a4f835dc6fe0dd381b4c in isis's branch refs/heads/master from [~danhaywood] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=d727de1 ] ISIS-1809: adds new implementations of UrlEncodingService > Convenience adapter implementations of UrlEncodingService > - > > Key: ISIS-1809 > URL: https://issues.apache.org/jira/browse/ISIS-1809 > Project: Isis > Issue Type: New Feature >Affects Versions: 1.15.1 >Reporter: Dan Haywood >Assignee: Dan Haywood > Fix For: 2.0.0-M1 > > -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ISIS-1762) Java 8+ Miscellaneous Utilities
[ https://issues.apache.org/jira/browse/ISIS-1762?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317871#comment-16317871 ] ASF subversion and git services commented on ISIS-1762: --- Commit 3b0ae5ac97d1d12e322d12fb0e84e035ef529137 in isis's branch refs/heads/master from [~hobrom] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=3b0ae5a ] ISIS-1762 added Reflect and NullSafe, reviewing o.a.i.c.commons > Java 8+ Miscellaneous Utilities > --- > > Key: ISIS-1762 > URL: https://issues.apache.org/jira/browse/ISIS-1762 > Project: Isis > Issue Type: Improvement > Components: Core >Reporter: Andi Huber >Assignee: Andi Huber > Fix For: 2.0.0-M1 > > > Introducing a collection of utility classes not meant to be public API. The > goal is to simplify recurring code idioms within Isis' code base. > Such idioms are null-checks, lazy values and exception handling. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ISIS-1762) Java 8+ Miscellaneous Utilities
[ https://issues.apache.org/jira/browse/ISIS-1762?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317872#comment-16317872 ] ASF subversion and git services commented on ISIS-1762: --- Commit 3199a9583007d307e9954daae87f33e98a1f5156 in isis's branch refs/heads/master from [~danhaywood] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=3199a95 ] Merge branch 'dev/2.0.0/ISIS-1762-j8-utils' into dev/2.0.0-M1 > Java 8+ Miscellaneous Utilities > --- > > Key: ISIS-1762 > URL: https://issues.apache.org/jira/browse/ISIS-1762 > Project: Isis > Issue Type: Improvement > Components: Core >Reporter: Andi Huber >Assignee: Andi Huber > Fix For: 2.0.0-M1 > > > Introducing a collection of utility classes not meant to be public API. The > goal is to simplify recurring code idioms within Isis' code base. > Such idioms are null-checks, lazy values and exception handling. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ISIS-1762) Java 8+ Miscellaneous Utilities
[ https://issues.apache.org/jira/browse/ISIS-1762?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317870#comment-16317870 ] ASF subversion and git services commented on ISIS-1762: --- Commit 94f61de0617163a8296a7689f49674a98b317357 in isis's branch refs/heads/master from [~hobrom] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=94f61de ] ISIS-1762 fixing won't compile on eclipse > Java 8+ Miscellaneous Utilities > --- > > Key: ISIS-1762 > URL: https://issues.apache.org/jira/browse/ISIS-1762 > Project: Isis > Issue Type: Improvement > Components: Core >Reporter: Andi Huber >Assignee: Andi Huber > Fix For: 2.0.0-M1 > > > Introducing a collection of utility classes not meant to be public API. The > goal is to simplify recurring code idioms within Isis' code base. > Such idioms are null-checks, lazy values and exception handling. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ISIS-1465) Release activities for 1.16.0
[ https://issues.apache.org/jira/browse/ISIS-1465?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317816#comment-16317816 ] ASF subversion and git services commented on ISIS-1465: --- Commit 5ffc8fcbc009885c02b3d6d6421a2e0e0b695d54 in isis's branch refs/heads/master from [~danhaywood] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=5ffc8fc ] ISIS-1465: further tweak to docs > Release activities for 1.16.0 > - > > Key: ISIS-1465 > URL: https://issues.apache.org/jira/browse/ISIS-1465 > Project: Isis > Issue Type: Task > Components: Core >Affects Versions: 1.15.0 >Reporter: Dan Haywood >Assignee: Dan Haywood >Priority: Minor > Fix For: 1.16.0 > > -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ISIS-1465) Release activities for 1.16.0
[ https://issues.apache.org/jira/browse/ISIS-1465?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317817#comment-16317817 ] ASF subversion and git services commented on ISIS-1465: --- Commit 66e719e5f12fc47a943c4d30c1217f23c9df8f30 in isis's branch refs/heads/master from [~danhaywood] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=66e719e ] ISIS-1465: improves the publish script > Release activities for 1.16.0 > - > > Key: ISIS-1465 > URL: https://issues.apache.org/jira/browse/ISIS-1465 > Project: Isis > Issue Type: Task > Components: Core >Affects Versions: 1.15.0 >Reporter: Dan Haywood >Assignee: Dan Haywood >Priority: Minor > Fix For: 1.16.0 > > -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ISIS-1465) Release activities for 1.16.0
[ https://issues.apache.org/jira/browse/ISIS-1465?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317814#comment-16317814 ] ASF subversion and git services commented on ISIS-1465: --- Commit 22589dc0bd1ad929ee5a261af9ca2e6224557cdc in isis's branch refs/heads/master from [~danhaywood] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=22589dc ] ISIS-1465: updates to website/docs > Release activities for 1.16.0 > - > > Key: ISIS-1465 > URL: https://issues.apache.org/jira/browse/ISIS-1465 > Project: Isis > Issue Type: Task > Components: Core >Affects Versions: 1.15.0 >Reporter: Dan Haywood >Assignee: Dan Haywood >Priority: Minor > Fix For: 1.16.0 > > -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ISIS-1465) Release activities for 1.16.0
[ https://issues.apache.org/jira/browse/ISIS-1465?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317811#comment-16317811 ] ASF subversion and git services commented on ISIS-1465: --- Commit 2a0b21fe5f1981c938b90879d2008b402d7b13c6 in isis's branch refs/heads/master from [~danhaywood] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=2a0b21f ] ISIS-1465: recreating helloworld archetype > Release activities for 1.16.0 > - > > Key: ISIS-1465 > URL: https://issues.apache.org/jira/browse/ISIS-1465 > Project: Isis > Issue Type: Task > Components: Core >Affects Versions: 1.15.0 >Reporter: Dan Haywood >Assignee: Dan Haywood >Priority: Minor > Fix For: 1.16.0 > > -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ISIS-1465) Release activities for 1.16.0
[ https://issues.apache.org/jira/browse/ISIS-1465?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317812#comment-16317812 ] ASF subversion and git services commented on ISIS-1465: --- Commit 2e2ac1f62d2096a03f1cd4d29c84362f9bcdc4ad in isis's branch refs/heads/master from [~danhaywood] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=2e2ac1f ] ISIS-1465: fixes property in hellworld app. This change is already copied into the helloworld arch; forgot to commit earlier > Release activities for 1.16.0 > - > > Key: ISIS-1465 > URL: https://issues.apache.org/jira/browse/ISIS-1465 > Project: Isis > Issue Type: Task > Components: Core >Affects Versions: 1.15.0 >Reporter: Dan Haywood >Assignee: Dan Haywood >Priority: Minor > Fix For: 1.16.0 > > -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ISIS-1465) Release activities for 1.16.0
[ https://issues.apache.org/jira/browse/ISIS-1465?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16317815#comment-16317815 ] ASF subversion and git services commented on ISIS-1465: --- Commit 64e46097f91627032be234e7f01af6b354ec5732 in isis's branch refs/heads/master from [~danhaywood] [ https://gitbox.apache.org/repos/asf?p=isis.git;h=64e4609 ] ISIS-1465: further updates to website publish process > Release activities for 1.16.0 > - > > Key: ISIS-1465 > URL: https://issues.apache.org/jira/browse/ISIS-1465 > Project: Isis > Issue Type: Task > Components: Core >Affects Versions: 1.15.0 >Reporter: Dan Haywood >Assignee: Dan Haywood >Priority: Minor > Fix For: 1.16.0 > > -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[ANN] Apache Isis version 1.16.0 Released
The Apache Isis team is pleased to announce the release of Apache Isis v1.16.0. New features in this release include: * modules and simplified bootstrapping (of the application, integration tests and BDD specs) * improvements to fixture scripts * dynamic menu layouts (menubars.layout.xml) * support for explicitly-defined actions rather than implicit (ie use @Action, no need for @Programmatic) Full release notes are available on the Apache Isis website at [1]. Please also read the migration notes [2]. You can access this release directly from the Maven central repo [3]. Alternatively, download the release and build it from source [4]. Enjoy! --The Apache Isis team [1] http://isis.apache.org/release-notes/release-notes.html#_release-notes_1.16.0 [2] http://isis.apache.org/migration-notes/migration-notes.html#_migration-notes_1.15.0-to-1.16.0 [3] http://search.maven.org [4] http://isis.apache.org/downloads.html
[jira] [Resolved] (ISIS-1809) Convenience adapter implementations of UrlEncodingService
[ https://issues.apache.org/jira/browse/ISIS-1809?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Dan Haywood resolved ISIS-1809. --- Resolution: Fixed > Convenience adapter implementations of UrlEncodingService > - > > Key: ISIS-1809 > URL: https://issues.apache.org/jira/browse/ISIS-1809 > Project: Isis > Issue Type: New Feature >Affects Versions: 1.15.1 >Reporter: Dan Haywood >Assignee: Dan Haywood > Fix For: 2.0.0-M1 > > -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Updated] (ISIS-1569) Automated testing tool to replay commands against a copy of prod
[ https://issues.apache.org/jira/browse/ISIS-1569?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Dan Haywood updated ISIS-1569: -- Fix Version/s: (was: 2.0.0-M2) 2.0.0-M1 > Automated testing tool to replay commands against a copy of prod > > > Key: ISIS-1569 > URL: https://issues.apache.org/jira/browse/ISIS-1569 > Project: Isis > Issue Type: New Feature > Components: Core >Affects Versions: 1.13.2.1 >Reporter: Dan Haywood > Fix For: 2.0.0-M1 > > > eg obtain copy of prod from a month ago > then for all commands since then, replay (simulating the current user and > time for each) > finally, compare resultant database with current prod, and list out > differences in data. > could also use for performance testing, perhaps. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Created] (ISIS-1811) Release tasks for 2.0.0-M2
Dan Haywood created ISIS-1811: - Summary: Release tasks for 2.0.0-M2 Key: ISIS-1811 URL: https://issues.apache.org/jira/browse/ISIS-1811 Project: Isis Issue Type: Task Reporter: Dan Haywood Assignee: Dan Haywood Fix For: 2.0.0-M2 -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Created] (ISIS-1810) Release tasks for 2.0.0-M1
Dan Haywood created ISIS-1810: - Summary: Release tasks for 2.0.0-M1 Key: ISIS-1810 URL: https://issues.apache.org/jira/browse/ISIS-1810 Project: Isis Issue Type: Task Reporter: Dan Haywood Assignee: Dan Haywood Fix For: 2.0.0-M1 -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Closed] (ISIS-1465) Release activities for 1.16.0
[ https://issues.apache.org/jira/browse/ISIS-1465?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Dan Haywood closed ISIS-1465. - Resolution: Fixed > Release activities for 1.16.0 > - > > Key: ISIS-1465 > URL: https://issues.apache.org/jira/browse/ISIS-1465 > Project: Isis > Issue Type: Task > Components: Core >Affects Versions: 1.15.0 >Reporter: Dan Haywood >Assignee: Dan Haywood >Priority: Minor > Fix For: 1.16.0 > > -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[RESULT] [VOTE] Apache Isis Core release 1.16.0
The vote has completed with the following result : +4 (binding): Kevin Meyer, Dan Haywood, Oscar Bou, Andi Huber The vote is SUCCESSFUL. I'll now go ahead and complete the post-release activities.
Re: [VOTE] Apache Isis Core release 1.16.0 RC1
Hi folks, more than 72 hours have passed and we have enough votes, so I'm closing this vote now. I'll announce result on a separate thread. Thx Dan On Mon, 8 Jan 2018 at 07:16 Andi Huberwrote: > +1 > > On 2018-01-04 20:30, Dan Haywood wrote: > > Hi folks> > > > > and a happy new year!> > > > > I've cut a release for Apache Isis Core and the two archetypes:> > > > > * Core 1.16.0> > > * HelloWorld Archetype 1.16.0> > > * SimpleApp Archetype 1.16.0> > > > > The source code artifacts have been uploaded to staging repositories on> > > repository.apache.org:> > > > > *> > > > > http://repository.apache.org/content/repositories/orgapacheisis-1062/org/apache/isis/core/isis/1.16.0/isis-1.16.0-source-release.zip > > > > > *> > > > > http://repository.apache.org/content/repositories/orgapacheisis-1063/org/apache/isis/archetype/helloworld-archetype/1.16.0/helloworld-archetype-1.16.0-source-release.zip > > > > > *> > > > > http://repository.apache.org/content/repositories/orgapacheisis-1063/org/apache/isis/archetype/simpleapp-archetype/1.16.0/simpleapp-archetype-1.16.0-source-release.zip > > > > > > > For each zip there is a corresponding signature file (append .asc to the> > > zip's url).> > > > > In the source code repo the code has been tagged as isis-1.16.0-RC1,> > > helloworld-archetype-1.16.0-RC1 and simpleapp-archetype-1.16.0-RC1; see> > > https://github.com/apache/isis/tags> > > > > For instructions on how to verify the release (build from binaries > and/or> > > use in Maven directly), see> > > > https://isis.apache.org/guides/cgcom/cgcom.html#_cgcom_verifying-releases> > > > > Please verify the release and cast your vote. The vote will be open > for a> > > minimum of 72 hours.> > > > > [ ] +1> > > [ ] 0> > > [ ] -1> > > >
[jira] [Commented] (ISIS-1807) Wrap Domain Entities by default
[ https://issues.apache.org/jira/browse/ISIS-1807?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16316273#comment-16316273 ] Oscar Bou commented on ISIS-1807: - Regarding wrapping implementation: You're proposing that a "hidden" action, starting on version 2, is only a hint for the UI. A Hidden action (or property) can be invoked (or its setter invoked) without throwing an exception. Being only a UI hint, I agree it would be something belonging to the @ActionLayout annotation. Reasoning similarly, "disabled" should belong to the @Action annotation (as it's intrinsic to the Action, not to its representation - on the UI, the RESTful API, ... -). Also, simply to explicit it, they would not be mutually exclusive: * A Disabled Action can be showed or hidden, and similarly a Hidden action can be enabled (supporting invocations) or disabled (not being able to invoke it). * And a Disabled Property can be hidden (not "showed" on the representation - UI, REST API whatever it means on it, ... -) or visible. And a Hidden Property can be changed through its setter if enabled, or not - if disabled -. Not sure if there would be a better name for the service declaring its intent (assuring the trust boundary ?) ... > Wrap Domain Entities by default > --- > > Key: ISIS-1807 > URL: https://issues.apache.org/jira/browse/ISIS-1807 > Project: Isis > Issue Type: Improvement > Components: Core >Affects Versions: 1.15.1 >Reporter: Oscar Bou > Fix For: 2.0.0 > > > This way, all hide/disable/validate constraints, and other > constraints/invariants forced through actions, are always ensured by default. > This will require to wrap by default: > * New Domain Entity instances / objects (ie, changes on FactoryService). > * Domain Entities returned by queries (ie, changes on RepositoryService). > Users might disable this new default behaviour through configuration, as some > projects can prioritize performance (avoiding wrapping invocations) vs Domain > constraints/invariants enforcement. > > Dan's notes: > I'd like to refine the concept of wrapping while implementing this ticket. > The idea of wrapping was originally to allow the UI to be simulated within > integration tests. The intent of this ticket is to formalize the idea of the > same set of validations being done automatically between programmatic > interactions from one service/entity to another service/entity. > So, the more general concept (common to both UI/domain interactions and > domain-to-domain programmatic interactions) is one of _trust boundaries_. If > there is no trust from the calling client to the supplying service/entity, > then that interaction should be wrapped. > However, the wrapping model as it currently stands is a little bit too > UI/domain oriented, in that it has both hidden AND disabled as well as > validate phases. From the perspective of a programmatic domain-to-domain > interaction there's no meaningful distinction between the hidden and disabled > constraints: they both mean: "that object isn't in a state to be called". In > other words its a pre constraint that is not satisfied. > The other aspect here is that I can imagine that there are actions that we > would like to allow to be made programmatically (ie through a wrapper) but > which shouldn't be part of the UI. In other words these actions form part of > the programmatic API of a module, just not part of its UI. > Putting all this together, I propose that we slightly change the meaning of > wrapping (though we'll keep the current implementation too for backwards > compatibility), namely that by default wrapped object will check the disable > and validate phases only, ie it will _not_ check the hidden phase. This > allows such actions to be indicated as hidden (probably using @ActionLayout > or .layout.xml or security) but still able to be called programmatically. > The disable phase = pre check. > We could define the following terminology: > - "default" wrapping : as described above, checks only disable and validate, > not hidden > - "strict" wrapping - for backward compatibility, also checks hidden first > We could define a configuration property: > isis.runtime.wrapping=default | strict | none > with "default" wrapping being the default if not specified. > In terms of the programming API, the WrapperFactory#wrap(...) will obviously > be less important than it was, because by default objects will be wrapped. > For backward compatibilty, I think this should continue to create strict > wrappers > The wrap(...) method is also overloaded, with wrap(ExecutionMode). We can > extend this enum: > - EXECUTE - (existing) returns a strict wrapper > - SKIP_RULES - (existing) skips applying the hidden/disable/validate rules > - NO_EXECUTE - (existing) applies
[jira] [Comment Edited] (ISIS-1807) Wrap Domain Entities by default
[ https://issues.apache.org/jira/browse/ISIS-1807?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16316256#comment-16316256 ] Oscar Bou edited comment on ISIS-1807 at 1/8/18 12:56 PM: -- Hi, Dan. Yes, all our codebase is plenty of "wrapped" calls. It's mandatory according to our internal standards to always invoke inside a "wrap" call any setter and action invocation. Fully agree that what we are trying to guarantee are those trust boundaries, but assuming they're directly related (and defined, scoped) to a given Domain Entity and associated sub-entities (i.e, Aggregated Root in DDD terms). So every invocation from one Service or Domain Entity to actions on another Domain Entity or Services (or setters from a Domain Entity) are always wrapped to ensure invariants protection through the domain logic embedded: * on the action implementation * the "modifyXXX" method from the default programming model * or the domain event handlers. basically ... Regading, View Models, it's a related case that it's worth considering. Wrapping invocations could be a way to ensure its immutability. For example, invoking a setter would throw by default an Exception if not invoked inside a "WrapperFactory.wrapSkipRules(...)" call. was (Author: oscarbou): Hi, Dan. Yes, all our codebase is plenty of "wrapped" calls. It's mandatory according to our internal standards to always invoke inside a "wrap" call any setter and action. Fully agree is that my intent is to guarantee those trust boundaries, but assuming they're directly related to a given Domain Entity and associated sub-entities (i.e, Aggregated Root in DDD terms). So every invocation from one Service or Domain Entity to actions on another Domain Entity or Services (or setters from a Domain Entity) are always wrapped to ensure invariants protection through the domain logic embedded: * on the action implementation * the "modifyXXX" method from the default programming model * or the domain event handlers basically. Regading, View Models, it's a related case that it's worth considering. Wrapping invocations could be a way to ensure its immutability. For example, invoking a setter would throw by default an Exception if not invoked inside a "WrapperFactory.wrapSkipRules(...)" call. > Wrap Domain Entities by default > --- > > Key: ISIS-1807 > URL: https://issues.apache.org/jira/browse/ISIS-1807 > Project: Isis > Issue Type: Improvement > Components: Core >Affects Versions: 1.15.1 >Reporter: Oscar Bou > Fix For: 2.0.0 > > > This way, all hide/disable/validate constraints, and other > constraints/invariants forced through actions, are always ensured by default. > This will require to wrap by default: > * New Domain Entity instances / objects (ie, changes on FactoryService). > * Domain Entities returned by queries (ie, changes on RepositoryService). > Users might disable this new default behaviour through configuration, as some > projects can prioritize performance (avoiding wrapping invocations) vs Domain > constraints/invariants enforcement. > > Dan's notes: > I'd like to refine the concept of wrapping while implementing this ticket. > The idea of wrapping was originally to allow the UI to be simulated within > integration tests. The intent of this ticket is to formalize the idea of the > same set of validations being done automatically between programmatic > interactions from one service/entity to another service/entity. > So, the more general concept (common to both UI/domain interactions and > domain-to-domain programmatic interactions) is one of _trust boundaries_. If > there is no trust from the calling client to the supplying service/entity, > then that interaction should be wrapped. > However, the wrapping model as it currently stands is a little bit too > UI/domain oriented, in that it has both hidden AND disabled as well as > validate phases. From the perspective of a programmatic domain-to-domain > interaction there's no meaningful distinction between the hidden and disabled > constraints: they both mean: "that object isn't in a state to be called". In > other words its a pre constraint that is not satisfied. > The other aspect here is that I can imagine that there are actions that we > would like to allow to be made programmatically (ie through a wrapper) but > which shouldn't be part of the UI. In other words these actions form part of > the programmatic API of a module, just not part of its UI. > Putting all this together, I propose that we slightly change the meaning of > wrapping (though we'll keep the current implementation too for backwards > compatibility), namely that by default wrapped object will check the disable > and validate phases only, ie it will _not_ check the hidden phase. This > allows
[jira] [Commented] (ISIS-1807) Wrap Domain Entities by default
[ https://issues.apache.org/jira/browse/ISIS-1807?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16316256#comment-16316256 ] Oscar Bou commented on ISIS-1807: - Hi, Dan. Yes, all our codebase is plenty of "wrapped" calls. It's mandatory according to our internal standards to always invoke inside a "wrap" call any setter and action. Fully agree is that my intent is to guarantee those trust boundaries, but assuming they're directly related to a given Domain Entity and associated sub-entities (i.e, Aggregated Root in DDD terms). So every invocation from one Service or Domain Entity to actions on another Domain Entity or Services (or setters from a Domain Entity) are always wrapped to ensure invariants protection through the domain logic embedded: * on the action implementation * the "modifyXXX" method from the default programming model * or the domain event handlers basically. Regading, View Models, it's a related case that it's worth considering. Wrapping invocations could be a way to ensure its immutability. For example, invoking a setter would throw by default an Exception if not invoked inside a "WrapperFactory.wrapSkipRules(...)" call. > Wrap Domain Entities by default > --- > > Key: ISIS-1807 > URL: https://issues.apache.org/jira/browse/ISIS-1807 > Project: Isis > Issue Type: Improvement > Components: Core >Affects Versions: 1.15.1 >Reporter: Oscar Bou > Fix For: 2.0.0 > > > This way, all hide/disable/validate constraints, and other > constraints/invariants forced through actions, are always ensured by default. > This will require to wrap by default: > * New Domain Entity instances / objects (ie, changes on FactoryService). > * Domain Entities returned by queries (ie, changes on RepositoryService). > Users might disable this new default behaviour through configuration, as some > projects can prioritize performance (avoiding wrapping invocations) vs Domain > constraints/invariants enforcement. > > Dan's notes: > I'd like to refine the concept of wrapping while implementing this ticket. > The idea of wrapping was originally to allow the UI to be simulated within > integration tests. The intent of this ticket is to formalize the idea of the > same set of validations being done automatically between programmatic > interactions from one service/entity to another service/entity. > So, the more general concept (common to both UI/domain interactions and > domain-to-domain programmatic interactions) is one of _trust boundaries_. If > there is no trust from the calling client to the supplying service/entity, > then that interaction should be wrapped. > However, the wrapping model as it currently stands is a little bit too > UI/domain oriented, in that it has both hidden AND disabled as well as > validate phases. From the perspective of a programmatic domain-to-domain > interaction there's no meaningful distinction between the hidden and disabled > constraints: they both mean: "that object isn't in a state to be called". In > other words its a pre constraint that is not satisfied. > The other aspect here is that I can imagine that there are actions that we > would like to allow to be made programmatically (ie through a wrapper) but > which shouldn't be part of the UI. In other words these actions form part of > the programmatic API of a module, just not part of its UI. > Putting all this together, I propose that we slightly change the meaning of > wrapping (though we'll keep the current implementation too for backwards > compatibility), namely that by default wrapped object will check the disable > and validate phases only, ie it will _not_ check the hidden phase. This > allows such actions to be indicated as hidden (probably using @ActionLayout > or .layout.xml or security) but still able to be called programmatically. > The disable phase = pre check. > We could define the following terminology: > - "default" wrapping : as described above, checks only disable and validate, > not hidden > - "strict" wrapping - for backward compatibility, also checks hidden first > We could define a configuration property: > isis.runtime.wrapping=default | strict | none > with "default" wrapping being the default if not specified. > In terms of the programming API, the WrapperFactory#wrap(...) will obviously > be less important than it was, because by default objects will be wrapped. > For backward compatibilty, I think this should continue to create strict > wrappers > The wrap(...) method is also overloaded, with wrap(ExecutionMode). We can > extend this enum: > - EXECUTE - (existing) returns a strict wrapper > - SKIP_RULES - (existing) skips applying the hidden/disable/validate rules > - NO_EXECUTE - (existing) applies hidden/disabled/validate, but does not > execute > - DEFAULT - (new)