Skip to content

Commit 7438ad9

Browse files
committed
Merge pull request #44 from domaframework/issue-43
Issue 43 を修正しました
2 parents cef87c1 + 9aa79e9 commit 7438ad9

File tree

5 files changed

+47
-21
lines changed

5 files changed

+47
-21
lines changed

src/main/java/org/seasar/doma/internal/apt/ExternalDomainTypeGenerator.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ protected void printClass() {
101101
printGenerated();
102102
iprint("public final class %1$s extends %2$s<%3$s, %4$s> {%n",
103103
simpleMetaTypeName, AbstractDomainType.class.getName(),
104-
domainMeta.getValueElement().getQualifiedName(), domainTypeName);
104+
domainMeta.getValueTypeName(), domainTypeName);
105105
print("%n");
106106
indent();
107107
printValidateVersionStaticInitializer();
@@ -129,8 +129,8 @@ protected void printConstructors() {
129129
iprint("private %1$s() {%n", simpleName);
130130
if (domainMeta.getWrapperCtType().getBasicCtType().isEnum()) {
131131
iprint(" super(() -> new %1$s(%2$s.class));%n", domainMeta
132-
.getWrapperCtType().getTypeName(), domainMeta
133-
.getValueElement().getQualifiedName());
132+
.getWrapperCtType().getTypeName(),
133+
domainMeta.getValueTypeName());
134134
iprint("}%n");
135135
} else {
136136
iprint(" super(() -> new %1$s());%n", domainMeta
@@ -154,7 +154,7 @@ protected void printNewDomainMethod() {
154154
}
155155
iprint("@Override%n");
156156
iprint("protected %1$s newDomain(%2$s value) {%n", domainTypeName,
157-
domainMeta.getValueElement().getQualifiedName());
157+
domainMeta.getValueTypeName());
158158
if (parametarized) {
159159
iprint(" return (%1$s) converter.fromValueToDomain(value);%n",
160160
domainTypeName);
@@ -167,8 +167,8 @@ protected void printNewDomainMethod() {
167167

168168
protected void printGetBasicValueMethod() {
169169
iprint("@Override%n");
170-
iprint("protected %1$s getBasicValue(%2$s domain) {%n", domainMeta
171-
.getValueElement().getQualifiedName(), domainTypeName);
170+
iprint("protected %1$s getBasicValue(%2$s domain) {%n",
171+
domainMeta.getValueTypeName(), domainTypeName);
172172
iprint(" if (domain == null) {%n");
173173
iprint(" return null;%n");
174174
iprint(" }%n");
@@ -180,8 +180,7 @@ protected void printGetBasicValueMethod() {
180180
protected void printGetBasicClassMethod() {
181181
iprint("@Override%n");
182182
iprint("public Class<?> getBasicClass() {%n");
183-
iprint(" return %1$s.class;%n", domainMeta.getValueElement()
184-
.getQualifiedName());
183+
iprint(" return %1$s.class;%n", domainMeta.getValueTypeName());
185184
iprint("}%n");
186185
print("%n");
187186
}

src/main/java/org/seasar/doma/internal/apt/meta/ExternalDomainMeta.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*/
1616
package org.seasar.doma.internal.apt.meta;
1717

18-
import static org.seasar.doma.internal.util.AssertionUtil.*;
18+
import static org.seasar.doma.internal.util.AssertionUtil.assertNotNull;
1919

2020
import javax.lang.model.element.TypeElement;
2121

@@ -31,7 +31,7 @@ public class ExternalDomainMeta implements TypeElementMeta {
3131

3232
protected WrapperCtType wrapperCtType;
3333

34-
protected TypeElement valueElement;
34+
protected String valueTypeName;
3535

3636
protected TypeElement domainElement;
3737

@@ -52,12 +52,12 @@ public void setWrapperCtType(WrapperCtType wrapperCtType) {
5252
this.wrapperCtType = wrapperCtType;
5353
}
5454

55-
public TypeElement getValueElement() {
56-
return valueElement;
55+
public String getValueTypeName() {
56+
return valueTypeName;
5757
}
5858

59-
public void setValueElement(TypeElement valueElement) {
60-
this.valueElement = valueElement;
59+
public void setValueTypeName(String valueTypeName) {
60+
this.valueTypeName = valueTypeName;
6161
}
6262

6363
public TypeElement getDomainElement() {

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

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
*/
1616
package org.seasar.doma.internal.apt.meta;
1717

18-
import static org.seasar.doma.internal.util.AssertionUtil.*;
18+
import static org.seasar.doma.internal.util.AssertionUtil.assertEquals;
19+
import static org.seasar.doma.internal.util.AssertionUtil.assertNotNull;
1920

2021
import java.util.List;
2122

@@ -144,16 +145,13 @@ protected void doDomainType(TypeElement convElement, TypeMirror domainType,
144145

145146
protected void doValueType(TypeElement convElement, TypeMirror valueType,
146147
ExternalDomainMeta meta) {
147-
TypeElement valueElement = TypeMirrorUtil.toTypeElement(valueType, env);
148-
if (valueElement == null) {
149-
throw new AptIllegalStateException(valueType.toString());
150-
}
151-
meta.setValueElement(valueElement);
148+
String valueTypeName = TypeMirrorUtil.getTypeName(valueType, env);
149+
meta.setValueTypeName(valueTypeName);
152150

153151
BasicCtType basicCtType = BasicCtType.newInstance(valueType, env);
154152
if (basicCtType == null) {
155153
throw new AptException(Message.DOMA4194, env, convElement,
156-
valueElement.getQualifiedName());
154+
valueTypeName);
157155
}
158156
meta.setWrapperCtType(basicCtType.getWrapperCtType());
159157
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,4 +125,12 @@ public void testIllegalParameterizedValueObjectConverter() throws Exception {
125125
assertMessage(Message.DOMA4203);
126126
}
127127

128+
public void testBytesConversion() throws Exception {
129+
ExternalDomainProcessor processor = new ExternalDomainProcessor();
130+
addProcessor(processor);
131+
addCompilationUnit(UUIDConverter.class);
132+
compile();
133+
assertTrue(getCompiledResult());
134+
}
135+
128136
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.seasar.doma.internal.apt.domain;
2+
3+
import java.util.UUID;
4+
5+
import org.seasar.doma.ExternalDomain;
6+
import org.seasar.doma.jdbc.domain.DomainConverter;
7+
8+
@ExternalDomain
9+
public class UUIDConverter implements DomainConverter<UUID, byte[]> {
10+
11+
@Override
12+
public byte[] fromDomainToValue(UUID domain) {
13+
return null;
14+
}
15+
16+
@Override
17+
public UUID fromValueToDomain(byte[] value) {
18+
return null;
19+
}
20+
21+
}

0 commit comments

Comments
 (0)