On Fri, Sep 4, 2015 at 7:19 PM, Dan Haywood <[email protected]>
wrote:

> +1 on that.
>
> That said, I still find myself conflicted on this.  There's definitely some
> value in spiking a business app, without tests, just in order to validate
> that there's a worthwhile app to build.  But if one takes that road, then
> it's soooo very tempting to keep that prototype rather than throwing it
> away.
>
> Although writing fixture scripts adds some overhead, I think it's
> worthwhile to think of writing them as part of the requirements gathering
> phase: what is the "given" (as in given/when/then) for a particular
> scenario.  If one isn't able to get the app into that initial state, then
> there's probably some other prerequisite stories that still need to be
> written.  And of course, those fixture scripts are useful not only for
> demoing the app, but can also be reused in the integration tests.
>
> Anyway, glad you're going back to simpleapp and then adding your own stuff
> in piecemeal.  I suspect it won't take too long to get back to where you
> presently are, but I'm sure you'll tell us one way or another :-)
>
> I'll assume that being ignored is a sign that I've either said too much,
or haven't thought enough!


> Cheers
> Dan
>
> PS: the simpleapp does have a BDD integration with Cucumber.  Although BDD
> is cool, it only makes sense to add the overhead if you are actually doing
> BDD in collaboration with your business users.  If you aren't (ie if
> instead you are "just" deploying the app itself into a UAT environemtn in
> order to obtain feedback / verification of behaviour) then I'd suggest just
> focusing on the regular JUnit tests and remove those BDD specs.
>
> Agreed.

Just a comment on electronic forms, my idea is to interact with the
metamodel, in the way a viewer does I assume, then on anobject create or
update, if any properties of an object aren't in the model the associated
values still get saved as key:value pairs. This is not that far removed
from what happens in the audit module I am guessing. This is simply to
allow the forms to evolve under the control of the users, on a different
cycle to the Java domain model. So the bones of it are there already.

>
> On 4 September 2015 at 10:11, Stephen Cameron <[email protected]>
> wrote:
>
> > Hi,
> >
> > Yes, I could see the probable reason, but couldn't figure out what might
> be
> > a fix it.
> >
> > I have changed strategy and I think it will be better to begin over with
> > simpleapp and add things in. Better to have a starting point that works
> > then I know that the breakage was due to the last thing added, but also
> to
> > do it the TDD way.
> >
> > I looked at fixtures and integtests early on, but was in too much of a
> > hurry to show something to the client. I've decided to go back to the
> right
> > approach.
> >
> > Try to eliminate the stress early (well mid-way) through the project
> rather
> > than it hitting at the end, as I read.
> >
> > On Fri, Sep 4, 2015 at 6:27 PM, Dan Haywood <
> [email protected]>
> > wrote:
> >
> > > Hi Steve,
> > >
> > > I've taken a quick look, and found one issue:
> > >
> > >
> > >
> >
> https://github.com/Stephen-Cameron-Data-Services/isis-chats/blob/master/integtests/src/test/java/au/com/scds/isis/integtests/bootstrap/SimpleAppSystemInitializer.java#L51
> > >
> > > should be "au.com.scds.chats.dom.module".
> > >
> > >
> > > However, the error reporting clearly needs to be better to help track
> > this
> > > down ... I saw an exception regarding the misconfiguration in the
> > console,
> > > but it didn't seem to be written to stdout or stderr, for some reason.
> > >
> > > The subsequent exception that you are seeing (NullPointerException) is
> > > because Isis tries to do a shutdown after a failed initialization, and
> > this
> > > fails - perhaps not surprisingly - because the initialization was
> > > incomplete.  I think this could be improved too, so will look into it.
> > >
> > > ~~~
> > >
> > > With this issue fixed, I did then hit a further issue with respect to
> > > database schemas.  I will take a look at that later today, though I
> have
> > > some other things to work on first, I'm afraid
> > >
> > > HTH
> > > Dan
> > >
> > >
> > >
> > >
> > > On 4 September 2015 at 06:10, Stephen Cameron <
> > [email protected]>
> > > wrote:
> > >
> > > > Hi All,
> > > >
> > > > I am trying to make a start with integration testing, not much
> success
> > so
> > > > far.
> > > >
> > > > I am getting an NullPointerException in the metamodel creation phase
> I
> > > > think.
> > > >
> > > >
> > > The stack trace indicates that the framework can't find an
> implementation
> > > of TranslationService.  Under normal circumstances the implementation
> is
> > > provided by default by the framework
> > > (org.apache.isis.core.runtime.services.i18n.po.TranslationServicePo).
> > >
> > >
> > >
> > >
> > > > I tried to set a breakpoint in Eclipse to see what is being
> translated,
> > > but
> > > > that does not happen for this exception, do I need to have the Isis
> > code
> > > on
> > > > the classpath?
> > > >
> > > > Maybe I can get more info on the metamodel validation in the log? I
> am
> > > > mostly just seeing the datanuclues db schema creation to this point.
> > > >
> > > > Perhaps I need to go back to the start, beginning with simpleapp and
> > > start
> > > > adding things to be truly doing TDD! Retrospective is not easy :)
> > > >
> > > > java.lang.NullPointerException
> > > > 14:58:11,347  [ObjectReflectorDefault Thread-0   INFO ]  shutting
> down
> > > >
> > org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault@6c9499ea
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated.<init>(NamedFacetTranslated.java:42)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.translateName(TranslationFacetFactory.java:98)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.process(TranslationFacetFactory.java:61)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor.process(FacetProcessor.java:324)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createPropertyFacetedMethodsFromAccessors(FacetedMethodsBuilder.java:385)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.findAndRemovePropertyAccessorsAndCreateCorrespondingFacetedMethods(FacetedMethodsBuilder.java:339)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createAssociationFacetedMethods(FacetedMethodsBuilder.java:316)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.getAssociationFacetedMethods(FacetedMethodsBuilder.java:294)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.createAssociations(ObjectSpecificationDefault.java:220)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.introspectTypeHierarchyAndMembers(ObjectSpecificationDefault.java:178)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspect(ObjectReflectorDefault.java:514)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspectIfRequired(ObjectReflectorDefault.java:501)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecificationForSubstitutedClass(ObjectReflectorDefault.java:400)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.internalLoadSpecification(ObjectReflectorDefault.java:378)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecification(ObjectReflectorDefault.java:344)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.catalogNamedQueries(DataNucleusApplicationComponents.java:242)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.initialize(DataNucleusApplicationComponents.java:112)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.<init>(DataNucleusApplicationComponents.java:103)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createDataNucleusApplicationComponentsIfRequired(DataNucleusPersistenceMechanismInstaller.java:134)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createObjectStore(DataNucleusPersistenceMechanismInstaller.java:110)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory.createPersistenceSession(PersistenceSessionFactory.java:95)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.session.IsisSessionFactory.openSession(IsisSessionFactory.java:141)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.context.IsisContextStatic.openSessionInstance(IsisContextStatic.java:70)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.context.IsisContext.openSession(IsisContext.java:279)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.IsisSystem.shutdownServices(IsisSystem.java:311)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.IsisSystem.shutdown(IsisSystem.java:300)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest.shutdown(IsisSystemForTest.java:467)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest.access$100(IsisSystemForTest.java:74)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest$Builder$1.run(IsisSystemForTest.java:301)
> > > > java.lang.NullPointerException
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated.<init>(NamedFacetTranslated.java:42)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.translateName(TranslationFacetFactory.java:98)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.facets.all.i18n.TranslationFacetFactory.process(TranslationFacetFactory.java:61)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor.process(FacetProcessor.java:324)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createPropertyFacetedMethodsFromAccessors(FacetedMethodsBuilder.java:385)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.findAndRemovePropertyAccessorsAndCreateCorrespondingFacetedMethods(FacetedMethodsBuilder.java:339)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createAssociationFacetedMethods(FacetedMethodsBuilder.java:316)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.getAssociationFacetedMethods(FacetedMethodsBuilder.java:294)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.createAssociations(ObjectSpecificationDefault.java:220)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.introspectTypeHierarchyAndMembers(ObjectSpecificationDefault.java:178)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspect(ObjectReflectorDefault.java:514)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspectIfRequired(ObjectReflectorDefault.java:501)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecificationForSubstitutedClass(ObjectReflectorDefault.java:400)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.internalLoadSpecification(ObjectReflectorDefault.java:378)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecifications(ObjectReflectorDefault.java:415)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.createAssociationFacetedMethods(FacetedMethodsBuilder.java:310)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.getAssociationFacetedMethods(FacetedMethodsBuilder.java:294)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.createAssociations(ObjectSpecificationDefault.java:220)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.introspectTypeHierarchyAndMembers(ObjectSpecificationDefault.java:178)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspect(ObjectReflectorDefault.java:514)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.introspectIfRequired(ObjectReflectorDefault.java:501)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecificationForSubstitutedClass(ObjectReflectorDefault.java:400)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.internalLoadSpecification(ObjectReflectorDefault.java:378)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault.loadSpecification(ObjectReflectorDefault.java:344)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.catalogNamedQueries(DataNucleusApplicationComponents.java:242)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.initialize(DataNucleusApplicationComponents.java:112)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusApplicationComponents.<init>(DataNucleusApplicationComponents.java:103)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createDataNucleusApplicationComponentsIfRequired(DataNucleusPersistenceMechanismInstaller.java:134)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller.createObjectStore(DataNucleusPersistenceMechanismInstaller.java:110)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory.createPersistenceSession(PersistenceSessionFactory.java:95)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.session.IsisSessionFactory.openSession(IsisSessionFactory.java:141)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.context.IsisContextStatic.openSessionInstance(IsisContextStatic.java:70)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.context.IsisContext.openSession(IsisContext.java:279)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.IsisSystem.shutdownServices(IsisSystem.java:311)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.runtime.system.IsisSystem.shutdown(IsisSystem.java:300)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest.shutdown(IsisSystemForTest.java:467)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest.access$100(IsisSystemForTest.java:74)
> > > >     at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.integtestsupport.IsisSystemForTest$Builder$1.run(IsisSystemForTest.java:301)
> > > > 14:58:11,442  [ObjectReflectorDefault Thread-1   INFO ]  shutting
> down
> > > >
> > org.apache.isis.core.metamodel.specloader.ObjectReflectorDefault@6c9499ea
> > > >
> > > > Results :
> > > >
> > > > Tests in error:
> > > >   TODO: implement me
> > > >   TODO: implement me
> > > >   TODO: implement me
> > > >   TODO: implement me
> > > >   TODO: implement me
> > > >   TODO: implement me
> > > >   ParticipantsIntegTest$Create>SimpleAppIntegTest.initClass:33 »
> > Runtime
> > > > java.la...
> > > >   ParticipantsIntegTest$ListAll>SimpleAppIntegTest.initClass:33 »
> > Runtime
> > > > java.l...
> > > >
> > >
> >
>

Reply via email to