You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@isis.apache.org by Koen Debruyckere <de...@gmail.com> on 2022/04/09 14:58:53 UTC

Issues upgrading from 2.0.0-M5 to M7

Cross posting from stackoverflow.


<https://stackoverflow.com/posts/71788680/timeline>

I changed my source code and pom.xml upgrading from 2.0.0-M5 to 2.0.0-M7.
Note, that none of the below errors were showing up in M5. The application
is compiling again but when going to the application, it shows a long list
of metamodel validation error that weren't there in M5

This happens on a lot of classes. Any clue as to how to properly fix this,
(for the moment I get no further than commenting them out)?

someClass#defaultXSomeMethod(): is public, but orphaned (was not
picked up by the framework); reporting orphans, because the class is
setup for member introspection, without enforcing annotations

The following occurs on framework classes, and classes from libraries
included that are not part of the domain model itself. I have no clue
what's going on nor how to fix this.

Collection action parameter found without supporting choices or
autoComplete facet. Class: org.apache.isis.applib.query.Query action:
withRange parameter 0

And then this one:

Action method overloading is not allowed, yet
javax.activation.MimeType has action(s) that have a the same member
name: [match]

this is an included library class, and it is used to parse the mimeType
provided as an input parameter in one of the methods of a domain object. It
used to work in M5. Any clue as to how to avoid this, or work around it?

Note, I also get the overloading error on my own DomainObjects (not in M5);
I guess there the work around will be to stop overloading.

Thanks for any hints to point me in the right way.



Some answers from Dan:

In 2.0.0-M6 and 2.0.0-M7 we made the programming model more sophisticated,
but also made the metamodel validator more stringent. Probably easiest for
you to join the mailing list and from there we can invite you onto our
slack channel to help you fix these issues

*"Collection action parameter found without supporting choices or
autoComplete facet. Class: org.apache.isis.applib.query.Query action:
withRange parameter 0"*

If this is a framework service then it shouldn't occur, and sounds like a
bug.

I think the issue is in the isis.core.meta-model.introspector. policy
configuration property - the default is to include non-annotated into the
metamodel and - incorrectly - some types are being included that shouldn't
be.

Alternatively, you can add either @Programmatic or @Domain.Exclude to
ensure that methods are excluded from the metamodel.

> Will try as soon as I can

As a workaround, try changing this config property.

Best though would be to join the users mailing list / slack channel so we
can dig into the issue more thoroughly there.

> Done


Sorry, I'm traveling for the moment and cannot work on the code.

Re: Issues upgrading from 2.0.0-M5 to M7

Posted by Koen Debruyckere <de...@gmail.com>.
Hi,

Finally found some time to work on this again.

@Brian thx for putting me on the right track.  I had indeed some issues
with: domain methods returning a non-Domain class

@Dan thanks for pointing out the work-around with the property

I had some issues with non-domain classes being picked up by the
meta-model, I've sprinkled @Programmatic in the appropriate places had have
been able to mostly get rid of this behaviour.  Two errors are remaining:
```
Collection action parameter found without supporting choices or
autoComplete facet. Class: org.apache.isis.applib.query.Query action:
withRange parameter 0
Collection action parameter found without supporting choices or
autoComplete facet. Class:
org.apache.isis.applib.services.repository.RepositoryService action:
persistAndFlush parameter 0
```
I'm a bit lost as to what is actually generating this; is there a way to
enable more verbose logging, that would for example show the actual domain
class that is at the origin of this?

I have not been able to fix these, but by setting
isis.core.meta-model.introspector.policy=ENCAPSULATION_ENABLED the model
validation PASSED and the application starts.

Thx so far, I may be back with more questions,
Koen





On Mon, 11 Apr 2022 at 05:31, Brian K <ha...@gmail.com> wrote:

> This type of error usually happens to me when I include a data type from
> one of my 3rd party libraries as a return type/parameter of an action or as
> a property.  The framework would walk the members of that type and find all
> sorts of non-isis-compliant classes!   When I upgraded to M7 from M5, I had
> this happen when I introduced an interface (I was trying to track down
> another bug caused by my aggressively persisting objects in my domain
> code).  In my case, replacing the interface with the regular domain class
> brought me back from those errors.   I was led to this solution after
> reading something about abstract classes and overriding actions not
> currently being supported.
>
> On Sat, Apr 9, 2022 at 6:59 AM Koen Debruyckere <de...@gmail.com>
> wrote:
>
> > Cross posting from stackoverflow.
> >
> >
> > <https://stackoverflow.com/posts/71788680/timeline>
> >
> > I changed my source code and pom.xml upgrading from 2.0.0-M5 to 2.0.0-M7.
> > Note, that none of the below errors were showing up in M5. The
> application
> > is compiling again but when going to the application, it shows a long
> list
> > of metamodel validation error that weren't there in M5
> >
> > This happens on a lot of classes. Any clue as to how to properly fix
> this,
> > (for the moment I get no further than commenting them out)?
> >
> > someClass#defaultXSomeMethod(): is public, but orphaned (was not
> > picked up by the framework); reporting orphans, because the class is
> > setup for member introspection, without enforcing annotations
> >
> > The following occurs on framework classes, and classes from libraries
> > included that are not part of the domain model itself. I have no clue
> > what's going on nor how to fix this.
> >
> > Collection action parameter found without supporting choices or
> > autoComplete facet. Class: org.apache.isis.applib.query.Query action:
> > withRange parameter 0
> >
> > And then this one:
> >
> > Action method overloading is not allowed, yet
> > javax.activation.MimeType has action(s) that have a the same member
> > name: [match]
> >
> > this is an included library class, and it is used to parse the mimeType
> > provided as an input parameter in one of the methods of a domain object.
> It
> > used to work in M5. Any clue as to how to avoid this, or work around it?
> >
> > Note, I also get the overloading error on my own DomainObjects (not in
> M5);
> > I guess there the work around will be to stop overloading.
> >
> > Thanks for any hints to point me in the right way.
> >
> >
> >
> > Some answers from Dan:
> >
> > In 2.0.0-M6 and 2.0.0-M7 we made the programming model more
> sophisticated,
> > but also made the metamodel validator more stringent. Probably easiest
> for
> > you to join the mailing list and from there we can invite you onto our
> > slack channel to help you fix these issues
> >
> > *"Collection action parameter found without supporting choices or
> > autoComplete facet. Class: org.apache.isis.applib.query.Query action:
> > withRange parameter 0"*
> >
> > If this is a framework service then it shouldn't occur, and sounds like a
> > bug.
> >
> > I think the issue is in the isis.core.meta-model.introspector. policy
> > configuration property - the default is to include non-annotated into the
> > metamodel and - incorrectly - some types are being included that
> shouldn't
> > be.
> >
> > Alternatively, you can add either @Programmatic or @Domain.Exclude to
> > ensure that methods are excluded from the metamodel.
> >
> > > Will try as soon as I can
> >
> > As a workaround, try changing this config property.
> >
> > Best though would be to join the users mailing list / slack channel so we
> > can dig into the issue more thoroughly there.
> >
> > > Done
> >
> >
> > Sorry, I'm traveling for the moment and cannot work on the code.
> >
>

Re: Issues upgrading from 2.0.0-M5 to M7

Posted by Brian K <ha...@gmail.com>.
This type of error usually happens to me when I include a data type from
one of my 3rd party libraries as a return type/parameter of an action or as
a property.  The framework would walk the members of that type and find all
sorts of non-isis-compliant classes!   When I upgraded to M7 from M5, I had
this happen when I introduced an interface (I was trying to track down
another bug caused by my aggressively persisting objects in my domain
code).  In my case, replacing the interface with the regular domain class
brought me back from those errors.   I was led to this solution after
reading something about abstract classes and overriding actions not
currently being supported.

On Sat, Apr 9, 2022 at 6:59 AM Koen Debruyckere <de...@gmail.com> wrote:

> Cross posting from stackoverflow.
>
>
> <https://stackoverflow.com/posts/71788680/timeline>
>
> I changed my source code and pom.xml upgrading from 2.0.0-M5 to 2.0.0-M7.
> Note, that none of the below errors were showing up in M5. The application
> is compiling again but when going to the application, it shows a long list
> of metamodel validation error that weren't there in M5
>
> This happens on a lot of classes. Any clue as to how to properly fix this,
> (for the moment I get no further than commenting them out)?
>
> someClass#defaultXSomeMethod(): is public, but orphaned (was not
> picked up by the framework); reporting orphans, because the class is
> setup for member introspection, without enforcing annotations
>
> The following occurs on framework classes, and classes from libraries
> included that are not part of the domain model itself. I have no clue
> what's going on nor how to fix this.
>
> Collection action parameter found without supporting choices or
> autoComplete facet. Class: org.apache.isis.applib.query.Query action:
> withRange parameter 0
>
> And then this one:
>
> Action method overloading is not allowed, yet
> javax.activation.MimeType has action(s) that have a the same member
> name: [match]
>
> this is an included library class, and it is used to parse the mimeType
> provided as an input parameter in one of the methods of a domain object. It
> used to work in M5. Any clue as to how to avoid this, or work around it?
>
> Note, I also get the overloading error on my own DomainObjects (not in M5);
> I guess there the work around will be to stop overloading.
>
> Thanks for any hints to point me in the right way.
>
>
>
> Some answers from Dan:
>
> In 2.0.0-M6 and 2.0.0-M7 we made the programming model more sophisticated,
> but also made the metamodel validator more stringent. Probably easiest for
> you to join the mailing list and from there we can invite you onto our
> slack channel to help you fix these issues
>
> *"Collection action parameter found without supporting choices or
> autoComplete facet. Class: org.apache.isis.applib.query.Query action:
> withRange parameter 0"*
>
> If this is a framework service then it shouldn't occur, and sounds like a
> bug.
>
> I think the issue is in the isis.core.meta-model.introspector. policy
> configuration property - the default is to include non-annotated into the
> metamodel and - incorrectly - some types are being included that shouldn't
> be.
>
> Alternatively, you can add either @Programmatic or @Domain.Exclude to
> ensure that methods are excluded from the metamodel.
>
> > Will try as soon as I can
>
> As a workaround, try changing this config property.
>
> Best though would be to join the users mailing list / slack channel so we
> can dig into the issue more thoroughly there.
>
> > Done
>
>
> Sorry, I'm traveling for the moment and cannot work on the code.
>