This is an automated email from the ASF dual-hosted git repository. danhaywood pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/causeway.git
commit ea0db131069ddab895f440dbc405546da4c52fe1 Author: Dan Haywood <[email protected]> AuthorDate: Tue Jul 1 06:51:59 2025 +0100 CAUSEWAY-3882: updates to docs, license etc for release --- .../modules/ROOT/pages/cutting-a-release.adoc | 10 +-- .../ROOT/pages/post-release-successful.adoc | 4 +- .../ROOT/partials/publish-and-index-website.adoc | 2 +- .../index/services/wrapper/WrapperFactory.adoc | 80 +++++++++--------- .../wrapper/WrapperFactory_AsyncProxy.adoc | 24 ++++++ .../index/services/wrapper/WrappingObject.adoc | 57 ------------- .../services/wrapper/callable/AsyncCallable.adoc | 83 ------------------- .../services/wrapper/control/AsyncControl.adoc | 96 ++++++++++++---------- .../services/wrapper/control/ControlAbstract.adoc | 29 ------- .../services/wrapper/control/ExecutionMode.adoc | 40 --------- .../services/wrapper/control/SyncControl.adoc | 45 +++++----- .../services/wrapper/events/ParseValueEvent.adoc | 31 ------- .../pages/index/runtime/wrap/WrappingObject.adoc | 64 +++++++++++++++ .../wrapper/WrapperFactoryDefault.adoc | 29 ------- .../commandlog/applib/dom/BackgroundService.adoc | 9 +- ...roundService_PersistCommandExecutorService.adoc | 25 ------ core/adoc/modules/_overview/pages/about.adoc | 50 ++++------- cribsheet.adoc | 2 +- 18 files changed, 237 insertions(+), 443 deletions(-) diff --git a/antora/components/comguide/modules/ROOT/pages/cutting-a-release.adoc b/antora/components/comguide/modules/ROOT/pages/cutting-a-release.adoc index 80c7fe8de48..31eabbca4ef 100644 --- a/antora/components/comguide/modules/ROOT/pages/cutting-a-release.adoc +++ b/antora/components/comguide/modules/ROOT/pages/cutting-a-release.adoc @@ -160,7 +160,7 @@ The next step is to generate the website, ensuring that the config, examples, pr + [source,bash,subs="attributes+"] ---- -sh preview.sh +./preview.sh ---- + NOTE: this now runs `mvnd clean install -pl core/config` automatically. @@ -207,8 +207,8 @@ Commit any changes from the preceding steps: [source,bash,subs="attributes+"] ---- -git add .. -git commit -m "$CAUSEWAYJIRA: updates to pom.xml etc for release" +git add . +git commit -m "$CAUSEWAYJIRA: updates to docs, license etc for release" ---- @@ -786,7 +786,7 @@ popd ---- cd ../causeway -sh preview.sh -AB +./preview.sh -AB ---- * Copy the generated Antora site to `causeway-site` repo's `contents` directory: @@ -805,7 +805,7 @@ cd ../causeway-site git add . git commit -m "$CAUSEWAYJIRA : staging changes to website" -sh preview.sh +./preview.sh ---- * If happy, then push the changes: diff --git a/antora/components/comguide/modules/ROOT/pages/post-release-successful.adoc b/antora/components/comguide/modules/ROOT/pages/post-release-successful.adoc index 059575cc138..74918cf3176 100644 --- a/antora/components/comguide/modules/ROOT/pages/post-release-successful.adoc +++ b/antora/components/comguide/modules/ROOT/pages/post-release-successful.adoc @@ -362,7 +362,7 @@ popd + [source,bash,subs="attributes+"] ---- -sh preview.sh +./preview.sh ---- * if any files have changed, then commit: @@ -448,7 +448,7 @@ git commit -m "$CAUSEWAYJIRA: updates site.yml in readiness for website generati + [source,bash,subs="attributes+"] ---- -sh preview.sh -AS +./preview.sh -AS ---- + This will write to `antora/target/site`; we'll use the results in the xref:#publish-website[next section]. diff --git a/antora/components/comguide/modules/ROOT/partials/publish-and-index-website.adoc b/antora/components/comguide/modules/ROOT/partials/publish-and-index-website.adoc index 2438a02670f..461e63ab8ba 100644 --- a/antora/components/comguide/modules/ROOT/partials/publish-and-index-website.adoc +++ b/antora/components/comguide/modules/ROOT/partials/publish-and-index-website.adoc @@ -45,7 +45,7 @@ git add . ---- git commit -m "updates website" -sh preview.sh +./preview.sh ---- * If everything looks ok, then push the changes to make live, and switch back to the `causeway` repo: diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/WrapperFactory.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/WrapperFactory.adoc index e6c7b1deb70..8326f693b4a 100644 --- a/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/WrapperFactory.adoc +++ b/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/WrapperFactory.adoc @@ -31,46 +31,46 @@ interface WrapperFactory { T wrap(T domainObject, SyncControl syncControl) // <.> T wrap(T domainObject) // <.> T wrapMixin(Class<T> mixinClass, Object mixee, SyncControl syncControl) // <.> - T wrapMixinT(Class<T> mixinClass, MIXEE mixee, SyncControl syncControl) // <.> T wrapMixin(Class<T> mixinClass, Object mixee) // <.> + T wrapMixinT(Class<T> mixinClass, MIXEE mixee, SyncControl syncControl) // <.> T wrapMixinT(Class<T> mixinClass, MIXEE mixee) // <.> T unwrap(T possibleWrappedDomainObject) // <.> boolean isWrapper(T possibleWrappedDomainObject) // <.> - T asyncWrap(T domainObject, AsyncControl<R> asyncControl) // <.> - T asyncWrapMixin(Class<T> mixinClass, Object mixee, AsyncControl<R> asyncControl) // <.> - T asyncWrapMixinT(Class<T> mixinClass, MIXEE mixee, AsyncControl<R> asyncControl) // <.> + AsyncProxy<T> asyncWrap(T domainObject, AsyncControl asyncControl) // <.> + AsyncProxy<T> asyncWrap(T domainObject) // <.> + AsyncProxy<T> asyncWrapMixin(Class<T> mixinClass, Object mixee, AsyncControl asyncControl) // <.> + AsyncProxy<T> asyncWrapMixin(Class<T> mixinClass, Object mixee) // <.> List<InteractionListener> getListeners() // <.> boolean addInteractionListener(InteractionListener listener) // <.> boolean removeInteractionListener(InteractionListener listener) // <.> void notifyListeners(InteractionEvent ev) - R execute(AsyncCallable<R> asyncCallable) // <.> } ---- <.> xref:#wrap_T_SyncControl[wrap(T, SyncControl)] + -- -Provides the "wrapper" of a domain object against which to invoke the action. +Provides the'wrapper' of a domain object against which to invoke the action. -- <.> xref:#wrap_T[wrap(T)] + -- -A convenience overload for _#wrap(Object, SyncControl)_ , returning a wrapper to invoke the action synchronously, enforcing business rules. Any exceptions will be propagated, not swallowed. +A convenience overload for _#wrap(Object, SyncControl)_ with _SyncControl.defaults()_ . -- <.> xref:#wrapMixin_Class_Object_SyncControl[wrapMixin(Class, Object, SyncControl)] + -- Provides the wrapper for a _FactoryService#mixin(Class, Object) mixin_ , against which to invoke the action. -- -<.> xref:#wrapMixinT_Class_MIXEE_SyncControl[wrapMixinT(Class, MIXEE, SyncControl)] +<.> xref:#wrapMixin_Class_Object[wrapMixin(Class, Object)] + -- -Provides the wrapper for a _Mixin typesafe_ _FactoryService#mixin(Class, Object) mixin_ , against which to invoke the action. +A convenience overload for _#wrapMixin(Class, Object, SyncControl)_ with _SyncControl.defaults()_ . -- -<.> xref:#wrapMixin_Class_Object[wrapMixin(Class, Object)] +<.> xref:#wrapMixinT_Class_MIXEE_SyncControl[wrapMixinT(Class, MIXEE, SyncControl)] + -- -A convenience overload for _#wrapMixin(Class, Object, SyncControl)_ , returning a wrapper to invoke the action synchronously, enforcing business rules. Any exceptions will be propagated, not swallowed. +Provides the wrapper for a _Mixin typesafe_ _FactoryService#mixin(Class, Object) mixin_ , against which to invoke the action. -- <.> xref:#wrapMixinT_Class_MIXEE[wrapMixinT(Class, MIXEE)] + @@ -90,17 +90,22 @@ Whether the supplied object is a wrapper around a domain object. <.> xref:#asyncWrap_T_AsyncControl[asyncWrap(T, AsyncControl)] + -- -Returns a proxy object for the provided _domainObject_ , through which can execute the action asynchronously (in another thread). +Returns a _CompletableFuture_ holding a proxy object for the provided _domainObject_ , through which one can execute the action asynchronously (in another thread). +-- +<.> xref:#asyncWrap_T[asyncWrap(T)] ++ +-- +A convenience overload for _#asyncWrap(Object, AsyncControl)_ with _AsyncControl.defaults()_ . -- <.> xref:#asyncWrapMixin_Class_Object_AsyncControl[asyncWrapMixin(Class, Object, AsyncControl)] + -- -Returns a proxy object for the provided _mixinClass_ , through which can execute the action asynchronously (in another thread). +Returns a _AsyncProxy_ holding a proxy object for the provided _mixinClass_ , through which one can execute the action asynchronously (in another thread). -- -<.> xref:#asyncWrapMixinT_Class_MIXEE_AsyncControl[asyncWrapMixinT(Class, MIXEE, AsyncControl)] +<.> xref:#asyncWrapMixin_Class_Object[asyncWrapMixin(Class, Object)] + -- -Returns a proxy object for the provided _mixinClass_ , through which can execute the action asynchronously (in another thread). +A convenience overload for _#asyncWrapMixin(Class, Object, AsyncControl)_ with _AsyncControl.defaults()_ . -- <.> xref:#getListeners_[getListeners()] + @@ -117,18 +122,13 @@ Registers an xref:refguide:applib:index/services/wrapper/listeners/InteractionLi -- Remove an xref:refguide:applib:index/services/wrapper/listeners/InteractionListener.adoc[InteractionListener] , to no longer be notified of interactions on wrappers. -- -<.> xref:#execute_AsyncCallable[execute(AsyncCallable)] -+ --- -Provides a mechanism for custom implementations of _java.util.concurrent.ExecutorService_ , as installed using _AsyncControl#with(ExecutorService)_ , to actually execute the xref:refguide:applib:index/services/wrapper/callable/AsyncCallable.adoc[AsyncCallable] that they are passed initially during _WrapperFactory#asyncWrap(Object, AsyncControl)_ and its brethren. --- == Members [#wrap_T_SyncControl] === wrap(T, SyncControl) -Provides the "wrapper" of a domain object against which to invoke the action. +Provides the'wrapper' of a domain object against which to invoke the action. The provided xref:refguide:applib:index/services/wrapper/control/SyncControl.adoc[SyncControl] determines whether business rules are checked first, and conversely whether the action is executed. There are therefore three typical cases: @@ -140,17 +140,26 @@ The last logical option (skip rules, skip action) is valid but doesn't make sens Otherwise, will do all the validations (raise exceptions as required etc.), but doesn't modify the model. +Any exceptions will be propagated, not swallowed. + [#wrap_T] === wrap(T) -A convenience overload for _#wrap(Object, SyncControl)_ , returning a wrapper to invoke the action synchronously, enforcing business rules. Any exceptions will be propagated, not swallowed. +A convenience overload for _#wrap(Object, SyncControl)_ with _SyncControl.defaults()_ . [#wrapMixin_Class_Object_SyncControl] === wrapMixin(Class, Object, SyncControl) Provides the wrapper for a _FactoryService#mixin(Class, Object) mixin_ , against which to invoke the action. -The provided xref:refguide:applib:index/services/wrapper/control/SyncControl.adoc[SyncControl] determines whether business rules are checked first, and conversely whether the action is executed. See _#wrap(Object, SyncControl)_ for more details on this. +The provided xref:refguide:applib:index/services/wrapper/control/SyncControl.adoc[SyncControl] determines whether business rules are checked first, and conversely whether the action is executed. + +Any exceptions will be propagated, not swallowed. + +[#wrapMixin_Class_Object] +=== wrapMixin(Class, Object) + +A convenience overload for _#wrapMixin(Class, Object, SyncControl)_ with _SyncControl.defaults()_ . [#wrapMixinT_Class_MIXEE_SyncControl] === wrapMixinT(Class, MIXEE, SyncControl) @@ -159,11 +168,6 @@ Provides the wrapper for a _Mixin typesafe_ _FactoryService#mixin(Class, Object) The provided xref:refguide:applib:index/services/wrapper/control/SyncControl.adoc[SyncControl] determines whether business rules are checked first, and conversely whether the action is executed. See _#wrap(Object, SyncControl)_ for more details on this. -[#wrapMixin_Class_Object] -=== wrapMixin(Class, Object) - -A convenience overload for _#wrapMixin(Class, Object, SyncControl)_ , returning a wrapper to invoke the action synchronously, enforcing business rules. Any exceptions will be propagated, not swallowed. - [#wrapMixinT_Class_MIXEE] === wrapMixinT(Class, MIXEE) @@ -184,17 +188,22 @@ Whether the supplied object is a wrapper around a domain object. [#asyncWrap_T_AsyncControl] === asyncWrap(T, AsyncControl) -Returns a proxy object for the provided _domainObject_ , through which can execute the action asynchronously (in another thread). +Returns a _CompletableFuture_ holding a proxy object for the provided _domainObject_ , through which one can execute the action asynchronously (in another thread). + +[#asyncWrap_T] +=== asyncWrap(T) + +A convenience overload for _#asyncWrap(Object, AsyncControl)_ with _AsyncControl.defaults()_ . [#asyncWrapMixin_Class_Object_AsyncControl] === asyncWrapMixin(Class, Object, AsyncControl) -Returns a proxy object for the provided _mixinClass_ , through which can execute the action asynchronously (in another thread). +Returns a _AsyncProxy_ holding a proxy object for the provided _mixinClass_ , through which one can execute the action asynchronously (in another thread). -[#asyncWrapMixinT_Class_MIXEE_AsyncControl] -=== asyncWrapMixinT(Class, MIXEE, AsyncControl) +[#asyncWrapMixin_Class_Object] +=== asyncWrapMixin(Class, Object) -Returns a proxy object for the provided _mixinClass_ , through which can execute the action asynchronously (in another thread). +A convenience overload for _#asyncWrapMixin(Class, Object, AsyncControl)_ with _AsyncControl.defaults()_ . [#getListeners_] === getListeners() @@ -215,11 +224,6 @@ Remove an xref:refguide:applib:index/services/wrapper/listeners/InteractionListe This is retrospective: the listener will no longer be notified of any interactions created on any wrappers, not just on those wrappers created subsequently. (From an implementation perspective this is because the wrappers delegate back to the container to fire the events). -[#execute_AsyncCallable] -=== execute(AsyncCallable) - -Provides a mechanism for custom implementations of _java.util.concurrent.ExecutorService_ , as installed using _AsyncControl#with(ExecutorService)_ , to actually execute the xref:refguide:applib:index/services/wrapper/callable/AsyncCallable.adoc[AsyncCallable] that they are passed initially during _WrapperFactory#asyncWrap(Object, AsyncControl)_ and its brethren. - include::hooks/WrapperFactory_010-implementation.adoc[] include::hooks/WrapperFactory_020-examples-and-usage.adoc[] diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/WrapperFactory_AsyncProxy.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/WrapperFactory_AsyncProxy.adoc new file mode 100644 index 00000000000..0bcef02826e --- /dev/null +++ b/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/WrapperFactory_AsyncProxy.adoc @@ -0,0 +1,24 @@ += WrapperFactory.AsyncProxy +:Notice: 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 ag [...] + +The result of an async proxy instantiation, that allows to submit an async invocation on the wrapped domain object. + +The framework takes care, that an async invocation is scoped within both an interaction-context and a transaction. Further more, _TryFuture_ 's success values are unwrapped and detached. + +Terminology: + +* interaction-context: who/how/when xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext] +* unwrapped: plain object, not proxied _WrapperFactory#unwrap_ +* detached: object not attached to a persistence session (applicable to entities only) _RepositoryService#detach(Object)_ + +== API + +[source,java] +.WrapperFactory_AsyncProxy.java +---- +interface AsyncProxy<T> { + TryFuture<Void> acceptAsync(ThrowingConsumer<? super T> action) + TryFuture<U> applyAsync(ThrowingFunction<? super T, ? extends U> fn) +} +---- + diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/WrappingObject.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/WrappingObject.adoc deleted file mode 100644 index 12605169377..00000000000 --- a/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/WrappingObject.adoc +++ /dev/null @@ -1,57 +0,0 @@ -= WrappingObject -:Notice: 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 ag [...] - -Implemented by all objects that have been viewed as per _WrapperFactory#wrap(Object)_ . - -== API - -[source,java] -.WrappingObject.java ----- -interface WrappingObject { - void __causeway_save() // <.> - Object __causeway_wrapped() // <.> - ImmutableEnumSet<ExecutionMode> __causeway_executionModes() // <.> -} ----- - -<.> xref:#__causeway_save_[__causeway_save()] -+ --- -Programmatic equivalent of invoking save for a transient object . --- -<.> xref:#__causeway_wrapped_[__causeway_wrapped()] -+ --- -Provide access to the underlying, wrapped object. --- -<.> xref:#__causeway_executionModes_[__causeway_executionModes()] -+ --- -The xref:refguide:applib:index/services/wrapper/control/ExecutionMode.adoc[ExecutionMode] (s) inferred from the xref:refguide:applib:index/services/wrapper/control/SyncControl.adoc[SyncControl] with which this wrapper was _WrapperFactory#wrap(Object, SyncControl) created_ . --- - -== Members - -[#__causeway_save_] -=== __causeway_save() - -Programmatic equivalent of invoking save for a transient object . - -NOTE: domain classes may not have a method with this name. The `__causeway_` prefix is intended to reduce the risk of a collision. - -[#__causeway_wrapped_] -=== __causeway_wrapped() - -Provide access to the underlying, wrapped object. - -Used to unwrap objects used as arguments to actions (otherwise, end up creating a `ObjectSpecification` for the Javassist-enhanced class, not the original class). - -NOTE: domain classes may not have a method with this name. The `__causeway_` prefix is intended to reduce the risk of a collision. - - *NOTE: there is a string-literal reference to this name `DomainObjectInvocationHandler` , so it should not be changed.* . - -[#__causeway_executionModes_] -=== __causeway_executionModes() - -The xref:refguide:applib:index/services/wrapper/control/ExecutionMode.adoc[ExecutionMode] (s) inferred from the xref:refguide:applib:index/services/wrapper/control/SyncControl.adoc[SyncControl] with which this wrapper was _WrapperFactory#wrap(Object, SyncControl) created_ . diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/callable/AsyncCallable.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/callable/AsyncCallable.adoc deleted file mode 100644 index 15de3cdf653..00000000000 --- a/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/callable/AsyncCallable.adoc +++ /dev/null @@ -1,83 +0,0 @@ -= AsyncCallable -:Notice: 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 ag [...] - -Provides access to the details of the asynchronous callable (representing a child command to be executed asynchronously) when using _org.apache.causeway.applib.services.wrapper.WrapperFactory#asyncWrap(Object, AsyncControl)_ and its brethren. - -To explain in a little more depth; we can execute commands (actions etc) asynchronously using _org.apache.causeway.applib.services.wrapper.WrapperFactory#asyncWrap(Object, AsyncControl)_ or similar. The xref:refguide:applib:index/services/wrapper/control/AsyncControl.adoc[AsyncControl] parameter allows various aspects of this to be controlled, one such being the implementation of the _java.util.concurrent.ExecutorService_ (using _AsyncControl#with(ExecutorService)_ ). - -The default _ExecutorService_ is just _java.util.concurrent.ForkJoinPool_ , and this and similar implementations will hold the provided callable in memory and execute it in due course. For these out-of-the-box implementations, the _java.util.concurrent.Callable_ is a black box and they have no need to look inside it. So long as the implementation of the Callable is not serialized then deserialized (ie is only ever held in memory), then all will work fine. - -This interface, though, is intended to expose the details of the passed _java.util.concurrent.Callable_ , most notably the _CommandDto_ to be executed. The main use case this supports is to allow a custom implementation of _ExecutorService_ to be provided that could do more sophisticated things, for example persisting the callable somewhere, either exploiting the fact that the object is serializable, or perhaps by unpacking the parts and persisting (for example, as a `CommandLogEntry` co [...] - -These custom implementations of _ExecutorService_ must however reinitialize the state of the callable, either by injecting in services using _org.apache.causeway.applib.services.inject.ServiceInjector_ and then just `call()` ing it, or alternatively and more straightforwardly simply executing it using _org.apache.causeway.applib.services.wrapper.WrapperFactory#execute(AsyncCallable)_ . - -== API - -[source,java] -.AsyncCallable.java ----- -interface AsyncCallable<R> { - InteractionContext getInteractionContext() // <.> - Propagation getPropagation() // <.> - CommandDto getCommandDto() // <.> - Class<R> getReturnType() // <.> - UUID getParentInteractionId() // <.> -} ----- - -<.> xref:#getInteractionContext_[getInteractionContext()] -+ --- -The requested xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext] to execute the command, as inferred from the xref:refguide:applib:index/services/wrapper/control/AsyncControl.adoc[AsyncControl] that was used to call _org.apache.causeway.applib.services.wrapper.WrapperFactory#asyncWrap(Object, AsyncControl)_ and its ilk. --- -<.> xref:#getPropagation_[getPropagation()] -+ --- -The transaction propagation to use when creating a new _org.apache.causeway.applib.services.iactn.Interaction_ in which to execute the child command. --- -<.> xref:#getCommandDto_[getCommandDto()] -+ --- -Details of the actual child command (action or property edit) to be performed. --- -<.> xref:#getReturnType_[getReturnType()] -+ --- -The type of the object returned by the child command once finally executed. --- -<.> xref:#getParentInteractionId_[getParentInteractionId()] -+ --- -The unique _Command#getInteractionId() interactionId_ of the parent xref:refguide:applib:index/services/command/Command.adoc[Command] , which is to say the xref:refguide:applib:index/services/command/Command.adoc[Command] that was active in the original interaction where _org.apache.causeway.applib.services.wrapper.WrapperFactory#asyncWrap(Object, AsyncControl)_ (or its brethren) was called. --- - -== Members - -[#getInteractionContext_] -=== getInteractionContext() - -The requested xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext] to execute the command, as inferred from the xref:refguide:applib:index/services/wrapper/control/AsyncControl.adoc[AsyncControl] that was used to call _org.apache.causeway.applib.services.wrapper.WrapperFactory#asyncWrap(Object, AsyncControl)_ and its ilk. - -[#getPropagation_] -=== getPropagation() - -The transaction propagation to use when creating a new _org.apache.causeway.applib.services.iactn.Interaction_ in which to execute the child command. - -[#getCommandDto_] -=== getCommandDto() - -Details of the actual child command (action or property edit) to be performed. - -(Ultimately this is handed onto the _org.apache.causeway.applib.services.command.CommandExecutorService_ ). - -[#getReturnType_] -=== getReturnType() - -The type of the object returned by the child command once finally executed. - -[#getParentInteractionId_] -=== getParentInteractionId() - -The unique _Command#getInteractionId() interactionId_ of the parent xref:refguide:applib:index/services/command/Command.adoc[Command] , which is to say the xref:refguide:applib:index/services/command/Command.adoc[Command] that was active in the original interaction where _org.apache.causeway.applib.services.wrapper.WrapperFactory#asyncWrap(Object, AsyncControl)_ (or its brethren) was called. - -This can be useful for custom implementations of _ExecutorService_ that use the commandlog extension's `CommandLogEntry` , to link parent and child commands together. diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/control/AsyncControl.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/control/AsyncControl.adoc index 5d083ddd205..dfe4edeec0f 100644 --- a/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/control/AsyncControl.adoc +++ b/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/control/AsyncControl.adoc @@ -1,4 +1,4 @@ -= AsyncControl += AsyncControl _(record)_ :Notice: 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 ag [...] Modifies the way in which an asynchronous action initiated through the xref:refguide:applib:index/services/wrapper/WrapperFactory.adoc[WrapperFactory] is actually executed. @@ -10,37 +10,39 @@ Executing in a separate thread means that the target and arguments are used in a [source,java] .AsyncControl.java ---- -class AsyncControl<R> { - AsyncControl<Void> returningVoid() // <.> - AsyncControl<X> returning(Class<X> cls) // <.> - AsyncControl<R> withSkipRules() // <.> - AsyncControl<R> with(ExceptionHandler exceptionHandler) // <.> - AsyncControl<R> with(ExecutorService executorService) // <.> - AsyncControl<R> withClock(VirtualClock clock) - AsyncControl<R> withLocale(Locale locale) - AsyncControl<R> withTimeZone(ZoneId timeZone) - AsyncControl<R> withUser(UserMemento user) // <.> - void setFuture(Future<R> future) // <.> - R waitForResult(long timeout, TimeUnit unit) // <.> +record AsyncControl { + AsyncControl defaults() + AsyncControl withExecute() // <.> + AsyncControl withNoExecute() // <.> + AsyncControl withSkipRules() // <.> + AsyncControl withCheckRules() + AsyncControl withExceptionHandler(ExceptionHandler exceptionHandler) // <.> + AsyncControl with(ExecutorService executorService) // <.> + AsyncControl listen(SyncControl.@NonNull CommandListener commandListener) + AsyncControl withClock(VirtualClock clock) // <.> + AsyncControl withLocale(Locale locale) // <.> + AsyncControl withTimeZone(ZoneId timeZone) // <.> + AsyncControl withUser(UserMemento user) // <.> + InteractionContext override(InteractionContext interactionContext) } ---- -<.> xref:#returningVoid_[returningVoid()] +<.> xref:#withExecute_[withExecute()] + -- -Factory method to instantiate a control instance for a void action or a property edit (where there is no need or intention to provide a return value through the `Future`). +Explicitly set the action to be executed. -- -<.> xref:#returning_Class[returning(Class)] +<.> xref:#withNoExecute_[withNoExecute()] + -- -Factory method to instantiate for a control instance for an action returning a value of `` (where this value will be returned through the `Future`). +Explicitly set the action to _not_ be executed, in other words a 'dry run'. -- <.> xref:#withSkipRules_[withSkipRules()] + -- Skip checking business rules (hide/disable/validate) before executing the underlying property or action -- -<.> xref:#with_ExceptionHandler[with(ExceptionHandler)] +<.> xref:#withExceptionHandler_ExceptionHandler[withExceptionHandler(ExceptionHandler)] + -- How to handle exceptions if they occur, using the provided xref:refguide:applib:index/services/wrapper/control/ExceptionHandler.adoc[ExceptionHandler] . @@ -50,41 +52,46 @@ How to handle exceptions if they occur, using the provided xref:refguide:applib: -- Specifies the _ExecutorService_ to use to obtain the thread to invoke the action. -- -<.> xref:#withUser_UserMemento[withUser(UserMemento)] +<.> xref:#withClock_VirtualClock[withClock(VirtualClock)] + -- -Specifies the user for the session used to execute the command asynchronously, in the background. +Defaults to the system clock, if not overridden -- -<.> xref:#setFuture_Future[setFuture(Future)] +<.> xref:#withLocale_Locale[withLocale(Locale)] + -- -For framework use only. +Defaults to the system locale, if not overridden -- -<.> xref:#waitForResult_long_TimeUnit[waitForResult(long, TimeUnit)] +<.> xref:#withTimeZone_ZoneId[withTimeZone(ZoneId)] + -- -Waits on the callers thread, for a maximum amount of time, for the result of the invocation to become available. +Defaults to the system time zone, if not overridden +-- +<.> xref:#withUser_UserMemento[withUser(UserMemento)] ++ +-- +Specifies the user for the session used to execute the command asynchronously, in the background. -- == Members -[#returningVoid_] -=== returningVoid() +[#withExecute_] +=== withExecute() -Factory method to instantiate a control instance for a void action or a property edit (where there is no need or intention to provide a return value through the `Future`). +Explicitly set the action to be executed. -[#returning_Class] -=== returning(Class) +[#withNoExecute_] +=== withNoExecute() -Factory method to instantiate for a control instance for an action returning a value of `` (where this value will be returned through the `Future`). +Explicitly set the action to _not_ be executed, in other words a 'dry run'. [#withSkipRules_] === withSkipRules() Skip checking business rules (hide/disable/validate) before executing the underlying property or action -[#with_ExceptionHandler] -=== with(ExceptionHandler) +[#withExceptionHandler_ExceptionHandler] +=== withExceptionHandler(ExceptionHandler) How to handle exceptions if they occur, using the provided xref:refguide:applib:index/services/wrapper/control/ExceptionHandler.adoc[ExceptionHandler] . @@ -97,19 +104,24 @@ Specifies the _ExecutorService_ to use to obtain the thread to invoke the action The default is _null_ , indicating, that its the xref:refguide:applib:index/services/wrapper/WrapperFactory.adoc[WrapperFactory] 's responsibility to provide a suitable _ExecutorService_ . -[#withUser_UserMemento] -=== withUser(UserMemento) +[#withClock_VirtualClock] +=== withClock(VirtualClock) -Specifies the user for the session used to execute the command asynchronously, in the background. +Defaults to the system clock, if not overridden -If not specified, then the user of the current foreground session is used. +[#withLocale_Locale] +=== withLocale(Locale) + +Defaults to the system locale, if not overridden + +[#withTimeZone_ZoneId] +=== withTimeZone(ZoneId) -[#setFuture_Future] -=== setFuture(Future) +Defaults to the system time zone, if not overridden -For framework use only. +[#withUser_UserMemento] +=== withUser(UserMemento) -[#waitForResult_long_TimeUnit] -=== waitForResult(long, TimeUnit) +Specifies the user for the session used to execute the command asynchronously, in the background. -Waits on the callers thread, for a maximum amount of time, for the result of the invocation to become available. +If not specified, then the user of the current foreground session is used. diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/control/ControlAbstract.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/control/ControlAbstract.adoc deleted file mode 100644 index 36f827033da..00000000000 --- a/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/control/ControlAbstract.adoc +++ /dev/null @@ -1,29 +0,0 @@ -= ControlAbstract -:Notice: 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 ag [...] - -== API - -[source,java] -.ControlAbstract.java ----- -class ControlAbstract<T> { - T withCheckRules() - T withSkipRules() - Optional<ExceptionHandler> getExceptionHandler() - T with(ExceptionHandler exceptionHandler) - ImmutableEnumSet<ExecutionMode> getExecutionModes() // <.> -} ----- - -<.> xref:#getExecutionModes_[getExecutionModes()] -+ --- -Not API. --- - -== Members - -[#getExecutionModes_] -=== getExecutionModes() - -Not API. diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/control/ExecutionMode.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/control/ExecutionMode.adoc deleted file mode 100644 index 5f876d4baa1..00000000000 --- a/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/control/ExecutionMode.adoc +++ /dev/null @@ -1,40 +0,0 @@ -= ExecutionMode _(enum)_ -:Notice: 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 ag [...] - -Whether interactions with the wrapper are actually passed onto the underlying domain object. - -== API - -[source,java] -.ExecutionMode.java ----- -enum ExecutionMode { - SKIP_RULE_VALIDATION // <.> - SKIP_EXECUTION // <.> -} ----- - -<.> xref:#SKIP_RULE_VALIDATION[SKIP_RULE_VALIDATION] -+ --- -Skip all business rules. --- -<.> xref:#SKIP_EXECUTION[SKIP_EXECUTION] -+ --- -Skip actual execution. --- - -== Members - -[#SKIP_RULE_VALIDATION] -=== SKIP_RULE_VALIDATION - -Skip all business rules. - -[#SKIP_EXECUTION] -=== SKIP_EXECUTION - -Skip actual execution. - -This is not supported for _WrapperFactory#asyncWrap(Object, AsyncControl)_ ; instead just invoke _WrapperFactory#wrap(Object, SyncControl)_ . diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/control/SyncControl.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/control/SyncControl.adoc index 10af591b5ab..fa1c2beb5c2 100644 --- a/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/control/SyncControl.adoc +++ b/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/control/SyncControl.adoc @@ -1,4 +1,4 @@ -= SyncControl += SyncControl _(record)_ :Notice: 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 ag [...] Controls the way that a (synchronous) wrapper works. @@ -8,13 +8,16 @@ Controls the way that a (synchronous) wrapper works. [source,java] .SyncControl.java ---- -class SyncControl { - SyncControl control() +record SyncControl { + SyncControl(boolean isSkipRules, boolean isSkipExecute, Can<CommandListener> commandListeners, ExceptionHandler exceptionHandler) + SyncControl defaults() SyncControl withSkipRules() // <.> - SyncControl with(ExceptionHandler exceptionHandler) // <.> + SyncControl withCheckRules() SyncControl withExecute() // <.> SyncControl withNoExecute() // <.> - ImmutableEnumSet<ExecutionMode> getExecutionModes() // <.> + SyncControl listen(CommandListener commandListener) + SyncControl withExceptionHandler(ExceptionHandler exceptionHandler) // <.> + boolean isEquivalent(SyncControl other) // <.> } ---- @@ -23,11 +26,6 @@ class SyncControl { -- Skip checking business rules (hide/disable/validate) before executing the underlying property or action -- -<.> xref:#with_ExceptionHandler[with(ExceptionHandler)] -+ --- -How to handle exceptions if they occur, using the provided xref:refguide:applib:index/services/wrapper/control/ExceptionHandler.adoc[ExceptionHandler] . --- <.> xref:#withExecute_[withExecute()] + -- @@ -36,13 +34,14 @@ Explicitly set the action to be executed. <.> xref:#withNoExecute_[withNoExecute()] + -- -Explicitly set the action to _not_ be executed, in other words a "dry run". +Explicitly set the action to _not_ be executed, in other words a 'dry run'. -- -<.> xref:#getExecutionModes_[getExecutionModes()] +<.> xref:#withExceptionHandler_ExceptionHandler[withExceptionHandler(ExceptionHandler)] + -- -Not API. +How to handle exceptions if they occur, using the provided xref:refguide:applib:index/services/wrapper/control/ExceptionHandler.adoc[ExceptionHandler] . -- +<.> xref:#isEquivalent_SyncControl[isEquivalent(SyncControl)] == Members @@ -51,13 +50,6 @@ Not API. Skip checking business rules (hide/disable/validate) before executing the underlying property or action -[#with_ExceptionHandler] -=== with(ExceptionHandler) - -How to handle exceptions if they occur, using the provided xref:refguide:applib:index/services/wrapper/control/ExceptionHandler.adoc[ExceptionHandler] . - -The default behaviour is to rethrow the exception. - [#withExecute_] === withExecute() @@ -66,9 +58,14 @@ Explicitly set the action to be executed. [#withNoExecute_] === withNoExecute() -Explicitly set the action to _not_ be executed, in other words a "dry run". +Explicitly set the action to _not_ be executed, in other words a 'dry run'. + +[#withExceptionHandler_ExceptionHandler] +=== withExceptionHandler(ExceptionHandler) -[#getExecutionModes_] -=== getExecutionModes() +How to handle exceptions if they occur, using the provided xref:refguide:applib:index/services/wrapper/control/ExceptionHandler.adoc[ExceptionHandler] . + +The default behaviour is to rethrow the exception. -Not API. +[#isEquivalent_SyncControl] +=== isEquivalent(SyncControl) diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/events/ParseValueEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/events/ParseValueEvent.adoc deleted file mode 100644 index 659f94fa3d2..00000000000 --- a/antora/components/refguide-index/modules/applib/pages/index/services/wrapper/events/ParseValueEvent.adoc +++ /dev/null @@ -1,31 +0,0 @@ -= ParseValueEvent -:Notice: 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 ag [...] - -Supported only by xref:refguide:applib:index/services/wrapper/WrapperFactory.adoc[WrapperFactory] , represents a check as to whether the proposed values of the value type is valid. - -If _#getReason()_ is not `null` then provides the reason why the proposed value is invalid, otherwise the new value is acceptable. - -== API - -[source,java] -.ParseValueEvent.java ----- -class ParseValueEvent { - ParseValueEvent(Object source, Identifier classIdentifier, String proposed) - Object getSource() // <.> - String getProposed() -} ----- - -<.> xref:#getSource_[getSource()] -+ --- -Will be the source provided in the _#ParseValueEvent(Object, Identifier, String) constructor_ if not null, otherwise will fallback to the proposed value. --- - -== Members - -[#getSource_] -=== getSource() - -Will be the source provided in the _#ParseValueEvent(Object, Identifier, String) constructor_ if not null, otherwise will fallback to the proposed value. diff --git a/antora/components/refguide-index/modules/core/pages/index/runtime/wrap/WrappingObject.adoc b/antora/components/refguide-index/modules/core/pages/index/runtime/wrap/WrappingObject.adoc new file mode 100644 index 00000000000..264b2d13cd6 --- /dev/null +++ b/antora/components/refguide-index/modules/core/pages/index/runtime/wrap/WrappingObject.adoc @@ -0,0 +1,64 @@ += WrappingObject +:Notice: 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 ag [...] + +Implemented by all objects that have been viewed as per _WrapperFactory#wrap(Object)_ . + +== API + +[source,java] +.WrappingObject.java +---- +interface WrappingObject { + final static String ORIGIN_GETTER_NAME; + final static String ORIGIN_FIELD_NAME; + final static String SAVE_METHOD_NAME; + final static List<AdditionalField> ADDITIONAL_FIELDS; + Origin __causeway_origin() // <.> + Origin getOrigin(WrappingObject proxyObject) // <.> + T withOrigin(T proxyObject, Origin origin) // <.> + void __causeway_save() // <.> +} +---- + +<.> xref:#__causeway_origin_[__causeway_origin()] ++ +-- +Getter for the underlying _Origin_ . +-- +<.> xref:#getOrigin_WrappingObject[getOrigin(WrappingObject)] ++ +-- +Getter for the underlying _Origin_ . +-- +<.> xref:#withOrigin_T_Origin[withOrigin(T, Origin)] ++ +-- +Wither for the underlying _Origin_ . +-- +<.> xref:#__causeway_save_[__causeway_save()] ++ +-- +Programmatic equivalent of invoking save for a transient object . +-- + +== Members + +[#__causeway_origin_] +=== __causeway_origin() + +Getter for the underlying _Origin_ . + +[#getOrigin_WrappingObject] +=== getOrigin(WrappingObject) + +Getter for the underlying _Origin_ . + +[#withOrigin_T_Origin] +=== withOrigin(T, Origin) + +Wither for the underlying _Origin_ . + +[#__causeway_save_] +=== __causeway_save() + +Programmatic equivalent of invoking save for a transient object . diff --git a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/wrapper/WrapperFactoryDefault.adoc b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/wrapper/WrapperFactoryDefault.adoc deleted file mode 100644 index 8c3be020849..00000000000 --- a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/wrapper/WrapperFactoryDefault.adoc +++ /dev/null @@ -1,29 +0,0 @@ -= WrapperFactoryDefault -:Notice: 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 ag [...] - -Default implementation of xref:refguide:applib:index/services/wrapper/WrapperFactory.adoc[WrapperFactory] . - -== API - -[source,java] -.WrapperFactoryDefault.java ----- -class WrapperFactoryDefault { - void init() - void close() - T wrap(T domainObject) - T wrap(T domainObject, SyncControl syncControl) - T wrapMixin(Class<T> mixinClass, Object mixee) - T wrapMixin(Class<T> mixinClass, Object mixee, SyncControl syncControl) - boolean isWrapper(Object obj) - T unwrap(T possibleWrappedDomainObject) - T asyncWrap(T domainObject, AsyncControl<R> asyncControl) - T asyncWrapMixin(Class<T> mixinClass, Object mixee, AsyncControl<R> asyncControl) - List<InteractionListener> getListeners() - boolean addInteractionListener(InteractionListener listener) - boolean removeInteractionListener(InteractionListener listener) - void notifyListeners(InteractionEvent interactionEvent) - R execute(AsyncCallable<R> asyncCallable) -} ----- - diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/BackgroundService.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/BackgroundService.adoc index b3d9a2851df..01fd1f11fb5 100644 --- a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/BackgroundService.adoc +++ b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/BackgroundService.adoc @@ -11,10 +11,11 @@ Typically this other thread of execution would be scheduled from quartz or simil .BackgroundService.java ---- class BackgroundService { - T execute(T object) // <.> - T executeSkipRules(T object) // <.> - T executeMixin(Class<T> mixinClass, Object mixedIn) // <.> - T executeMixinSkipRules(Class<T> mixinClass, Object mixedIn) // <.> + AsyncProxy<T> execute(T object) // <.> + AsyncProxy<T> executeSkipRules(T object) // <.> + AsyncProxy<T> executeMixin(Class<T> mixinClass, Object mixedIn) // <.> + AsyncProxy<T> executeMixinSkipRules(Class<T> mixinClass, Object mixedIn) // <.> + AsyncControl asyncControl() } ---- diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/BackgroundService_PersistCommandExecutorService.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/BackgroundService_PersistCommandExecutorService.adoc deleted file mode 100644 index ad5d2bc4aab..00000000000 --- a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/BackgroundService_PersistCommandExecutorService.adoc +++ /dev/null @@ -1,25 +0,0 @@ -= BackgroundService.PersistCommandExecutorService -:Notice: 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 ag [...] - -== API - -[source,java] -.BackgroundService_PersistCommandExecutorService.java ----- -class PersistCommandExecutorService { - Future<T> submit(Callable<T> task) - Future<T> submit(Runnable task, T result) - Future<?> submit(Runnable task) - void execute(Runnable command) - List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) - List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) - T invokeAny(Collection<? extends Callable<T>> tasks) - T invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) - void shutdown() - List<Runnable> shutdownNow() - boolean awaitTermination(long timeout, TimeUnit unit) - boolean isShutdown() - boolean isTerminated() -} ----- - diff --git a/core/adoc/modules/_overview/pages/about.adoc b/core/adoc/modules/_overview/pages/about.adoc index f87761dded8..3995f31c01d 100644 --- a/core/adoc/modules/_overview/pages/about.adoc +++ b/core/adoc/modules/_overview/pages/about.adoc @@ -1076,7 +1076,7 @@ org.apache.causeway.core:causeway-schema:jar:<managed> + .Document Index Entries **** -xref:refguide:applib:index/CausewayModuleApplib.adoc[CausewayModuleApplib], xref:refguide:applib:index/CausewayModuleApplibChangeAndExecutionLoggers.adoc[CausewayModuleApplibChangeAndExecutionLoggers], xref:refguide:applib:index/CausewayModuleApplibMixins.adoc[CausewayModuleApplibMixins], xref:refguide:applib:index/Identifier.adoc[Identifier], xref:refguide:applib:index/ViewModel.adoc[ViewModel], xref:refguide:applib:index/annotation/Action.adoc[Action], xref:refguide:applib:index/annota [...] +xref:refguide:applib:index/CausewayModuleApplib.adoc[CausewayModuleApplib], xref:refguide:applib:index/CausewayModuleApplibChangeAndExecutionLoggers.adoc[CausewayModuleApplibChangeAndExecutionLoggers], xref:refguide:applib:index/CausewayModuleApplibMixins.adoc[CausewayModuleApplibMixins], xref:refguide:applib:index/Identifier.adoc[Identifier], xref:refguide:applib:index/ViewModel.adoc[ViewModel], xref:refguide:applib:index/annotation/Action.adoc[Action], xref:refguide:applib:index/annota [...] **** |Apache Causeway Core - Code Gen (ByteBuddy) @@ -1298,6 +1298,11 @@ org.apache.causeway.core:causeway-core-transaction:jar:<managed> + org.apache.causeway.valuetypes:causeway-valuetypes-jodatime-integration:jar:<managed> + **** +.Document Index Entries +**** +xref:refguide:core:index/runtime/wrap/WrappingObject.adoc[WrappingObject] +**** + |Apache Causeway Core - Runtime Services [source,yaml] ---- @@ -1368,7 +1373,7 @@ org.springframework:spring-context-support:jar:<managed> + .Document Index Entries **** -xref:refguide:core:index/runtimeservices/bookmarks/BookmarkServiceDefault.adoc[BookmarkServiceDefault], xref:refguide:core:index/runtimeservices/command/CommandExecutorServiceDefault.adoc[CommandExecutorServiceDefault], xref:refguide:core:index/runtimeservices/command/SchemaValueMarshallerDefault.adoc[SchemaValueMarshallerDefault], xref:refguide:core:index/runtimeservices/email/EmailServiceDefault.adoc[EmailServiceDefault], xref:refguide:core:index/runtimeservices/eventbus/EventBusServic [...] +xref:refguide:core:index/runtimeservices/bookmarks/BookmarkServiceDefault.adoc[BookmarkServiceDefault], xref:refguide:core:index/runtimeservices/command/CommandExecutorServiceDefault.adoc[CommandExecutorServiceDefault], xref:refguide:core:index/runtimeservices/command/SchemaValueMarshallerDefault.adoc[SchemaValueMarshallerDefault], xref:refguide:core:index/runtimeservices/email/EmailServiceDefault.adoc[EmailServiceDefault], xref:refguide:core:index/runtimeservices/eventbus/EventBusServic [...] **** |Apache Causeway Core - Security @@ -2241,6 +2246,11 @@ Directory: /persistence/jpa/eclipselink ---- |EclipseLink integration. Sets up EclipseLink as the implementation provider for Spring Data JPA. +.Components +**** +o.a.i.persistence.jpa.eclipselink.metamodel.EclipseLinkMetadataService + +**** + .Dependencies **** jakarta.el:jakarta.el-api:jar:6.0.1 + @@ -3080,6 +3090,7 @@ org.apache.causeway.persistence:causeway-persistence-jpa-eclipselink:jar:<manage org.apache.causeway.security:causeway-security-bypass:jar:<managed> + org.apache.causeway.testing:causeway-testing-fixtures-applib:jar:<managed> + org.apache.causeway.testing:causeway-testing-integtestsupport-applib:jar:<managed> + +org.apache.causeway.testing:causeway-testing-unittestsupport-applib:jar:<managed> + org.apache.causeway.viewer:causeway-viewer-graphql-viewer:jar:<managed> + org.springframework:spring-context-support:jar:<managed> + org.springframework.boot:spring-boot-test-autoconfigure:jar:<managed> + @@ -5070,7 +5081,7 @@ com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:<managed> + org.apache.causeway.extensions:causeway-extensions-fullcalendar-applib:jar:<managed> + org.apache.causeway.testing:causeway-testing-unittestsupport-applib:jar:<managed> + org.apache.causeway.viewer:causeway-viewer-wicket-ui:jar:<managed> + -org.webjars:fullcalendar:jar:6.1.9 + +org.webjars:fullcalendar:jar:6.1.10 + **** .Document Index Entries @@ -5226,7 +5237,7 @@ Directory: /extensions/vw/pdfjs/wicket/integration **** org.apache.causeway.extensions:causeway-extensions-pdfjs-applib:jar:<managed> + org.apache.causeway.viewer:causeway-viewer-wicket-ui:jar:<managed> + -org.webjars.npm:pdfjs-dist:jar:5.0.375 + +org.webjars.npm:pdfjs-dist:jar:5.2.133 + **** .Document Index Entries @@ -5314,7 +5325,7 @@ Directory: /retired/shiro/extensions/secman/delegated-shiro .Dependencies **** org.apache.causeway.core:causeway-core-runtime:jar:<managed> + -org.apache.causeway.extensions:causeway-extensions-secman-applib:jar:3.0.0-SNAPSHOT + +org.apache.causeway.extensions:causeway-extensions-secman-applib:jar:3.4.0-SNAPSHOT + org.apache.causeway.security:causeway-security-shiro:jar:<managed> + **** @@ -6000,7 +6011,6 @@ Directory: /extensions/core/commandlog/applib |.Components **** o.a.i.extensions.commandlog.applib.dom.BackgroundService + -o.a.i.extensions.commandlog.applib.dom.BackgroundService$PersistCommandExecutorService + o.a.i.extensions.commandlog.applib.dom.CommandLogEntry$TableColumnOrderDefault + o.a.i.extensions.commandlog.applib.fakescheduler.FakeScheduler + o.a.i.extensions.commandlog.applib.job.BackgroundCommandsJobControl + @@ -6022,7 +6032,7 @@ org.quartz-scheduler:quartz:jar:<managed> + .Document Index Entries **** -xref:refguide:extensions:index/commandlog/applib/app/CommandLogMenu.adoc[CommandLogMenu], xref:refguide:extensions:index/commandlog/applib/contributions/HasInteractionId_commandLogEntry.adoc[HasInteractionId_commandLogEntry], xref:refguide:extensions:index/commandlog/applib/contributions/HasUsername_recentCommandsByUser.adoc[HasUsername_recentCommandsByUser], xref:refguide:extensions:index/commandlog/applib/contributions/Object_recentCommands.adoc[Object_recentCommands], xref:refguide:ex [...] +xref:refguide:extensions:index/commandlog/applib/app/CommandLogMenu.adoc[CommandLogMenu], xref:refguide:extensions:index/commandlog/applib/contributions/HasInteractionId_commandLogEntry.adoc[HasInteractionId_commandLogEntry], xref:refguide:extensions:index/commandlog/applib/contributions/HasUsername_recentCommandsByUser.adoc[HasUsername_recentCommandsByUser], xref:refguide:extensions:index/commandlog/applib/contributions/Object_recentCommands.adoc[Object_recentCommands], xref:refguide:ex [...] **** |Apache Causeway Ext - Command Log Implementation (JDO) @@ -7129,31 +7139,7 @@ Artifact: causeway-regressiontests-base Type: jar Directory: /regressiontests/base ---- -|.Components -**** -o.a.i.testdomain.jdo.JdoInventoryDao + -o.a.i.testdomain.jdo.JdoTestFixtures + -o.a.i.testdomain.jpa.JpaInventoryDao + -o.a.i.testdomain.jpa.JpaTestFixtures + -o.a.i.testdomain.jpa.springdata.EmployeeRepository + -o.a.i.testdomain.model.valuetypes.ValueTypeExampleService + -o.a.i.testdomain.publishing.PublishingTestFactoryAbstract$CommitListener + -o.a.i.testdomain.publishing.PublishingTestFactoryJdo + -o.a.i.testdomain.publishing.PublishingTestFactoryJpa + -o.a.i.testdomain.publishing.subscriber.CommandSubscriberForTesting + -o.a.i.testdomain.publishing.subscriber.EntityChangesSubscriberForTesting + -o.a.i.testdomain.publishing.subscriber.EntityPropertyChangeSubscriberForTesting + -o.a.i.testdomain.publishing.subscriber.ExecutionSubscriberForTesting + -o.a.i.testdomain.util.event.LifecycleEventSubscriberJdoForTesting + -o.a.i.testdomain.util.event.LifecycleEventSubscriberJpaForTesting + -o.a.i.testdomain.util.interaction.DomainObjectTesterFactory + -o.a.i.testdomain.util.interaction.InteractionBoundaryProbe + -o.a.i.testdomain.util.kv.KVStoreForTesting + -o.a.i.testdomain.util.rest.RestEndpointService + -o.a.i.testdomain.wrapperfactory.CounterRepository + -**** - -.Dependencies +|.Dependencies **** org.apache.causeway.extensions:causeway-extensions-fullcalendar-applib:jar:<managed> + org.apache.causeway.extensions:causeway-extensions-secman-encryption-jbcrypt:jar:<managed> + diff --git a/cribsheet.adoc b/cribsheet.adoc index 36c854d5311..8accdb4d795 100644 --- a/cribsheet.adoc +++ b/cribsheet.adoc @@ -10,7 +10,7 @@ ---- sdk use java 11 sh build-tooling.sh -- -T1C -sh preview.sh +./preview.sh ---- * build all, ``git pull``ing first, excluding incubator
