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

org.nakedobjects.metamodel.facets.object.callbacks.UpdateCallbackFacetFactory Maven / Gradle / Ivy

The newest version!
package org.nakedobjects.metamodel.facets.object.callbacks;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

import org.nakedobjects.metamodel.facets.Facet;
import org.nakedobjects.metamodel.facets.FacetHolder;
import org.nakedobjects.metamodel.facets.FacetUtil;
import org.nakedobjects.metamodel.facets.MethodRemover;
import org.nakedobjects.metamodel.java5.MethodPrefixBasedFacetFactoryAbstract;
import org.nakedobjects.metamodel.spec.feature.NakedObjectFeatureType;


public class UpdateCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {

    private static final String UPDATED_PREFIX = "updated";
    private static final String UPDATING_PREFIX = "updating";

    private static final String[] PREFIXES = { UPDATED_PREFIX, UPDATING_PREFIX, };

    public UpdateCallbackFacetFactory() {
        super(PREFIXES, NakedObjectFeatureType.OBJECTS_ONLY);
    }

    @Override
    public boolean process(final Class cls, final MethodRemover remover, final FacetHolder facetHolder) {
        final List facets = new ArrayList();
        final List methods = new ArrayList();

        Method method = null;
        method = findMethod(cls, OBJECT, UPDATING_PREFIX, void.class, NO_PARAMETERS_TYPES);
        if (method != null) {
            methods.add(method);
            facets.add(new UpdatingCallbackFacetViaMethod(method, facetHolder));
        }

        method = findMethod(cls, OBJECT, UPDATED_PREFIX, void.class, NO_PARAMETERS_TYPES);
        if (method != null) {
            methods.add(method);
            facets.add(new UpdatedCallbackFacetViaMethod(method, facetHolder));
        }

        remover.removeMethods(methods);
        return FacetUtil.addFacets(facets);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy