Package org.drools.compiler.lang.descr

Examples of org.drools.compiler.lang.descr.QualifiedName


        taxonomy = new HashMap<QualifiedName, Collection<QualifiedName>>();
        Map<QualifiedName, AbstractClassTypeDeclarationDescr> cache = new HashMap<QualifiedName, AbstractClassTypeDeclarationDescr>();

        for (AbstractClassTypeDeclarationDescr tdescr : unsortedDescrs) {
            QualifiedName name = tdescr.getType();

            cache.put(name, tdescr);

            if (taxonomy.get(name) == null) {
                taxonomy.put(name, new ArrayList<QualifiedName>());
            } else {
                kbuilder.addBuilderResult(new TypeDeclarationError(tdescr,
                                                                   "Found duplicate declaration for type " + tdescr.getType()));
            }

            Collection<QualifiedName> supers = taxonomy.get(name);

            boolean circular = false;
            for (QualifiedName sup : tdescr.getSuperTypes()) {
                if (!Object.class.getName().equals(name.getFullName())) {
                    if (!hasCircularDependency(tdescr.getType(), sup, taxonomy)) {
                        supers.add(sup);
                    } else {
                        circular = true;
                        kbuilder.addBuilderResult(new TypeDeclarationError(tdescr,
                                                                           "Found circular dependency for type " + tdescr.getTypeName()));
                        break;
                    }
                }
            }
            if (circular) {
                tdescr.getSuperTypes().clear();
            }

            for (TypeFieldDescr field : tdescr.getFields().values()) {
                QualifiedName typeName = new QualifiedName(field.getPattern().getObjectType());
                if (!hasCircularDependency(name, typeName, taxonomy)) {
                    supers.add(typeName);
                } else {
                    field.setRecursive( true );
                }
View Full Code Here


        if (typeDescr.getSuperTypes().isEmpty())
            return false;
        boolean merge = false;

        for (int j = typeDescr.getSuperTypes().size() - 1; j >= 0; j--) {
            QualifiedName qname = typeDescr.getSuperTypes().get(j);
            String simpleSuperTypeName = qname.getName();
            String superTypePackageName = qname.getNamespace();
            String fullSuper = qname.getFullName();

            merge = mergeFields( simpleSuperTypeName,
                                 superTypePackageName,
                                 fullSuper,
                                 typeDescr,
View Full Code Here

    public void addDeclarationToPackagePreservingOrder( TypeDeclaration type,
                                                        AbstractClassTypeDeclarationDescr typeDescr,
                                                        InternalKnowledgePackage tgtPackage,
                                                        Map<String, PackageRegistry> pkgRegistryMap ) {
        Collection<QualifiedName> parents = taxonomy.get( new QualifiedName( type.getFullName() ) );
        int index = getSortedDescriptors().indexOf( typeDescr );

        if ( parents != null && ! parents.isEmpty() ) {
            for ( QualifiedName parentName : parents ) {
                String nameSpace = parentName.getNamespace();
View Full Code Here

        if (typeDescr.getSuperTypes().isEmpty())
            return false;
        boolean merge = false;

        for (int j = typeDescr.getSuperTypes().size() - 1; j >= 0; j--) {
            QualifiedName qname = typeDescr.getSuperTypes().get(j);
            String simpleSuperTypeName = qname.getName();
            String superTypePackageName = qname.getNamespace();
            String fullSuper = qname.getFullName();

            merge = mergeInheritedFields(simpleSuperTypeName,
                    superTypePackageName,
                    fullSuper,
                    typeDescr) || merge;
View Full Code Here

        HierarchySorter<QualifiedName> sorter = new HierarchySorter<QualifiedName>();
        Map<QualifiedName, Collection<QualifiedName>> taxonomy = new HashMap<QualifiedName, Collection<QualifiedName>>();
        Map<QualifiedName, AbstractClassTypeDeclarationDescr> cache = new HashMap<QualifiedName, AbstractClassTypeDeclarationDescr>();

        for (AbstractClassTypeDeclarationDescr tdescr : typeDeclarations) {
            QualifiedName name = tdescr.getType();

            cache.put(name, tdescr);

            if (taxonomy.get(name) == null) {
                taxonomy.put(name, new ArrayList<QualifiedName>());
            } else {
                this.results.add(new TypeDeclarationError(tdescr,
                        "Found duplicate declaration for type " + tdescr.getType()));
            }

            Collection<QualifiedName> supers = taxonomy.get(name);

            boolean circular = false;
            for (QualifiedName sup : tdescr.getSuperTypes()) {
                if (!Object.class.getName().equals(name.getFullName())) {
                    if (!hasCircularDependency(tdescr.getType(), sup, taxonomy)) {
                        supers.add(sup);
                    } else {
                        circular = true;
                        this.results.add(new TypeDeclarationError(tdescr,
                                "Found circular dependency for type " + tdescr.getTypeName()));
                        break;
                    }
                }
            }
            if (circular) {
                tdescr.getSuperTypes().clear();
            }

            for (TypeFieldDescr field : tdescr.getFields().values()) {
                QualifiedName typeName = new QualifiedName(field.getPattern().getObjectType());
                if (!hasCircularDependency(name, typeName, taxonomy)) {
                    supers.add(typeName);
                }

            }
View Full Code Here

        HierarchySorter<QualifiedName> sorter = new HierarchySorter<QualifiedName>();
        Map<QualifiedName, Collection<QualifiedName>> taxonomy = new HashMap<QualifiedName, Collection<QualifiedName>>();
        Map<QualifiedName, AbstractClassTypeDeclarationDescr> cache = new HashMap<QualifiedName, AbstractClassTypeDeclarationDescr>();

        for ( AbstractClassTypeDeclarationDescr tdescr : typeDeclarations ) {
            QualifiedName name = tdescr.getType();

            cache.put( name, tdescr );

            if ( taxonomy.get( name ) == null ) {
                taxonomy.put( name, new ArrayList<QualifiedName>() );
            } else {
                this.results.add( new TypeDeclarationError( tdescr,
                                                            "Found duplicate declaration for type " + tdescr.getTypeName() ) );
            }

            Collection<QualifiedName> supers = taxonomy.get( name );

            boolean circular = false;
            for ( QualifiedName sup : tdescr.getSuperTypes() ) {
                if ( !Object.class.getName().equals( name.getFullName() ) ) {
                    if ( !hasCircularDependency( tdescr.getType(), sup, taxonomy ) ) {
                        supers.add( sup );
                    } else {
                        circular = true;
                        this.results.add( new TypeDeclarationError( tdescr,
                                                                    "Found circular dependency for type " + tdescr.getTypeName() ) );
                        break;
                    }
                }
            }
            if ( circular ) {
                tdescr.getSuperTypes().clear();
            }

            for ( TypeFieldDescr field : tdescr.getFields().values() ) {
                QualifiedName typeName = new QualifiedName( field.getPattern().getObjectType() );
                if ( !hasCircularDependency( name, typeName, taxonomy ) ) {
                    supers.add( typeName );
                }

            }
View Full Code Here

        taxonomy = new HashMap<QualifiedName, Collection<QualifiedName>>();
        Map<QualifiedName, AbstractClassTypeDeclarationDescr> cache = new HashMap<QualifiedName, AbstractClassTypeDeclarationDescr>();

        for (AbstractClassTypeDeclarationDescr tdescr : unsortedDescrs) {
            QualifiedName name = tdescr.getType();
            cache.put(name, tdescr);

            Collection<QualifiedName> supers = taxonomy.get(name);
            if (supers == null) {
                supers = new ArrayList<QualifiedName>();
                taxonomy.put(name, supers);
            } else {
                kbuilder.addBuilderResult(new TypeDeclarationError(tdescr,
                                                                   "Found duplicate declaration for type " + tdescr.getType()));
            }

            boolean circular = false;
            for (QualifiedName sup : tdescr.getSuperTypes()) {
                if (!Object.class.getName().equals(name.getFullName())) {
                    if (!hasCircularDependency(tdescr.getType(), sup, taxonomy)) {
                        supers.add(sup);
                    } else {
                        circular = true;
                        kbuilder.addBuilderResult(new TypeDeclarationError(tdescr,
                                                                           "Found circular dependency for type " + tdescr.getTypeName()));
                        break;
                    }
                }
            }
            if (circular) {
                tdescr.getSuperTypes().clear();
            }
        }

        for (AbstractClassTypeDeclarationDescr tdescr : unsortedDescrs) {
            for (TypeFieldDescr field : tdescr.getFields().values()) {
                QualifiedName name = tdescr.getType();
                QualifiedName typeName = new QualifiedName(field.getPattern().getObjectType());
                if (!hasCircularDependency(name, typeName, taxonomy)) {
                    taxonomy.get(name).add(typeName);
                } else {
                    field.setRecursive( true );
                }
View Full Code Here

        if (typeDescr.getSuperTypes().isEmpty())
            return false;
        boolean merge = false;

        for (int j = typeDescr.getSuperTypes().size() - 1; j >= 0; j--) {
            QualifiedName qname = typeDescr.getSuperTypes().get(j);
            String simpleSuperTypeName = qname.getName();
            String superTypePackageName = qname.getNamespace();
            String fullSuper = qname.getFullName();

            merge = mergeFields( simpleSuperTypeName,
                                 superTypePackageName,
                                 fullSuper,
                                 typeDescr,
View Full Code Here

    public void addDeclarationToPackagePreservingOrder( TypeDeclaration type,
                                                        AbstractClassTypeDeclarationDescr typeDescr,
                                                        InternalKnowledgePackage tgtPackage,
                                                        Map<String, PackageRegistry> pkgRegistryMap ) {
        Collection<QualifiedName> parents = taxonomy.get( new QualifiedName( type.getFullName() ) );
        int index = getSortedDescriptors().indexOf( typeDescr );

        if ( parents != null && ! parents.isEmpty() ) {
            for ( QualifiedName parentName : parents ) {
                String nameSpace = parentName.getNamespace();
View Full Code Here

        HierarchySorter<QualifiedName> sorter = new HierarchySorter<QualifiedName>();
        Map<QualifiedName, Collection<QualifiedName>> taxonomy = new HashMap<QualifiedName, Collection<QualifiedName>>();
        Map<QualifiedName, AbstractClassTypeDeclarationDescr> cache = new HashMap<QualifiedName, AbstractClassTypeDeclarationDescr>();

        for ( AbstractClassTypeDeclarationDescr tdescr : typeDeclarations ) {
            QualifiedName name = tdescr.getType();

            cache.put( name, tdescr );

            if ( taxonomy.get( name ) == null ) {
                taxonomy.put( name, new ArrayList<QualifiedName>() );
            } else {
                this.results.add( new TypeDeclarationError( tdescr,
                                                            "Found duplicate declaration for type " + tdescr.getTypeName() ) );
            }

            Collection<QualifiedName> supers = taxonomy.get( name );

            boolean circular = false;
            for ( QualifiedName sup : tdescr.getSuperTypes() ) {
                if ( !Object.class.getName().equals( name.getFullName() ) ) {
                    if ( !hasCircularDependency( tdescr.getType(), sup, taxonomy ) ) {
                        supers.add( sup );
                    } else {
                        circular = true;
                        this.results.add( new TypeDeclarationError( tdescr,
                                                                    "Found circular dependency for type " + tdescr.getTypeName() ) );
                        break;
                    }
                }
            }
            if ( circular ) {
                tdescr.getSuperTypes().clear();
            }

            for ( TypeFieldDescr field : tdescr.getFields().values() ) {
                QualifiedName typeName = new QualifiedName( field.getPattern().getObjectType() );
                if ( !hasCircularDependency( name, typeName, taxonomy ) ) {
                    supers.add( typeName );
                }

            }
View Full Code Here

TOP

Related Classes of org.drools.compiler.lang.descr.QualifiedName

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.