/** * Returns <code>true</code> if resource is of provided resource type. */ public boolean isSameTypeAsResource(final Class type) { return ClassUtil.isTypeOf(type, resource.getClass()); }
public ClassDescriptor(final Class type, final boolean scanAccessible, final boolean extendedProperties, final boolean includeFieldsAsProperties, final String[] propertyFieldPrefix) { this.type = type; this.scanAccessible = scanAccessible; this.extendedProperties = extendedProperties; this.includeFieldsAsProperties = includeFieldsAsProperties; this.propertyFieldPrefix = propertyFieldPrefix; isArray = type.isArray(); isMap = ClassUtil.isTypeOf(type, Map.class); isList = ClassUtil.isTypeOf(type, List.class); isSet = ClassUtil.isTypeOf(type, Set.class); isCollection = ClassUtil.isTypeOf(type, Collection.class); isSupplier = ClassUtil.isTypeOf(type, Supplier.class); interfaces = ClassUtil.resolveAllInterfaces(type); superclasses = ClassUtil.resolveAllSuperclasses(type); }
/** * Iterates all beans that are of given type. */ public void forEachBeanType(final Class type, final Consumer<String> beanNameConsumer) { forEachBean(bd -> { if (ClassUtil.isTypeOf(bd.type, type)) { beanNameConsumer.accept(bd.name); } }); }
@SuppressWarnings({"unchecked"}) protected Class<T> resolveSetType(final PropertyDescriptor propertyDescriptor) { Class<T> type = (Class<T>) propertyDescriptor.getType(); if (ClassUtil.isTypeOf(type, Collection.class)) { return type; } throw new PetiteException("Unsupported Petite set type: " + type.getName()); }
/** * Resolves bean names for give type. */ protected String[] resolveBeanNamesForType(final Class type) { String[] beanNames = beanCollections.get(type); if (beanNames != null) { return beanNames; } ArrayList<String> list = new ArrayList<>(); for (Map.Entry<String, BeanDefinition> entry : beans.entrySet()) { BeanDefinition beanDefinition = entry.getValue(); if (ClassUtil.isTypeOf(beanDefinition.type, type)) { String beanName = entry.getKey(); list.add(beanName); } } if (list.isEmpty()) { beanNames = StringPool.EMPTY_ARRAY; } else { beanNames = list.toArray(new String[0]); } beanCollections.put(type, beanNames); return beanNames; }
/** * Replaces all {@link BaseActionWrapperStack} with stack values. */ protected Class<? extends T>[] expand(final Class<? extends T>[] actionWrappers) { if (actionWrappers == null) { return null; } List<Class<? extends T>> list = new ArrayList<>(actionWrappers.length); list.addAll(Arrays.asList(actionWrappers)); int i = 0; while (i < list.size()) { Class<? extends T> wrapperClass = list.get(i); if (wrapperClass == null) { continue; } if (ClassUtil.isTypeOf(wrapperClass, BaseActionWrapperStack.class)) { BaseActionWrapperStack stack = (BaseActionWrapperStack) resolve(wrapperClass); list.remove(i); Class<? extends T>[] stackWrappers = stack.getWrappers(); if (stackWrappers != null) { list.addAll(i, Arrays.asList(stackWrappers)); } i--; //continue; } i++; } return list.toArray(new Class[0]); }
@Test void testMatchInterfaces() { assertTrue(ClassUtil.isTypeOf(HashMap.class, Map.class)); assertTrue(ClassUtil.isTypeOf(AbstractMap.class, Map.class)); assertTrue(ClassUtil.isTypeOf(Map.class, Map.class)); assertTrue(ClassUtil.isInstanceOf(new HashMap(), Map.class)); assertTrue(ClassUtil.isTypeOf(HashMap.class, Map.class)); assertTrue(ClassUtil.isTypeOf(AbstractMap.class, Map.class)); assertTrue(ClassUtil.isTypeOf(HashMap.class, Map.class)); assertTrue(ClassUtil.isTypeOf(Map.class, Map.class)); assertTrue(ClassUtil.isTypeOf(HashMap.class, Map.class)); assertTrue(ClassUtil.isTypeOf(AbstractMap.class, Map.class)); assertTrue(ClassUtil.isTypeOf(HashMap.class, Map.class)); assertTrue(ClassUtil.isTypeOf(Map.class, Map.class)); }
if (ClassUtil.isTypeOf(destinationType, Collection.class)) {
@Test void testIsSubclassAndInterface() { assertTrue(ClassUtil.isTypeOf(SBase.class, SBase.class)); assertTrue(ClassUtil.isTypeOf(SOne.class, SBase.class)); assertTrue(ClassUtil.isTypeOf(SOne.class, IOne.class)); assertTrue(ClassUtil.isTypeOf(SOne.class, IOne.class)); assertTrue(ClassUtil.isTypeOf(SOne.class, Serializable.class)); assertTrue(ClassUtil.isTypeOf(SOne.class, Serializable.class)); assertTrue(ClassUtil.isTypeOf(SOne.class, SOne.class)); assertTrue(ClassUtil.isTypeOf(STwo.class, SBase.class)); assertTrue(ClassUtil.isTypeOf(STwo.class, IOne.class)); assertTrue(ClassUtil.isTypeOf(STwo.class, IOne.class)); assertTrue(ClassUtil.isTypeOf(STwo.class, Serializable.class)); assertTrue(ClassUtil.isTypeOf(STwo.class, Serializable.class)); assertTrue(ClassUtil.isTypeOf(STwo.class, ITwo.class)); assertTrue(ClassUtil.isTypeOf(STwo.class, ITwo.class)); assertTrue(ClassUtil.isTypeOf(STwo.class, IBase.class)); assertTrue(ClassUtil.isTypeOf(STwo.class, IBase.class)); assertTrue(ClassUtil.isTypeOf(STwo.class, IExtra.class)); assertTrue(ClassUtil.isTypeOf(STwo.class, IExtra.class)); assertTrue(ClassUtil.isTypeOf(STwo.class, STwo.class)); assertTrue(ClassUtil.isTypeOf(STwo.class, STwo.class)); }
if (ClassUtil.isTypeOf(propertyType, Collection.class)) { continue;
if (!ClassUtil.isTypeOf(propertyType, Collection.class)) { continue;
@Test void testMatchClasses() { TFooBean a = new TFooBean(); TFooBean b = new TFooBean(); TFooBean2 c = new TFooBean2(); assertTrue(TFooBean.class.isInstance(a)); assertTrue(ClassUtil.isTypeOf(TFooBean.class, a.getClass())); assertTrue(ClassUtil.isTypeOf(TFooBean.class, b.getClass())); assertTrue(ClassUtil.isTypeOf(a.getClass(), b.getClass())); assertTrue(ClassUtil.isTypeOf(b.getClass(), a.getClass())); assertTrue(ClassUtil.isTypeOf(TFooBean2.class, c.getClass())); assertTrue(ClassUtil.isTypeOf(TFooBean2.class, TFooBean.class)); assertFalse(ClassUtil.isTypeOf(TFooBean.class, TFooBean2.class)); assertTrue(ClassUtil.isTypeOf(c.getClass(), TFooBean.class)); assertFalse(ClassUtil.isTypeOf(a.getClass(), TFooBean2.class)); assertTrue(ClassUtil.isTypeOf(TFooBean.class, Serializable.class)); assertTrue(Serializable.class.isInstance(c)); //noinspection ConstantConditions assertTrue(c instanceof Serializable); assertTrue(ClassUtil.isInstanceOf(c, Serializable.class)); assertTrue(ClassUtil.isTypeOf(TFooBean2.class, Serializable.class)); assertTrue(ClassUtil.isTypeOf(TFooBean2.class, Comparable.class)); assertFalse(ClassUtil.isTypeOf(TFooBean.class, Comparable.class)); assertTrue(ClassUtil.isTypeOf(TFooBean.class, TFooIndyEx.class)); assertTrue(ClassUtil.isTypeOf(TFooBean2.class, TFooIndyEx.class)); assertTrue(ClassUtil.isTypeOf(TFooBean.class, TFooIndy.class)); }
if (!ClassUtil.isTypeOf(propertyType, Map.class)) {
if (ClassUtil.isTypeOf(propertyType, excludedType)) { return false;
if (ClassUtil.isTypeOf(target, List.class)) { final Class componentType = ClassUtil.getComponentType(method.getGenericReturnType(), currentClass, 0);
/** * Invokes setter, but first converts type to match the setter type. */ protected Object invokeSetter(final Setter setter, final BeanProperty bp, Object value) { try { final MapperFunction setterMapperFunction = setter.getMapperFunction(); if (setterMapperFunction != null) { value = setterMapperFunction.apply(value); } final Class type = setter.getSetterRawType(); if (ClassUtil.isTypeOf(type, Collection.class)) { Class componentType = setter.getSetterRawComponentType(); value = convertToCollection(value, type, componentType); } else { // no collections value = convertType(value, type); } setter.invokeSetter(bp.bean, value); } catch (Exception ex) { if (isSilent) { return null; } throw new BeanException("Setter failed: " + setter, ex); } return value; }
/** * Returns <code>true</code> if resource is of provided resource type. */ public boolean isSameTypeAsResource(final Class type) { return ClassUtil.isTypeOf(type, resource.getClass()); }
/** * Iterates all beans that are of given type. */ public void forEachBeanType(final Class type, final Consumer<String> beanNameConsumer) { forEachBean(bd -> { if (ClassUtil.isTypeOf(bd.type, type)) { beanNameConsumer.accept(bd.name); } }); }
@SuppressWarnings({"unchecked"}) protected Class<T> resolveSetType(final PropertyDescriptor propertyDescriptor) { Class<T> type = (Class<T>) propertyDescriptor.getType(); if (ClassUtil.isTypeOf(type, Collection.class)) { return type; } throw new PetiteException("Unsupported Petite set type: " + type.getName()); }