public <P> void addClassField(final FieldDescriptorImpl<BEAN, P> classField) { this.fieldClassMapByJavaName.put(classField.getFieldName(), classField); if (classField.getVersionInfo().isVersionable()) { if (this.versionGenerator) { throw new JpoWrongAnnotationException("A bean can have maximum one field annotated with @" + Version.class.getSimpleName() //$NON-NLS-1$ + ". Error in class:[" + this.getMappedClass() + "] field: [" + classField.getFieldName() + "]"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } this.versionGenerator = true; } }
private <P> void setColumnInfo(FieldDescriptorImpl<BEAN, P> classField) { classField.setColumnInfo(new InferedColumnName(classField.getFieldName())); findAnnotation(classField, Column.class) .ifPresent(column -> { classField.setColumnInfo(new AnnotationColumnInfo(column.name())); }); }
private <P> FieldDescriptorImpl<BEAN, P> buildClassField(final ClassDescriptorImpl<BEAN> classMap, final Field field, final List<Method> methods, final Class<P> fieldClass) { final Class<?> realClass = field.getType(); Class<P> processedClass = (Class<P>) field.getType(); // In future this should be more generic. Not required at the moment if (isOptional(realClass)) { processedClass = getGenericClass(field.getGenericType()); } final FieldDescriptorImpl<BEAN, P> classField = new FieldDescriptorImpl<>(field.getName(), processedClass, buildPropertyFieldWrapper(field), getGetter(field, methods), getSetter(field, methods, classMap.getMappedClass()) ); setIgnored(classField); setColumnInfo(classField); setIdentifier(classField); setGeneratorInfo(classField); setVersionInfo(classField); setJsonInfo(classField); this.logger.debug("DB column [" + classField.getColumnInfo().getDBColumnName() + "]" + " will be associated with object field [" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + classField.getFieldName() + "]"); //$NON-NLS-1$ return classField; }