isis-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stephen Cameron <steve.cameron...@gmail.com>
Subject Re: Datanucleus issues
Date Tue, 01 Sep 2015 22:19:53 GMT
OK, I should have tried that, but should I need to? Surely the scope of the
concrete child class overrides that, it just specifies which concrete
classes can extend it?

On Wed, Sep 2, 2015 at 4:44 AM, Jeroen van der Wal <jeroen@stromboli.it>
wrote:

> If you make your abstract class public it should work fine ;-)
>
> Cheers,
>
> Jeroen
>
> On 1 September 2015 at 15:12, Stephen Cameron <steve.cameron.62@gmail.com>
> wrote:
>
> > Here a two scenarios each with a Parent and Child Type, they should give
> > the same result
> >
> > 1. Concrete Parent Type
> >
> > @PersistenceCapable()
> > public class ConcreteParentType {
> >
> >     @PrimaryKey()
> >     @Persistent(valueStrategy=IdGeneratorStrategy.INCREMENT)
> >     private Long id;
> >
> >     private String name;
> >
> >     @Column(allowsNull="true")
> >     @MemberOrder(sequence = "1")
> >     public String getName() {
> >         return name;
> >     }
> >
> >     public void setName(final String name) {
> >         this.name = name;
> >     }
> >
> > }
> >
> > @PersistenceCapable()
> > public class ChildTypeOfConcreteParentType extends ConcreteParentType {
> >
> >
> >     private String description;
> >
> >     @Column(allowsNull="true")
> >     @MemberOrder(sequence = "2")
> >     public String getDescription() {
> >         return description;
> >     }
> >
> >     public void setDescription(final String description) {
> >         this.description = description;
> >     }
> >
> > }
> >
> > 2. Abstract Parent Type
> >
> > @PersistenceCapable()
> > @Inheritance(strategy = InheritanceStrategy.SUBCLASS_TABLE)
> > abstract class AbstractParentType {
> >
> >     @PrimaryKey()
> >     @Persistent(valueStrategy=IdGeneratorStrategy.INCREMENT)
> >     private Long id;
> >
> >     private String name;
> >
> >     @Column(allowsNull="true")
> >     @MemberOrder(sequence = "1")
> >     public String getName() {
> >         return name;
> >     }
> >
> >     public void setName(final String name) {
> >         this.name = name;
> >     }
> >
> > }
> >
> > @PersistenceCapable()
> > public class ChildTypeOfAbstractParentType extends AbstractParentType {
> >
> >     private String description;
> >
> >     @Column(allowsNull="true")
> >     @MemberOrder(sequence = "2")
> >     public String getDescription() {
> >         return description;
> >     }
> >
> >     public void setDescription(final String description) {
> >         this.description = description;
> >     }
> >
> > }
> >
> > In the seond scenario the name property doesn't appear, only the
> > description.
> >
> > The DomainService class for testing these two scenarios in the viewer is
> > this:
> >
> > @DomainService(nature=NatureOfService.VIEW_MENU_ONLY)
> > @DomainServiceLayout(named = "DataNucleus", menuBar = MenuBar.PRIMARY,
> > menuOrder = "100")
> > public class Menu {
> >
> >
> >
> >     public ChildTypeOfConcreteParentType
> > createChildTypeOfConcreteParentType() {
> >         ChildTypeOfConcreteParentType childType = null;
> >         try {
> >             childType =
> > container.newTransientInstance(ChildTypeOfConcreteParentType.class);
> >             childType.setName("ChildTypeOfConcreteParentType");
> >             childType.setDescription("something descriptive");
> >             container.persistIfNotAlready(childType);
> >         } catch (Exception e) {
> >             e.printStackTrace();
> >         }
> >         return childType;
> >     }
> >
> >     public ChildTypeOfAbstractParentType
> > createChildTypeOfAbstractParentType() {
> >         ChildTypeOfAbstractParentType childType = null;
> >         try {
> >             childType =
> > container.newTransientInstance(ChildTypeOfAbstractParentType.class);
> >             childType.setName("ChildTypeOfAbstractParentType");
> >             childType.setDescription("something descriptive");
> >             container.persistIfNotAlready(childType);
> >         } catch (Exception e) {
> >             e.printStackTrace();
> >         }
> >         return childType;
> >     }
> >
> >
> >
> >     @javax.inject.Inject
> >     DomainObjectContainer container;
> >
> > }
> >
> >
> > On Tue, Sep 1, 2015 at 10:42 PM, Stephen Cameron <
> > steve.cameron.62@gmail.com
> > > wrote:
> >
> > > Hi Jeroen, just noticed this after sending second update (winge).
> > >
> > > I'll send a test case now.
> > >
> > > On Tue, Sep 1, 2015 at 10:29 PM, Jeroen van der Wal <
> jeroen@stromboli.it
> > >
> > > wrote:
> > >
> > >> Hi Stephen,
> > >>
> > >> Can you share some code to support your case?
> > >>
> > >> Cheers,
> > >>
> > >> Jeroen
> > >>
> > >> On 1 September 2015 at 12:39, Stephen Cameron <
> > steve.cameron.62@gmail.com
> > >> >
> > >> wrote:
> > >>
> > >> > Hi,
> > >> >
> > >> > I've been trying today to find solutions to what seem to be
> > Datanucleus
> > >> > issues, but without much success. So rather than solve the problems
> > >> created
> > >> > in my refactoring of my application, which has been too hard
> frankly,
> > >> I'm
> > >> > trying to start afresh with some simple test cases, show these work,
> > >> then
> > >> > add more complexity till I get where I want to be.
> > >> >
> > >> > So, I am starting this approach and I immediately have an issue, but
> > >> not a
> > >> > Datanucleus one, I find that the value properties of an abstract
> > parent
> > >> > class don't appear in the Wicket viewer, whereas they do if the
> parent
> > >> > class is concrete. Is this correct and if so what is the reason?
> > >> >
> > >> > Thanks.
> > >> >
> > >>
> > >
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message