Clone Tools
  • last updated 14 mins ago
Constraints: committers
Constraints: files
Constraints: dates
ISIS-2033: remove AppManifestProvider interface and do some cleanup


  1. … 24 more files in changeset.
2039 redesign of config (#134)

* ISIS-2039: major refactoring

move config code into its own module

remove number of classes in metamodel, that hold a reference to

IsisConfiguration or its implementation

hide the mutable IsisConfigurationDefault


* ISIS-2039: reduce visibility of some config classes


* ISIS-2039: simplify config access


* ISIS-2039: cleaning up the component-provider mess

for web-modules: no longer negotiate by writing attributes to the

servlet-context, instead use a java class for that


* ISIS-2039: fixing some tests


* ISIS-2039: removing arguments of @PostConstruct methods


* ISIS-2039: lazy binding to config for wicket


* ISIS-2039: proposed test fix

also cleaning up verbose tests


* ISIS-2039: more test fixes


* ISIS-2039: experimenting with AppConfig managed by Guice


* ISIS-2039: solving the AppManifest lookup problem independently of the

configuration bootstrapping


* ISIS-2039: simplify helloworld


* ISIS-2039: moving type discovery to an earlier stage in bootstrapping

Integration Test Bootstrapping works.


* ISIS-2039: on web-context: move the config bootstrapping from wicket

module to the main ServletContextListener

such that the wicket module is no longer responsible for initiating the



* ISIS-2039: config bootstrapping: fixes the resource chain


* ISIS-2039: allow ServiceLoader lookup for AppConfig to fallback ...

to previous behavior, that is to lookup the AppManifest from config

property 'isis.appManifest'


* ISIS-2039: fixes concurrent modification with _Context

add a property 'isUnitTesting' to the IsisSystemEnvironment, to help

with the decision on how to bootstrap the configuration

also doing some cleaning up


* ISIS-2039: fixing junit tests ...

by having the IsisSystemEnvironment#isUnitTesting correctly setup by



* ISIS-2039: further fixing tests ...

also moving ExceptionRecognizer services that depend on the 'config'

module from 'applib' to 'runtime'


* ISIS-2039: fixing tests, that fail due to new domain object annot.



* ISIS-2039: unify config bootstrapping code for maven-plugin,

wicket-viewer and headless


* ISIS-2039: to fix prev. commit: let the maven-plugin bootstrap the

configuration properly


* ISIS-2039: fixing mm verification tests


* ISIS-2039: reinstating the ConfigurationServiceDefault

also renaming packages within the 'config' module -> 'o.a.i.config'


* ISIS-2039: removing the ConfigurationService interface

use the singleton IsisConfiguration instead

for the UI, the ConfigurationServiceMenu was renamed to

ConfigurationMenu which uses a ConfigurationViewService for the single

purpose of displaying config values


* ISIS-2039: reorg. packages


  1. … 425 more files in changeset.
ISIS-1976: polishing ServiceInjector and ServiceRegistry API

let ServiceInjector implement ServiceRegistry

service lookup result is now an Optional instead of a nullable Object


  1. … 86 more files in changeset.
Merge branch 'master' into v2

  1. … 3 more files in changeset.
ISIS-1974: switches isis mojo logging back to INFO

ISIS-1974: attempts to track down deadlock in validate

Bootstraps validate plugin in DEBUG mode; switch specification loader to

run sequentially

  1. … 1 more file in changeset.
  1. … 314 more files in changeset.
ISIS-1841 automated source cleanup

Add missing '@Override' annotations

Remove trailing white spaces on all lines

Correct indentation

  1. … 1404 more files in changeset.
ISIS-1841: further cleaning up some compiler warnings


  1. … 8 more files in changeset.
ISIS-1841 comments: further remove visual clutter

  1. … 80 more files in changeset.
ISIS-1841 comments: reduce visual clutter

replace 'region .. endregion' comment markers with just headers

  1. … 122 more files in changeset.
ISIS-1745: updates SimpleModuleManifest so that isis:validate *does* bootstrap DataNucleus.

  1. … 1 more file in changeset.
ISIS-1427: renamed IsisSystem to IsisSessionFactoryBuilder; bind IsisSessionFactory to http servlet context rather than IsisSystem (also do this in IsisWicketApplication); make OidMarshaller a singleton; remove convenience accessors from ServicesInjector; bind DeploymentCategory as a "service" (bean) in ServicesInjector; similarly refactor to remove AuthenticationSessionProvider service; MSG_ constants now listed in MessageRegistry

  1. … 58 more files in changeset.
ISIS-1427: renames methods in IsisSystemForTest, rationalizes functionality between IsisSystem and IsisSessionFactory

The intent being that IsisSystem is just a builder for IsisSessionFactory. The responsibility for calling @PostConstruct and @PreDestroy was held by IsisSystem, meaning that it was necessary to call both shutdown on IsisSessionFactory and then on IsisSystem. Moving the responsibility for services initialization/destroy into IsisSessionFactory therefore simplifies the callers; there is no need to hold onto the IsisSystem, just use the IsisSessionFactory.

As part of this the DeploymentCategoryProviderDefault is now a fallback service, added into ServicesInjector prior to init'ing the guice IsisInjectModel (which creates the IsisSystem and thence IsisSessionFactory).

  1. … 25 more files in changeset.
ISIS-1427: simplifying IsisContext and minimizing calls to it; also removed Localization (unused)

  1. … 214 more files in changeset.
ISIS-1427: use DeploymentCategory rather than DeploymentType throughout (except in very initial bootstrapping).


- no need for IsisInjectModel to expose DeploymentType or IsisConfiguration as @Provides @Singleton

- remove DeploymentType from IsisComponentProvider classes (plays no part), just pass to IsisSystem directly.

- allow IsisSystem to be created from a non-null AppManifest (internally creates a default IsisComponentProviderDefault2)

  1. … 40 more files in changeset.
ISIS-1393: if IsisSystem fails to init (for any reason), then fail the mojo

ISIS-1419: simplified Session management.

The exception resulting, I believe, from lack of symmetry in the integ tests: they set up a single session for all tests, but in the shutdown (called by a Runtime hook), create a different session again to perform the @PreDestroy stuff. In this commit, I've decided to get rid of this shutdown stuff, basically orphaning that initial session (it is never closed down, but then the JVM quits anyway, and this is for an inmemory databases so no real harm).

A subsequent commit will take look to close the session in the teardown of each test.

In detail:

- in IsisContext, change the Map<Thread,IsisSession> into a simple ThreadLocal. remove the logic to save every IsisSession in this map, and remove the closeAllSessionsInstance(). In IsisSession, remove the id() and sessionOpenTime properties (now unused), and remove closeAll() - was now just the same as close();

- in PersistenceSession, split out calling of __isis_startRequest/__isis_postConstruct and then __isis_preDestroy/__isis_endRequest into two loops, just so easier to move around if need be. (Currently, calling one after the other, so no functional change here).


- no longer allow the ProgrammingModel to be overridden (in IsisComponentProviderDefault, IsisComponentProviderDefault2, IsisSystemForTest, IsisMojoAbstract)

- reformatted IsisSystemForTest (comments), also WebRequestCycleForIsis

- ServiceInitializer, introduced constructor for state (rather than pass into validate(...)); updated IsisSystem correspondingly

- removed unused method in DeploymentType

  1. … 11 more files in changeset.
ISIS-1407: SpecificationLoader is now a concrete class (rolled ObjectReflector up into it).

  1. … 155 more files in changeset.
ISIS-1406: simpleapp integ tests also now running

  1. … 2 more files in changeset.
ISIS-1342: IsisSystem no longer throws MetaModelException, instead pushes it onto the IsisContext. Its callers (IsisWicketApplication, or IsisSessionFilter - for RO - or CukeGlueAbstract, or IsisSystemForTest) then expose the error appropriately, accessing from IsisContext.

Additional details:

- IsisSystem no longer initializes the AuthenticationManager, AuthorizationManager or PersistenceSessionFactory if there was a metamodel validation, to minimize impact on runtime.

- IsisSystemForTest will fail with a minimal error for any subsequent tests

- IsisContext now as new metamodeInvalidException field. This is static rather than held on the IsisContext instance as a threadlocal; that's because IsisSystemForTest actually calls IsisContext.testReset() to discard the IsisContext singleton.

- IsisSessionFilter (which sits in front of RO viewer) now always checks that the metamodel is vaild. It does this simply by querying the IsisContext. (If WebAppBootstrapper was used to bootstrap, rather than wicket viewer, then IsisSystem.init() is still called so no diff in end result)

- ScenarioException simply does a fail() if no instance available on threadlocal.

- CukeGlueAbstract similarly has simple guards for if ScenarioException available, to reduce amount of noise when problem is metamodel invalid

- formatting changes only for IsisWicketApplication

- WebRequestCycleForIsis looks for validation errors first-off in its onException handler, if any are found then immediately redirects to the MmvErrorPage. This seems to work fine for always rendering MMV page.


- IsisMojoAbstract keeps the IsisSystem initialized while it executes.

  1. … 9 more files in changeset.
ISIS-1313: new 'commonSchemas' configuration parameter.

ISIS-1237: swagger mojo, also some updates to docs and simpleapp archetype

    • -0
    • +134
  1. … 3 more files in changeset.
ISIS-1258: adding xsd goal for mvn plugin.

    • -0
    • +155
ISIS-1194: simplify isis-maven-plugin to use appManifest (rather than isisConfigDir).

As a result, delete the IsisMetaModel class, since no longer required.

  1. … 5 more files in changeset.
ISIS-1194: simplfying the bootstrap and wiring of components, in particular around PersistenceSessionFactory


- IsisSessionFactory

- now passed in the ServicesInjector (rather than obtaining it from the PersistenceSessionFactory)

- initialization of FixtureClock done in IsisSessionFactory rather than PersistenceSessionFactory

- IsisSystem

- createSessionFactory(), changed the order in order to remove some bidir relationships

- in shutdownServices, avoid NPE if the serviceInitializer was never instantiated during init()

- PersistenceSessionFactory

- no longer implements MetaModelRefiner, instead moved out to separate class (PersistenceSessionFactoryMetamodelRefiner)

- this allows us to break the bidir between PersistenceSessionFactory and SpecificationLoader

- no longer requires a RuntimeContext

- no longer requires a ServicesInjector (is provided by IsisSessionFactory when #createPersistenceSession() is called to pass onto the created PersistenceSession)

- no longer implements SpecificationLoaderAware, nor requires a SpecificationLoader (is provided by IsisSessionFactory when #createPerisistenceSession is called)

- similar changes to IsisMetaModel, in its constructor an init() method, to wire up components in the correct order

- PersistenceSession

- no longer holds reference to PersistenceSessionFactory (though does only as FixturesInstallerFlag in order that PSF can continue to cache whether fixtures installed)

- is passed in the JDO PersistenceManagerFactory from Isis' PSF (rather than accessing the PSF's DataNucleusApplicationComponents, which is now wholly internal to PSF)

- is passed in the ServicesInjector directly (rather than obtain from Isis' PSF)

- RuntimeContextAbstract

- now also passed in SpecificationLoader into its constructor (required reordering of IsisSessionFactory#init to be able to do this)

- thereby remove the whole SpecificationLookupDelegator contrivance

- JavaReflectorHelper

- pass through deploymentType to ObjectReflectorDefault

- ObjectReflectorDefault

- removal of isInjectorMethodFor, instead have callers instantiate the InjectorMethodEvaluatorDefault directly

also, to make caller hierarchy more useful::

- changed ApplicationScopedComponent and SessionScopedComponent into marker interfaces

- removed Injectable, pushed injectInto(Object) into subtypes


- enhanced IsisMojoAbstract and IsisMojoValidate (maven-isis-plugin)

- to accept an appManifest in the pom.xml

- use an AppManifest rather than MetaModel to bootstrap the system and validate

- moved IsisComponentProviderDefault from core-integtest into core-runtime (renamed as ...Default2), so can be used by maven-isis-plugin


- deleted AdapterManagerDefault, no longer used

  1. … 64 more files in changeset.
ISIS-1194: moving application-scoped components to RuntimeContextAbstract superclass; IsisTransaction simplifications

- IsisConfigurationDefault now implements ConfigurationService (and using IsisConfigurationDefault concrete class rather than interface where necessary)

- RuntimeContext implementations now require a ServiceInjector, and default the deployment category and configuration; these are set up and immutable for the runtime context

- meaning that RuntimeContext no longer is ServiceInjectorAware.


- IsisTransaction passed through the PersistenceSession (rather than obtain from IsisContext)

  1. … 21 more files in changeset.
ISIS-848: enhancing IsisComponentProvider impls to honour GlobSpec if present.


- chaged GlobSpec API to return list of classes of fixture scripts, rather than the fixture scripts themselves.

- standardized method names of IsisComponentProvider interface ("provide..." instead of a mixture of "provide..." and "obtain...")

-moved common functionality into IsisComponentProviderAbstract, including having InstallerComponentProviderUsingInstallers eagerly evaluating

- removed superfluous constants in SystemConstants

- simplified ServicesInstaller#getServices(DeploymentType) to just #getServices(...), since the globSpec will now be the preferred way to vary runtimes

- made the ServicesInstaller impls all inherit from ServicesInstallerAbstract

- extending IsisConfigurationBuilder and InstallerLookup to allow the IsisComponentProvider to put new properties into the config

  1. … 20 more files in changeset.
ISIS-284: use injected @Parameter for configuration rather than reading directly.

ISIS-284: renaming of mojo classes to better capture intent (IsisRunnable -> MetaModelProcessor, IsisMojoReporter -> MetaModelProcessor.Context).

Also add the MavenProject into the MetaModelValidator.Context interface, and make private in IsisMojoAbstract. That way all the stuff that the subclasses (eg IsisMojoValidate) needs is available in the MetaModelProcessor.Context API)

    • -0
    • +46