Here's some detail from Sotty:- - It is indeed necessary to declare a legacy class if you want another to extend it.
- The classFieldAccessor constructor requires both getter and setter to be present for each field, so there's indeed a bug. A field must be inherited if and only if it has both getter and setter (right now, only the getter is checked). I have put an additional condition in the PackageBuilder: this will allow to extend non-bean "legacy" classes. - Currently, when you redeclare a field, it is overridden. On a second and third thought, I do not "like" this behaviour, so I have changed the PB to prevent fields from being overridden :) - It is still possible to redeclare a field with the same name if the type is the same - Declared metadata is already inherited by extenders Thanks for the insights Sotty. Mike On 13 July 2011 13:00, Michael Anstis <michael.ans...@gmail.com> wrote: > Wolfgang, still no news as to the expected behaviour :( > > Sotty, I appreciate you are probably busy with other activities, however > any your thoughts on the following would be most welcome:- > > - For POJOs is a field only added to the declared type if it has a > getter and setter (something laune said he'd seen; email earlier in this > thread)? > - Are fact-level annotations inherited? > - Are field-level annotations inherited? > - Type erasure on subclasses, if type A declares "myVar : String" and > type B extends A and declaring "myVar : Integer", what should happen? > > For others interested, here's some answers already received: > > - Can declarative types extend Java POJOs and other declared types? > > <sotty> yes > > - For POJO's do I need to include an "empty" declaration? So "declare > java.util.ArrayList end" if I want to "declare MyList extends ArrayList" in > a java.util package? > > <sotty> no, it should be enough to import the fqn or use it in the > "extends". > *<manstis> note this is different to what is documented in the Drools > Expert user-guide > * > Thanks, > > Mike > > > On 12 July 2011 13:12, Michael Anstis <michael.ans...@gmail.com> wrote: > >> https://issues.jboss.org/browse/JBRULES-3133 created. >> >> >> On 12 July 2011 13:08, Michael Anstis <michael.ans...@gmail.com> wrote: >> >>> There's also a quirk regarding the class resolution:- >>> >>> Given Person class:- >>> >>> package com.guvnor.domain; >>> >>> import java.math.BigDecimal; >>> >>> public class Person { >>> >>> private BigDecimal salary; >>> >>> public BigDecimal getSalary() { >>> return salary; >>> } >>> >>> public void setSalary(BigDecimal salary) { >>> this.salary = salary; >>> } >>> >>> } >>> >>> >>> The following compiles OK:- >>> >>> package com.sample >>> >>> import com.guvnor.domain.Person >>> >>> declare Person >>> end >>> >>> However the following does not (without explicitly importing >>> java.math.BigDecimal - which is a field type in Person):- >>> >>> package com.sample >>> >>> import com.guvnor.domain.Person >>> import com.guvnor.domain.Address >>> >>> declare Person >>> end >>> >>> declare Person2 extends Person >>> flange : String >>> end >>> >>> Error being "Unknown DroolsError class >>> org.drools.compiler.TypeDeclarationError: Unable to find class 'BigDecimal' >>> ". >>> >>> With kind regards, >>> >>> Mike >>> >>> >>> On 11 July 2011 08:41, Wolfgang Laun <wolfgang.l...@gmail.com> wrote: >>> >>>> Subsection 5.7.7 discusses 'extends' and describes how it is done for >>>> types declared in Java. >>>> >>>> One finesse is apparently not documented: Java types must be proper >>>> JavaBeans; otherwise the construction of the accessors will fail. (Try, for >>>> instance, a property with a getter but no matching setter.) >>>> >>>> HTH >>>> -W >>>> >>>> >>>> On 10 July 2011 22:29, Michael Anstis <michael.ans...@gmail.com> wrote: >>>> >>>>> What's the rules around declared types extending another (declared) >>>>> type? >>>>> >>>>> I've been asked to provide for declared type extension in Guvnor (by >>>>> Prakash) but the Expert user-guide doesn't say it exists at the engine >>>>> level. >>>>> >>>>> I tried "declare MyType extends java.util.ArrayList" and received a >>>>> parser\compiler error stating "java.util.ArrayList was not a declared >>>>> type" >>>>> (or words to that effect) so some form of extension appears possible. >>>>> >>>>> Thanks, >>>>> >>>>> Mike >>>>> >>>>> _______________________________________________ >>>>> rules-dev mailing list >>>>> rules-dev@lists.jboss.org >>>>> https://lists.jboss.org/mailman/listinfo/rules-dev >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> rules-dev mailing list >>>> rules-dev@lists.jboss.org >>>> https://lists.jboss.org/mailman/listinfo/rules-dev >>>> >>>> >>> >> >
_______________________________________________ rules-dev mailing list rules-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-dev