[jboss-jira] [JBoss JIRA] (DROOLS-439) Package builder unable to find declared array class

Mark Sullivan (JIRA) issues at jboss.org
Mon Feb 24 12:41:47 EST 2014


    [ https://issues.jboss.org/browse/DROOLS-439?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12947517#comment-12947517 ] 

Mark Sullivan commented on DROOLS-439:
--------------------------------------

Confirmed build with these changes has fixed this issue for my test cases. I'm now able to remove my workaround, thanks Davide.
                
> Package builder unable to find declared array class
> ---------------------------------------------------
>
>                 Key: DROOLS-439
>                 URL: https://issues.jboss.org/browse/DROOLS-439
>             Project: Drools
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 6.0.1.Final
>            Reporter: Mark Sullivan
>            Assignee: Mark Proctor
>
> When declaring a fact type with an array field, where the array type is declared in the same package, for example:
> {code}
> declare Owner
>   name : String
> end
> declare Pet
>   owners : Owner[]
> end
> {code}
> The following build error occurs:
> {code}
> [Message [id=1, level=ERROR, path=pets.drl, line=5, column=0
>    text=Unable to find class 'Owner']]
> {code}
> This error doesn't always occur when an array field is declared. It's dependent on the order in which each fact type is processed. 
> PackageBuilder attempts to order fact types for processing based on the declared super type and attribute types.
> The following loop in *PackageBuilder.sortByHierarchy()* processes each field looking for field type dependencies: 
> {code}
>   for (TypeFieldDescr field : tdescr.getFields().values()) {
>     QualifiedName typeName = new QualifiedName(field.getPattern().getObjectType());
>     if (!hasCircularDependency(name, typeName, taxonomy)) {
>       supers.add(typeName);
>     }
>   }
> {code}
> However I don't think it correctly spots the dependency when the field type is an array.
> This issue can be worked around by declaring an unused field of the same type as the array:
> {code}
> declare Owner
>   name : String
> end
> declare Pet
>   owners : Owner[]
>   _unused: Owner
> end
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jboss-jira mailing list