You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@isis.apache.org by Dan Haywood <da...@haywood-associates.co.uk> on 2014/07/04 19:25:01 UTC

ISIS-832 and ISIS-833: reorganizing artifacts and modules

Hi folks,

At the IsisCon meeting we held recently, we talked about simplifying and
modularizing the framework; see the write-up here [1].

I've now started tackling some of the bigger issues listed, specifically:

ISIS-832 [2] - addressing point (1) of [1], namely to simplify the
framework by bringing RO, JDO and Shiro into core, and
ISIS-833 [3] - addressing point (5) of [1], namely re-usable modules.
 These are in the group org.apache.isis.module, artifactId:
isis-module-xxx-yyy

Between these two tickets I've therefore moved a bunch of code around,
deleted some Maven modules, mothballed some others, and introduced new
modules.  What that means is that 1.6.0-SNAPSHOT will require changes to
your application pom.xml files.

What I deliberately *haven't* done is rename and classes or even move any
packages.  That does mean there are mismatches between package names and
modules, but better to go with baby steps.  In any case, Isis tries to
follow semantic versioning, which means that the time to rationalize such
matters is in Isis 2.0, not in the 1.6.x baseline.

Another related change is ISIS-493 [4], which introduces a new annotatoin
called @DomainService.  This allows services to be automatically registered
(rather than have to register in isis.properties).

~~~
One thing this modularization enables is better reuse.  For now we'll
continue to release the modules along with core, but in the future they
could evolve quite independently of core.

Also, in Estatio we have a "module" called Tags, that allows tags (or
labels) to be attached to arbitrary domain objects.  As it turned out, we
ended up not using the feature, but it could be of use to others.  So this
is a module that we can "contribute" back into Isis.  Other modules that we
might introduce include stuff such as communication channels.

~~~
Anyway, the rest of this email aims to summarize the steps needed if moving
to 1.6.0-SNAPSHOT.  Obviously, when Isis 1.6.0 is released, I'll repeat
these notes in the release notes.

If anyone finds any errors/omissions in the stuff below, do please say.

Thanks
Dan

~~~~~~
*Summary of changes*

*modules moved to core:*

o.a.i.security:isis-security-shiro -> o.a.i.core:isis-core-security-shiro

o.a.i.objectstore:isis-objectstore-jdo -> DELETED (modules now parented by
core directly)
o.a.i.objectstore:isis-objectstore-jdo-applib -> DELETED; see the new
isis-module-xxx modules below
o.a.i.objectstore:isis-objectstore-jdo-metamodel ->
o.a.i.core:isis-core-objectstore-jdo-metamodel
o.a.i.objectstore:isis-objectstore-jdo-datanucleus ->
o.a.i.core:isis-core-objectstore-jdo-datanucleus

o.a.i.viewer:isis-viewer-restfulobjects -> DELETED (modules now parented by
core directly)
o.a.i.viewer:isis-viewer-restfulobjects-rendering ->
o.a.i.core:isis-core-viewer-restfulobjects-rendering
o.a.i.viewer:isis-viewer-restfulobjects-server ->
o.a.i.core:isis-core-viewer-restfulobjects-server

*renamed modules*

o.a.i.core:isis-core-wrapper -> o.a.i.module:isis-module-wrapper

*new modules:*

o.a.i.module:isis-module-settings (this has applib and impl as submodules)
... application and user settings
o.a.i.module:isis-module-devutils (this has applib and impl as submodules)
... developer utilities service (download metamodel etc)
o.a.i.module:isis-module-audit-jdo  ... persisting AuditEntry entity
o.a.i.module:isis-module-command-jdo   ... persisting Command entity and
enabling background commands via scheduler
o.a.i.module:isis-module-publishing-jdo   ... persisting PublishedEvent
entity
o.a.i.module:isis-module-publishingeventserializer-ro   ... used by
publishing service to serialize object graph into JSON

The reason that the first two modules have their own applib but the last 4
do not is because the latter are used (if configured) by the framework, eg
to publish audit events.  In contrast, the settings and devutils modules
are not used or referenced in any capacity by the framework.


*Impact to existing applications*

*root/pom.xml*

remove scope=import to o.a.i.security:isis-security-shiro  (now parented by
core parent pom).
remove scope=import to o.a.i.objectstore:isis-objectstore-jdo  (this is a
deleted parent pom, child modules referenced instead by core parent pom).
remove scope=import to o.a.i.viewer:isis-viewer-restfulobjects  (this is a
deleted parent pom, child modules referenced instead by core parent pom).

*dom/pom.xml*

delete reference to o.a.i-objectstore:isis-objectstore-jdo-applib

add in references (if used) to
- o.a.i.module:isis-module-settings-applib
- o.a.i.module:isis-module-devutils-applib

(if required) update dependency on isis-core-wrapper, instead to
isis-module-wrapper

*integtests/pom.xml*

update dependency on isis-core-wrapper, instead to isis-module-wrapper

*webapp/pom.xml*

(if required), add in dependencies to:
- o.a.i.module:isis-module-audit-jdo
- o.a.i.module:isis-module-command-jdo
- o.a.i.module:isis-module-publishing-jdo
- o.a.i.module:isis-module-publishingeventserializer-ro
- o.a.i.module:isis-module-devutils-impl
- o.a.i.module:isis-module-settings-impl-jdo

*webapp/src/main/webapp/WEB-INF/isis.properties*

enable @DomainServices support using:

isis.services-installer=configuration-and-annotation
isis.services.ServicesInstallerFromAnnotation.packagePrefix=\
                                     com.mycompany.foo,com.mycompany.bar

from isis.services key:

add (if required):
- org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions
-
org.apache.isis.objectstore.jdo.applib.service.background.BackgroundCommandServiceJdoContributions


remove (since now automatically registered via @DomainService):
-
org.apache.isis.objectstore.jdo.datanucleus.service.support.IsisJdoSupportImpl
-
org.apache.isis.objectstore.jdo.datanucleus.service.eventbus.EventBusServiceJdo
-
org.apache.isis.objectstore.jdo.applib.service.background.BackgroundCommandServiceJdo
-
org.apache.isis.objectstore.jdo.applib.service.command.CommandServiceJdoRepository
-
org.apache.isis.objectstore.jdo.applib.service.background.BackgroundCommandServiceJdoRepository
-
org.apache.isis.objectstore.jdo.applib.service.audit.AuditingServiceJdoRepository
-
org.apache.isis.objectstore.jdo.applib.service.publish.PublishingServiceJdoRepository
-
org.apache.isis.viewer.restfulobjects.rendering.eventserializer.RestfulObjectsSpecEventSerializer


It is still necessary to register any service (*Contributions) that affects
the UI
It is also still necessary to register CommandServiceJdo,
AuditingServiceJdo and PublishingServiceJdo, because each of these has
substantive "side-effects" which I would like to keep explicit (at least
for now)


*Other changes that won't impact existing apps*

Mothballed (unreleased) components (ie moved to mothballed/. directory)
- component/objectstore/nosql
- component/objectstore/xml
- component/progmodel/groovy
- component/viewer/dnd
- component/viewer/junit

Mothballed components (have been released in past, but won't be released in
future):
- component/security/file

~~~~~~~~


[1] http://isis.markmail.org/thread/zkjkxsy6a6ea5rla
[2] https://issues.apache.org/jira/browse/ISIS-832
[3] https://issues.apache.org/jira/browse/ISIS-833
[4] https://issues.apache.org/jira/browse/ISIS-493