Skip to content

Commit e4d65ee

Browse files
committed
Support the Metamodel annotation
1 parent 80d570c commit e4d65ee

File tree

14 files changed

+220
-12
lines changed

14 files changed

+220
-12
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ domaCodeGen {
150150
| showDbComment | whether to show database comments or not | | `true` |
151151
| useAccessor | whether to use accessors or not | | `true` |
152152
| useListener | whether to use listeners or not | | `true` |
153+
| useMetamodel | whether to use metamodels or not | | `true` |
153154
| originalStatesPropertyName | property to be annotated with `@OriginalStates` | | |
154155
| entityPropertyClassNamesFile | file used to resolve entity property classes | | |
155156
| prefix | prefix for entity classes | | |

codegen-test/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import org.h2.Driver
22
import org.seasar.doma.gradle.codegen.jdbc.SimpleDataSource
33

44
buildscript {
5-
ext.domaVersion = '2.28.0'
5+
ext.domaVersion = '2.36.0'
66
ext.h2Version= '1.4.200'
77
repositories {
88
mavenCentral()
@@ -37,8 +37,8 @@ repositories {
3737
}
3838

3939
dependencies {
40-
implementation "org.seasar.doma:doma:$domaVersion"
41-
annotationProcessor "org.seasar.doma:doma:$domaVersion"
40+
implementation "org.seasar.doma:doma-core:$domaVersion"
41+
annotationProcessor "org.seasar.doma:doma-processor:$domaVersion"
4242
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.1'
4343
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.6.1'
4444
testRuntimeOnly "com.h2database:h2:$h2Version"

codegen/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ repositories {
5858

5959
dependencies {
6060
implementation 'org.freemarker:freemarker:2.3.30'
61-
testImplementation "org.seasar.doma:doma:2.28.0"
61+
testImplementation "org.seasar.doma:doma-core:2.36.0"
6262
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.1'
6363
testImplementation 'org.junit.jupiter:junit-jupiter-params:5.6.1'
6464
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.6.1'

codegen/gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
group=org.seasar.doma
2-
version=0.0.2
2+
version=0.0.3-SNAPSHOT

codegen/src/main/java/org/seasar/doma/gradle/codegen/GlobalFactory.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ public EntityDescFactory createEntityDescFactory(
7676
boolean showTableName,
7777
boolean showDbComment,
7878
boolean useAccessor,
79-
boolean useListener) {
79+
boolean useListener,
80+
boolean useMetamodel) {
8081
return new EntityDescFactory(
8182
packageName,
8283
superclass,
@@ -88,7 +89,8 @@ public EntityDescFactory createEntityDescFactory(
8889
showTableName,
8990
showDbComment,
9091
useAccessor,
91-
useListener);
92+
useListener,
93+
useMetamodel);
9294
}
9395

9496
public EntityListenerDescFactory createEntityListenerDescFactory(

codegen/src/main/java/org/seasar/doma/gradle/codegen/desc/ClassConstants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ public enum ClassConstants {
1313

1414
Entity("org.seasar.doma", "Entity"),
1515

16+
Metamodel("org.seasar.doma", "Metamodel"),
17+
1618
Table("org.seasar.doma", "Table"),
1719

1820
Id("org.seasar.doma", "Id"),

codegen/src/main/java/org/seasar/doma/gradle/codegen/desc/EntityDesc.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ public class EntityDesc extends ClassDesc {
3838

3939
protected boolean useListener;
4040

41+
protected boolean useMetamodel;
42+
4143
protected boolean showDbComment;
4244

4345
protected String templateName;
@@ -181,6 +183,14 @@ public void setUseListener(boolean useListener) {
181183
this.useListener = useListener;
182184
}
183185

186+
public boolean isUseMetamodel() {
187+
return useMetamodel;
188+
}
189+
190+
public void setUseMetamodel(boolean useMetamodel) {
191+
this.useMetamodel = useMetamodel;
192+
}
193+
184194
public boolean isShowDbComment() {
185195
return showDbComment;
186196
}

codegen/src/main/java/org/seasar/doma/gradle/codegen/desc/EntityDescFactory.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ public class EntityDescFactory {
3030

3131
protected final boolean useListener;
3232

33+
protected final boolean useMetamodel;
34+
3335
protected final Class<?> superclass;
3436

3537
protected final EntityPropertyDescMerger entityPropertyDescMerger;
@@ -47,7 +49,8 @@ public EntityDescFactory(
4749
boolean showTableName,
4850
boolean showDbComment,
4951
boolean useAccessor,
50-
boolean useListener) {
52+
boolean useListener,
53+
boolean useMetamodel) {
5154
if (entityPropertyDescFactory == null) {
5255
throw new CodeGenNullPointerException("entityPropertyDescFactory");
5356
}
@@ -65,6 +68,7 @@ public EntityDescFactory(
6568
this.showDbComment = showDbComment;
6669
this.useAccessor = useAccessor;
6770
this.useListener = useListener;
71+
this.useMetamodel = useMetamodel;
6872
this.entityPropertyDescMerger = new EntityPropertyDescMerger(superclass);
6973
}
7074

@@ -108,6 +112,7 @@ public EntityDesc createEntityDesc(
108112
entityDesc.setShowDbComment(true);
109113
entityDesc.setUseAccessor(useAccessor);
110114
entityDesc.setUseListener(useListener);
115+
entityDesc.setUseMetamodel(useMetamodel);
111116
entityDesc.setTemplateName(Constants.ENTITY_TEMPLATE);
112117
handleShowTableName(entityDesc, tableMeta);
113118
handleEntityPropertyDesc(entityDesc, tableMeta);
@@ -145,6 +150,9 @@ protected void handleEntityPropertyDesc(EntityDesc entityDesc, TableMeta tableMe
145150

146151
protected void handleImportName(EntityDesc entityDesc, TableMeta tableMeta) {
147152
classDescSupport.addImportName(entityDesc, ClassConstants.Entity);
153+
if (entityDesc.isUseMetamodel()) {
154+
classDescSupport.addImportName(entityDesc, ClassConstants.Metamodel);
155+
}
148156
if (entityDesc.getCatalogName() != null
149157
|| entityDesc.getSchemaName() != null
150158
|| entityDesc.getTableName() != null) {

codegen/src/main/java/org/seasar/doma/gradle/codegen/extension/EntityConfig.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ public class EntityConfig {
4343

4444
protected Property<Boolean> useListener;
4545

46+
protected Property<Boolean> useMetamodel;
47+
4648
protected Property<String> originalStatesPropertyName;
4749

4850
protected RegularFileProperty entityPropertyClassNamesFile;
@@ -69,6 +71,7 @@ public EntityConfig(ObjectFactory objects) {
6971
showDbComment = objects.property(Boolean.class);
7072
useAccessor = objects.property(Boolean.class);
7173
useListener = objects.property(Boolean.class);
74+
useMetamodel = objects.property(Boolean.class);
7275
originalStatesPropertyName = objects.property(String.class);
7376
entityPropertyClassNamesFile = objects.fileProperty();
7477
prefix = objects.property(String.class);
@@ -84,6 +87,7 @@ public EntityConfig(ObjectFactory objects) {
8487
showDbComment.set(true);
8588
useAccessor.set(true);
8689
useListener.set(true);
90+
useMetamodel.set(true);
8791
}
8892

8993
@Internal
@@ -230,6 +234,15 @@ public void setUseListener(boolean useListener) {
230234
this.useListener.set(useListener);
231235
}
232236

237+
@Internal
238+
public Property<Boolean> getUseMetamodel() {
239+
return useMetamodel;
240+
}
241+
242+
public void setUseMetamodel(boolean useMetamodel) {
243+
this.useMetamodel.set(useMetamodel);
244+
}
245+
233246
@Internal
234247
public Property<String> getOriginalStatesPropertyName() {
235248
return originalStatesPropertyName;

codegen/src/main/java/org/seasar/doma/gradle/codegen/task/CodeGenDtoTask.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,8 @@ private EntityDescFactory createEntityDescFactory(
206206
entityConfig.getShowTableName().get(),
207207
entityConfig.getShowDbComment().get(),
208208
entityConfig.getUseAccessor().get(),
209-
false);
209+
entityConfig.getUseListener().get(),
210+
entityConfig.getUseMetamodel().get());
210211
}
211212

212213
protected void generateDto(EntityDesc entityDesc) {

0 commit comments

Comments
 (0)