You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2020/08/17 07:40:48 UTC
[isis] branch ISIS-2222 updated (0b4e0bc -> 883eace)
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a change to branch ISIS-2222
in repository https://gitbox.apache.org/repos/asf/isis.git.
discard 0b4e0bc ISIS-2222: wip adds wicket panel to render InteractionDto, CommandDto, ChangesDto.
discard 4ea2bbb ISIS-2222: wip adds facets for ChangesDto and CommandDto
discard f4b57d6 ISIS-2222: wip Property#command
discard c736579 ISIS-2222: wip @Action#hidden
add 46baa7b ISIS-2340: fix missing return statement
add 4a1af015 ISIS-2340: fx: restrict DatePicker to LocalDate only (for now)
add 0b9ba6b ISIS-2340: use temporal format providers lazily
add 65ca19a ISIS-2340: fx: bind validation feedback to UI comp. (initial)
add b6bf94b ISIS-2340: some comments
new ae58e1a ISIS-2422: adds support for schema DTOs as value types.
new 883eace ISIS-2222: wip @Property#publishing, @Action#publishing, @DomainObject#publishing
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (0b4e0bc)
\
N -- N -- N refs/heads/ISIS-2222 (883eace)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../TemporalValueSemanticsProviderAbstract.java | 14 +-
.../localdate/LocalDateValueSemanticsProvider.java | 16 +--
.../LocalDateTimeValueSemanticsProvider.java | 16 +--
.../localtime/LocalTimeValueSemanticsProvider.java | 14 +-
.../OffsetDateTimeValueSemanticsProvider.java | 14 +-
.../OffsetTimeValueSemanticsProvider.java | 16 +--
.../ZonedDateTimeValueSemanticsProvider.java | 16 +--
.../demoapp/dom/annotDomain/Action/ActionMenu.java | 11 ++
.../Action/hidden/ActionHiddenVm-description.adoc | 25 ----
.../annotDomain/Action/hidden/ActionHiddenVm.java | 159 ---------------------
...onHiddenVm_mixinUpdateTextAndHiddenNowhere.java | 53 -------
...iddenVm_mixinUpdateTextButHiddenEverywhere.java | 53 -------
...ddenVm_mixinUpdateTextButHiddenObjectForms.java | 53 -------
...ActionHiddenVm_mixinUpdateTextNoAnnotation.java | 53 -------
.../dom/annotDomain/Action/publishing/.gitkeep | 0
.../publishing/ActionDisabledMetaAnnotation.java} | 4 +-
.../publishing/ActionEnabledMetaAnnotation.java} | 5 +-
.../ActionPublishingJdo-description.adoc} | 0
.../ActionPublishingJdo.java} | 66 ++++-----
.../publishing/ActionPublishingJdo.layout.xml} | 0
.../publishing/ActionPublishingJdoEntities.java | 31 ++++
.../ActionPublishingJdoSeedService.java} | 8 +-
...onPublishingJdo_clearInteractionExecutions.java | 32 +++++
.../ActionPublishingJdo_interactionExecutions.java | 30 ++++
.../spiimpl/PublisherServiceSpiForActions.java} | 12 +-
.../annotDomain/DomainObject/DomainObjectMenu.java | 16 ++-
.../annotDomain/DomainObject/publishing/.gitkeep | 0
.../DomainObjectDisabledMetaAnnotation.java} | 10 +-
.../DomainObjectEnabledMetaAnnotation.java} | 10 +-
.../DomainObjectPublishingJdo-description.adoc} | 0
.../publishing/DomainObjectPublishingJdo.java} | 75 +++++-----
.../DomainObjectPublishingJdo.layout.xml} | 11 +-
.../DomainObjectPublishingJdoEntities.java | 31 ++++
.../DomainObjectPublishingJdoSeedService.java} | 8 +-
...nObjectPublishingJdo_clearPublishedObjects.java | 30 ++++
...DomainObjectPublishingJdo_publishedObjects.java | 29 ++++
.../PublisherServiceSpiForDomainObject.java} | 16 +--
.../Property/publishing/PropertyPublishingJdo.java | 111 --------------
.../publishing/PropertyPublishingJdoEntities.java | 31 ----
...yPublishingJdo_clearInteractionExecutions.java} | 18 ++-
.../PropertyPublishingJdo_publishedObjects.java | 32 -----
.../src/main/java/demoapp/dom/menubars.layout.xml | 4 +
.../viewer/javafx/model/binding/BindingsFx.java | 47 ++++--
.../incubator/viewer/javafx/model/util/_fx.java | 61 +++++---
.../ui/components/number/NumberFieldFactory.java | 20 ++-
.../components/temporal/TemporalFieldFactory.java | 11 +-
.../ui/wkt/IsisModuleValAsciidocUiWkt.java | 6 +
.../schema/ixn/v2/InteractionDtoComponentWkt.java | 13 --
.../ixn/v2/InteractionDtoPanelFactoriesWkt.java | 2 -
.../TemporalConverterForLocalDateComponent.java | 14 +-
50 files changed, 489 insertions(+), 818 deletions(-)
delete mode 100644 examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/hidden/ActionHiddenVm-description.adoc
delete mode 100644 examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/hidden/ActionHiddenVm.java
delete mode 100644 examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/hidden/ActionHiddenVm_mixinUpdateTextAndHiddenNowhere.java
delete mode 100644 examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/hidden/ActionHiddenVm_mixinUpdateTextButHiddenEverywhere.java
delete mode 100644 examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/hidden/ActionHiddenVm_mixinUpdateTextButHiddenObjectForms.java
delete mode 100644 examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/hidden/ActionHiddenVm_mixinUpdateTextNoAnnotation.java
delete mode 100644 examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/.gitkeep
rename examples/demo/domain/src/main/java/demoapp/dom/annotDomain/{Property/publishing/PublishingDisabledMetaAnnotation.java => Action/publishing/ActionDisabledMetaAnnotation.java} (83%)
copy examples/demo/domain/src/main/java/demoapp/dom/annotDomain/{Property/publishing/PublishingEnabledMetaAnnotation.java => Action/publishing/ActionEnabledMetaAnnotation.java} (76%)
copy examples/demo/domain/src/main/java/demoapp/dom/annotDomain/{Property/publishing/PropertyPublishingJdo-description.adoc => Action/publishing/ActionPublishingJdo-description.adoc} (100%)
copy examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/{domainEvent/ActionDomainEventVm.java => publishing/ActionPublishingJdo.java} (55%)
rename examples/demo/domain/src/main/java/demoapp/dom/annotDomain/{Property/publishing/PropertyPublishingJdo.layout.xml => Action/publishing/ActionPublishingJdo.layout.xml} (100%)
create mode 100644 examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/ActionPublishingJdoEntities.java
copy examples/demo/domain/src/main/java/demoapp/dom/annotDomain/{Property/publishing/PropertyPublishingJdoSeedService.java => Action/publishing/ActionPublishingJdoSeedService.java} (79%)
create mode 100644 examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/spiimpl/ActionPublishingJdo_clearInteractionExecutions.java
create mode 100644 examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/spiimpl/ActionPublishingJdo_interactionExecutions.java
copy examples/demo/domain/src/main/java/demoapp/dom/annotDomain/{Property/publishing/spiimpl/PublisherServiceSpiForProperties.java => Action/publishing/spiimpl/PublisherServiceSpiForActions.java} (68%)
delete mode 100644 examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/.gitkeep
copy examples/demo/domain/src/main/java/demoapp/dom/annotDomain/{Property/publishing/PublishingEnabledMetaAnnotation.java => DomainObject/publishing/DomainObjectDisabledMetaAnnotation.java} (58%)
rename examples/demo/domain/src/main/java/demoapp/dom/annotDomain/{Property/publishing/PublishingEnabledMetaAnnotation.java => DomainObject/publishing/DomainObjectEnabledMetaAnnotation.java} (58%)
rename examples/demo/domain/src/main/java/demoapp/dom/annotDomain/{Property/publishing/PropertyPublishingJdo-description.adoc => DomainObject/publishing/DomainObjectPublishingJdo-description.adoc} (100%)
copy examples/demo/domain/src/main/java/demoapp/dom/annotDomain/{Action/domainEvent/ActionDomainEventVm.java => DomainObject/publishing/DomainObjectPublishingJdo.java} (53%)
rename examples/demo/domain/src/main/java/demoapp/dom/annotDomain/{Action/hidden/ActionHiddenVm.layout.xml => DomainObject/publishing/DomainObjectPublishingJdo.layout.xml} (91%)
create mode 100644 examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectPublishingJdoEntities.java
rename examples/demo/domain/src/main/java/demoapp/dom/annotDomain/{Property/publishing/PropertyPublishingJdoSeedService.java => DomainObject/publishing/DomainObjectPublishingJdoSeedService.java} (78%)
create mode 100644 examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/spiimpl/DomainObjectPublishingJdo_clearPublishedObjects.java
create mode 100644 examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/spiimpl/DomainObjectPublishingJdo_publishedObjects.java
rename examples/demo/domain/src/main/java/demoapp/dom/annotDomain/{Property/publishing/spiimpl/PublisherServiceSpiForProperties.java => DomainObject/publishing/spiimpl/PublisherServiceSpiForDomainObject.java} (66%)
delete mode 100644 examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Property/publishing/PropertyPublishingJdo.java
delete mode 100644 examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Property/publishing/PropertyPublishingJdoEntities.java
rename examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Property/publishing/spiimpl/{PropertyPublishingJdo_interactionExecutions.java => PropertyPublishingJdo_clearInteractionExecutions.java} (52%)
delete mode 100644 examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Property/publishing/spiimpl/PropertyPublishingJdo_publishedObjects.java
[isis] 02/02: ISIS-2222: wip @Property#publishing,
@Action#publishing, @DomainObject#publishing
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch ISIS-2222
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 883eacefcd55f5267367a4ded30cd440cbd0ea61
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Aug 17 08:40:28 2020 +0100
ISIS-2222: wip @Property#publishing, @Action#publishing, @DomainObject#publishing
---
.../demoapp/dom/annotDomain/Action/ActionMenu.java | 20 ++++-
.../ActionDomainEventVm-description.adoc | 4 +-
.../demoapp/dom/annotDomain/Action/hidden/.gitkeep | 0
.../dom/annotDomain/Action/publishing/.gitkeep | 0
.../publishing/ActionDisabledMetaAnnotation.java | 22 ++++++
.../publishing/ActionEnabledMetaAnnotation.java | 22 ++++++
.../ActionPublishingJdo-description.adoc | 74 ++++++++++++++++++
.../Action/publishing/ActionPublishingJdo.java | 88 +++++++++++++++++++++
.../publishing/ActionPublishingJdo.layout.xml | 57 ++++++++++++++
.../publishing/ActionPublishingJdoEntities.java | 31 ++++++++
.../publishing/ActionPublishingJdoSeedService.java | 39 ++++++++++
...onPublishingJdo_clearInteractionExecutions.java | 32 ++++++++
.../ActionPublishingJdo_interactionExecutions.java | 30 ++++++++
.../spiimpl/PublisherServiceSpiForActions.java | 41 ++++++++++
.../annotDomain/DomainObject/DomainObjectMenu.java | 16 +++-
.../annotDomain/DomainObject/publishing/.gitkeep | 0
.../DomainObjectDisabledMetaAnnotation.java | 23 ++++++
.../DomainObjectEnabledMetaAnnotation.java | 23 ++++++
.../DomainObjectPublishingJdo-description.adoc | 74 ++++++++++++++++++
.../publishing/DomainObjectPublishingJdo.java | 89 ++++++++++++++++++++++
.../DomainObjectPublishingJdo.layout.xml | 53 +++++++++++++
.../DomainObjectPublishingJdoEntities.java | 31 ++++++++
.../DomainObjectPublishingJdoSeedService.java | 39 ++++++++++
...nObjectPublishingJdo_clearPublishedObjects.java | 30 ++++++++
...DomainObjectPublishingJdo_publishedObjects.java | 29 +++++++
.../PublisherServiceSpiForDomainObject.java | 39 ++++++++++
.../dom/annotDomain/Property/PropertyMenu.java | 10 +++
.../dom/annotDomain/Property/publishing/.gitkeep | 0
...tyPublishingJdo_clearInteractionExecutions.java | 34 +++++++++
.../src/main/java/demoapp/dom/menubars.layout.xml | 8 +-
.../strings/jdo/JavaLangStringJdoEntities.java | 3 +-
31 files changed, 953 insertions(+), 8 deletions(-)
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/ActionMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/ActionMenu.java
index b3884aa..e64750a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/ActionMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/ActionMenu.java
@@ -36,8 +36,12 @@ import demoapp.dom._infra.samples.NameSamples;
import demoapp.dom.annotDomain.Action.associateWith.ActionAssociateWithVm;
import demoapp.dom.annotDomain.Action.associateWith.child.ActionAssociateWithChildVm;
import demoapp.dom.annotDomain.Action.domainEvent.ActionDomainEventVm;
+import demoapp.dom.annotDomain.Action.hidden.ActionHiddenVm;
+import demoapp.dom.annotDomain.Action.publishing.ActionPublishingJdo;
+import demoapp.dom.annotDomain.Action.publishing.ActionPublishingJdoEntities;
import demoapp.dom.annotDomain.Action.typeOf.ActionTypeOfVm;
import demoapp.dom.annotDomain.Action.typeOf.child.ActionTypeOfChildVm;
+import demoapp.dom.annotDomain.Property.publishing.PropertyPublishingJdo;
import demoapp.dom.types.Samples;
@DomainService(nature=NatureOfService.VIEW, objectType = "demo.ActionMenu")
@@ -65,7 +69,19 @@ public class ActionMenu {
@Action(semantics = SemanticsOf.SAFE)
@ActionLayout(cssClassFa="fa-asterisk", describedAs = "Decouples interaction of actions")
public ActionDomainEventVm domainEvent(){
- return new ActionDomainEventVm("change me");
+ return new ActionDomainEventVm("value");
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ @ActionLayout(cssClassFa="fa-glasses", describedAs = "Visibility of actions")
+ public ActionHiddenVm hidden(){
+ return new ActionHiddenVm("value");
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ @ActionLayout(cssClassFa="fa-book", describedAs = "Property changed events as XML")
+ public ActionPublishingJdo publishing(){
+ return actionPublishingJdoEntities.first();
}
@Action(semantics = SemanticsOf.SAFE)
@@ -81,6 +97,8 @@ public class ActionMenu {
return typeOfVm;
}
+ @Inject
+ ActionPublishingJdoEntities actionPublishingJdoEntities;
@Inject
NameSamples samples;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/domainEvent/ActionDomainEventVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/domainEvent/ActionDomainEventVm-description.adoc
index 380ac57..71bb7cd 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/domainEvent/ActionDomainEventVm-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/domainEvent/ActionDomainEventVm-description.adoc
@@ -22,7 +22,7 @@ The fallback domain event can be suppressed using the `isis.applib.annotation.ac
The demo defines two actions that are annotated using `domainEvent` semantic:
-* in the `ActionDomainEventVm` is a regular action, "updateText":
+* in the `ActionHiddenVm` is a regular action, "updateText":
+
[source,java]
----
@@ -31,7 +31,7 @@ include::ActionDomainEventVm.java[tags=class]
<.> the event class to emit; genericised by the target type
<.> indicates that the framework should emit this type
-* The `ActionDomainEventVm_mixinUpdateText` defines a mixin action, also annotated:
+* The `ActionHiddenVm_mixinUpdateTextNoAnnotation` defines a mixin action, also annotated:
+
[source,java]
----
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/hidden/.gitkeep b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/hidden/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/.gitkeep b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/ActionDisabledMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/ActionDisabledMetaAnnotation.java
new file mode 100644
index 0000000..4dc3e93
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/ActionDisabledMetaAnnotation.java
@@ -0,0 +1,22 @@
+package demoapp.dom.annotDomain.Action.publishing;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.Publishing;
+
+//tag::class[]
+@Property(publishing = Publishing.DISABLED) // <.>
+@Inherited
+@Target({
+ ElementType.METHOD, ElementType.FIELD // <.>
+})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ActionDisabledMetaAnnotation {
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/ActionEnabledMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/ActionEnabledMetaAnnotation.java
new file mode 100644
index 0000000..230a7de
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/ActionEnabledMetaAnnotation.java
@@ -0,0 +1,22 @@
+package demoapp.dom.annotDomain.Action.publishing;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.Publishing;
+
+//tag::class[]
+@Property(publishing = Publishing.ENABLED) // <.>
+@Inherited
+@Target({
+ ElementType.METHOD, ElementType.FIELD // <.>
+})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ActionEnabledMetaAnnotation {
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/ActionPublishingJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/ActionPublishingJdo-description.adoc
new file mode 100644
index 0000000..c62d177
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/ActionPublishingJdo-description.adoc
@@ -0,0 +1,74 @@
+CAUTION: todo - to update.
+
+//The `editing` semantic specifies that a property's value can be changed through the UI:
+//
+//* for properties, the semantic can be specified using either the `@Property` annotation, or a meta-annotation
+//
+//There is no corresponding semantic for parameters, parameters are implicitly editable.
+//
+//== Class Level
+//
+//Usually editing of properties is discouraged; it is usually better to modify state through an explicit action instead.
+//For that reason, editing of properties is disabled by default (though that can be changed globally if necessary using the `isis.applib.annotation.domain-object.editing` configuration property).
+//
+//Editing can also be specified at the class level.
+//This will override any configured defaults, but just for the properties of that class:
+//
+//[source,java,indent=0]
+//----
+//include::PropertyEditingVm.java[tags=class]
+//----
+//
+//The property-level semantic can, in turn, overrides the configured or class-level default.
+//
+//
+//== Annotated
+//
+//The `editing` semantic can be specified explicitly using an annotation:
+//
+//* for properties, using `@Property#editing()`:
+//+
+//[source,java,indent=0]
+//----
+//include::PropertyEditingVm.java[tags=annotation]
+//----
+//<.> explicitly specifies the maximum length that can be entered for the property
+//
+//The annotation could also be applied to a mixin, but would have little effect because mixin properties are always read-only.
+//
+//== Meta-annotated
+//
+//The `editing` semantic can also be specified using a custom meta-annotation:
+//
+//* the meta-annotation is defined as:
+//+
+//[source,java]
+//----
+//include::EditingEnabledMetaAnnotation.java[tags=class]
+//----
+//<.> annotated for a property
+//<.> annotation can be applied to a property (either its getter or the field directly)
+//
+//* and can be applied to a property:
+//+
+//[source,java,indent=0]
+//----
+//include::PropertyEditingVm.java[tags=meta-annotated]
+//----
+//<.> semantic is inherited from the meta-annotation
+//
+//
+//
+//=== Meta-annotated Overridden
+//
+//The meta-annotation can itself be overridden:
+//
+//* in a property:
+//+
+//[source,java,indent=0]
+//----
+//include::PropertyEditingVm.java[tags=meta-annotated-overridden]
+//----
+//<.> semantic from meta-annotation ...
+//<.> \... is overridden by the `@Property` annotation
+//
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/ActionPublishingJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/ActionPublishingJdo.java
new file mode 100644
index 0000000..0e7f3ea
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/ActionPublishingJdo.java
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package demoapp.dom.annotDomain.Action.publishing;
+
+import javax.jdo.annotations.DatastoreIdentity;
+import javax.jdo.annotations.IdGeneratorStrategy;
+import javax.jdo.annotations.IdentityType;
+import javax.jdo.annotations.PersistenceCapable;
+import javax.xml.bind.annotation.XmlElement;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Publishing;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
+//tag::class[]
+@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
+@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
+@DomainObject(
+ nature=Nature.JDO_ENTITY
+ , objectType = "demo.ActionPublishingJdo"
+ , editing = Editing.DISABLED
+)
+public class ActionPublishingJdo implements HasAsciiDocDescription {
+ // ...
+//end::class[]
+
+ public ActionPublishingJdo(String initialValue) {
+ this.property = initialValue;
+ }
+
+ public String title() {
+ return "Action#publishing";
+ }
+
+//tag::property[]
+ @Property()
+ @MemberOrder(name = "annotation", sequence = "1")
+ @Getter @Setter
+ private String property;
+//end::property[]
+
+ @Action(
+ publishing = Publishing.ENABLED // <.>
+ , semantics = SemanticsOf.IDEMPOTENT
+ , associateWith = "property"
+ , associateWithSequence = "1"
+ )
+ @ActionLayout(
+ describedAs = "@Action(publishing = ENABLED)"
+ )
+ @MemberOrder(name = "annotation", sequence = "1")
+ public ActionPublishingJdo updatePropertyUsingAnnotation(final String value) {
+ setProperty(value);
+ return this;
+ }
+
+
+//tag::class[]
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/ActionPublishingJdo.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/ActionPublishingJdo.layout.xml
new file mode 100644
index 0000000..f3edfb0
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/ActionPublishingJdo.layout.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<bs3:grid
+ xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd"
+ xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3"
+ xmlns:cpt="http://isis.apache.org/applib/layout/component"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <bs3:row>
+ <bs3:col span="10" unreferencedActions="true">
+ <cpt:domainObject />
+ <cpt:action id="rebuildMetamodel"/>
+ </bs3:col>
+ <bs3:col span="2">
+ <cpt:fieldSet name="" id="sources" />
+ </bs3:col>
+ </bs3:row>
+
+ <bs3:row>
+ <bs3:col span="6">
+ <bs3:row>
+ <bs3:col span="12">
+ <cpt:fieldSet name="Annotated" id="annotation"/>
+ <cpt:fieldSet name="Contributed" id="contributed"/>
+ <cpt:fieldSet name="Meta-annotated" id="meta-annotated"/>
+ <cpt:fieldSet name="Meta-annotated Overridden" id="meta-annotated-overridden"/>
+ </bs3:col>
+ </bs3:row>
+ <bs3:row>
+ <bs3:col span="12">
+ <cpt:collection id="interactionExecutions"/>
+ <cpt:collection id="publishedObjects"/>
+ </bs3:col>
+ </bs3:row>
+ <bs3:row>
+ <bs3:col span="12">
+ <cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
+ </bs3:col>
+ </bs3:row>
+ </bs3:col>
+ <bs3:col span="6">
+ <cpt:fieldSet name="Description" id="description" >
+ <cpt:action id="clearHints" position="PANEL" />
+ <cpt:action id="downloadLayoutXml" position="PANEL_DROPDOWN"/>
+ <cpt:action id="rebuildMetamodel" position="PANEL_DROPDOWN"/>
+ <cpt:action id="downloadMetamodelXml" position="PANEL_DROPDOWN"/>
+ <cpt:action id="inspectMetamodel" position="PANEL_DROPDOWN"/>
+ <cpt:action id="downloadJdoMetadata" position="PANEL_DROPDOWN"/>
+ <cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+ <cpt:property id="description"/>
+ </cpt:fieldSet>
+ </bs3:col>
+ </bs3:row>
+ <bs3:row>
+ <bs3:col span="12" unreferencedCollections="true"/>
+ </bs3:row>
+
+</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/ActionPublishingJdoEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/ActionPublishingJdoEntities.java
new file mode 100644
index 0000000..5648337
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/ActionPublishingJdoEntities.java
@@ -0,0 +1,31 @@
+package demoapp.dom.annotDomain.Action.publishing;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+
+import javax.inject.Inject;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+
+@Service
+public class ActionPublishingJdoEntities {
+
+ public Optional<ActionPublishingJdo> find(final String value) {
+ return repositoryService.firstMatch(ActionPublishingJdo.class, x -> Objects.equals(x.getProperty(), value));
+ }
+
+ public List<ActionPublishingJdo> all() {
+ return repositoryService.allInstances(ActionPublishingJdo.class);
+ }
+
+ public ActionPublishingJdo first() {
+ return all().stream().findFirst().get();
+ }
+
+ @Inject
+ RepositoryService repositoryService;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/ActionPublishingJdoSeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/ActionPublishingJdoSeedService.java
new file mode 100644
index 0000000..1e015e5
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/ActionPublishingJdoSeedService.java
@@ -0,0 +1,39 @@
+package demoapp.dom.annotDomain.Action.publishing;
+
+import javax.inject.Inject;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
+
+import demoapp.dom._infra.seed.SeedServiceAbstract;
+import demoapp.dom.types.Samples;
+
+@Service
+public class ActionPublishingJdoSeedService extends SeedServiceAbstract {
+
+ public ActionPublishingJdoSeedService() {
+ super(PropertyPublishingJdoEntityFixture::new);
+ }
+
+ static class PropertyPublishingJdoEntityFixture extends FixtureScript {
+
+ @Override
+ protected void execute(ExecutionContext executionContext) {
+ samples.stream()
+ .map(ActionPublishingJdo::new)
+ .forEach(domainObject -> {
+ repositoryService.persist(domainObject);
+ executionContext.addResult(this, domainObject);
+ });
+
+ }
+
+ @Inject
+ RepositoryService repositoryService;
+
+ @Inject
+ Samples<String> samples;
+ }
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/spiimpl/ActionPublishingJdo_clearInteractionExecutions.java b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/spiimpl/ActionPublishingJdo_clearInteractionExecutions.java
new file mode 100644
index 0000000..071785b
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/spiimpl/ActionPublishingJdo_clearInteractionExecutions.java
@@ -0,0 +1,32 @@
+package demoapp.dom.annotDomain.Action.publishing.spiimpl;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.schema.ixn.v2.InteractionDto;
+
+import demoapp.dom.annotDomain.Action.publishing.ActionPublishingJdo;
+
+@Action(
+ semantics = SemanticsOf.IDEMPOTENT
+ , associateWith = "interactionExecutions"
+)
+public class ActionPublishingJdo_clearInteractionExecutions {
+
+ private final ActionPublishingJdo actionPublishingJdo;
+
+ public ActionPublishingJdo_clearInteractionExecutions(ActionPublishingJdo actionPublishingJdo) {
+ this.actionPublishingJdo = actionPublishingJdo;
+ }
+
+ public List<InteractionDto> act() {
+ publisherServiceSpiForActions.clear();
+ return (List<InteractionDto>) actionPublishingJdo;
+ }
+
+ @Inject
+ private PublisherServiceSpiForActions publisherServiceSpiForActions;
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/spiimpl/ActionPublishingJdo_interactionExecutions.java b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/spiimpl/ActionPublishingJdo_interactionExecutions.java
new file mode 100644
index 0000000..b39ccba
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/spiimpl/ActionPublishingJdo_interactionExecutions.java
@@ -0,0 +1,30 @@
+package demoapp.dom.annotDomain.Action.publishing.spiimpl;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.Collection;
+import org.apache.isis.schema.ixn.v2.InteractionDto;
+
+import demoapp.dom.annotDomain.Action.publishing.ActionPublishingJdo;
+
+@Collection
+public class ActionPublishingJdo_interactionExecutions {
+
+ private final ActionPublishingJdo actionPublishingJdo;
+
+ public ActionPublishingJdo_interactionExecutions(ActionPublishingJdo actionPublishingJdo) {
+ this.actionPublishingJdo = actionPublishingJdo;
+ }
+
+ public List<InteractionDto> coll() {
+ return publisherServiceSpiForActions
+ .streamInteractionDtos()
+ .collect(Collectors.toList());
+ }
+
+ @Inject
+ private PublisherServiceSpiForActions publisherServiceSpiForActions;
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/spiimpl/PublisherServiceSpiForActions.java b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/spiimpl/PublisherServiceSpiForActions.java
new file mode 100644
index 0000000..5b08b64
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Action/publishing/spiimpl/PublisherServiceSpiForActions.java
@@ -0,0 +1,41 @@
+package demoapp.dom.annotDomain.Action.publishing.spiimpl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Stream;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.iactn.Interaction;
+import org.apache.isis.applib.services.publish.PublishedObjects;
+import org.apache.isis.applib.services.publish.PublisherService;
+import org.apache.isis.applib.util.schema.InteractionDtoUtils;
+import org.apache.isis.schema.ixn.v2.InteractionDto;
+
+@Service
+public class PublisherServiceSpiForActions implements PublisherService {
+
+ private final List<InteractionDto> executions = new ArrayList<>();
+
+ @Override
+ public void publish(Interaction.Execution<?, ?> execution) {
+
+ final InteractionDto dto =
+ InteractionDtoUtils.newInteractionDto(execution, InteractionDtoUtils.Strategy.DEEP);
+
+ executions.add(dto);
+ }
+
+ @Override
+ public void publish(PublishedObjects publishedObjects) {
+ }
+
+ public Stream<InteractionDto> streamInteractionDtos() {
+ return executions.stream();
+ }
+
+ public void clear() {
+ executions.clear();
+ }
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/DomainObjectMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/DomainObjectMenu.java
index 0008dd0..8df34bc 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/DomainObjectMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/DomainObjectMenu.java
@@ -20,18 +20,28 @@ package demoapp.dom.annotDomain.DomainObject;
import javax.inject.Inject;
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.services.clock.ClockService;
-import org.apache.isis.applib.value.Blob;
+import org.apache.isis.applib.annotation.SemanticsOf;
import lombok.extern.log4j.Log4j2;
-import demoapp.dom.types.Samples;
+import demoapp.dom.annotDomain.DomainObject.publishing.DomainObjectPublishingJdo;
+import demoapp.dom.annotDomain.DomainObject.publishing.DomainObjectPublishingJdoEntities;
@DomainService(nature=NatureOfService.VIEW, objectType = "demo.DomainObjectMenu")
@Log4j2
public class DomainObjectMenu {
+ @Action(semantics = SemanticsOf.SAFE)
+ @ActionLayout(cssClassFa="fa-book", describedAs = "Object changed events as XML")
+ public DomainObjectPublishingJdo publishing(){
+ return domainObjectPublishingJdoEntities.first();
+ }
+
+ @Inject
+ DomainObjectPublishingJdoEntities domainObjectPublishingJdoEntities;
}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/.gitkeep b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectDisabledMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectDisabledMetaAnnotation.java
new file mode 100644
index 0000000..7b15570
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectDisabledMetaAnnotation.java
@@ -0,0 +1,23 @@
+package demoapp.dom.annotDomain.DomainObject.publishing;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.Publishing;
+
+//tag::class[]
+@DomainObject(publishing = Publishing.DISABLED) // <.>
+@Inherited
+@Target({
+ ElementType.TYPE // <.>
+})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface DomainObjectDisabledMetaAnnotation {
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectEnabledMetaAnnotation.java b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectEnabledMetaAnnotation.java
new file mode 100644
index 0000000..8f438ee
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectEnabledMetaAnnotation.java
@@ -0,0 +1,23 @@
+package demoapp.dom.annotDomain.DomainObject.publishing;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.Publishing;
+
+//tag::class[]
+@DomainObject(publishing = Publishing.ENABLED) // <.>
+@Inherited
+@Target({
+ ElementType.TYPE // <.>
+})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface DomainObjectEnabledMetaAnnotation {
+
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectPublishingJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectPublishingJdo-description.adoc
new file mode 100644
index 0000000..c62d177
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectPublishingJdo-description.adoc
@@ -0,0 +1,74 @@
+CAUTION: todo - to update.
+
+//The `editing` semantic specifies that a property's value can be changed through the UI:
+//
+//* for properties, the semantic can be specified using either the `@Property` annotation, or a meta-annotation
+//
+//There is no corresponding semantic for parameters, parameters are implicitly editable.
+//
+//== Class Level
+//
+//Usually editing of properties is discouraged; it is usually better to modify state through an explicit action instead.
+//For that reason, editing of properties is disabled by default (though that can be changed globally if necessary using the `isis.applib.annotation.domain-object.editing` configuration property).
+//
+//Editing can also be specified at the class level.
+//This will override any configured defaults, but just for the properties of that class:
+//
+//[source,java,indent=0]
+//----
+//include::PropertyEditingVm.java[tags=class]
+//----
+//
+//The property-level semantic can, in turn, overrides the configured or class-level default.
+//
+//
+//== Annotated
+//
+//The `editing` semantic can be specified explicitly using an annotation:
+//
+//* for properties, using `@Property#editing()`:
+//+
+//[source,java,indent=0]
+//----
+//include::PropertyEditingVm.java[tags=annotation]
+//----
+//<.> explicitly specifies the maximum length that can be entered for the property
+//
+//The annotation could also be applied to a mixin, but would have little effect because mixin properties are always read-only.
+//
+//== Meta-annotated
+//
+//The `editing` semantic can also be specified using a custom meta-annotation:
+//
+//* the meta-annotation is defined as:
+//+
+//[source,java]
+//----
+//include::EditingEnabledMetaAnnotation.java[tags=class]
+//----
+//<.> annotated for a property
+//<.> annotation can be applied to a property (either its getter or the field directly)
+//
+//* and can be applied to a property:
+//+
+//[source,java,indent=0]
+//----
+//include::PropertyEditingVm.java[tags=meta-annotated]
+//----
+//<.> semantic is inherited from the meta-annotation
+//
+//
+//
+//=== Meta-annotated Overridden
+//
+//The meta-annotation can itself be overridden:
+//
+//* in a property:
+//+
+//[source,java,indent=0]
+//----
+//include::PropertyEditingVm.java[tags=meta-annotated-overridden]
+//----
+//<.> semantic from meta-annotation ...
+//<.> \... is overridden by the `@Property` annotation
+//
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectPublishingJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectPublishingJdo.java
new file mode 100644
index 0000000..e2726cb
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectPublishingJdo.java
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package demoapp.dom.annotDomain.DomainObject.publishing;
+
+import javax.jdo.annotations.DatastoreIdentity;
+import javax.jdo.annotations.IdGeneratorStrategy;
+import javax.jdo.annotations.IdentityType;
+import javax.jdo.annotations.PersistenceCapable;
+import javax.xml.bind.annotation.XmlElement;
+
+import org.apache.isis.applib.annotation.Action;
+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.MemberOrder;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Publishing;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
+//tag::class[]
+@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
+@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
+@DomainObject(
+ nature=Nature.JDO_ENTITY
+ , objectType = "demo.DomainObjectPublishingJdo"
+ , editing = Editing.ENABLED
+ , publishing = Publishing.ENABLED // <.>
+)
+@DomainObjectLayout(
+ describedAs =
+ "@DomainObject(publishing=ENABLED)"
+)
+public class DomainObjectPublishingJdo implements HasAsciiDocDescription {
+ // ...
+//end::class[]
+
+ public DomainObjectPublishingJdo(String initialValue) {
+ this.property = initialValue;
+ }
+
+ public String title() {
+ return "DomainObject#publishing";
+ }
+
+//tag::property[]
+ @Property()
+ @MemberOrder(name = "general", sequence = "1")
+ @Getter @Setter
+ private String property;
+//end::property[]
+
+//tag::action[]
+ @Action(
+ semantics = SemanticsOf.IDEMPOTENT
+ , associateWith = "property"
+ )
+ @MemberOrder(name = "annotation", sequence = "1")
+ public DomainObjectPublishingJdo updateProperty(final String value) {
+ setProperty(value);
+ return this;
+ }
+//end::action[]
+
+//tag::class[]
+}
+//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectPublishingJdo.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectPublishingJdo.layout.xml
new file mode 100644
index 0000000..cc21592
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectPublishingJdo.layout.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<bs3:grid
+ xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd"
+ xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3"
+ xmlns:cpt="http://isis.apache.org/applib/layout/component"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <bs3:row>
+ <bs3:col span="10" unreferencedActions="true">
+ <cpt:domainObject />
+ <cpt:action id="rebuildMetamodel"/>
+ </bs3:col>
+ <bs3:col span="2">
+ <cpt:fieldSet name="" id="sources" />
+ </bs3:col>
+ </bs3:row>
+
+ <bs3:row>
+ <bs3:col span="6">
+ <bs3:row>
+ <bs3:col span="12">
+ <cpt:fieldSet name="General" id="general"/>
+ </bs3:col>
+ </bs3:row>
+ <bs3:row>
+ <bs3:col span="12">
+ <cpt:collection id="publishedObjects"/>
+ </bs3:col>
+ </bs3:row>
+ <bs3:row>
+ <bs3:col span="12">
+ <cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
+ </bs3:col>
+ </bs3:row>
+ </bs3:col>
+ <bs3:col span="6">
+ <cpt:fieldSet name="Description" id="description" >
+ <cpt:action id="clearHints" position="PANEL" />
+ <cpt:action id="downloadLayoutXml" position="PANEL_DROPDOWN"/>
+ <cpt:action id="rebuildMetamodel" position="PANEL_DROPDOWN"/>
+ <cpt:action id="downloadMetamodelXml" position="PANEL_DROPDOWN"/>
+ <cpt:action id="inspectMetamodel" position="PANEL_DROPDOWN"/>
+ <cpt:action id="downloadJdoMetadata" position="PANEL_DROPDOWN"/>
+ <cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+ <cpt:property id="description"/>
+ </cpt:fieldSet>
+ </bs3:col>
+ </bs3:row>
+ <bs3:row>
+ <bs3:col span="12" unreferencedCollections="true"/>
+ </bs3:row>
+
+</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectPublishingJdoEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectPublishingJdoEntities.java
new file mode 100644
index 0000000..f0194b1
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectPublishingJdoEntities.java
@@ -0,0 +1,31 @@
+package demoapp.dom.annotDomain.DomainObject.publishing;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+
+import javax.inject.Inject;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+
+@Service
+public class DomainObjectPublishingJdoEntities {
+
+ public Optional<DomainObjectPublishingJdo> find(final String value) {
+ return repositoryService.firstMatch(DomainObjectPublishingJdo.class, x -> Objects.equals(x.getProperty(), value));
+ }
+
+ public List<DomainObjectPublishingJdo> all() {
+ return repositoryService.allInstances(DomainObjectPublishingJdo.class);
+ }
+
+ public DomainObjectPublishingJdo first() {
+ return all().stream().findFirst().get();
+ }
+
+ @Inject
+ RepositoryService repositoryService;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectPublishingJdoSeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectPublishingJdoSeedService.java
new file mode 100644
index 0000000..27ef179
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectPublishingJdoSeedService.java
@@ -0,0 +1,39 @@
+package demoapp.dom.annotDomain.DomainObject.publishing;
+
+import javax.inject.Inject;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
+
+import demoapp.dom._infra.seed.SeedServiceAbstract;
+import demoapp.dom.types.Samples;
+
+@Service
+public class DomainObjectPublishingJdoSeedService extends SeedServiceAbstract {
+
+ public DomainObjectPublishingJdoSeedService() {
+ super(PropertyPublishingJdoEntityFixture::new);
+ }
+
+ static class PropertyPublishingJdoEntityFixture extends FixtureScript {
+
+ @Override
+ protected void execute(ExecutionContext executionContext) {
+ samples.stream()
+ .map(DomainObjectPublishingJdo::new)
+ .forEach(domainObject -> {
+ repositoryService.persist(domainObject);
+ executionContext.addResult(this, domainObject);
+ });
+
+ }
+
+ @Inject
+ RepositoryService repositoryService;
+
+ @Inject
+ Samples<String> samples;
+ }
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/spiimpl/DomainObjectPublishingJdo_clearPublishedObjects.java b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/spiimpl/DomainObjectPublishingJdo_clearPublishedObjects.java
new file mode 100644
index 0000000..6e8f888
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/spiimpl/DomainObjectPublishingJdo_clearPublishedObjects.java
@@ -0,0 +1,30 @@
+package demoapp.dom.annotDomain.DomainObject.publishing.spiimpl;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import demoapp.dom.annotDomain.DomainObject.publishing.DomainObjectPublishingJdo;
+import demoapp.dom.annotDomain.Property.publishing.spiimpl.PublisherServiceSpiForProperties;
+
+@Action(
+ semantics = SemanticsOf.IDEMPOTENT
+ , associateWith = "publishedObjects"
+)
+public class DomainObjectPublishingJdo_clearPublishedObjects {
+
+ private final DomainObjectPublishingJdo domainObjectPublishingJdo;
+
+ public DomainObjectPublishingJdo_clearPublishedObjects(DomainObjectPublishingJdo domainObjectPublishingJdo) {
+ this.domainObjectPublishingJdo = domainObjectPublishingJdo;
+ }
+
+ public DomainObjectPublishingJdo act() {
+ publisherServiceSpiForDomainObject.clear();
+ return domainObjectPublishingJdo;
+ }
+
+ @Inject
+ private PublisherServiceSpiForDomainObject publisherServiceSpiForDomainObject;
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/spiimpl/DomainObjectPublishingJdo_publishedObjects.java b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/spiimpl/DomainObjectPublishingJdo_publishedObjects.java
new file mode 100644
index 0000000..1c2500e
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/spiimpl/DomainObjectPublishingJdo_publishedObjects.java
@@ -0,0 +1,29 @@
+package demoapp.dom.annotDomain.DomainObject.publishing.spiimpl;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.Collection;
+import org.apache.isis.schema.chg.v2.ChangesDto;
+
+import demoapp.dom.annotDomain.DomainObject.publishing.DomainObjectPublishingJdo;
+
+@Collection
+public class DomainObjectPublishingJdo_publishedObjects {
+
+ private final DomainObjectPublishingJdo domainObjectPublishingJdo;
+ public DomainObjectPublishingJdo_publishedObjects(DomainObjectPublishingJdo domainObjectPublishingJdo) {
+ this.domainObjectPublishingJdo = domainObjectPublishingJdo;
+ }
+
+ public List<ChangesDto> coll() {
+ return publisherServiceSpiForDomainObject
+ .streamPublishedObjects()
+ .collect(Collectors.toList());
+ }
+
+ @Inject
+ private PublisherServiceSpiForDomainObject publisherServiceSpiForDomainObject;
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/spiimpl/PublisherServiceSpiForDomainObject.java b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/spiimpl/PublisherServiceSpiForDomainObject.java
new file mode 100644
index 0000000..9873f45
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/spiimpl/PublisherServiceSpiForDomainObject.java
@@ -0,0 +1,39 @@
+package demoapp.dom.annotDomain.DomainObject.publishing.spiimpl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Stream;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.iactn.Interaction;
+import org.apache.isis.applib.services.publish.PublishedObjects;
+import org.apache.isis.applib.services.publish.PublisherService;
+import org.apache.isis.applib.util.schema.InteractionDtoUtils;
+import org.apache.isis.schema.chg.v2.ChangesDto;
+import org.apache.isis.schema.ixn.v2.InteractionDto;
+
+@Service
+public class PublisherServiceSpiForDomainObject implements PublisherService {
+
+ private final List<ChangesDto> publishedObjects = new ArrayList<ChangesDto>();
+
+ @Override
+ public void publish(Interaction.Execution<?, ?> execution) {
+ }
+
+ @Override
+ public void publish(PublishedObjects publishedObjects) {
+ final ChangesDto dto = publishedObjects.getDto();
+ this.publishedObjects.add(dto);
+ }
+
+ public Stream<ChangesDto> streamPublishedObjects() {
+ return publishedObjects.stream();
+ }
+
+ public void clear() {
+ publishedObjects.clear();
+ }
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Property/PropertyMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Property/PropertyMenu.java
index 814f1d3..b97d5c3 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Property/PropertyMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Property/PropertyMenu.java
@@ -41,6 +41,8 @@ import demoapp.dom.annotDomain.Property.hidden.child.PropertyHiddenChildVm;
import demoapp.dom.annotDomain.Property.maxLength.PropertyMaxLengthVm;
import demoapp.dom.annotDomain.Property.mustSatisfy.PropertyMustSatisfyVm;
import demoapp.dom.annotDomain.Property.optionality.PropertyOptionalityVm;
+import demoapp.dom.annotDomain.Property.publishing.PropertyPublishingJdo;
+import demoapp.dom.annotDomain.Property.publishing.PropertyPublishingJdoEntities;
import demoapp.dom.annotDomain.Property.regexPattern.PropertyRegexPatternVm;
import demoapp.dom.types.Samples;
@@ -127,6 +129,12 @@ public class PropertyMenu {
}
@Action(semantics = SemanticsOf.SAFE)
+ @ActionLayout(cssClassFa="fa-book", describedAs = "Property changed events as XML")
+ public PropertyPublishingJdo publishing(){
+ return propertyPublishingJdoEntities.first();
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
@ActionLayout(cssClassFa="fa-equals", describedAs = "Regular expressions, such as email")
public PropertyRegexPatternVm regexPattern(){
val vm = new PropertyRegexPatternVm();
@@ -154,5 +162,7 @@ public class PropertyMenu {
Samples<Blob> blobSamples;
@Inject
Samples<Clob> clobSamples;
+ @Inject
+ PropertyPublishingJdoEntities propertyPublishingJdoEntities;
}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Property/publishing/.gitkeep b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Property/publishing/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Property/publishing/spiimpl/PropertyPublishingJdo_clearInteractionExecutions.java b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Property/publishing/spiimpl/PropertyPublishingJdo_clearInteractionExecutions.java
new file mode 100644
index 0000000..0762216
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/annotDomain/Property/publishing/spiimpl/PropertyPublishingJdo_clearInteractionExecutions.java
@@ -0,0 +1,34 @@
+package demoapp.dom.annotDomain.Property.publishing.spiimpl;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.Collection;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.schema.ixn.v2.InteractionDto;
+
+import demoapp.dom.annotDomain.Property.publishing.PropertyPublishingJdo;
+
+@Action(
+ semantics = SemanticsOf.IDEMPOTENT
+ , associateWith = "interactionExecutions"
+)
+public class PropertyPublishingJdo_clearInteractionExecutions {
+
+ private final PropertyPublishingJdo propertyPublishingJdo;
+
+ public PropertyPublishingJdo_clearInteractionExecutions(PropertyPublishingJdo propertyPublishingJdo) {
+ this.propertyPublishingJdo = propertyPublishingJdo;
+ }
+
+ public List<InteractionDto> act() {
+ publisherServiceSpiForProperties.clear();
+ return (List<InteractionDto>) propertyPublishingJdo;
+ }
+
+ @Inject
+ private PublisherServiceSpiForProperties publisherServiceSpiForProperties;
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
index d041e7f..984efc2 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
@@ -15,10 +15,10 @@ as a replacement for
<mb3:named>Basic Types</mb3:named>
<mb3:section>
<mb3:named>Primitives</mb3:named>
- <mb3:serviceAction objectType="demo.PrimitiveTypesMenu" id="bytes"/>
<mb3:serviceAction objectType="demo.PrimitiveTypesMenu" id="shorts"/>
<mb3:serviceAction objectType="demo.PrimitiveTypesMenu" id="ints"/>
<mb3:serviceAction objectType="demo.PrimitiveTypesMenu" id="longs"/>
+ <mb3:serviceAction objectType="demo.PrimitiveTypesMenu" id="bytes"/>
<mb3:serviceAction objectType="demo.PrimitiveTypesMenu" id="floats"/>
<mb3:serviceAction objectType="demo.PrimitiveTypesMenu" id="doubles"/>
<mb3:serviceAction objectType="demo.PrimitiveTypesMenu" id="chars"/>
@@ -107,9 +107,14 @@ as a replacement for
<mb3:menu>
<mb3:named>Domain Annotations</mb3:named>
<mb3:section>
+ <mb3:named>@DomainObject</mb3:named>
+ <mb3:serviceAction objectType="demo.DomainObjectMenu" id="publishing"/>
+ </mb3:section>
+ <mb3:section>
<mb3:named>@Action</mb3:named>
<mb3:serviceAction objectType="demo.ActionMenu" id="associateWith"/>
<mb3:serviceAction objectType="demo.ActionMenu" id="domainEvent"/>
+ <mb3:serviceAction objectType="demo.ActionMenu" id="hidden"/>
<mb3:serviceAction objectType="demo.ActionMenu" id="typeOf"/>
</mb3:section>
<mb3:section>
@@ -121,6 +126,7 @@ as a replacement for
<mb3:serviceAction objectType="demo.PropertyMenu" id="maxLength"/>
<mb3:serviceAction objectType="demo.PropertyMenu" id="mustSatisfy"/>
<mb3:serviceAction objectType="demo.PropertyMenu" id="optionality"/>
+ <mb3:serviceAction objectType="demo.PropertyMenu" id="publishing"/>
<mb3:serviceAction objectType="demo.PropertyMenu" id="regexPattern"/>
</mb3:section>
</mb3:menu>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/jdo/JavaLangStringJdoEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/jdo/JavaLangStringJdoEntities.java
index 01e63f5..a3769d7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/jdo/JavaLangStringJdoEntities.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/jdo/JavaLangStringJdoEntities.java
@@ -1,6 +1,7 @@
package demoapp.dom.types.javalang.strings.jdo;
import java.util.List;
+import java.util.Objects;
import java.util.Optional;
import javax.inject.Inject;
@@ -13,7 +14,7 @@ import org.apache.isis.applib.services.repository.RepositoryService;
public class JavaLangStringJdoEntities {
public Optional<JavaLangStringJdo> find(final String readOnlyProperty) {
- return repositoryService.firstMatch(JavaLangStringJdo.class, x -> x.getReadOnlyProperty() == readOnlyProperty);
+ return repositoryService.firstMatch(JavaLangStringJdo.class, x -> Objects.equals(x.getReadOnlyProperty(), readOnlyProperty));
}
public List<JavaLangStringJdo> all() {
[isis] 01/02: ISIS-2422: adds support for schema DTOs as value
types.
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch ISIS-2222
in repository https://gitbox.apache.org/repos/asf/isis.git
commit ae58e1ac5e78b96a2a92976590736ac67ddfb7d7
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Aug 17 08:21:39 2020 +0100
ISIS-2422: adds support for schema DTOs as value types.
... and extends asciidoc wicket component to render prettily
---
.../core/metamodel/IsisModuleCoreMetamodel.java | 6 +-
.../facets/schema/IsisSchemaMetaModelRefiner.java | 47 +++++++++
.../facets/schema/IsisSchemaValueTypeProvider.java | 46 +++++++++
.../facets/schema/chg/ChangesDtoValueFacet.java | 20 ++--
...DtoValueFacetUsingSemanticsProviderFactory.java | 41 ++++++++
.../chg/v2/ChangesDtoValueSemanticsProvider.java | 110 ++++++++++++++++++++
.../facets/schema/cmd/CommandDtoValueFacet.java | 20 ++--
...DtoValueFacetUsingSemanticsProviderFactory.java | 41 ++++++++
.../cmd/v2/CommandDtoValueSemanticsProvider.java | 113 +++++++++++++++++++++
.../schema/ixn/InteractionDtoValueFacet.java | 20 ++--
...DtoValueFacetUsingSemanticsProviderFactory.java | 41 ++++++++
.../v2/InteractionDtoValueSemanticsProvider.java | 110 ++++++++++++++++++++
.../ui/wkt/IsisModuleValAsciidocUiWkt.java | 9 ++
.../AsciiDocForXmlComponentWkt.java} | 38 ++++---
.../wkt/components/AsciiDocPanelFactoriesWkt.java | 5 +-
.../schema/chg/v2/ChangesDtoComponentWkt.java} | 33 +++---
.../chg/v2/ChangesDtoPanelFactoriesWkt.java} | 33 ++----
.../schema/cmd/v2/CommandDtoComponentWkt.java} | 33 +++---
.../cmd/v2/CommandDtoPanelFactoriesWkt.java} | 33 ++----
.../schema/ixn/v2/InteractionDtoComponentWkt.java} | 33 +++---
.../ixn/v2/InteractionDtoPanelFactoriesWkt.java} | 33 ++----
.../components/scalars/markup/MarkupComponent.java | 16 ++-
22 files changed, 710 insertions(+), 171 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
index 3b34bde..1e2b3af 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
@@ -24,6 +24,8 @@ import org.springframework.context.annotation.Import;
import org.apache.isis.applib.IsisModuleApplib;
import org.apache.isis.core.config.IsisModuleCoreConfig;
import org.apache.isis.core.metamodel.context.MetaModelContexts;
+import org.apache.isis.core.metamodel.facets.schema.IsisSchemaMetaModelRefiner;
+import org.apache.isis.core.metamodel.facets.schema.IsisSchemaValueTypeProvider;
import org.apache.isis.core.metamodel.inspect.IsisModuleCoreMetamodelInspection;
import org.apache.isis.core.metamodel.objectmanager.ObjectManagerDefault;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModelInitFilterDefault;
@@ -99,7 +101,9 @@ import org.apache.isis.core.security.IsisModuleCoreSecurity;
// @Repository's
ApplicationFeatureRepositoryDefault.class,
-
+
+ IsisSchemaMetaModelRefiner.class,
+ IsisSchemaValueTypeProvider.class,
})
public class IsisModuleCoreMetamodel {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/IsisSchemaMetaModelRefiner.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/IsisSchemaMetaModelRefiner.java
new file mode 100644
index 0000000..111187f
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/IsisSchemaMetaModelRefiner.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.core.metamodel.facets.schema;
+
+import javax.inject.Named;
+
+import org.springframework.stereotype.Component;
+
+import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
+import org.apache.isis.core.metamodel.facets.schema.chg.v2.ChangesDtoValueFacetUsingSemanticsProviderFactory;
+import org.apache.isis.core.metamodel.facets.schema.cmd.v2.CommandDtoValueFacetUsingSemanticsProviderFactory;
+import org.apache.isis.core.metamodel.facets.schema.ixn.v2.InteractionDtoValueFacetUsingSemanticsProviderFactory;
+import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
+
+@Component
+@Named("isisMetaModel.isisSchema.MetaModelRefiner")
+public class IsisSchemaMetaModelRefiner implements MetaModelRefiner {
+ @Override
+ public void refineProgrammingModel(ProgrammingModel programmingModel) {
+ programmingModel.addFactory(
+ ProgrammingModel.FacetProcessingOrder.G1_VALUE_TYPES,
+ InteractionDtoValueFacetUsingSemanticsProviderFactory.class);
+ programmingModel.addFactory(
+ ProgrammingModel.FacetProcessingOrder.G1_VALUE_TYPES,
+ ChangesDtoValueFacetUsingSemanticsProviderFactory.class);
+ programmingModel.addFactory(
+ ProgrammingModel.FacetProcessingOrder.G1_VALUE_TYPES,
+ CommandDtoValueFacetUsingSemanticsProviderFactory.class);
+ }
+}
+
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/IsisSchemaValueTypeProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/IsisSchemaValueTypeProvider.java
new file mode 100644
index 0000000..01f96a3
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/IsisSchemaValueTypeProvider.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.core.metamodel.facets.schema;
+
+import java.util.Arrays;
+import java.util.Collection;
+
+import javax.inject.Named;
+
+import org.springframework.stereotype.Component;
+
+import org.apache.isis.core.metamodel.valuetypes.ValueTypeDefinition;
+import org.apache.isis.core.metamodel.valuetypes.ValueTypeProvider;
+import org.apache.isis.schema.chg.v2.ChangesDto;
+import org.apache.isis.schema.cmd.v2.CommandDto;
+import org.apache.isis.schema.common.v2.ValueType;
+import org.apache.isis.schema.ixn.v2.InteractionDto;
+
+@Component
+@Named("isisMetaModel.isisSchema.ValueTypeProvider")
+public class IsisSchemaValueTypeProvider implements ValueTypeProvider {
+ @Override
+ public Collection<ValueTypeDefinition> definitions() {
+ return Arrays.asList(
+ ValueTypeDefinition.of(InteractionDto.class, ValueType.STRING)
+ , ValueTypeDefinition.of(ChangesDto.class, ValueType.STRING)
+ , ValueTypeDefinition.of(CommandDto.class, ValueType.STRING)
+ );
+ }
+}
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/ChangesDtoValueFacet.java
similarity index 60%
copy from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/ChangesDtoValueFacet.java
index 0d09de0..e2aa514 100644
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/ChangesDtoValueFacet.java
@@ -16,19 +16,15 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.valuetypes.asciidoc.ui.wkt;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
+package org.apache.isis.core.metamodel.facets.schema.chg;
-import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib;
-import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
+
+public interface ChangesDtoValueFacet extends Facet {
+
+ String changesDtoValue(ManagedObject object);
+ ManagedObject createValue(ManagedObject object, String xml);
-@Configuration
-@Import({
- IsisModuleValAsciidocApplib.class,
- AsciiDocPanelFactoriesWkt.Parented.class,
- AsciiDocPanelFactoriesWkt.Standalone.class,
-})
-public class IsisModuleValAsciidocUiWkt {
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/v2/ChangesDtoValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/v2/ChangesDtoValueFacetUsingSemanticsProviderFactory.java
new file mode 100644
index 0000000..6d06b91
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/v2/ChangesDtoValueFacetUsingSemanticsProviderFactory.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.core.metamodel.facets.schema.chg.v2;
+
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProviderFactory;
+import org.apache.isis.schema.chg.v2.ChangesDto;
+
+import lombok.val;
+
+public class ChangesDtoValueFacetUsingSemanticsProviderFactory extends ValueFacetUsingSemanticsProviderFactory<ChangesDto> {
+
+ @Override
+ public void process(final ProcessClassContext processClassContext) {
+ final Class<?> type = processClassContext.getCls();
+ final FacetHolder holder = processClassContext.getFacetHolder();
+
+ if (!(ChangesDto.class.isAssignableFrom(type))) {
+ return;
+ }
+ val provider = new ChangesDtoValueSemanticsProvider(holder);
+ addFacets(provider);
+ }
+}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/v2/ChangesDtoValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/v2/ChangesDtoValueSemanticsProvider.java
new file mode 100644
index 0000000..0e1dd82
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/v2/ChangesDtoValueSemanticsProvider.java
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.core.metamodel.facets.schema.chg.v2;
+
+import org.apache.isis.applib.adapters.EncoderDecoder;
+import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.util.schema.ChangesDtoUtils;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.core.metamodel.facets.schema.chg.ChangesDtoValueFacet;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.schema.chg.v2.ChangesDto;
+
+import lombok.val;
+
+public class ChangesDtoValueSemanticsProvider
+extends ValueSemanticsProviderAndFacetAbstract<ChangesDto>
+implements ChangesDtoValueFacet {
+
+ private static final int TYPICAL_LENGTH = 0;
+
+ private static Class<? extends Facet> type() {
+ return ChangesDtoValueFacet.class;
+ }
+
+ private static final ChangesDto DEFAULT_VALUE = null;
+
+ /**
+ * Required because implementation of {@link Parser} and
+ * {@link EncoderDecoder}.
+ */
+ public ChangesDtoValueSemanticsProvider() {
+ this(null);
+ }
+
+ public ChangesDtoValueSemanticsProvider(final FacetHolder holder) {
+ super(type(), holder, ChangesDto.class, TYPICAL_LENGTH, -1, Immutability.IMMUTABLE, EqualByContent.NOT_HONOURED, DEFAULT_VALUE);
+ }
+
+
+ @Override
+ protected ChangesDto doParse(final Object context, final String str) {
+ return doRestore(str);
+ }
+
+ @Override
+ public String titleString(final Object object) {
+ if (object == null) return "[null]";
+ final ChangesDto changesDto = (ChangesDto) object;
+ return ChangesDtoUtils.toXml(changesDto);
+ }
+
+ @Override
+ public String titleStringWithMask(final Object value, final String usingMask) {
+ return titleString(value);
+ }
+
+
+ @Override
+ public String changesDtoValue(final ManagedObject object) {
+ if (object == null) {
+ return "";
+ }
+ val changesDto = (ChangesDto) object.getPojo();
+ return ChangesDtoUtils.toXml(changesDto);
+ }
+
+ @Override
+ public ManagedObject createValue(final ManagedObject object, final String xml) {
+ val changesDto = ChangesDtoUtils.fromXml(xml);
+ return getObjectManager().adapt(changesDto);
+ }
+
+
+ @Override
+ protected String doEncode(final Object object) {
+ val changesDto = (ChangesDto) object;
+ return ChangesDtoUtils.toXml(changesDto);
+ }
+
+ @Override
+ protected ChangesDto doRestore(final String xml) {
+ return ChangesDtoUtils.fromXml(xml);
+ }
+
+
+ @Override
+ public String toString() {
+ return "InteractionDtoValueSemanticsProvider";
+ }
+
+}
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/CommandDtoValueFacet.java
similarity index 60%
copy from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/CommandDtoValueFacet.java
index 0d09de0..12f2b85 100644
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/CommandDtoValueFacet.java
@@ -16,19 +16,15 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.valuetypes.asciidoc.ui.wkt;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
+package org.apache.isis.core.metamodel.facets.schema.cmd;
-import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib;
-import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
+
+public interface CommandDtoValueFacet extends Facet {
+
+ String commandDtoValue(ManagedObject object);
+ ManagedObject createValue(ManagedObject object, String xml);
-@Configuration
-@Import({
- IsisModuleValAsciidocApplib.class,
- AsciiDocPanelFactoriesWkt.Parented.class,
- AsciiDocPanelFactoriesWkt.Standalone.class,
-})
-public class IsisModuleValAsciidocUiWkt {
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/v2/CommandDtoValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/v2/CommandDtoValueFacetUsingSemanticsProviderFactory.java
new file mode 100644
index 0000000..b0d377a
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/v2/CommandDtoValueFacetUsingSemanticsProviderFactory.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.core.metamodel.facets.schema.cmd.v2;
+
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProviderFactory;
+import org.apache.isis.schema.cmd.v2.CommandDto;
+
+import lombok.val;
+
+public class CommandDtoValueFacetUsingSemanticsProviderFactory extends ValueFacetUsingSemanticsProviderFactory<CommandDto> {
+
+ @Override
+ public void process(final ProcessClassContext processClassContext) {
+ final Class<?> type = processClassContext.getCls();
+ final FacetHolder holder = processClassContext.getFacetHolder();
+
+ if (!(CommandDto.class.isAssignableFrom(type))) {
+ return;
+ }
+ val provider = new CommandDtoValueSemanticsProvider(holder);
+ addFacets(provider);
+ }
+}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/v2/CommandDtoValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/v2/CommandDtoValueSemanticsProvider.java
new file mode 100644
index 0000000..16f90e6
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/v2/CommandDtoValueSemanticsProvider.java
@@ -0,0 +1,113 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.core.metamodel.facets.schema.cmd.v2;
+
+import org.apache.isis.applib.adapters.EncoderDecoder;
+import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.util.schema.ChangesDtoUtils;
+import org.apache.isis.applib.util.schema.CommandDtoUtils;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.core.metamodel.facets.schema.cmd.CommandDtoValueFacet;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.schema.chg.v2.ChangesDto;
+import org.apache.isis.schema.cmd.v2.CommandDto;
+import org.apache.isis.schema.cmd.v2.CommandsDto;
+
+import lombok.val;
+
+public class CommandDtoValueSemanticsProvider
+extends ValueSemanticsProviderAndFacetAbstract<CommandDto>
+implements CommandDtoValueFacet {
+
+ private static final int TYPICAL_LENGTH = 0;
+
+ private static Class<? extends Facet> type() {
+ return CommandDtoValueFacet.class;
+ }
+
+ private static final CommandDto DEFAULT_VALUE = null;
+
+ /**
+ * Required because implementation of {@link Parser} and
+ * {@link EncoderDecoder}.
+ */
+ public CommandDtoValueSemanticsProvider() {
+ this(null);
+ }
+
+ public CommandDtoValueSemanticsProvider(final FacetHolder holder) {
+ super(type(), holder, CommandDto.class, TYPICAL_LENGTH, -1, Immutability.IMMUTABLE, EqualByContent.NOT_HONOURED, DEFAULT_VALUE);
+ }
+
+
+ @Override
+ protected CommandDto doParse(final Object context, final String str) {
+ return doRestore(str);
+ }
+
+ @Override
+ public String titleString(final Object object) {
+ if (object == null) return "[null]";
+ val commandDto = (CommandDto) object;
+ return CommandDtoUtils.toXml(commandDto);
+ }
+
+ @Override
+ public String titleStringWithMask(final Object value, final String usingMask) {
+ return titleString(value);
+ }
+
+
+ @Override
+ public String commandDtoValue(final ManagedObject object) {
+ if (object == null) {
+ return "";
+ }
+ val commandDto = (CommandDto) object.getPojo();
+ return CommandDtoUtils.toXml(commandDto);
+ }
+
+ @Override
+ public ManagedObject createValue(final ManagedObject object, final String xml) {
+ val commandDto = CommandDtoUtils.fromXml(xml);
+ return getObjectManager().adapt(commandDto);
+ }
+
+
+ @Override
+ protected String doEncode(final Object object) {
+ val commandDto = (CommandDto) object;
+ return CommandDtoUtils.toXml(commandDto);
+ }
+
+ @Override
+ protected CommandDto doRestore(final String xml) {
+ return CommandDtoUtils.fromXml(xml);
+ }
+
+
+ @Override
+ public String toString() {
+ return "InteractionDtoValueSemanticsProvider";
+ }
+
+}
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/InteractionDtoValueFacet.java
similarity index 60%
copy from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/InteractionDtoValueFacet.java
index 0d09de0..94145ae 100644
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/InteractionDtoValueFacet.java
@@ -16,19 +16,15 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.valuetypes.asciidoc.ui.wkt;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
+package org.apache.isis.core.metamodel.facets.schema.ixn;
-import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib;
-import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
+
+public interface InteractionDtoValueFacet extends Facet {
+
+ String interactionDtoValue(ManagedObject object);
+ ManagedObject createValue(ManagedObject object, String xml);
-@Configuration
-@Import({
- IsisModuleValAsciidocApplib.class,
- AsciiDocPanelFactoriesWkt.Parented.class,
- AsciiDocPanelFactoriesWkt.Standalone.class,
-})
-public class IsisModuleValAsciidocUiWkt {
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/v2/InteractionDtoValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/v2/InteractionDtoValueFacetUsingSemanticsProviderFactory.java
new file mode 100644
index 0000000..8113dc1
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/v2/InteractionDtoValueFacetUsingSemanticsProviderFactory.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.core.metamodel.facets.schema.ixn.v2;
+
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProviderFactory;
+import org.apache.isis.schema.ixn.v2.InteractionDto;
+
+import lombok.val;
+
+public class InteractionDtoValueFacetUsingSemanticsProviderFactory extends ValueFacetUsingSemanticsProviderFactory<InteractionDto> {
+
+ @Override
+ public void process(final ProcessClassContext processClassContext) {
+ final Class<?> type = processClassContext.getCls();
+ final FacetHolder holder = processClassContext.getFacetHolder();
+
+ if (!(InteractionDto.class.isAssignableFrom(type))) {
+ return;
+ }
+ val provider = new InteractionDtoValueSemanticsProvider(holder);
+ addFacets(provider);
+ }
+}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/v2/InteractionDtoValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/v2/InteractionDtoValueSemanticsProvider.java
new file mode 100644
index 0000000..82c3839
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/v2/InteractionDtoValueSemanticsProvider.java
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.core.metamodel.facets.schema.ixn.v2;
+
+import org.apache.isis.applib.adapters.EncoderDecoder;
+import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.util.schema.InteractionDtoUtils;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.core.metamodel.facets.schema.ixn.InteractionDtoValueFacet;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.schema.ixn.v2.InteractionDto;
+
+import lombok.val;
+
+public class InteractionDtoValueSemanticsProvider
+extends ValueSemanticsProviderAndFacetAbstract<InteractionDto>
+implements InteractionDtoValueFacet {
+
+ private static final int TYPICAL_LENGTH = 0;
+
+ private static Class<? extends Facet> type() {
+ return InteractionDtoValueFacet.class;
+ }
+
+ private static final InteractionDto DEFAULT_VALUE = null;
+
+ /**
+ * Required because implementation of {@link Parser} and
+ * {@link EncoderDecoder}.
+ */
+ public InteractionDtoValueSemanticsProvider() {
+ this(null);
+ }
+
+ public InteractionDtoValueSemanticsProvider(final FacetHolder holder) {
+ super(type(), holder, InteractionDto.class, TYPICAL_LENGTH, -1, Immutability.IMMUTABLE, EqualByContent.NOT_HONOURED, DEFAULT_VALUE);
+ }
+
+
+ @Override
+ protected InteractionDto doParse(final Object context, final String str) {
+ return doRestore(str);
+ }
+
+ @Override
+ public String titleString(final Object object) {
+ if (object == null) return "[null]";
+ final InteractionDto interactionDto = (InteractionDto) object;
+ return InteractionDtoUtils.toXml(interactionDto);
+ }
+
+ @Override
+ public String titleStringWithMask(final Object value, final String usingMask) {
+ return titleString(value);
+ }
+
+
+ @Override
+ public String interactionDtoValue(final ManagedObject object) {
+ if (object == null) {
+ return "";
+ }
+ val interactionDto = (InteractionDto) object.getPojo();
+ return InteractionDtoUtils.toXml(interactionDto);
+ }
+
+ @Override
+ public ManagedObject createValue(final ManagedObject object, final String xml) {
+ val interactionDto = InteractionDtoUtils.fromXml(xml);
+ return getObjectManager().adapt(interactionDto);
+ }
+
+
+ @Override
+ protected String doEncode(final Object object) {
+ val interactionDto = (InteractionDto) object;
+ return InteractionDtoUtils.toXml(interactionDto);
+ }
+
+ @Override
+ protected InteractionDto doRestore(final String xml) {
+ return InteractionDtoUtils.fromXml(xml);
+ }
+
+
+ @Override
+ public String toString() {
+ return "InteractionDtoValueSemanticsProvider";
+ }
+
+}
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
index 0d09de0..3dea07c 100644
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
+++ b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
@@ -23,12 +23,21 @@ import org.springframework.context.annotation.Import;
import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib;
import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt;
+import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.chg.v2.ChangesDtoPanelFactoriesWkt;
+import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.cmd.v2.CommandDtoPanelFactoriesWkt;
+import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.ixn.v2.InteractionDtoPanelFactoriesWkt;
@Configuration
@Import({
IsisModuleValAsciidocApplib.class,
AsciiDocPanelFactoriesWkt.Parented.class,
AsciiDocPanelFactoriesWkt.Standalone.class,
+ InteractionDtoPanelFactoriesWkt.Parented.class,
+ InteractionDtoPanelFactoriesWkt.Standalone.class,
+ ChangesDtoPanelFactoriesWkt.Parented.class,
+ ChangesDtoPanelFactoriesWkt.Standalone.class,
+ CommandDtoPanelFactoriesWkt.Parented.class,
+ CommandDtoPanelFactoriesWkt.Standalone.class,
})
public class IsisModuleValAsciidocUiWkt {
}
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocForXmlComponentWkt.java
similarity index 50%
copy from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
copy to valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocForXmlComponentWkt.java
index 0d09de0..1119309 100644
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
+++ b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocForXmlComponentWkt.java
@@ -16,19 +16,33 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.valuetypes.asciidoc.ui.wkt;
+package org.apache.isis.valuetypes.asciidoc.ui.wkt.components;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
+import org.apache.wicket.model.IModel;
-import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib;
-import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt;
+import org.apache.isis.applib.util.schema.CommandDtoUtils;
+import org.apache.isis.schema.cmd.v2.CommandDto;
+import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
+
+import lombok.val;
+
+public class AsciiDocForXmlComponentWkt extends AsciiDocComponentWkt {
+
+ private static final long serialVersionUID = 1L;
+
+ public AsciiDocForXmlComponentWkt(String id, IModel<?> model) {
+ super(id, model);
+ setEnabled(false);
+ }
+
+ /**
+ * for convenience of subtypes.
+ * @param xml
+ * @return
+ */
+ protected final String asHtml(String xml) {
+ val adoc = "[source,xml]\n----\n" + xml + "\n----";
+ return AsciiDoc.valueOfAdoc(adoc).asHtml();
+ }
-@Configuration
-@Import({
- IsisModuleValAsciidocApplib.class,
- AsciiDocPanelFactoriesWkt.Parented.class,
- AsciiDocPanelFactoriesWkt.Standalone.class,
-})
-public class IsisModuleValAsciidocUiWkt {
}
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java
index 1a58f4a..fae7df5 100644
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java
+++ b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java
@@ -69,10 +69,7 @@ public class AsciiDocPanelFactoriesWkt {
@Override
protected MarkupComponentFactory getMarkupComponentFactory() {
- return (id, model) -> {
- val markupComponent = new AsciiDocComponentWkt(id, model);
- return markupComponent;
- };
+ return AsciiDocComponentWkt::new;
}
}
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoComponentWkt.java
similarity index 56%
copy from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
copy to valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoComponentWkt.java
index 0d09de0..02d2f46 100644
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
+++ b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoComponentWkt.java
@@ -16,19 +16,28 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.valuetypes.asciidoc.ui.wkt;
+package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.chg.v2;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
+import org.apache.wicket.model.IModel;
-import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib;
-import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt;
+import org.apache.isis.applib.util.schema.ChangesDtoUtils;
+import org.apache.isis.schema.chg.v2.ChangesDto;
+import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocForXmlComponentWkt;
+
+public class ChangesDtoComponentWkt extends AsciiDocForXmlComponentWkt {
+
+ private static final long serialVersionUID = 1L;
+
+ public ChangesDtoComponentWkt(String id, IModel<?> model) {
+ super(id, model);
+ }
+
+ @Override
+ protected String asHtml(Object value) {
+ if(value instanceof ChangesDto) {
+ return asHtml(ChangesDtoUtils.toXml((ChangesDto) value));
+ }
+ return super.asHtml(value);
+ }
-@Configuration
-@Import({
- IsisModuleValAsciidocApplib.class,
- AsciiDocPanelFactoriesWkt.Parented.class,
- AsciiDocPanelFactoriesWkt.Standalone.class,
-})
-public class IsisModuleValAsciidocUiWkt {
}
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoPanelFactoriesWkt.java
similarity index 65%
copy from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java
copy to valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoPanelFactoriesWkt.java
index 1a58f4a..200f797 100644
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java
+++ b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoPanelFactoriesWkt.java
@@ -17,23 +17,15 @@
* under the License.
*/
-package org.apache.isis.valuetypes.asciidoc.ui.wkt.components;
+package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.chg.v2;
import org.springframework.stereotype.Component;
-import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
+import org.apache.isis.schema.chg.v2.ChangesDto;
import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupComponentFactory;
import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupPanelFactories;
-import lombok.val;
-
-/**
- * @implNote Almost a copy of {@code Parented} and {@code Standalone} in
- * {@link MarkupPanelFactories}, but specific to
- * the {@link AsciiDoc} value-type which requires client-side java-script to be
- * executed to enable syntax highlighting
- */
-public class AsciiDocPanelFactoriesWkt {
+public class ChangesDtoPanelFactoriesWkt {
// -- PARENTED
@@ -42,19 +34,13 @@ public class AsciiDocPanelFactoriesWkt {
private static final long serialVersionUID = 1L;
public Parented() {
- super(AsciiDoc.class);
+ super(ChangesDto.class);
}
@Override
protected MarkupComponentFactory getMarkupComponentFactory() {
- return (id, model) -> {
- val markupComponent = new AsciiDocComponentWkt(id, model);
- markupComponent.setEnabled(false);
- return markupComponent;
- };
-
+ return ChangesDtoComponentWkt::new;
}
-
}
// -- STANDALONE
@@ -64,18 +50,13 @@ public class AsciiDocPanelFactoriesWkt {
private static final long serialVersionUID = 1L;
public Standalone() {
- super(AsciiDoc.class);
+ super(ChangesDto.class);
}
@Override
protected MarkupComponentFactory getMarkupComponentFactory() {
- return (id, model) -> {
- val markupComponent = new AsciiDocComponentWkt(id, model);
- return markupComponent;
- };
+ return ChangesDtoComponentWkt::new;
}
-
}
-
}
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoComponentWkt.java
similarity index 56%
copy from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
copy to valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoComponentWkt.java
index 0d09de0..f8df038 100644
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
+++ b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoComponentWkt.java
@@ -16,19 +16,28 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.valuetypes.asciidoc.ui.wkt;
+package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.cmd.v2;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
+import org.apache.wicket.model.IModel;
-import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib;
-import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt;
+import org.apache.isis.applib.util.schema.CommandDtoUtils;
+import org.apache.isis.schema.cmd.v2.CommandDto;
+import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocForXmlComponentWkt;
+
+public class CommandDtoComponentWkt extends AsciiDocForXmlComponentWkt {
+
+ private static final long serialVersionUID = 1L;
+
+ public CommandDtoComponentWkt(String id, IModel<?> model) {
+ super(id, model);
+ }
+
+ @Override
+ protected String asHtml(Object value) {
+ if(value instanceof CommandDto) {
+ return asHtml(CommandDtoUtils.toXml((CommandDto) value));
+ }
+ return super.asHtml(value);
+ }
-@Configuration
-@Import({
- IsisModuleValAsciidocApplib.class,
- AsciiDocPanelFactoriesWkt.Parented.class,
- AsciiDocPanelFactoriesWkt.Standalone.class,
-})
-public class IsisModuleValAsciidocUiWkt {
}
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoPanelFactoriesWkt.java
similarity index 65%
copy from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java
copy to valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoPanelFactoriesWkt.java
index 1a58f4a..946d492 100644
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java
+++ b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoPanelFactoriesWkt.java
@@ -17,23 +17,15 @@
* under the License.
*/
-package org.apache.isis.valuetypes.asciidoc.ui.wkt.components;
+package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.cmd.v2;
import org.springframework.stereotype.Component;
-import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
+import org.apache.isis.schema.cmd.v2.CommandDto;
import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupComponentFactory;
import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupPanelFactories;
-import lombok.val;
-
-/**
- * @implNote Almost a copy of {@code Parented} and {@code Standalone} in
- * {@link MarkupPanelFactories}, but specific to
- * the {@link AsciiDoc} value-type which requires client-side java-script to be
- * executed to enable syntax highlighting
- */
-public class AsciiDocPanelFactoriesWkt {
+public class CommandDtoPanelFactoriesWkt {
// -- PARENTED
@@ -42,19 +34,13 @@ public class AsciiDocPanelFactoriesWkt {
private static final long serialVersionUID = 1L;
public Parented() {
- super(AsciiDoc.class);
+ super(CommandDto.class);
}
@Override
protected MarkupComponentFactory getMarkupComponentFactory() {
- return (id, model) -> {
- val markupComponent = new AsciiDocComponentWkt(id, model);
- markupComponent.setEnabled(false);
- return markupComponent;
- };
-
+ return CommandDtoComponentWkt::new;
}
-
}
// -- STANDALONE
@@ -64,18 +50,13 @@ public class AsciiDocPanelFactoriesWkt {
private static final long serialVersionUID = 1L;
public Standalone() {
- super(AsciiDoc.class);
+ super(CommandDto.class);
}
@Override
protected MarkupComponentFactory getMarkupComponentFactory() {
- return (id, model) -> {
- val markupComponent = new AsciiDocComponentWkt(id, model);
- return markupComponent;
- };
+ return CommandDtoComponentWkt::new;
}
-
}
-
}
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoComponentWkt.java
similarity index 55%
copy from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
copy to valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoComponentWkt.java
index 0d09de0..d727b5e 100644
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
+++ b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoComponentWkt.java
@@ -16,19 +16,28 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.valuetypes.asciidoc.ui.wkt;
+package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.ixn.v2;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
+import org.apache.wicket.model.IModel;
-import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib;
-import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt;
+import org.apache.isis.applib.util.schema.InteractionDtoUtils;
+import org.apache.isis.schema.ixn.v2.InteractionDto;
+import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocForXmlComponentWkt;
+
+public class InteractionDtoComponentWkt extends AsciiDocForXmlComponentWkt {
+
+ private static final long serialVersionUID = 1L;
+
+ public InteractionDtoComponentWkt(String id, IModel<?> model) {
+ super(id, model);
+ }
+
+ @Override
+ protected String asHtml(Object value) {
+ if(value instanceof InteractionDto) {
+ return asHtml(InteractionDtoUtils.toXml((InteractionDto) value));
+ }
+ return super.asHtml(value);
+ }
-@Configuration
-@Import({
- IsisModuleValAsciidocApplib.class,
- AsciiDocPanelFactoriesWkt.Parented.class,
- AsciiDocPanelFactoriesWkt.Standalone.class,
-})
-public class IsisModuleValAsciidocUiWkt {
}
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoPanelFactoriesWkt.java
similarity index 65%
copy from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java
copy to valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoPanelFactoriesWkt.java
index 1a58f4a..9edcc4f 100644
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java
+++ b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoPanelFactoriesWkt.java
@@ -17,23 +17,15 @@
* under the License.
*/
-package org.apache.isis.valuetypes.asciidoc.ui.wkt.components;
+package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.ixn.v2;
import org.springframework.stereotype.Component;
-import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
+import org.apache.isis.schema.ixn.v2.InteractionDto;
import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupComponentFactory;
import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupPanelFactories;
-import lombok.val;
-
-/**
- * @implNote Almost a copy of {@code Parented} and {@code Standalone} in
- * {@link MarkupPanelFactories}, but specific to
- * the {@link AsciiDoc} value-type which requires client-side java-script to be
- * executed to enable syntax highlighting
- */
-public class AsciiDocPanelFactoriesWkt {
+public class InteractionDtoPanelFactoriesWkt {
// -- PARENTED
@@ -42,19 +34,13 @@ public class AsciiDocPanelFactoriesWkt {
private static final long serialVersionUID = 1L;
public Parented() {
- super(AsciiDoc.class);
+ super(InteractionDto.class);
}
@Override
protected MarkupComponentFactory getMarkupComponentFactory() {
- return (id, model) -> {
- val markupComponent = new AsciiDocComponentWkt(id, model);
- markupComponent.setEnabled(false);
- return markupComponent;
- };
-
+ return InteractionDtoComponentWkt::new;
}
-
}
// -- STANDALONE
@@ -64,18 +50,13 @@ public class AsciiDocPanelFactoriesWkt {
private static final long serialVersionUID = 1L;
public Standalone() {
- super(AsciiDoc.class);
+ super(InteractionDto.class);
}
@Override
protected MarkupComponentFactory getMarkupComponentFactory() {
- return (id, model) -> {
- val markupComponent = new AsciiDocComponentWkt(id, model);
- return markupComponent;
- };
+ return InteractionDtoComponentWkt::new;
}
-
}
-
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupComponent.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupComponent.java
index 9d1b4d5..84c2d96 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupComponent.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupComponent.java
@@ -52,7 +52,7 @@ public class MarkupComponent extends WebComponent {
// -- HELPER
- protected static CharSequence extractHtmlOrElse(Object modelObject, final String fallback) {
+ protected CharSequence extractHtmlOrElse(Object modelObject, final String fallback) {
if(modelObject==null) {
return fallback;
@@ -67,15 +67,23 @@ public class MarkupComponent extends WebComponent {
final Object value = adapter.getPojo();
- if(!(value instanceof HasHtml))
- return fallback;
+ val asHtml = asHtml(value);
+ if(asHtml != null) {
+ return asHtml;
+ }
- return ((HasHtml)value).asHtml();
+ return fallback;
}
return modelObject.toString();
}
+ protected String asHtml(Object value) {
+ if (value instanceof HasHtml) {
+ return ((HasHtml)value).asHtml();
+ }
+ return null;
+ }
}