/** * Creates new bean. * * @param field Field where resource should be injected. * @param ann Resource annotation. */ GridResourceField(Field field, Annotation ann) { assert field != null; assert ann != null || GridResourceUtils.mayRequireResources(field); this.field = field; this.ann = ann; }
/** * Gets all entries from the specified class or its super-classes that have * been annotated with annotation provided. * * @param cls Class in which search for methods. * @param dep Deployment. * @param annCls Annotation. * @return Set of entries with given annotations. */ private List<GridResourceField> getFieldsWithAnnotation(@Nullable GridDeployment dep, Class<?> cls, Class<? extends Annotation> annCls) { List<GridResourceField> fields = getFieldsFromCache(cls, annCls); if (fields == null) { fields = new ArrayList<>(); for (Class cls0 = cls; !cls0.equals(Object.class); cls0 = cls0.getSuperclass()) { for (Field field : cls0.getDeclaredFields()) { Annotation ann = field.getAnnotation(annCls); if (ann != null || GridResourceUtils.mayRequireResources(field)) // Account for anonymous inner classes. fields.add(new GridResourceField(field, ann)); } } cacheFields(dep, cls, annCls, fields); } return fields; }
Field f = field.getField(); if (GridResourceUtils.mayRequireResources(f)) { f.setAccessible(true);