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

org.nakedobjects.metamodel.facets.actions.executed.ExecutedViaNamingConventionFacetFactory Maven / Gradle / Ivy

The newest version!
package org.nakedobjects.metamodel.facets.actions.executed;

import java.lang.reflect.Method;

import org.nakedobjects.metamodel.facets.Facet;
import org.nakedobjects.metamodel.facets.FacetFactoryAbstract;
import org.nakedobjects.metamodel.facets.FacetHolder;
import org.nakedobjects.metamodel.facets.FacetUtil;
import org.nakedobjects.metamodel.facets.MethodRemover;
import org.nakedobjects.metamodel.facets.actions.ActionMethodsFacetFactory;
import org.nakedobjects.metamodel.facets.actions.ExecutedFacetViaNamingConvention;
import org.nakedobjects.metamodel.facets.naming.named.NamedFacetInferred;
import org.nakedobjects.metamodel.spec.feature.NakedObjectFeatureType;


/**
 * Creates an {@link ExecutedFacet} based on the prefix of the action's name.
 * 
 * 

* TODO: think that this prefix is handled by the {@link ActionMethodsFacetFactory}. */ public class ExecutedViaNamingConventionFacetFactory extends FacetFactoryAbstract { private static final String LOCAL_PREFIX = "Local"; public ExecutedViaNamingConventionFacetFactory() { super(NakedObjectFeatureType.ACTIONS_ONLY); } @Override public boolean process(final Method method, final MethodRemover methodRemover, final FacetHolder holder) { final String fullMethodName = method.getName(); final String capitalizedName = fullMethodName.substring(0, 1).toUpperCase() + fullMethodName.substring(1); if (!capitalizedName.startsWith(LOCAL_PREFIX)) { return false; } return FacetUtil.addFacets(new Facet[] { new ExecutedFacetViaNamingConvention(ExecutedFacet.Where.LOCALLY, holder), new NamedFacetInferred(capitalizedName.substring(5), holder) }); } public boolean recognizes(final Method method) { return method.getName().startsWith(LOCAL_PREFIX); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy