Skip to content

Commit 47b5ed8

Browse files
authored
Prohibit to treat a basic type as an external domain type (#935)
1 parent 5faa0a5 commit 47b5ed8

File tree

4 files changed

+28
-1
lines changed

4 files changed

+28
-1
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -921,6 +921,8 @@ public enum Message implements MessageResource {
921921
DOMA4457("You must always receive the EntityMetamodel as the first parameter"),
922922
DOMA4458("You can't use static methods"),
923923
DOMA4459("Must be a public method"),
924+
DOMA4460(
925+
"The first type argument \"{0}\" of org.seasar.doma.jdbc.domain.DomainConverter must not be a basic type."),
924926

925927
// other
926928
DOMA5001(

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,12 @@ private void doDomainType(
128128
Message.DOMA4203, converterElement, new Object[] {domainElement.getQualifiedName()});
129129
}
130130
}
131+
132+
BasicCtType basicCtType = ctx.getCtTypes().newBasicCtType(declaredType);
133+
if (basicCtType != null) {
134+
throw new AptException(Message.DOMA4460, converterElement, new Object[] {declaredType});
135+
}
136+
131137
meta.setTypeElement(domainElement);
132138
TypeParametersDef typeParametersDef = ctx.getMoreElements().getTypeParametersDef(domainElement);
133139
meta.setTypeParametersDef(typeParametersDef);
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
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 BasicTypeConverter implements DomainConverter<Boolean, Integer> {
8+
9+
@Override
10+
public Integer fromDomainToValue(Boolean domain) {
11+
return null;
12+
}
13+
14+
@Override
15+
public Boolean fromValueToDomain(Integer value) {
16+
return null;
17+
}
18+
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,8 @@ public Stream<TestTemplateInvocationContext> provideTestTemplateInvocationContex
108108
invocationContext(ConstructorNotFoundDomainConverter.class, Message.DOMA4193),
109109
invocationContext(AbstractDomainConverter.class, Message.DOMA4192),
110110
invocationContext(MultidimensionalArrayConverter.class, Message.DOMA4447),
111-
invocationContext(ListArrayConverter.class, Message.DOMA4448));
111+
invocationContext(ListArrayConverter.class, Message.DOMA4448),
112+
invocationContext(BasicTypeConverter.class, Message.DOMA4460));
112113
}
113114

114115
private TestTemplateInvocationContext invocationContext(

0 commit comments

Comments
 (0)