Skip to content

Commit

Permalink
Modify Record class handling
Browse files Browse the repository at this point in the history
  • Loading branch information
yuu-nkjm committed Apr 17, 2024
1 parent 224ca1e commit 6412462
Showing 1 changed file with 14 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;

import org.nkjmlab.sorm4j.annotation.OrmConstructor;
import org.nkjmlab.sorm4j.annotation.OrmRecord;
import org.nkjmlab.sorm4j.common.SormException;
Expand Down Expand Up @@ -42,15 +43,19 @@ public SqlResultToColumnsMapping(
this.objectClass = objectClass;
this.columnToAccessorMap = columnToAccessorMap;

Constructor<T> ormConstructor = getOrmConstructor(objectClass);
Constructor<T> ormRecordConstructor = getOrmRecordConstructor(objectClass);
this.containerObjectCreator =
ormRecordConstructor != null
? createContainerRecordCreator(objectClass, ormRecordConstructor)
: (ormConstructor != null
? createOrmConstructorPojoCreator(objectClass, ormConstructor)
: new SqlResultToContainerMappingWithSetter<>(
columnToAccessorMap, getDefaultConstructor(objectClass)));
if (ormRecordConstructor != null) {
this.containerObjectCreator = createContainerRecordCreator(objectClass, ormRecordConstructor);
} else {
Constructor<T> ormConstructor = getOrmConstructor(objectClass);
if (ormConstructor != null) {
this.containerObjectCreator = createOrmConstructorPojoCreator(objectClass, ormConstructor);
} else {
this.containerObjectCreator =
new SqlResultToContainerMappingWithSetter<>(
columnToAccessorMap, getDefaultConstructor(objectClass));
}
}
}

private SqlResultToContainerMapping<T> createContainerRecordCreator(
Expand All @@ -62,8 +67,7 @@ private SqlResultToContainerMapping<T> createContainerRecordCreator(
}

private Constructor<T> getOrmRecordConstructor(Class<T> objectClass) {
OrmRecord a = objectClass.getAnnotation(OrmRecord.class);
if (a == null) {
if (!objectClass.isRecord() && objectClass.getAnnotation(OrmRecord.class) == null) {
return null;
}
Object[] params = {objectClass, OrmRecord.class.getSimpleName()};
Expand Down

0 comments on commit 6412462

Please sign in to comment.