public class ClassHierarchyManager extends Object
Modifier and Type | Field and Description |
---|---|
protected KnowledgeBuilderImpl |
kbuilder |
protected List<AbstractClassTypeDeclarationDescr> |
sortedDescriptors |
protected Map<QualifiedName,Collection<QualifiedName>> |
taxonomy |
Constructor and Description |
---|
ClassHierarchyManager(Collection<AbstractClassTypeDeclarationDescr> unsortedDescrs,
KnowledgeBuilderImpl kbuilder) |
Modifier and Type | Method and Description |
---|---|
void |
addDeclarationToPackagePreservingOrder(org.drools.core.rule.TypeDeclaration type,
AbstractClassTypeDeclarationDescr typeDescr,
org.drools.core.definitions.InternalKnowledgePackage tgtPackage,
Map<String,PackageRegistry> pkgRegistryMap) |
protected TypeFieldDescr |
buildInheritedFieldDescrFromDefinition(org.kie.api.definition.type.FactField fld,
TypeDeclarationDescr typeDescr) |
List<AbstractClassTypeDeclarationDescr> |
getSortedDescriptors() |
protected static boolean |
hasCircularDependency(QualifiedName name,
QualifiedName typeName,
Map<QualifiedName,Collection<QualifiedName>> taxonomy) |
void |
inheritFields(PackageRegistry pkgRegistry,
AbstractClassTypeDeclarationDescr typeDescr,
Collection<AbstractClassTypeDeclarationDescr> sortedTypeDescriptors,
List<org.drools.compiler.builder.impl.TypeDefinition> unresolvedTypes,
Map<String,AbstractClassTypeDeclarationDescr> unprocessableDescrs) |
protected void |
mergeFields(String simpleSuperTypeName,
String superTypePackageName,
String fullSuper,
TypeDeclarationDescr typeDescr,
List<org.drools.compiler.builder.impl.TypeDefinition> unresolvedTypes,
Map<String,AbstractClassTypeDeclarationDescr> unprocessableDescrs,
org.kie.soup.project.datamodel.commons.types.TypeResolver resolver) |
protected void |
mergeInheritedFields(TypeDeclarationDescr typeDescr,
List<org.drools.compiler.builder.impl.TypeDefinition> unresolvedTypes,
Map<String,AbstractClassTypeDeclarationDescr> unprocessableDescrs,
org.kie.soup.project.datamodel.commons.types.TypeResolver typeResolver)
In order to build a declared class, the fields inherited from its
superclass(es) are added to its declaration.
|
protected List<AbstractClassTypeDeclarationDescr> |
sortByHierarchy(Collection<AbstractClassTypeDeclarationDescr> unsortedDescrs,
KnowledgeBuilderImpl kbuilder)
Utility method to sort declared beans.
|
protected KnowledgeBuilderImpl kbuilder
protected List<AbstractClassTypeDeclarationDescr> sortedDescriptors
protected Map<QualifiedName,Collection<QualifiedName>> taxonomy
public ClassHierarchyManager(Collection<AbstractClassTypeDeclarationDescr> unsortedDescrs, KnowledgeBuilderImpl kbuilder)
public List<AbstractClassTypeDeclarationDescr> getSortedDescriptors()
protected List<AbstractClassTypeDeclarationDescr> sortByHierarchy(Collection<AbstractClassTypeDeclarationDescr> unsortedDescrs, KnowledgeBuilderImpl kbuilder)
protected static boolean hasCircularDependency(QualifiedName name, QualifiedName typeName, Map<QualifiedName,Collection<QualifiedName>> taxonomy)
public void inheritFields(PackageRegistry pkgRegistry, AbstractClassTypeDeclarationDescr typeDescr, Collection<AbstractClassTypeDeclarationDescr> sortedTypeDescriptors, List<org.drools.compiler.builder.impl.TypeDefinition> unresolvedTypes, Map<String,AbstractClassTypeDeclarationDescr> unprocessableDescrs)
protected void mergeInheritedFields(TypeDeclarationDescr typeDescr, List<org.drools.compiler.builder.impl.TypeDefinition> unresolvedTypes, Map<String,AbstractClassTypeDeclarationDescr> unprocessableDescrs, org.kie.soup.project.datamodel.commons.types.TypeResolver typeResolver)
The search for field descriptors is carried out in the order. (i) and (ii+iii) are mutually exclusive. The search is as such: (i) The superclass' declared fields are used to build the base class additional fields (iii) The superclass is inspected to discover its (public) fields, from which descriptors are generated (ii) Both (i) and (iii) are applied, but the declared fields override the inspected ones
typeDescr
- The base class descriptor, to be completed with the inherited
fields descriptorsprotected void mergeFields(String simpleSuperTypeName, String superTypePackageName, String fullSuper, TypeDeclarationDescr typeDescr, List<org.drools.compiler.builder.impl.TypeDefinition> unresolvedTypes, Map<String,AbstractClassTypeDeclarationDescr> unprocessableDescrs, org.kie.soup.project.datamodel.commons.types.TypeResolver resolver)
protected TypeFieldDescr buildInheritedFieldDescrFromDefinition(org.kie.api.definition.type.FactField fld, TypeDeclarationDescr typeDescr)
public void addDeclarationToPackagePreservingOrder(org.drools.core.rule.TypeDeclaration type, AbstractClassTypeDeclarationDescr typeDescr, org.drools.core.definitions.InternalKnowledgePackage tgtPackage, Map<String,PackageRegistry> pkgRegistryMap)
Copyright © 2001–2019 JBoss by Red Hat. All rights reserved.