private static void attachNamedFacetForParametersIfParameterNamesMethodIsFound(final ProcessMethodContext processMethodContext, final List<FacetedMethodParameter> parameters) { if (parameters.isEmpty()) { return; } final Method actionMethod = processMethodContext.getMethod(); final String capitalizedName = NameUtils.capitalizeName(actionMethod.getName()); final Class<?> cls = processMethodContext.getCls(); final Method namesMethod = MethodFinderUtils.findMethod(cls, MethodScope.CLASS, MethodPrefixConstants.NAME_PREFIX + capitalizedName, String[].class, new Class[0]); if (namesMethod == null) { return; } try { final String[] names = invokeNamesMethod(namesMethod, parameters.size()); for (int i = 0; i < names.length; i++) { // add facets directly to parameters, not to actions FacetUtil.addFacet(new NamedFacetViaMethod(names[i], namesMethod, parameters.get(i))); } } finally { processMethodContext.removeMethod(namesMethod); } }
public void testInstallsNamedFacetUsingNameMethodAndRemovesMethod() { final NamedFacetViaNameMethodFacetFactory facetFactory = new NamedFacetViaNameMethodFacetFactory(); facetFactory.setSpecificationLookup(reflector); final Method collectionAccessorMethod = findMethod(CustomerStatic.class, "getOrders"); final Method nameMethod = findMethod(CustomerStatic.class, "nameOrders"); facetFactory.process(new ProcessMethodContext(CustomerStatic.class, collectionAccessorMethod, methodRemover, facetedMethod)); final Facet facet = facetedMethod.getFacet(NamedFacet.class); assertNotNull(facet); assertTrue(facet instanceof NamedFacetViaMethod); final NamedFacetViaMethod namedFacet = (NamedFacetViaMethod) facet; assertEquals("Most Recent Orders", namedFacet.value()); assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(nameMethod)); }
public void testInstallsNamedFacetUsingNameMethodAndRemovesMethod() { final NamedFacetViaNameMethodFacetFactory facetFactory = new NamedFacetViaNameMethodFacetFactory(); facetFactory.setSpecificationLookup(reflector); final Method propertyAccessorMethod = findMethod(CustomerStatic.class, "getFirstName"); final Method nameMethod = findMethod(CustomerStatic.class, "nameFirstName"); facetFactory.process(new ProcessMethodContext(CustomerStatic.class, propertyAccessorMethod, methodRemover, facetedMethod)); final Facet facet = facetedMethod.getFacet(NamedFacet.class); assertNotNull(facet); assertTrue(facet instanceof NamedFacetViaMethod); final NamedFacetViaMethod namedFacet = (NamedFacetViaMethod) facet; assertEquals("Given name", namedFacet.value()); assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(nameMethod)); }
public static void attachNamedFacetIfNamedMethodIsFound(final ProcessMethodContext processMethodContext) { final Method method = processMethodContext.getMethod(); final String capitalizedName = NameUtils.javaBaseNameStripAccessorPrefixIfRequired(method.getName()); final Class<?> cls = processMethodContext.getCls(); final Method nameMethod = MethodFinderUtils.findMethod(cls, MethodScope.CLASS, MethodPrefixConstants.NAME_PREFIX + capitalizedName, String.class, new Class[0]); if (nameMethod == null) { return; } processMethodContext.removeMethod(nameMethod); final String name = invokeNameMethod(nameMethod); final FacetHolder facetHolder = processMethodContext.getFacetHolder(); FacetUtil.addFacet(new NamedFacetViaMethod(name, nameMethod, facetHolder)); }