+ protected Iterator<Map.Entry<Field, Object>> fieldIterator (final FrameworkInterface instance, final String className) throws IllegalArgumentException, NoSuchMethodException, IllegalAccessException, InvocationTargetException {
+ // Trace message
+ this.getLogger().trace(MessageFormat.format("instance={0},className={1} - CALLED!", instance, className)); //NOI18N
+
+ // Get all attributes from given instance
+ Field[] fields = this.getClassFromTarget(instance, className).getDeclaredFields();
+
+ // Debug message
+ this.getLogger().debug(MessageFormat.format("Found {0} fields.", fields.length)); //NOI18N
+
+ // A simple map with K=fieldName and V=Value is fine
+ Map<Field, Object> map = new HashMap<>(fields.length);
+
+ // Walk through all
+ for (final Field field : fields) {
+ // Debug log
+ this.getLogger().debug(MessageFormat.format("field={0}", field.getName())); //NOI18N
+
+ // Does the field start with "$"?
+ if (field.getName().startsWith("$")) { //NOI18N
+ // Debug message
+ this.getLogger().debug(MessageFormat.format("Skipping field={0} as it starts with a dollar character.", field.getName())); //NOI18N
+
+ // Skip it silently
+ continue;
+ }
+
+ // Debug message
+ this.getLogger().debug(MessageFormat.format("Calling getValueFromColumn({0}) on instance {1} ...", field.getName(), instance)); //NOI18N
+
+ // Get value from it
+ Object value = instance.getValueFromColumn(field.getName());
+
+ // Debug message
+ this.getLogger().debug(MessageFormat.format("Adding field={0},value={1}", field.getName(), value)); //NOI18N
+
+ // Add it to list
+ map.put(field, value);
+ }
+
+ // Debug message
+ this.getLogger().debug(MessageFormat.format("Returning iterator for {0} entries ...", map.size())); //NOI18N
+
+ // Return list iterator
+ return map.entrySet().iterator();