This is an automated email from the ASF dual-hosted git repository. danhaywood pushed a commit to branch dev/2.0.0/ISIS-1632-meta-annotations in repository https://gitbox.apache.org/repos/asf/isis.git
commit fe425d86d3b4445c694e1997bac05b3dbdb2da2a Merge: 1c05c0e acbcc5c Author: Dan Haywood <d...@haywood-associates.co.uk> AuthorDate: Sun Nov 12 18:40:14 2017 +0000 Merge branch 'master' into dev/2.0.0/ISIS-1632-meta-annotations # Conflicts: # core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisInjectModule.java # core/runtime/src/main/java/org/apache/isis/core/runtime/services/menubars/bootstrap3/MenuBarsServiceBS3.java # core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/InvokeKeys.java # core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java # example/application/helloworld/src/main/java/domainapp/dom/impl/HelloWorldObject.java # example/application/helloworld/src/main/java/domainapp/dom/impl/HelloWorldObjects.java # example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java # example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository.java # example/application/simpleapp/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository_Test.java # example/application/simpleapp/pom.xml .../asciidoc/applib/layout/component/component.xsd | 59 ++++-- .../applib/layout/grid/bootstrap3/bootstrap3.xsd | 19 +- .../main/asciidoc/applib/layout/links/links.xsd | 16 ++ .../applib/layout/menubars/bootstrap3/menubars.xsd | 50 +++++ .../guides/cgcom/_cgcom_cutting-a-release.adoc | 2 +- .../main/asciidoc/guides/rgcms/_rgcms_classes.adoc | 1 + .../guides/rgcms/_rgcms_classes_layout.adoc | 53 +++-- .../guides/rgcms/_rgcms_classes_menubars.adoc | 90 ++++++++ .../rgsvc/_rgsvc_presentation-layer-spi.adoc | 2 + ...esentation-layer-spi_MenuBarsLoaderService.adoc | 32 +++ ...svc_presentation-layer-spi_MenuBarsService.adoc | 30 ++- ...blocks_types-of-domain-objects_view-models.adoc | 44 +++- .../guides/ugvro/_ugvro_hints-and-tips.adoc | 2 + ...vro_hints-and-tips_view-model-as-parameter.adoc | 70 ++++++ .../guides/ugvro/_ugvro_layout-resources.adoc | 235 +++++++++++++++++++++ .../src/main/asciidoc/guides/ugvro/ugvro.adoc | 1 + .../main/asciidoc/guides/ugvw/_ugvw_layout.adoc | 6 +- .../guides/ugvw/_ugvw_layout_application-menu.adoc | 165 --------------- .../guides/ugvw/_ugvw_layout_file-based.adoc | 62 +++--- .../guides/ugvw/_ugvw_menubars-layout.adoc | 39 ++++ .../_ugvw_menubars-layout_annotation-based.adoc | 126 +++++++++++ .../ugvw/_ugvw_menubars-layout_file-based.adoc | 105 +++++++++ .../guides/ugvw/images/menubars/010-download.png | Bin 0 -> 21017 bytes .../guides/ugvw/images/menubars/020-download.png | Bin 0 -> 15727 bytes .../src/main/asciidoc/guides/ugvw/ugvw.adoc | 1 + .../articles-and-presentations.adoc | 3 +- .../applib/layout/component/ActionLayoutData.java | 22 ++ .../layout/component/CollectionLayoutData.java | 20 ++ .../layout/component/DomainObjectLayoutData.java | 22 ++ .../layout/component/PropertyLayoutData.java | 22 ++ .../ServiceActionLayoutData.java} | 64 ++++-- .../ServiceActionLayoutDataOwner.java} | 10 +- .../applib/layout/{component => grid}/Grid.java | 7 +- .../layout/{component => grid}/GridAbstract.java | 10 +- .../applib/layout/grid/bootstrap3/BS3Grid.java | 4 +- .../org/apache/isis/applib/layout/links/Link.java | 93 ++++++++ .../layout/{menus => links}/package-info.java | 6 +- .../Menu.java} | 12 +- .../MenuBar.java} | 11 +- .../isis/applib/layout/menubars/MenuBars.java | 36 ++-- .../applib/layout/menubars/MenuBarsAbstract.java | 42 ++++ .../MenuSection.java} | 12 +- .../Menu.java => menubars/bootstrap3/BS3Menu.java} | 36 +++- .../bootstrap3/BS3MenuBar.java} | 15 +- .../layout/menubars/bootstrap3/BS3MenuBars.java | 201 ++++++++++++++++++ .../bootstrap3/BS3MenuSection.java} | 25 ++- .../bootstrap3}/package-info.java | 6 +- .../apache/isis/applib/layout/menus/MenuBars.java | 111 ---------- .../applib/services/grid/GridLoaderService.java | 2 +- .../isis/applib/services/grid/GridService.java | 4 +- .../applib/services/grid/GridSystemService.java | 4 +- .../isis/applib/services/layout/LayoutService.java | 1 - .../applib/services/layout/LayoutService2.java} | 28 +-- .../applib/services/layout/LayoutServiceMenu.java | 38 +++- .../menu/MenuBarsLoaderService.java} | 22 +- .../isis/applib/services/menu/MenuBarsService.java | 40 +++- .../bootstrap3/BS3MenuBars_roundtrip_Test.java} | 27 +-- .../core/integtestsupport/IsisSystemForTest.java | 2 +- .../core/commons/authentication/MessageBroker.java | 4 + .../metamodel/facets/object/grid/GridFacet.java | 2 +- .../facets/object/grid/GridFacetDefault.java | 2 +- .../services/grid/GridLoaderServiceDefault.java | 2 +- .../services/grid/GridServiceDefault.java | 37 ++-- .../services/grid/GridSystemServiceAbstract.java | 4 +- .../grid/bootstrap3/GridSystemServiceBS3.java | 2 +- .../services/layout/LayoutServiceDefault.java | 21 +- .../services/menubars/BS3MenuBarsTest.java | 60 ++++++ .../services/menubars/menubars.layout.xml | 91 ++++++++ core/pom.xml | 5 + .../isis/core/runtime/runner/IsisInjectModule.java | 4 +- .../menubars/MenuBarsLoaderServiceDefault.java | 66 ++++++ .../bootstrap3/MenuBarsServiceBS3.java} | 203 +++++++++++++++--- .../bootstrap3}/ServiceAndAction.java | 2 +- .../system/persistence/PersistenceSession.java | 5 +- .../runtime/system/session/IsisSessionFactory.java | 11 +- .../system/session/IsisSessionFactoryBuilder.java | 21 +- .../jmocking/JMockActionsTest_returnArgument.java | 8 +- ...ockery2Test_mockAnnotatedWithNever_sadCase.java | 3 +- core/viewer-restfulobjects-applib/pom.xml | 6 +- .../isis/viewer/restfulobjects/applib/Rel.java | 1 + .../restfulobjects/applib/RepresentationType.java | 8 +- .../restfulobjects/applib/RestfulMediaType.java | 5 + .../applib/domainobjects/DomainObjectResource.java | 18 ++ .../applib/domaintypes/DomainTypeResource.java | 6 +- .../applib/menubars/MenuBarsResource.java | 5 +- .../restfulobjects/applib/Rel_getName_Test.java | 28 +++ .../domainobjects/DomainObjectReprRenderer.java | 16 +- .../rendering/domainobjects/InvokeKeys.java | 4 + .../domaintypes/DomainTypeReprRenderer.java | 7 +- .../resources/DomainObjectResourceServerside.java | 115 ++++++++++ .../resources/DomainTypeResourceServerside.java | 14 +- .../resources/MenuBarsResourceServerside.java | 38 +++- .../serialization/SerializationStrategy.java | 82 +++++++ .../serviceactions/ServiceActionUtil.java | 23 +- .../serviceactions/ServiceActionsPanelFactory.java | 2 +- .../serviceactions/TertiaryMenuPanelFactory.java | 2 +- .../CollectionContentsAsAjaxTablePanel.java | 5 +- .../links/EntityLinksSelectorPanelFactory.java | 2 +- .../viewer/wicket/ui/pages/entity/EntityPage.java | 2 +- example/application/helloworld/pom.xml | 8 - .../java/domainapp/application/menubars.layout.xml | 91 ++++++++ .../java/domainapp/dom/impl/HelloWorldObject.java | 43 ++-- .../java/domainapp/dom/impl/HelloWorldObjects.java | 23 +- .../src/main/webapp/WEB-INF/logging.properties | 2 +- .../helloworld/src/main/webapp/about/index.html | 2 +- .../dom/impl/HelloWorldObjectTest_delete.java | 2 +- .../dom/impl/HelloWorldObjectTest_updateName.java | 2 +- .../application/manifest/menubars.layout.xml | 91 ++++++++ .../modules/simple/dom/impl/SimpleObject.java | 57 ++--- .../modules/simple/dom/impl/SimpleObjectMenu.java | 3 + .../simple/dom/impl/SimpleObjectRepository.java | 20 +- .../dom/impl/SimpleObjectRepository_Test.java | 5 - .../src/main/webapp/WEB-INF/logging.properties | 2 +- .../webapp/src/main/webapp/about/index.html | 2 +- 114 files changed, 2769 insertions(+), 694 deletions(-) diff --cc adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_file-based.adoc index fbf9125,36c56cd..4f49ccf --- a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_file-based.adoc +++ b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_layout_file-based.adoc @@@ -20,16 -20,25 +20,17 @@@ It is also possible to download an init There are some downsides, though: - * file-based layouts are not type: a typo will result in the metadata not being picked up for the element. - They also suffer from syntactic fragility: an invalid XML document will result in no metadata for the entire class. + * file-based layouts are not typesafe: a typo will result in the metadata not being picked up for the element. - * there is no notion of inheritance, so a `.layout.xml` is required for all concrete classes and also for any abstract classes (if used as a collection type) + * they suffer from syntactic fragility: an invalid XML document will result in no metadata for the entire class. + + * there is no notion of inheritance, so a `.layout.xml` is required for all concrete classes and also for any abstract classes (if used as a collection type). In contrast, the dewey-decimal format `@MemberOrder` annotation allows the metadata of the subclass its superclasses to fit together relatively seamlessly. - The `Xxx.layout.xml` file is just the serialized form of a xref:../rgcms/rgcms.adoc#_rgcms_classes_layout[`Grid`] layout class defined within Apache Isis' applib. These are JAXB-annotated classes with corresponding XSD schemas; the upshot of that - is that IDEs such as IntelliJ and Eclipse can provide "intellisense", making iteasy to author such layout files. + The `Xxx.layout.xml` file is just the serialized form of a xref:../rgcms/rgcms.adoc#_rgcms_classes_layout[`Grid`] layout class defined within Apache Isis' applib. + These are JAXB-annotated classes with corresponding XSD schemas; the upshot of that is that IDEs such as IntelliJ and Eclipse can provide "intellisense", making iteasy to author such layout files. -[NOTE] -==== -It is also possible to describe layouts using a `.layout.json` file. -However, `.layout.json` support is deprecated; the ``.layout.xml`` file also enables much more sophisticated layouts than those afforded by ``.layout.json``. - -If you have an application with older `.layout.json` files, then it is possible to download initial `.layout.xml` files using the xref:../rgsvc/rgsvc.adoc#_rgsvc_metadata-api_LayoutService[`LayoutService`] (exposed as an action on the prototyping menu). -The `.layout.json` file will be ignored once a `.layout.xml` file is present. -==== == Grids vs Components diff --cc core/applib/src/main/java/org/apache/isis/applib/layout/component/PropertyLayoutData.java index ac92c05,76bb144..97925a4 --- a/core/applib/src/main/java/org/apache/isis/applib/layout/component/PropertyLayoutData.java +++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/PropertyLayoutData.java @@@ -31,9 -31,8 +31,10 @@@ import com.google.common.collect.Lists import org.apache.isis.applib.annotation.LabelPosition; import org.apache.isis.applib.annotation.PromptStyle; +import org.apache.isis.applib.annotation.RenderDay; +import org.apache.isis.applib.annotation.Repainting; import org.apache.isis.applib.annotation.Where; + import org.apache.isis.applib.layout.links.Link; /** * Describes the layout of a single property, broadly corresponds to the {@link org.apache.isis.applib.annotation.PropertyLayout} annotation. diff --cc core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisInjectModule.java index c07c33e,1d9f3cd..da533b3 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisInjectModule.java +++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisInjectModule.java @@@ -22,6 -22,6 +22,8 @@@ package org.apache.isis.core.runtime.ru import java.util.List; import java.util.Map; ++import javax.ws.rs.HEAD; ++ import com.google.inject.AbstractModule; import com.google.inject.Provides; import com.google.inject.Singleton; @@@ -118,16 -104,14 +120,16 @@@ public class IsisInjectModule extends A @Provides @com.google.inject.Inject @Singleton - protected IsisSessionFactory provideIsisSessionFactory(final AppManifest appManifestIfAny) { + protected IsisSessionFactory provideIsisSessionFactory( + final AppManifest appManifestIfExplicitlyBound) { - final AppManifest appManifest = appManifestIfAny != APP_MANIFEST_NOOP ? appManifestIfAny : null; + final AppManifest appManifestToUse = determineAppManifest(appManifestIfExplicitlyBound); - final IsisComponentProviderUsingInstallers componentProvider = - new IsisComponentProviderUsingInstallers(appManifest, isisConfiguration); + final IsisComponentProvider componentProvider = + new IsisComponentProviderUsingInstallers(appManifestToUse, isisConfiguration); - final IsisSessionFactoryBuilder builder = new IsisSessionFactoryBuilder(componentProvider, deploymentCategory, componentProvider.getAppManifest()); + final IsisSessionFactoryBuilder builder = - new IsisSessionFactoryBuilder(componentProvider, deploymentCategory); ++ new IsisSessionFactoryBuilder(componentProvider, deploymentCategory, componentProvider.getAppManifest()); // as a side-effect, if the metamodel turns out to be invalid, then // this will push the MetaModelInvalidException into IsisContext. diff --cc core/runtime/src/main/java/org/apache/isis/core/runtime/services/menubars/bootstrap3/MenuBarsServiceBS3.java index eae62df,cae713f..8f81a4f --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/menubars/bootstrap3/MenuBarsServiceBS3.java +++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/menubars/bootstrap3/MenuBarsServiceBS3.java @@@ -24,8 -25,8 +25,9 @@@ import java.util.Set import javax.inject.Inject; + import com.google.common.base.Joiner; import com.google.common.base.Predicate; +import com.google.common.base.Predicates; import com.google.common.base.Strings; import com.google.common.collect.FluentIterable; import com.google.common.collect.Lists; @@@ -36,13 -40,18 +41,17 @@@ import org.apache.isis.applib.annotatio import org.apache.isis.applib.annotation.DomainServiceLayout; import org.apache.isis.applib.annotation.NatureOfService; import org.apache.isis.applib.annotation.Programmatic; - import org.apache.isis.applib.layout.menus.ActionLayoutData; - import org.apache.isis.applib.layout.menus.Menu; - import org.apache.isis.applib.layout.menus.MenuBar; - import org.apache.isis.applib.layout.menus.MenuBars; - import org.apache.isis.applib.layout.menus.MenuSection; -import org.apache.isis.applib.filter.Filters; + import org.apache.isis.applib.layout.component.ServiceActionLayoutData; + import org.apache.isis.applib.layout.menubars.bootstrap3.BS3Menu; + import org.apache.isis.applib.layout.menubars.bootstrap3.BS3MenuBar; + import org.apache.isis.applib.layout.menubars.bootstrap3.BS3MenuBars; + import org.apache.isis.applib.layout.menubars.bootstrap3.BS3MenuSection; + import org.apache.isis.applib.services.jaxb.JaxbService; + import org.apache.isis.applib.services.menu.MenuBarsLoaderService; import org.apache.isis.applib.services.menu.MenuBarsService; + import org.apache.isis.applib.services.message.MessageService; import org.apache.isis.core.metamodel.adapter.ObjectAdapter; + import org.apache.isis.core.metamodel.deployment.DeploymentCategoryProvider; import org.apache.isis.core.metamodel.facets.actions.notinservicemenu.NotInServiceMenuFacet; import org.apache.isis.core.metamodel.facets.all.named.NamedFacet; import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet; diff --cc core/unittestsupport/src/test/java/org/apache/isis/core/unittestsupport/jmocking/JMockActionsTest_returnArgument.java index 5e5fdb4,5e5fdb4..a67fe0f --- a/core/unittestsupport/src/test/java/org/apache/isis/core/unittestsupport/jmocking/JMockActionsTest_returnArgument.java +++ b/core/unittestsupport/src/test/java/org/apache/isis/core/unittestsupport/jmocking/JMockActionsTest_returnArgument.java @@@ -19,9 -19,9 +19,6 @@@ package org.apache.isis.core.unittestsupport.jmocking; --import static org.hamcrest.Matchers.is; --import static org.junit.Assert.assertThat; -- import org.jmock.Expectations; import org.jmock.auto.Mock; import org.junit.Rule; @@@ -29,6 -29,6 +26,9 @@@ import org.junit.Test import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode; ++import static org.hamcrest.Matchers.is; ++import static org.junit.Assert.assertThat; ++ public class JMockActionsTest_returnArgument { @Rule @@@ -41,7 -41,7 +41,7 @@@ public void poke() { context.checking(new Expectations() { { -- one(collaborator).selectOneOf(with(any(Integer.class)), with(any(Integer.class)), with(any(Integer.class))); ++ oneOf(collaborator).selectOneOf(with(any(Integer.class)), with(any(Integer.class)), with(any(Integer.class))); will(JMockActions.returnArgument(1)); // ie the 2nd argument, which is '20' } }); diff --cc core/unittestsupport/src/test/java/org/apache/isis/core/unittestsupport/jmocking/JUnitRuleMockery2Test_mockAnnotatedWithNever_sadCase.java index 798ee3f,798ee3f..dc9bd5f --- a/core/unittestsupport/src/test/java/org/apache/isis/core/unittestsupport/jmocking/JUnitRuleMockery2Test_mockAnnotatedWithNever_sadCase.java +++ b/core/unittestsupport/src/test/java/org/apache/isis/core/unittestsupport/jmocking/JUnitRuleMockery2Test_mockAnnotatedWithNever_sadCase.java @@@ -20,7 -20,7 +20,6 @@@ package org.apache.isis.core.unittestsupport.jmocking; import org.jmock.auto.Mock; --import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@@ -53,7 -53,7 +52,7 @@@ public class JUnitRuleMockery2Test_mock @Test public void invocationOnCollaboratorIsIgnored() { -- exp.handleAssertionErrors().expect(AssertionError.class); ++ exp.expect(AssertionError.class); collaborating.collaborateWithCollaborator(); } diff --cc core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/InvokeKeys.java index 2c0d0a7,b83f3a6..a909c72 --- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/InvokeKeys.java +++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/InvokeKeys.java @@@ -20,16 -20,18 +20,20 @@@ package org.apache.isis.viewer.restfulo import java.util.EnumMap; -import org.apache.isis.applib.annotation.ActionSemantics; ++import javax.ws.rs.HEAD; ++ +import org.apache.isis.applib.annotation.SemanticsOf; public final class InvokeKeys { - private final static EnumMap<ActionSemantics.Of, String> map = new EnumMap<ActionSemantics.Of, String>(ActionSemantics.Of.class); + private final static EnumMap<SemanticsOf, String> map = new EnumMap<>(SemanticsOf.class); static { - map.put(ActionSemantics.Of.SAFE_AND_REQUEST_CACHEABLE, "invokeQueryOnly"); - map.put(ActionSemantics.Of.SAFE, "invokeQueryOnly"); - map.put(ActionSemantics.Of.IDEMPOTENT, "invokeIdempotent"); - map.put(ActionSemantics.Of.IDEMPOTENT_ARE_YOU_SURE, "invokeIdempotent"); - map.put(ActionSemantics.Of.NON_IDEMPOTENT, "invoke"); - map.put(ActionSemantics.Of.NON_IDEMPOTENT_ARE_YOU_SURE, "invoke"); + map.put(SemanticsOf.SAFE_AND_REQUEST_CACHEABLE, "invokeQueryOnly"); + map.put(SemanticsOf.SAFE, "invokeQueryOnly"); + map.put(SemanticsOf.IDEMPOTENT, "invokeIdempotent"); ++ map.put(SemanticsOf.IDEMPOTENT_ARE_YOU_SURE, "invokeIdempotent"); + map.put(SemanticsOf.NON_IDEMPOTENT, "invoke"); ++ map.put(SemanticsOf.NON_IDEMPOTENT_ARE_YOU_SURE, "invoke"); } private InvokeKeys() { diff --cc core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java index 5d7afcd,9de98f4..77278a4 --- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java +++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java @@@ -31,8 -32,14 +32,14 @@@ import javax.ws.rs.core.MediaType import javax.ws.rs.core.Response; import org.apache.isis.applib.annotation.Where; + import org.apache.isis.applib.layout.component.ActionLayoutData; + import org.apache.isis.applib.layout.component.CollectionLayoutData; + import org.apache.isis.applib.layout.component.DomainObjectLayoutData; + import org.apache.isis.applib.layout.component.PropertyLayoutData; + import org.apache.isis.applib.layout.grid.Grid; + import org.apache.isis.applib.layout.links.Link; import org.apache.isis.applib.services.command.Command; -import org.apache.isis.core.commons.url.UrlEncodingUtils; +import org.apache.isis.core.commons.url.UrlDecoderUtil; import org.apache.isis.core.metamodel.adapter.ObjectAdapter; import org.apache.isis.core.metamodel.consent.Consent; import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy; diff --cc core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java index 5188ca6,dc8d842..40ce3cc --- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java +++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java @@@ -22,6 -22,6 +22,7 @@@ package org.apache.isis.viewer.wicket.u import java.util.List; import java.util.Map; ++import com.google.common.base.Predicate; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@@ -32,9 -32,9 +33,7 @@@ import org.apache.wicket.extensions.mar import org.apache.wicket.model.Model; import org.apache.isis.applib.annotation.Where; - import com.google.common.base.Predicate; - - import org.apache.isis.applib.layout.component.Grid; -import org.apache.isis.applib.filter.Filter; -import org.apache.isis.applib.filter.Filters; + import org.apache.isis.applib.layout.grid.Grid; import org.apache.isis.applib.services.tablecol.TableColumnOrderService; import org.apache.isis.core.metamodel.adapter.ObjectAdapter; import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking; diff --cc example/application/helloworld/pom.xml index ca4d589,d13f547..50b4625 --- a/example/application/helloworld/pom.xml +++ b/example/application/helloworld/pom.xml @@@ -36,10 -36,8 +36,8 @@@ <packaging>war</packaging> <properties> - <isis.version>1.16.0-SNAPSHOT</isis.version> + <isis.version>2.0.0-SNAPSHOT</isis.version> - <lombok.version>1.16.18</lombok.version> - <compiler-plugin.source>1.8</compiler-plugin.source> <compiler-plugin.target>1.8</compiler-plugin.target> <compiler-plugin.compilerArgument></compiler-plugin.compilerArgument> diff --cc example/application/helloworld/src/main/java/domainapp/dom/impl/HelloWorldObject.java index b8bbcfa,672a528..2fe8bb8 --- a/example/application/helloworld/src/main/java/domainapp/dom/impl/HelloWorldObject.java +++ b/example/application/helloworld/src/main/java/domainapp/dom/impl/HelloWorldObject.java @@@ -21,8 -21,8 +21,10 @@@ package domainapp.dom.impl import javax.jdo.annotations.IdGeneratorStrategy; import javax.jdo.annotations.IdentityType; import javax.jdo.annotations.VersionStrategy; ++import javax.ws.rs.HEAD; + import com.google.common.collect.ComparisonChain; +import com.google.common.collect.Ordering; import org.apache.isis.applib.annotation.Action; import org.apache.isis.applib.annotation.Auditing; diff --cc example/application/helloworld/src/main/java/domainapp/dom/impl/HelloWorldObjects.java index 2f4dc51,242cf7e..92bd565 --- a/example/application/helloworld/src/main/java/domainapp/dom/impl/HelloWorldObjects.java +++ b/example/application/helloworld/src/main/java/domainapp/dom/impl/HelloWorldObjects.java @@@ -28,8 -30,7 +30,8 @@@ import org.apache.isis.applib.annotatio import org.apache.isis.applib.annotation.ParameterLayout; import org.apache.isis.applib.annotation.RestrictTo; import org.apache.isis.applib.annotation.SemanticsOf; - import org.apache.isis.applib.query.QueryDefault; + import org.apache.isis.applib.services.jdosupport.IsisJdoSupport; +import org.apache.isis.applib.services.registry.ServiceRegistry; import org.apache.isis.applib.services.repository.RepositoryService; @DomainService( diff --cc example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java index 0e298c0,92f64b1..d0999ba --- a/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java +++ b/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java @@@ -27,54 -29,45 +29,43 @@@ import org.apache.isis.applib.annotatio import org.apache.isis.applib.annotation.DomainObject; import org.apache.isis.applib.annotation.DomainObjectLayout; import org.apache.isis.applib.annotation.Editing; -import org.apache.isis.applib.annotation.Parameter; -import org.apache.isis.applib.annotation.ParameterLayout; import org.apache.isis.applib.annotation.Property; + import org.apache.isis.applib.annotation.Publishing; import org.apache.isis.applib.annotation.SemanticsOf; import org.apache.isis.applib.annotation.Title; + import org.apache.isis.applib.services.i18n.TranslatableString; import org.apache.isis.applib.services.message.MessageService; import org.apache.isis.applib.services.repository.RepositoryService; import org.apache.isis.applib.services.title.TitleService; +import domainapp.modules.simple.dom.types.Name; - import lombok.RequiredArgsConstructor; - - @javax.jdo.annotations.PersistenceCapable( - identityType=IdentityType.DATASTORE, - schema = "simple" - ) - @javax.jdo.annotations.DatastoreIdentity( - strategy=javax.jdo.annotations.IdGeneratorStrategy.IDENTITY, - column="id") - @javax.jdo.annotations.Version( - strategy= VersionStrategy.DATE_TIME, - column="version") - @javax.jdo.annotations.Queries({ - @javax.jdo.annotations.Query( - name = "findByName", - value = "SELECT " - + "FROM domainapp.modules.simple.dom.impl.SimpleObject " - + "WHERE name.indexOf(:name) >= 0 ") - }) + import lombok.AccessLevel; + + @javax.jdo.annotations.PersistenceCapable(identityType=IdentityType.DATASTORE, schema = "simple") + @javax.jdo.annotations.DatastoreIdentity(strategy=javax.jdo.annotations.IdGeneratorStrategy.IDENTITY, column="id") + @javax.jdo.annotations.Version(strategy= VersionStrategy.DATE_TIME, column="version") @javax.jdo.annotations.Unique(name="SimpleObject_name_UNQ", members = {"name"}) - @DomainObject() // objectType inferred from @PersistenceCapable#schema - @DomainObjectLayout() // to trigger UI events - @RequiredArgsConstructor + @DomainObject(auditing = Auditing.ENABLED) + @DomainObjectLayout() // causes UI events to be triggered + @lombok.Getter @lombok.Setter + @lombok.RequiredArgsConstructor public class SimpleObject implements Comparable<SimpleObject> { - @javax.jdo.annotations.Column(allowsNull = "false", length = 40) - @lombok.NonNull - @Property() // editing disabled by default, see isis.properties + + @javax.jdo.annotations.Column(allowsNull = "false", length = Name.MAX_LEN) + @lombok.Getter @lombok.Setter @lombok.NonNull @Title(prepend = "Object: ") - private String name; + @Name private String name; @javax.jdo.annotations.Column(allowsNull = "true", length = 4000) + @lombok.Getter @lombok.Setter @Property(editing = Editing.ENABLED) private String notes; - @Action(semantics = SemanticsOf.IDEMPOTENT) + @Action(semantics = SemanticsOf.IDEMPOTENT, command = CommandReification.ENABLED, publishing = Publishing.ENABLED) public SimpleObject updateName( - @Parameter(maxLength = 40) - @ParameterLayout(named = "Name") - final String name) { + @Name final String name) { setName(name); return this; } -- To stop receiving notification emails like this one, please contact "commits@isis.apache.org" <commits@isis.apache.org>.