Skip to content

Commit 470eb94

Browse files
authored
Merge pull request #99 from Systems-Modeling/feature/ST5AS-233
ST5AS-233 support UUIDs in Queries
2 parents ceb69d6 + d3cebb4 commit 470eb94

3 files changed

Lines changed: 29 additions & 5 deletions

File tree

app/dao/impl/jpa/JpaDataDao.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ protected static <D extends Data> D resolve(D data, Class<D> clazz) {
7575
protected static List<Class<?>> SUPPORTED_PRIMITIVE_CONSTRAINT_CLASSES = Arrays.asList(
7676
Number.class,
7777
Boolean.class,
78-
String.class
78+
String.class,
79+
UUID.class
7980
);
8081

8182
@SuppressWarnings({"unchecked", "rawtypes"})
@@ -232,6 +233,10 @@ else if (constraint instanceof PrimitiveConstraint) {
232233
Object actualValue;
233234
Object constrainedValue;
234235
switch (primitiveConstraint.getProperty()) {
236+
case "@id":
237+
actualValue = data.getId();
238+
constrainedValue = JavaBeanHelper.convert(primitiveConstraint.getValue(), UUID.class);
239+
break;
235240
case "@type":
236241
try {
237242
Class<?> clazz = data instanceof HibernateProxy ?

app/javabean/JavaBeanHelper.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,12 @@
2424
import java.beans.*;
2525
import java.lang.reflect.InvocationTargetException;
2626
import java.lang.reflect.Method;
27-
import java.util.Arrays;
28-
import java.util.HashMap;
29-
import java.util.Map;
30-
import java.util.Objects;
27+
import java.util.*;
3128
import java.util.function.Function;
3229
import java.util.stream.Collectors;
3330

3431
public class JavaBeanHelper {
32+
3533
public static Map<String, PropertyDescriptor> getBeanProperties(Object bean) {
3634
try {
3735
return Arrays.stream(Introspector.getBeanInfo(bean.getClass(), Object.class).getPropertyDescriptors())
@@ -66,7 +64,16 @@ public static Map<Method, Method> getBeanGettersSetters(Object bean) {
6664
@SuppressWarnings("unchecked")
6765
public static <C> C convert(String text, Class<C> targetType) {
6866
PropertyEditor editor = PropertyEditorManager.findEditor(targetType);
67+
if (editor == null) {
68+
if (UUID.class.equals(targetType)) {
69+
PropertyEditorManager.registerEditor(UUID.class, UuidPropertyEditor.class);
70+
editor = PropertyEditorManager.findEditor(UUID.class);
71+
} else {
72+
return null;
73+
}
74+
}
6975
editor.setAsText(text);
7076
return (C) editor.getValue();
7177
}
78+
7279
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package javabean;
2+
3+
import java.beans.PropertyEditorSupport;
4+
import java.util.UUID;
5+
6+
public class UuidPropertyEditor extends PropertyEditorSupport {
7+
8+
@Override
9+
public void setAsText(String text) throws IllegalArgumentException {
10+
setValue(UUID.fromString(text));
11+
}
12+
}

0 commit comments

Comments
 (0)