Skip to content

Commit 2b281da

Browse files
authored
Fix an issue with the incorrect validation of the first type argument in DomainConverter (#1036)
* Fix an issue with the incorrect validation of the first type argument in DomainConverter * Fix the message
1 parent e04d656 commit 2b281da

File tree

6 files changed

+76
-2
lines changed

6 files changed

+76
-2
lines changed

doma-core/src/main/java/org/seasar/doma/message/Message.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -922,7 +922,7 @@ public enum Message implements MessageResource {
922922
DOMA4458("You can't use static methods"),
923923
DOMA4459("Must be a public method"),
924924
DOMA4460(
925-
"The first type argument \"{0}\" of org.seasar.doma.jdbc.domain.DomainConverter must not be a basic type."),
925+
"The first type argument \"{0}\" of org.seasar.doma.jdbc.domain.DomainConverter must not be a basic type. However, enum types are exceptionally allowed."),
926926

927927
// other
928928
DOMA5001(

doma-processor/src/main/java/org/seasar/doma/internal/apt/meta/domain/ExternalDomainMetaFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ private void doDomainType(
130130
}
131131

132132
BasicCtType basicCtType = ctx.getCtTypes().newBasicCtType(declaredType);
133-
if (basicCtType != null) {
133+
if (basicCtType != null && !basicCtType.isEnum()) {
134134
throw new AptException(Message.DOMA4460, converterElement, new Object[] {declaredType});
135135
}
136136

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package org.seasar.doma.internal.apt.processor.domain;
2+
3+
public enum Color {
4+
RED,
5+
BLUE
6+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package org.seasar.doma.internal.apt.processor.domain;
2+
3+
import org.seasar.doma.ExternalDomain;
4+
import org.seasar.doma.jdbc.domain.DomainConverter;
5+
6+
@ExternalDomain
7+
public class ColorConverter implements DomainConverter<Color, String> {
8+
@Override
9+
public String fromDomainToValue(Color color) {
10+
return null;
11+
}
12+
13+
@Override
14+
public Color fromValueToDomain(String value) {
15+
return null;
16+
}
17+
}

doma-processor/src/test/java/org/seasar/doma/internal/apt/processor/domain/ExternalDomainProcessorTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ public boolean supportsTestTemplate(ExtensionContext context) {
5151
public Stream<TestTemplateInvocationContext> provideTestTemplateInvocationContexts(
5252
ExtensionContext context) {
5353
return Stream.of(
54+
invocationContext(ColorConverter.class, Color.class),
5455
invocationContext(StringArrayConverter.class, String[].class),
5556
invocationContext(
5657
UpperBoundParameterizedValueObjectConverter.class,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package __.org.seasar.doma.internal.apt.processor.domain;
2+
3+
/** */
4+
@javax.annotation.Generated(value = { "Doma", "@VERSION@" }, date = "1970-01-01T09:00:00.000+0900")
5+
@org.seasar.doma.DomainTypeImplementation
6+
public final class _Color extends org.seasar.doma.jdbc.domain.AbstractDomainType<java.lang.String, org.seasar.doma.internal.apt.processor.domain.Color> {
7+
8+
static {
9+
org.seasar.doma.internal.Artifact.validateVersion("@VERSION@");
10+
}
11+
12+
private static final _Color singleton = new _Color();
13+
14+
private static final org.seasar.doma.internal.apt.processor.domain.ColorConverter converter = new org.seasar.doma.internal.apt.processor.domain.ColorConverter();
15+
16+
private _Color() {
17+
super(org.seasar.doma.internal.wrapper.WrapperSuppliers.ofString());
18+
}
19+
20+
@Override
21+
protected org.seasar.doma.internal.apt.processor.domain.Color newDomain(java.lang.String value) {
22+
return converter.fromValueToDomain(value);
23+
}
24+
25+
@Override
26+
protected java.lang.String getBasicValue(org.seasar.doma.internal.apt.processor.domain.Color domain) {
27+
if (domain == null) {
28+
return null;
29+
}
30+
return converter.fromDomainToValue(domain);
31+
}
32+
33+
@Override
34+
public Class<?> getBasicClass() {
35+
return java.lang.String.class;
36+
}
37+
38+
@Override
39+
public Class<org.seasar.doma.internal.apt.processor.domain.Color> getDomainClass() {
40+
return org.seasar.doma.internal.apt.processor.domain.Color.class;
41+
}
42+
43+
/**
44+
* @return the singleton
45+
*/
46+
public static _Color getSingletonInternal() {
47+
return singleton;
48+
}
49+
50+
}

0 commit comments

Comments
 (0)