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

com.github.jknack.handlebars.context.JavaBeanValueResolver Maven / Gradle / Ivy

There is a newer version: 2024.11.18751.20241128T090041Z-241100
Show newest version
/**
 * Copyright (c) 2012-2015 Edgar Espina
 * 

* This file is part of Handlebars.java. *

* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.github.jknack.handlebars.context; import com.github.jknack.handlebars.ValueResolver; import java.lang.reflect.Method; import java.util.Collection; /** * A JavaBean method value resolver. * * @author edgar.espina * @since 0.1.1 * * @deprecated com.github.jknack.handlebars.context package is deprecated and marked for removal in subsequent releases which will involve removal of the handlebars dependency in AEM. */ @Deprecated(since = "2024-07-10") public class JavaBeanValueResolver extends MethodValueResolver { /** * The 'is' prefix. */ private static final String IS_PREFIX = "is"; /** * The 'get' prefix. */ private static final String GET_PREFIX = "get"; /** * The default value resolver. */ public static final ValueResolver INSTANCE = new JavaBeanValueResolver(); @Override public boolean matches(final Method method, final String name) { if (name.equals("length") && method.getName().equals("size")) { boolean isCollection = isCollectionMethod(method); if (isCollection) { return true; } } boolean isStatic = isStatic(method); boolean isPublic = isPublic(method); boolean isGet = method.getName().equals(javaBeanMethod(GET_PREFIX, name)); boolean isBoolGet = method.getName().equals(javaBeanMethod(IS_PREFIX, name)); int parameterCount = method.getParameterTypes().length; return !isStatic && isPublic && parameterCount == 0 && (isGet || isBoolGet); } /** * Convert the property's name to a JavaBean read method name. * * @param prefix The prefix: 'get' or 'is'. * @param name The unqualified property name. * @return The javaBean method name. */ private static String javaBeanMethod(final String prefix, final String name) { StringBuilder buffer = new StringBuilder(prefix); buffer.append(name); buffer.setCharAt(prefix.length(), Character.toUpperCase(name.charAt(0))); return buffer.toString(); } @Override protected String memberName(final Method member) { if (member.getName().equals("size")) { boolean isCollection = isCollectionMethod(member); if (isCollection) { return "length"; } } String name = member.getName(); if (name.startsWith(GET_PREFIX)) { name = name.substring(GET_PREFIX.length()); } else if (name.startsWith(IS_PREFIX)) { name = name.substring(IS_PREFIX.length()); } else { return name; } if (name.length() > 0) { return Character.toLowerCase(name.charAt(0)) + name.substring(1); } return member.getName(); } /** * Check is method class implements Collection interface. * * @param method from class * @return true/false */ private boolean isCollectionMethod(final Method method) { for (Class clazz : method.getDeclaringClass().getInterfaces()) { if (Collection.class.equals(clazz)) { return true; } } return false; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy