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

org.nakedobjects.metamodel.facets.disable.DisabledAnnotationFacetFactory Maven / Gradle / Ivy

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

import java.lang.reflect.Method;

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


public class DisabledAnnotationFacetFactory extends AnnotationBasedFacetFactoryAbstract {

    public DisabledAnnotationFacetFactory() {
        super(NakedObjectFeatureType.PROPERTIES_COLLECTIONS_AND_ACTIONS);
    }

    @Override
    public boolean process(final Method method, final MethodRemover methodRemover, final FacetHolder holder) {
        final Disabled annotation = getAnnotation(method, Disabled.class);
        return FacetUtil.addFacet(create(annotation, holder));
    }

    private DisabledFacet create(final Disabled annotation, final FacetHolder holder) {
        return annotation == null ? null : new DisabledFacetAnnotation(decodeWhen(annotation.value()), holder);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy