All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.nakedobjects.metamodel.facets.ignore.RemoveIgnoreAnnotationMethodsFacetFactory Maven / Gradle / Ivy

The newest version!
package org.nakedobjects.metamodel.facets.ignore;

import java.lang.reflect.Method;

import org.nakedobjects.applib.annotation.Ignore;
import org.nakedobjects.metamodel.facets.FacetHolder;
import org.nakedobjects.metamodel.facets.MethodRemover;
import org.nakedobjects.metamodel.java5.AnnotationBasedFacetFactoryAbstract;
import org.nakedobjects.metamodel.spec.feature.NakedObjectFeatureType;


public class RemoveIgnoreAnnotationMethodsFacetFactory extends AnnotationBasedFacetFactoryAbstract {

    public RemoveIgnoreAnnotationMethodsFacetFactory() {
        super(NakedObjectFeatureType.OBJECTS_ONLY);
    }

    @Override
    public boolean process(final Class cls, final MethodRemover methodRemover, final FacetHolder holder) {
        removeIgnoredMethods(cls, methodRemover);
        return false;
    }

    private void removeIgnoredMethods(final Class cls, final MethodRemover methodRemover) {
        if (cls == null) {
            return;
        }

        final Method[] methods = cls.getMethods();
        for (int j = 0; j < methods.length; j++) {
            final Method method = methods[j];
            final Ignore annotation = getAnnotation(method, Ignore.class);
            if (annotation != null) {
                methodRemover.removeMethod(method);
            }
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy