/** * Finds all setters in the class, and puts them in the {@link #setters} * field. * * @param fieldType the type of the field */ private void findSetters(JClassType fieldType) { // Pass one - get all setter methods Multimap<String, JMethod> allSetters = findAllSetters(fieldType); // Pass two - disambiguate ambiguousSetters = new HashSet<String>(); for (String propertyName : allSetters.keySet()) { Collection<JMethod> propertySetters = allSetters.get(propertyName); JMethod setter = disambiguateSetters(propertyName, propertySetters); setters.put(propertyName, setter); } if (ambiguousSetters.size() == 0) { ambiguousSetters = null; } }
/** * Recursively finds all setters for the given class and its superclasses. * * @param fieldType the leaf type to look at * @return a multimap of property name to the setter methods */ private Multimap<String, JMethod> findAllSetters(JClassType fieldType) { Multimap<String, JMethod> allSetters = LinkedHashMultimap.create(); for (JMethod method : fieldType.getInheritableMethods()) { if (!isSetterMethod(method)) { continue; } // Take out "set" String propertyName = method.getName().substring(3); // turn "PropertyName" into "propertyName" String beanPropertyName = Introspector.decapitalize(propertyName); allSetters.put(beanPropertyName, method); // keep backwards compatibility (i.e. hTML instead of HTML for setHTML) String legacyPropertyName = propertyName.substring(0, 1).toLowerCase(Locale.ROOT) + propertyName.substring(1); if (!legacyPropertyName.equals(beanPropertyName)) { allSetters.put(legacyPropertyName, method); } } return allSetters; }
Collection<MethodData> existing = results.get(name); MethodData data = new MethodData(accessorName(method), method.getName()); if (hasCallbacks) { data.valueClass = qualified; existing = Sets.add((Set<MethodData>) existing, data); results.putAll(name, existing); data.name = debeaned; for (final MethodData previous : results.values()) { if (previous.name.equals(data.name)) { if (previous.isProperty()) { results.putAll(name, existing); } else { logger.log(Type.WARN, "Unable to generate web component implementation for "
for (int i = flattened.size(); i --> 0; ) { final JClassType key = flattened.get(i); for (final MethodData method : methods.get(key.getQualifiedSourceName())) { if (method.isProperty()) { printPropertyAccess(logger, out, method, builder, seen);