protected void buildModel()

in maven2-plugins/myfaces-builder-plugin/src/main/java/org/apache/myfaces/buildtools/maven2/plugin/builder/qdox/QdoxModelBuilder.java [104:231]


    protected void buildModel(Model model, List sourceDirs, JavaClass[] classes)
        throws MojoExecutionException
    {
        String currModelId = model.getModelId();
        // Sort the class array so that they are processed in a
        // predictable order, regardless of how the source scanning
        // returned them.
        Arrays.sort(classes, new QdoxHelper.JavaClassComparator());
        Map processedClasses = new HashMap();
        for (int i = 0; i < classes.length; ++i)
        {
            JavaClass clazz = classes[i];
            processClass(processedClasses, clazz, model);
        }
        // Post-process the list of components which we added in this run.
        // Note that model has all the inherited components in it too, so
        // we need to skip them.
        //
        // Hmm..as noted elsewhere, JavaClass objects representing parent
        // classes are accessable via getParentClazz(). Presumably they are
        // not in the array returned by builder.getClasses() though..
        for (Iterator it = model.getComponents().iterator(); it.hasNext();)
        {
            ComponentMeta component = (ComponentMeta) it.next();
            if (!component.getModelId().equals(currModelId))
            {
                continue;
            }
            QdoxHelper.initComponentAncestry(processedClasses, model, component);

            //Check if the component class java file exists in the source dirs
            String classname = component.getClassName();
            String classfile = StringUtils.replace(classname,".","/")+".java";
            if (!IOUtils.existsSourceFile(classfile, sourceDirs))
            {
                component.setGeneratedComponentClass(Boolean.TRUE);
            }

            // Check if the tag class java file exists in the source dirs
            if (QdoxHelper.isTagClassMissing(component.getTagClass(), sourceDirs))
            {
                component.setGeneratedTagClass(Boolean.TRUE);
            }
        }

        // post-process the list of converters
        for (Iterator it = model.getConverters().iterator(); it.hasNext();)
        {
            ConverterMeta converter = (ConverterMeta) it.next();
            if (!converter.getModelId().equals(currModelId))
            {
                continue;
            }
            QdoxHelper.initConverterAncestry(processedClasses, model, converter);

            //Check if the converter class file exists
            if (!IOUtils.existsSourceFile(StringUtils.replace(
                    converter.getClassName(),".","/")+".java", sourceDirs))
            {
                converter.setGeneratedComponentClass(Boolean.TRUE);
            }

            // Check if the tag class java file exists in the source dirs
            if (QdoxHelper.isTagClassMissing(converter.getTagClass(), sourceDirs))
            {
                converter.setGeneratedTagClass(Boolean.TRUE);
            }
        }

        // post-process the list of validators
        for (Iterator it = model.getValidators().iterator(); it.hasNext();)
        {
            ValidatorMeta validator = (ValidatorMeta) it.next();
            if (!validator.getModelId().equals(currModelId))
            {
                continue;
            }
            QdoxHelper.initValidatorAncestry(processedClasses, model, validator);
            
            //Check if the validator class file exists
            if (!IOUtils.existsSourceFile(StringUtils.replace(
                    validator.getClassName(),".","/")+".java", sourceDirs))
            {
                validator.setGeneratedComponentClass(Boolean.TRUE);
            }

            // Check if the tag class java file exists in the source dirs
            if (QdoxHelper.isTagClassMissing(validator.getTagClass(), sourceDirs))
            {
                validator.setGeneratedTagClass(Boolean.TRUE);
            }
        }

        // post-process the list of behaviors
        for (Iterator it = model.getBehaviors().iterator(); it.hasNext();)
        {
            BehaviorMeta behavior = (BehaviorMeta) it.next();
            if (!behavior.getModelId().equals(currModelId))
            {
                continue;
            }
            QdoxHelper.initBehaviorAncestry(processedClasses, model, behavior);
            
            //Check if the behavior class file exists
            if (!IOUtils.existsSourceFile(StringUtils.replace(
                    behavior.getClassName(),".","/")+".java", sourceDirs))
            {
                behavior.setGeneratedComponentClass(Boolean.TRUE);
            }
        }

        // post-process the list of tags
        for (Iterator it = model.getTags().iterator(); it.hasNext();)
        {
            TagMeta tag = (TagMeta) it.next();
            // nothing to do at the moment 
        }
        
        for (Iterator it = model.getFaceletTags().iterator(); it.hasNext();)
        {
            FaceletTagMeta tag = (FaceletTagMeta) it.next();
            if (!tag.getModelId().equals(currModelId))
            {
                continue;
            }
            QdoxHelper.initFaceletTagHandlerAncestry(processedClasses, model, tag);            
        }
    }