ReflectASMFieldAccessor(Class<T> ownerType, Field field, Class<U> fieldType) throws InaccessibleFieldException { methodAccess = MethodAccess.get(ownerType); Method getter = ReflectionUtil.findGetter(field); if (getter != null) { getterIndex = methodAccess.getIndex(getter.getName()); } Method setter = ReflectionUtil.findSetter(field); if (setter != null) { setterIndex = methodAccess.getIndex(setter.getName()); } if (getterIndex == NO_METHOD || setterIndex == NO_METHOD) { fieldAccess = FieldAccess.get(ownerType); try { fieldIndex = fieldAccess.getIndex(field.getName()); } catch (IllegalArgumentException e) { throw new InaccessibleFieldException("Failed to create accessor for field '" + field.getName() + "' of type '" + ownerType.getName() + "'", e); } } }
public Object get (Object instance, String fieldName) { return get(instance, getIndex(fieldName)); }
public void set (Object instance, String fieldName, Object value) { set(instance, getIndex(fieldName), value); }
public void set (Object instance, String fieldName, Object value) { set(instance, getIndex(fieldName), value); }
public Object get (Object object, String fieldName) { return get(object, getIndex(fieldName)); } }
public Object get (Object instance, String fieldName) { return get(instance, getIndex(fieldName)); }
public Object get (Object instance, String fieldName) { return get(instance, getIndex(fieldName)); }
public void set (Object instance, String fieldName, Object value) { set(instance, getIndex(fieldName), value); }
public void set (Object object, String fieldName, Object value) { set(object, getIndex(fieldName), value); }
public void set (Object instance, String fieldName, Object value) { set(instance, getIndex(fieldName), value); }
public Object get (Object instance, String fieldName) { return get(instance, getIndex(fieldName)); }
private void createCachedFields (IntArray useAsm, List<Field> validFields, List<CachedField> cachedFields, int baseIndex) { if (useAsmEnabled || !useMemRegions) { for (int i = 0, n = validFields.size(); i < n; i++) { Field field = validFields.get(i); int accessIndex = -1; if (access != null && useAsm.get(baseIndex + i) == 1) accessIndex = ((FieldAccess)access).getIndex(field.getName()); cachedFields.add(newCachedField(field, cachedFields.size(), accessIndex)); } } else { unsafeUtil.createUnsafeCacheFieldsAndRegions(validFields, cachedFields, baseIndex, useAsm); } }
private void createCachedFields (IntArray useAsm, List<Field> validFields, List<CachedField> cachedFields, int baseIndex) { if (config.isUseAsm() || !useMemRegions) { for (int i = 0, n = validFields.size(); i < n; i++) { Field field = validFields.get(i); int accessIndex = -1; if (access != null && useAsm.get(baseIndex + i) == 1) accessIndex = ((FieldAccess)access).getIndex(field.getName()); cachedFields.add(newCachedField(field, cachedFields.size(), accessIndex)); } } else { unsafeUtil.createUnsafeCacheFieldsAndRegions(validFields, cachedFields, baseIndex, useAsm); } }
private void createCachedFields (IntArray useAsm, List<Field> validFields, List<CachedField> cachedFields, int baseIndex) { if (config.isUseAsm() || !useMemRegions) { for (int i = 0, n = validFields.size(); i < n; i++) { Field field = validFields.get(i); int accessIndex = -1; if (access != null && useAsm.get(baseIndex + i) == 1) accessIndex = ((FieldAccess)access).getIndex(field.getName()); cachedFields.add(newCachedField(field, cachedFields.size(), accessIndex)); } } else { unsafeUtil.createUnsafeCacheFieldsAndRegions(validFields, cachedFields, baseIndex, useAsm); } }
private void createCachedFields (IntArray useAsm, List<Field> validFields, List<CachedField> cachedFields, int baseIndex) { if (useAsmEnabled || !useMemRegions) { for (int i = 0, n = validFields.size(); i < n; i++) { Field field = validFields.get(i); int accessIndex = -1; if (access != null && useAsm.get(baseIndex + i) == 1) accessIndex = ((FieldAccess)access).getIndex(field.getName()); cachedFields.add(newCachedField(field, cachedFields.size(), accessIndex)); } } else { unsafeUtil.createUnsafeCacheFieldsAndRegions(validFields, cachedFields, baseIndex, useAsm); } }
/** * Builds the field sorted cache. Sorts the fields alphabetically by name. */ private static void buildFieldCache(Class<?> clazz, FieldAccess fieldAccess) { if(!_fieldSortCache.contains(clazz)) { LogCache[] sortedLogCache = new LogCache[fieldAccess.getFieldCount()]; String[] sortedFieldNames = Arrays.copyOf(fieldAccess.getFieldNames(), sortedLogCache.length); Arrays.sort(sortedFieldNames); for(int i = 0; i < sortedLogCache.length; i++) { sortedLogCache[i] = new LogCache(fieldAccess.getIndex(sortedFieldNames[i]), getLoggingScope(clazz, sortedFieldNames[i])); } _fieldSortCache.put(clazz, sortedLogCache); } }
/** * Constructor * * @param klass the class * @param tableSchema Hive schema */ public ReflectasmRowToBean(Class<X> klass, HiveTableSchema tableSchema) { fieldAccess = FieldAccess.get(klass); for (Field field : klass.getDeclaredFields()) { field.setAccessible(true); String name = field.getName(); ReflectasmFieldCopier fieldCopier = ReflectasmFieldCopier.fromType(field.getType()); fieldCopier.setFieldAccess(fieldAccess); int hiveIndex = tableSchema.positionOf(name); if (hiveIndex == -1) { throw new IllegalArgumentException("Table " + tableSchema.getTableDesc() + " does not have column " + name); } fieldCopier.setFromHiveIndex(hiveIndex); fieldCopier.setToObjectIndex(fieldAccess.getIndex(name)); fieldCopiers.add(fieldCopier); } }
try { FieldAccess fieldAccess = FieldAccess.get(aClazz); int fieldIndex = fieldAccess.getIndex(name); setter = fieldAccess; setterIndex = fieldIndex;
try { FieldAccess fieldAccess = FieldAccess.get(aClazz); int fieldIndex = fieldAccess.getIndex(name); getter = fieldAccess; getterIndex = fieldIndex;
accessIndex = ((FieldAccess)serializer.access).getIndex(field.getName());