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

Michael Anstis michael.anstis at gmail.com
Tue Dec 20 16:29:55 EST 2011


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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20111220/6f45046c/attachment.html 


More information about the rules-users mailing list