private static void attachMandatoryFacetIfOptionalMethodIsFound(final ProcessMethodContext processMethodContext) { final Method method = processMethodContext.getMethod(); final String capitalizedName = NameUtils.javaBaseName(method.getName()); final Class<?> returnType = method.getReturnType(); final Class<?> cls = processMethodContext.getCls(); final Method optionalMethod = MethodFinderUtils.findMethod(cls, MethodScope.CLASS, MethodPrefixConstants.OPTIONAL_PREFIX + capitalizedName, boolean.class, NO_PARAMETERS_TYPES); processMethodContext.removeMethod(optionalMethod); if (!indicatesOptional(optionalMethod)) { return; } if (returnType.isPrimitive()) { throw new MetaModelException(cls.getName() + "#" + capitalizedName + " cannot be an optional property as it is of a primitive type"); } final FacetHolder property = processMethodContext.getFacetHolder(); FacetUtil.addFacet(new MandatoryFacetOptionalViaMethodForProperty(property)); }
private void attachValidateFacetIfValidateMethodIsFound(final ProcessMethodContext processMethodContext) { final Method getMethod = processMethodContext.getMethod(); final String capitalizedName = NameUtils.javaBaseName(getMethod.getName()); final Class<?> returnType = getMethod.getReturnType(); final Class<?>[] paramTypes = new Class[] { returnType }; final Class<?> cls = processMethodContext.getCls(); final Method method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.VALIDATE_PREFIX + capitalizedName, String.class, paramTypes); if (method == null) { return; } processMethodContext.removeMethod(method); final FacetHolder property = processMethodContext.getFacetHolder(); FacetUtil.addFacet(new PropertyValidateFacetViaMethod(method, property)); }
private void attachPropertyModifyFacetIfModifyMethodIsFound(final ProcessMethodContext processMethodContext) { final Method getMethod = processMethodContext.getMethod(); final String capitalizedName = NameUtils.javaBaseName(getMethod.getName()); final Class<?> returnType = getMethod.getReturnType(); final Class<?>[] paramTypes = new Class[] { returnType }; final Class<?> cls = processMethodContext.getCls(); final Method modifyMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.MODIFY_PREFIX + capitalizedName, void.class, paramTypes); if (modifyMethod == null) { return; } processMethodContext.removeMethod(modifyMethod); final FacetHolder property = processMethodContext.getFacetHolder(); FacetUtil.addFacet(new PropertySetterFacetViaModifyMethod(modifyMethod, property)); }
private void attachValidateRemoveFacetIfValidateRemoveFromMethodIsFound(final ProcessMethodContext processMethodContext, final Class<?> collectionType) { final Method getMethod = processMethodContext.getMethod(); final String capitalizedName = NameUtils.javaBaseName(getMethod.getName()); final Class<?> cls = processMethodContext.getCls(); final Class<?>[] paramTypes = MethodFinderUtils.paramTypesOrNull(collectionType); Method validateRemoveFromMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.VALIDATE_REMOVE_FROM_PREFIX + capitalizedName, String.class, paramTypes); if (validateRemoveFromMethod == null) { validateRemoveFromMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.VALIDATE_REMOVE_FROM_PREFIX_2 + capitalizedName, String.class, MethodFinderUtils.paramTypesOrNull(collectionType)); } if (validateRemoveFromMethod == null) { return; } processMethodContext.removeMethod(validateRemoveFromMethod); final FacetHolder collection = processMethodContext.getFacetHolder(); FacetUtil.addFacet(new CollectionValidateRemoveFromFacetViaMethod(validateRemoveFromMethod, collection)); }
public static void attachHiddenFacetIfAlwaysHideMethodIsFound(final ProcessMethodContext processMethodContext) { final Class<?> type = processMethodContext.getCls(); final Method method = processMethodContext.getMethod(); final String capitalizedName = NameUtils.javaBaseNameStripAccessorPrefixIfRequired(method.getName()); final Method alwaysHideMethod = MethodFinderUtils.findMethod(type, MethodScope.CLASS, MethodPrefixConstants.ALWAYS_HIDE_PREFIX + capitalizedName, boolean.class, new Class[] {}); if (alwaysHideMethod == null) { return; } processMethodContext.removeMethod(alwaysHideMethod); final Boolean alwaysHideMethodReturnValue = invokeAlwaysHideMethod(alwaysHideMethod); if (!alwaysHideMethodReturnValue.booleanValue()) { return; } final FacetHolder facetedMethod = processMethodContext.getFacetHolder(); FacetUtil.addFacet(new HiddenFacetAlways(facetedMethod)); }
private void attachValidatingAdvisorFacetForValidateMethodIfFound(final ProcessMethodContext processMethodContext) { final Class<?> cls = processMethodContext.getCls(); final Method actionMethod = processMethodContext.getMethod(); final String capitalizedName = NameUtils.capitalizeName(actionMethod.getName()); final Class<?>[] paramTypes = actionMethod.getParameterTypes(); final MethodScope onClass = MethodScope.scopeFor(actionMethod); final Method validateMethod = MethodFinderUtils.findMethod(cls, onClass, MethodPrefixConstants.VALIDATE_PREFIX + capitalizedName, String.class, paramTypes); if (validateMethod == null) { return; } processMethodContext.removeMethod(validateMethod); final FacetHolder facetedMethod = processMethodContext.getFacetHolder(); FacetUtil.addFacet(new ActionValidationFacetViaMethod(validateMethod, facetedMethod)); }
private static void attachActionDefaultsFacetIfParameterDefaultsMethodIsFound(final ProcessMethodContext processMethodContext) { Method defaultsMethod = findDefaultsMethodReturning(processMethodContext, Object[].class); if (defaultsMethod == null) { defaultsMethod = findDefaultsMethodReturning(processMethodContext, List.class); } if (defaultsMethod == null) { return; } processMethodContext.removeMethod(defaultsMethod); final FacetHolder facetedMethod = processMethodContext.getFacetHolder(); final ActionDefaultsFacetViaMethod facet = new ActionDefaultsFacetViaMethod(defaultsMethod, facetedMethod); FacetUtil.addFacet(facet); }
public static void attachDescribedAsFacetIfDescriptionMethodIsFound(final ProcessMethodContext processMethodContext) { final Method method = processMethodContext.getMethod(); final String capitalizedName = NameUtils.javaBaseNameStripAccessorPrefixIfRequired(method.getName()); final Class<?> cls = processMethodContext.getCls(); final Method descriptionMethod = MethodFinderUtils.findMethod(cls, MethodScope.CLASS, MethodPrefixConstants.DESCRIPTION_PREFIX + capitalizedName, String.class, new Class[0]); if (descriptionMethod == null) { return; } processMethodContext.removeMethod(descriptionMethod); final String description = invokeDescriptionMethod(descriptionMethod); final FacetHolder facetedMethod = processMethodContext.getFacetHolder(); FacetUtil.addFacet(new DescribedAsFacetViaMethod(description, descriptionMethod, facetedMethod)); }
private void attachPropertyDefaultFacetIfDefaultMethodIsFound(final ProcessMethodContext processMethodContext) { final Method getMethod = processMethodContext.getMethod(); final String capitalizedName = NameUtils.javaBaseName(getMethod.getName()); final Class<?> cls = processMethodContext.getCls(); final Class<?> returnType = getMethod.getReturnType(); final Method method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.DEFAULT_PREFIX + capitalizedName, returnType, NO_PARAMETERS_TYPES); if (method == null) { return; } processMethodContext.removeMethod(method); final FacetHolder property = processMethodContext.getFacetHolder(); FacetUtil.addFacet(new PropertyDefaultFacetViaMethod(method, property, getSpecificationLookup(), getAdapterMap())); }
private Method attachPropertyClearFacetIfClearMethodIsFound(final ProcessMethodContext processMethodContext) { final Class<?> cls = processMethodContext.getCls(); final Method getMethod = processMethodContext.getMethod(); final FacetHolder property = processMethodContext.getFacetHolder(); final String capitalizedName = NameUtils.javaBaseName(getMethod.getName()); final Method clearMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.CLEAR_PREFIX + capitalizedName, void.class, NO_PARAMETERS_TYPES); if (clearMethod == null) { return null; } processMethodContext.removeMethod(clearMethod); FacetUtil.addFacet(new PropertyClearFacetViaClearMethod(clearMethod, property)); return clearMethod; }
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)); }
private void attachPropertyChoicesFacetIfChoicesMethodIsFound(final ProcessMethodContext processMethodContext) { final Method getMethod = processMethodContext.getMethod(); final String capitalizedName = NameUtils.javaBaseName(getMethod.getName()); final Class<?> cls = processMethodContext.getCls(); final Class<?> returnType = getMethod.getReturnType(); final Method choicesMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.CHOICES_PREFIX + capitalizedName, null, NO_PARAMETERS_TYPES); if (choicesMethod == null) { return; } processMethodContext.removeMethod(choicesMethod); final FacetHolder property = processMethodContext.getFacetHolder(); FacetUtil.addFacet(new PropertyChoicesFacetViaMethod(choicesMethod, returnType, property, getSpecificationLookup(), getAdapterMap())); }
private void attachAccessorFacetForAccessorMethod(final ProcessMethodContext processMethodContext) { final Method accessorMethod = processMethodContext.getMethod(); processMethodContext.removeMethod(accessorMethod); final FacetHolder holder = processMethodContext.getFacetHolder(); final Facet facet = new CollectionAccessorFacetViaAccessor(accessorMethod, holder); FacetUtil.addFacet(facet); }
private static void attachPropertyAccessFacetForAccessorMethod(final ProcessMethodContext processMethodContext) { final Method accessorMethod = processMethodContext.getMethod(); processMethodContext.removeMethod(accessorMethod); final FacetHolder property = processMethodContext.getFacetHolder(); FacetUtil.addFacet(new PropertyAccessorFacetViaAccessor(accessorMethod, property)); }
public static void attachDisableFacetIfDisableMethodForSessionIsFound(final ProcessMethodContext processMethodContext) { final Method method = processMethodContext.getMethod(); final String capitalizedName = NameUtils.javaBaseNameStripAccessorPrefixIfRequired(method.getName()); final Class<?> cls = processMethodContext.getCls(); final Method disableForSessionMethod = MethodFinderUtils.findMethod(cls, MethodScope.CLASS, MethodPrefixConstants.DISABLE_PREFIX + capitalizedName, String.class, new Class[] { UserMemento.class }); if (disableForSessionMethod == null) { return; } processMethodContext.removeMethod(disableForSessionMethod); final FacetHolder facetedMethod = processMethodContext.getFacetHolder(); FacetUtil.addFacet(new DisableForSessionFacetViaMethod(disableForSessionMethod, facetedMethod)); }
public static void attachHideFacetIfHideMethodIsFound(final ProcessMethodContext processMethodContext) { final Method getMethod = processMethodContext.getMethod(); final String capitalizedName = NameUtils.javaBaseNameStripAccessorPrefixIfRequired(getMethod.getName()); final Class<?> cls = processMethodContext.getCls(); final Method hideMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.HIDE_PREFIX + capitalizedName, boolean.class, new Class[] {}); if (hideMethod == null) { return; } processMethodContext.removeMethod(hideMethod); final FacetHolder facetedMethod = processMethodContext.getFacetHolder(); FacetUtil.addFacet(new HideForContextFacetViaMethod(hideMethod, facetedMethod)); }
private void attachCollectionClearFacets(final ProcessMethodContext processMethodContext) { final Method getMethod = processMethodContext.getMethod(); final String capitalizedName = NameUtils.javaBaseName(getMethod.getName()); final Class<?> cls = processMethodContext.getCls(); final Method method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.CLEAR_PREFIX + capitalizedName, void.class, null); processMethodContext.removeMethod(method); final FacetHolder collection = processMethodContext.getFacetHolder(); FacetUtil.addFacet(createCollectionClearFacet(method, getMethod, collection)); }
public static void attachHideFacetIfHideMethodForSessionIsFound(final ProcessMethodContext processMethodContext) { final Method method = processMethodContext.getMethod(); final String capitalizedName = NameUtils.javaBaseNameStripAccessorPrefixIfRequired(method.getName()); final Class<?> cls = processMethodContext.getCls(); final Method hideForSessionMethod = MethodFinderUtils.findMethod(cls, MethodScope.CLASS, MethodPrefixConstants.HIDE_PREFIX + capitalizedName, boolean.class, new Class[] { UserMemento.class }); if (hideForSessionMethod == null) { return; } processMethodContext.removeMethod(hideForSessionMethod); final FacetHolder facetedMethod = processMethodContext.getFacetHolder(); FacetUtil.addFacet(new HideForSessionFacetViaMethod(hideForSessionMethod, facetedMethod)); }
public static void attachDisabledFacetIfDisabledMethodIsFound(final ProcessMethodContext processMethodContext) { final Method method = processMethodContext.getMethod(); final String capitalizedName = NameUtils.javaBaseNameStripAccessorPrefixIfRequired(method.getName()); final Class<?> cls = processMethodContext.getCls(); final Method disableMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.DISABLE_PREFIX + capitalizedName, String.class, new Class[] {}); if (disableMethod == null) { return; } processMethodContext.removeMethod(disableMethod); final FacetHolder facetHolder = processMethodContext.getFacetHolder(); FacetUtil.addFacet(new DisableForContextFacetViaMethod(disableMethod, facetHolder)); }
public static void attachDisabledFacetIfDisabledMethodIsFound(final ProcessMethodContext processMethodContext) { final Method method = processMethodContext.getMethod(); final String capitalizedName = NameUtils.javaBaseNameStripAccessorPrefixIfRequired(method.getName()); final Class<?> cls = processMethodContext.getCls(); final Method disableMethod = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodPrefixConstants.DISABLE_PREFIX + capitalizedName, String.class, new Class[] {}); if (disableMethod == null) { return; } processMethodContext.removeMethod(disableMethod); final FacetHolder facetHolder = processMethodContext.getFacetHolder(); FacetUtil.addFacet(new DisableForContextFacetViaMethod(disableMethod, facetHolder)); }