private void processComponent()

in maven2-plugins/myfaces-builder-plugin/src/main/java/org/apache/myfaces/buildtools/maven2/plugin/builder/qdox/parse/ComponentParsingStrategy.java [71:202]


    private void processComponent(Map props, AbstractJavaEntity ctx,
            JavaClass clazz, Model model)
    {
        String componentTypeDflt = null;
        JavaField fieldComponentType = clazz.getFieldByName("COMPONENT_TYPE");
        if (fieldComponentType != null)
        {
            componentTypeDflt = QdoxHelper.clean(fieldComponentType
                    .getInitializationExpression());
        }

        String componentTypeFamily = null;
        JavaField fieldComponentFamily = clazz
                .getFieldByName("COMPONENT_FAMILY");
        if (fieldComponentFamily != null)
        {
            componentTypeFamily = QdoxHelper.clean(fieldComponentFamily
                    .getInitializationExpression());
        }

        String rendererTypeDflt = null;
        JavaField fieldRendererType = clazz
                .getFieldByName("DEFAULT_RENDERER_TYPE");
        if (fieldRendererType != null)
        {
            rendererTypeDflt = QdoxHelper.clean(fieldRendererType
                    .getInitializationExpression());
        }

        String componentName = QdoxHelper.getString(clazz, "name", props, null);

        // Check for both "class" and "clazz" in order to support
        // doclet and real annotations.
        String classNameOverride = QdoxHelper.getString(clazz, "class", props, null);
        classNameOverride = QdoxHelper.getString(clazz,"clazz",props,classNameOverride);
                
        Boolean template = QdoxHelper.getBoolean(clazz,"template",props, null);
                
        String longDescription = clazz.getComment();
        String descDflt = QdoxHelper.getFirstSentence(longDescription);
        if ((descDflt == null) || (descDflt.length() < 2))
        {
            descDflt = "no description";
        }
        String shortDescription = QdoxHelper.getString(clazz, "desc", props, descDflt);

        String bodyContent = QdoxHelper.getString(clazz, "bodyContent", props, null);
        
        String componentFamily = QdoxHelper.getString(clazz, "family", props,
                componentTypeFamily);
        String componentType = QdoxHelper.getString(clazz, "type", props,
                componentTypeDflt);
        String rendererType = QdoxHelper.getString(clazz, "defaultRendererType", props,
                rendererTypeDflt);
        Boolean canHaveChildren = QdoxHelper.getBoolean(clazz, "canHaveChildren", props, null);
        Boolean configExcluded = QdoxHelper.getBoolean(clazz,"configExcluded",props,null);        

        String tagClass = QdoxHelper.getString(clazz, "tagClass", props, null);
        String tagSuperclass = QdoxHelper.getString(clazz, "tagSuperclass", props, null);
        String tagHandler = QdoxHelper.getString(clazz, "tagHandler", props, null);
        String defaultEventName = QdoxHelper.getString(clazz, "defaultEventName", props, null);
        String serialuid = QdoxHelper.getString(clazz, "serialuid", props, null);
        String implementsValue = QdoxHelper.getString(clazz, "implements", props, null);
        implementsValue = QdoxHelper.getString(clazz, "implementz", props, implementsValue);
        
        Boolean composite = QdoxHelper.getBoolean(clazz, "composite", props, null);

        ComponentMeta component = new ComponentMeta();
        initClassMeta(model, clazz, component, classNameOverride);
        component.setName(componentName);
        component.setBodyContent(bodyContent);
        component.setDescription(shortDescription);
        component.setLongDescription(longDescription);
        component.setConfigExcluded(configExcluded);
        component.setType(componentType);
        component.setFamily(componentFamily);
        component.setRendererType(rendererType);
        component.setChildren(canHaveChildren);
        component.setSerialuid(serialuid);
        component.setImplements(implementsValue);
        component.setTemplate(template);
        component.setDefaultEventName(defaultEventName);
        if (defaultEventName != null)
        {
            component.setOverrideDefaultEventName(Boolean.TRUE);
        }
        JavaClass[] interfaces = clazz.getImplementedInterfaces();
        for (int i = 0; i < interfaces.length; ++i)
        {
            JavaClass iface = interfaces[i];
            if (iface.getFullyQualifiedName().equals(
                    "jakarta.faces.component.NamingContainer"))
            {
                component.setNamingContainer(Boolean.TRUE);
                break;
            }
            if (iface.getFullyQualifiedName().equals(
                    "jakarta.faces.component.behavior.ClientBehaviorHolder"))
            {
                component.setClientBehaviorHolder(Boolean.TRUE);
                break;
            }
            if (!(template != null && template.booleanValue()))
            {
                component.addImplementedInterfaceClassName(
                        QdoxHelper.getFullyQualifiedClassName(iface, iface.getFullyQualifiedName()));
            }
        }
        if (implementsValue != null)
        {
            if (StringUtils.contains(implementsValue, "jakarta.faces.component.behavior.ClientBehaviorHolder"))
            {
                component.setClientBehaviorHolder(Boolean.TRUE);
            }
            StringTokenizer st = new StringTokenizer(implementsValue,",");
            while (st.hasMoreTokens())
            {
                component.addImplementedInterfaceClassName(st.nextToken());
            }
        }
        component.setTagClass(tagClass);
        component.setTagSuperclass(tagSuperclass);
        component.setTagHandler(tagHandler);
        component.setComposite(composite);

        // Now here walk the component looking for property annotations.
        processComponentProperties(clazz, component);
        processComponentFacets(clazz, component);
        processComponentListeners(clazz, component);

        model.addComponent(component);
    }