[rules-users] Guided Rule Editor doesn't list no-setter-fields if a fact is annotated

Michael Anstis michael.anstis at gmail.com
Wed Dec 21 11:53:58 EST 2011


Thanks Toshiya.

If you don't get a chance to make a pull request don't worry, I will pick
up in the New Year.

>From the information you've given the "addFieldsForType" method should
perform a merge and not an overwrite.

2011/12/21 Toshiya Kobayashi <tkobayas at redhat.com>

> Okay, I've raised a JIRA.
>
> https://issues.jboss.org/browse/GUVNOR-1792
>
> I hope I can make a pull request soon :)
>
> Cheers,
> Toshiya
>
> ------------------------------
> *From: *"Michael Anstis" <michael.anstis at gmail.com>
> *To: *"Rules Users List" <rules-users at lists.jboss.org>
> *Sent: *Wednesday, December 21, 2011 6:29:55 AM
>
> *Subject: *Re: [rules-users] Guided Rule Editor doesn't list
> no-setter-fields if a fact is annotated
>
> Hi,
>
> It sounds like a bug then :)
>
> Can you please raise a JIRA (https://issues.jboss.org/browse/GUVNOR) and
> assign to me?
>
> I won't be looking at coding a fix until the New Year (vacation) but if
> you want to submit a GIT pull request I'll happily take a look.
>
> With kind regards,
>
> Mike
>
> 2011/12/20 Toshiya Kobayashi <tkobayas at redhat.com>
>
>> Thanks Michael and Mark.
>>
>> > If the member has a getter it is available in the LHS (=Guided Rule
>> Editor lists it in "Modify constraints" popup)
>>
>> Got it. I see it's true with a basic uploaded Pojo.
>>
>> But, hmm, in my case, it's not.
>> If I annotate the Pojo in "New Declarable Model", the getter-only-member
>> becomes unavailable in the LHS (=Guided Rule Editor doesn't list it in
>> "Modify constraints" popup).
>>
>> # Maybe you misread the word "Modify"? I meant the popup in LHS.
>>
>> So it can be an issue only when I want to use existing beans and need to
>> annotate them (e.g. for CEP support).
>>
>> === Analysis ===
>> With a debugger, I observed that
>> SuggestionCompletionLoader.populateDeclaredFactType() overwrites
>> SuggestionCompletionEngineBuilder.fieldsForType if a Pojo is annotated as a
>> declarative model.
>>
>> SuggestionCompletionLoader.java
>>
>> 407     private void populateDeclaredFactType(List<TypeDeclarationDescr>
>> th) {
>> ...
>> 469         this.builder.addFieldsForType( declaredType,
>> 470                                        fieldNames.toArray( new
>> String[fieldNames.size()] ) );
>> ...
>> 473     }
>>
>> SuggestionCompletionEngineBuilder.java
>>
>> 111     public void addFieldsForType(final String type,
>> 112                                  final String[] fields) {
>> 113         this.fieldsForType.put( type,
>> 114                                 fields );
>> 115     }
>>
>> fieldsForType is overwritten based on TypeDeclarationDescr of the
>> declarative model.
>> The TypeDeclarationDescr is created in
>> SuggestionCompletionLoader.makePseudoTypeDeclarationDescrFromSuperClassType().
>> It accepts only setter+getter fields.
>> It looks intentional... but misses to concern the above use case?
>>
>> Cheers,
>> Toshiya
>>
>> ------------------------------
>> *From: *"Mark Proctor" <mproctor at codehaus.org>
>> *To: *rules-users at lists.jboss.org
>> *Sent: *Tuesday, December 20, 2011 1:28:09 AM
>> *Subject: *Re: [rules-users] Guided Rule Editor doesn't list
>> no-setter-fields if a fact is annotated
>>
>>
>> Sorry I misread what you said. I thought you said that beans are only
>> usable in the IDE if it has both a getter and a setter - my misundestanding.
>>
>> M
>> On 19/12/2011 16:19, Michael Anstis wrote:
>>
>> I'm not clear on what you are saying.
>>
>> We reflect the methods of existing beans:-
>>
>>    - If the member has a getter it is available in the LHS
>>    - If the member has a setter it is available in the RHS
>>    - If the member has a getter and a setter it is available in both the
>>    LHS and RHS
>>
>> Members of declared types are available in both the LHS and RHS (as we
>> implicitly create getters and setters).
>>
>> I don't understand "we should only support getters" but "be intelligent
>> enough not to allow the setter to be used in the IDE". If we only support
>> getters there is no setter; and if there is no setter how do we allow the
>> user to set the value? Of course my comments are from a Guvnor perspective,
>> if you mean to change the way declared types work, then... well, we'll have
>> to change Guvnor anyway :)
>>
>> 2011/12/19 Mark Proctor <mproctor at codehaus.org>
>>
>>>  On 19/12/2011 16:04, Michael Anstis wrote:
>>>
>>> You are not mistaken.
>>>
>>> For POJO models we use reflection (class.getMethods) to determine
>>> whether a Type's methods members are available in the LHS or RHS or both,
>>> according to Java Bean conventions. Declarative models have their members
>>> available in both the LHS and RHS by default as we generate "getters" and
>>> "setters" for them.
>>>
>>>  It probably looks like we should support only getters though, for
>>> existing beans. We just need to be intelligent enough not to allow the
>>> setter to be used in the IDE.
>>>
>>> Toshiya: Sounds like a great introduction task, you up for the challenge?
>>>
>>> Mark
>>>
>>>
>>> On 19 December 2011 05:47, Toshiya Kobayashi <tkobayas at redhat.com>wrote:
>>>
>>>> Hello,
>>>>
>>>> In Guvnor 5.3.0, I can use CEP feature support in Guided Rule Editor
>>>> after uploading a class by "Upload POJO Model jar" and annotating it in
>>>> "New Declarable Mode".
>>>>
>>>> 1.      |       declare TestPojo
>>>> 2.      |           @role(value = event)
>>>> 3.      |       end
>>>>
>>>> But if some fields of the POJO class have only getter methods, Guided
>>>> Rule Editor won't list those fields in "Modify constraints" popup. (if a
>>>> field has a setter method, it will be listed)
>>>>
>>>> public class TestPojo {
>>>>        private String name;
>>>>        public TestPojo() {}
>>>>        public String getName() { return name; }
>>>> //      public void setName(String name) { this.name = name; }
>>>> }
>>>>
>>>> Am I missing something? If it's not an expected behaviour, I will raise
>>>> a JIRA.
>>>>
>>>> Cheers,
>>>> Toshiya
>>>> _______________________________________________
>>>> rules-users mailing list
>>>> rules-users at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> rules-users mailing listrules-users at lists.jboss.orghttps://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>>
>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>>
>>
>>
>> _______________________________________________
>> rules-users mailing listrules-users at lists.jboss.orghttps://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20111221/a13a5d0e/attachment.html 


More information about the rules-users mailing list