11
11
import javassist .CtField ;
12
12
import javassist .Modifier ;
13
13
import javassist .NotFoundException ;
14
+
14
15
import org .hibernate .bytecode .enhance .internal .tracker .CollectionTracker ;
15
16
import org .hibernate .bytecode .enhance .internal .tracker .SimpleDirtyTracker ;
16
17
import org .hibernate .bytecode .enhance .spi .EnhancementContext ;
22
23
import java .util .Collection ;
23
24
import java .util .LinkedList ;
24
25
import java .util .List ;
26
+ import java .util .Locale ;
25
27
26
28
/**
27
29
* enhancer for regular entities
@@ -54,49 +56,63 @@ public void enhance(CtClass managedCtClass) {
54
56
new PersistentAttributesEnhancer ( enhancementContext ).enhance ( managedCtClass );
55
57
}
56
58
57
- /* -- */
58
-
59
59
private void addEntityInstanceHandling (CtClass managedCtClass ) {
60
60
try {
61
- MethodWriter .write ( managedCtClass , "public Object %s() { return this; }" , EnhancerConstants .ENTITY_INSTANCE_GETTER_NAME );
61
+ MethodWriter .write (
62
+ managedCtClass ,
63
+ "public Object %s() { return this; }" ,
64
+ EnhancerConstants .ENTITY_INSTANCE_GETTER_NAME
65
+ );
62
66
}
63
67
catch (CannotCompileException cce ) {
64
- final String msg = String .format ( "Could not enhance entity class [%s] to add EntityEntry getter" , managedCtClass .getName () );
65
- throw new EnhancementException (msg , cce );
68
+ throw new EnhancementException (
69
+ String .format (
70
+ Locale .ROOT ,
71
+ "Could not enhance entity class [%s] to add EntityEntry getter" ,
72
+ managedCtClass .getName ()
73
+ ),
74
+ cce
75
+ );
66
76
}
67
77
}
68
78
69
- /* -- */
70
-
71
79
private void addEntityEntryHandling (CtClass managedCtClass ) {
72
- FieldWriter .addFieldWithGetterAndSetter ( managedCtClass , entityEntryCtClass ,
80
+ FieldWriter .addFieldWithGetterAndSetter (
81
+ managedCtClass , entityEntryCtClass ,
73
82
EnhancerConstants .ENTITY_ENTRY_FIELD_NAME ,
74
83
EnhancerConstants .ENTITY_ENTRY_GETTER_NAME ,
75
- EnhancerConstants .ENTITY_ENTRY_SETTER_NAME );
84
+ EnhancerConstants .ENTITY_ENTRY_SETTER_NAME
85
+ );
76
86
}
77
87
78
88
private void addLinkedPreviousHandling (CtClass managedCtClass ) {
79
- FieldWriter .addFieldWithGetterAndSetter ( managedCtClass , managedEntityCtClass ,
89
+ FieldWriter .addFieldWithGetterAndSetter (
90
+ managedCtClass , managedEntityCtClass ,
80
91
EnhancerConstants .PREVIOUS_FIELD_NAME ,
81
92
EnhancerConstants .PREVIOUS_GETTER_NAME ,
82
- EnhancerConstants .PREVIOUS_SETTER_NAME );
93
+ EnhancerConstants .PREVIOUS_SETTER_NAME
94
+ );
83
95
}
84
96
85
97
private void addLinkedNextHandling (CtClass managedCtClass ) {
86
- FieldWriter .addFieldWithGetterAndSetter ( managedCtClass , managedEntityCtClass ,
98
+ FieldWriter .addFieldWithGetterAndSetter (
99
+ managedCtClass , managedEntityCtClass ,
87
100
EnhancerConstants .NEXT_FIELD_NAME ,
88
101
EnhancerConstants .NEXT_GETTER_NAME ,
89
- EnhancerConstants .NEXT_SETTER_NAME );
102
+ EnhancerConstants .NEXT_SETTER_NAME
103
+ );
90
104
}
91
105
92
- /* --- */
93
-
94
106
private void addInLineDirtyHandling (CtClass managedCtClass ) {
95
107
try {
96
108
managedCtClass .addInterface ( classPool .get ( SelfDirtinessTracker .class .getName () ) );
97
109
98
110
FieldWriter .addField ( managedCtClass , classPool .get ( TRACKER_IMPL ), EnhancerConstants .TRACKER_FIELD_NAME );
99
- FieldWriter .addField ( managedCtClass , classPool .get ( CollectionTracker .class .getName () ), EnhancerConstants .TRACKER_COLLECTION_NAME );
111
+ FieldWriter .addField (
112
+ managedCtClass ,
113
+ classPool .get ( CollectionTracker .class .getName () ),
114
+ EnhancerConstants .TRACKER_COLLECTION_NAME
115
+ );
100
116
101
117
createDirtyTrackerMethods ( managedCtClass );
102
118
}
@@ -107,24 +123,23 @@ private void addInLineDirtyHandling(CtClass managedCtClass) {
107
123
108
124
private void createDirtyTrackerMethods (CtClass managedCtClass ) {
109
125
try {
110
- MethodWriter .write ( managedCtClass , "" +
126
+ MethodWriter .write (
127
+ managedCtClass , "" +
111
128
"public void %1$s(String name) {%n" +
112
129
" if (%2$s == null) { %2$s = new %3$s(); }%n" +
113
130
" %2$s.add(name);%n" +
114
131
"}" ,
115
132
EnhancerConstants .TRACKER_CHANGER_NAME ,
116
133
EnhancerConstants .TRACKER_FIELD_NAME ,
117
- TRACKER_IMPL );
118
-
119
- /* --- */
134
+ TRACKER_IMPL
135
+ );
120
136
121
137
createCollectionDirtyCheckMethod ( managedCtClass );
122
138
createCollectionDirtyCheckGetFieldsMethod ( managedCtClass );
123
139
createClearDirtyCollectionMethod ( managedCtClass );
124
140
125
- /* --- */
126
-
127
- MethodWriter .write ( managedCtClass , "" +
141
+ MethodWriter .write (
142
+ managedCtClass , "" +
128
143
"public java.util.Set %1$s() {%n" +
129
144
" if (%2$s == null) { %2$s = new %4$s(); }%n" +
130
145
" %3$s(%2$s);%n" +
@@ -133,32 +148,37 @@ private void createDirtyTrackerMethods(CtClass managedCtClass) {
133
148
EnhancerConstants .TRACKER_GET_NAME ,
134
149
EnhancerConstants .TRACKER_FIELD_NAME ,
135
150
EnhancerConstants .TRACKER_COLLECTION_CHANGED_FIELD_NAME ,
136
- TRACKER_IMPL );
151
+ TRACKER_IMPL
152
+ );
137
153
138
- MethodWriter .write ( managedCtClass , "" +
154
+ MethodWriter .write (
155
+ managedCtClass ,
156
+ "" +
139
157
"public boolean %1$s() {%n" +
140
158
" return (%2$s != null && !%2$s.isEmpty()) || %3$s();%n" +
141
159
"}" ,
142
160
EnhancerConstants .TRACKER_HAS_CHANGED_NAME ,
143
161
EnhancerConstants .TRACKER_FIELD_NAME ,
144
- EnhancerConstants .TRACKER_COLLECTION_CHANGED_NAME );
162
+ EnhancerConstants .TRACKER_COLLECTION_CHANGED_NAME
163
+ );
145
164
146
- MethodWriter .write ( managedCtClass , "" +
165
+ MethodWriter .write (
166
+ managedCtClass ,
167
+ "" +
147
168
"public void %1$s() {%n" +
148
169
" if (%2$s != null) { %2$s.clear(); }%n" +
149
170
" %3$s();%n" +
150
171
"}" ,
151
172
EnhancerConstants .TRACKER_CLEAR_NAME ,
152
173
EnhancerConstants .TRACKER_FIELD_NAME ,
153
- EnhancerConstants .TRACKER_COLLECTION_CLEAR_NAME );
174
+ EnhancerConstants .TRACKER_COLLECTION_CLEAR_NAME
175
+ );
154
176
}
155
177
catch (CannotCompileException cce ) {
156
178
cce .printStackTrace ();
157
179
}
158
180
}
159
181
160
- /* -- */
161
-
162
182
private List <CtField > collectCollectionFields (CtClass managedCtClass ) {
163
183
final List <CtField > collectionList = new LinkedList <CtField >();
164
184
try {
@@ -186,21 +206,30 @@ private void createCollectionDirtyCheckMethod(CtClass managedCtClass) {
186
206
try {
187
207
final StringBuilder body = new StringBuilder ();
188
208
189
- body .append ( String .format ( "" +
190
- "private boolean %1$s() {%n" +
191
- " if (%2$s() == null || %3$s == null) { return false; }%n" ,
192
- EnhancerConstants .TRACKER_COLLECTION_CHANGED_NAME ,
193
- EnhancerConstants .INTERCEPTOR_GETTER_NAME ,
194
- EnhancerConstants .TRACKER_COLLECTION_NAME ) );
209
+ body .append (
210
+ String .format (
211
+ "" +
212
+ "private boolean %1$s() {%n" +
213
+ " if (%2$s == null) {%n" +
214
+ " return false;%n" +
215
+ " }%n" ,
216
+ EnhancerConstants .TRACKER_COLLECTION_CHANGED_NAME ,
217
+ EnhancerConstants .TRACKER_COLLECTION_NAME
218
+ )
219
+ );
195
220
196
221
for ( CtField ctField : collectCollectionFields ( managedCtClass ) ) {
197
- if ( !enhancementContext .isMappedCollection ( ctField )) {
198
- body .append ( String .format ( "" +
199
- " // collection field [%1$s]%n" +
200
- " if (%1$s == null && %2$s.getSize(\" %1$s\" ) != -1) { return true; }%n" +
201
- " if (%1$s != null && %2$s.getSize(\" %1$s\" ) != %1$s.size()) { return true; }%n" ,
202
- ctField .getName (),
203
- EnhancerConstants .TRACKER_COLLECTION_NAME ) );
222
+ if ( !enhancementContext .isMappedCollection ( ctField ) ) {
223
+ body .append (
224
+ String .format (
225
+ "" +
226
+ " // collection field [%1$s]%n" +
227
+ " if (%1$s == null && %2$s.getSize(\" %1$s\" ) != -1) { return true; }%n" +
228
+ " if (%1$s != null && %2$s.getSize(\" %1$s\" ) != %1$s.size()) { return true; }%n" ,
229
+ ctField .getName (),
230
+ EnhancerConstants .TRACKER_COLLECTION_NAME
231
+ )
232
+ );
204
233
}
205
234
}
206
235
body .append ( " return false;%n}" );
@@ -216,21 +245,29 @@ private void createCollectionDirtyCheckGetFieldsMethod(CtClass managedCtClass) {
216
245
try {
217
246
final StringBuilder body = new StringBuilder ();
218
247
219
- body .append ( String .format ( "" +
220
- "private void %1$s(%3$s tracker) {%n" +
221
- " if (%2$s == null) { return; }%n" ,
222
- EnhancerConstants .TRACKER_COLLECTION_CHANGED_FIELD_NAME ,
223
- EnhancerConstants .TRACKER_COLLECTION_NAME ,
224
- TRACKER_IMPL ) );
248
+ body .append (
249
+ String .format (
250
+ "" +
251
+ "private void %1$s(%3$s tracker) {%n" +
252
+ " if (%2$s == null) { return; }%n" ,
253
+ EnhancerConstants .TRACKER_COLLECTION_CHANGED_FIELD_NAME ,
254
+ EnhancerConstants .TRACKER_COLLECTION_NAME ,
255
+ TRACKER_IMPL
256
+ )
257
+ );
225
258
226
259
for ( CtField ctField : collectCollectionFields ( managedCtClass ) ) {
227
- if ( !enhancementContext .isMappedCollection ( ctField )) {
228
- body .append ( String .format ( "" +
229
- " // Collection field [%1$s]%n" +
230
- " if (%1$s == null && %2$s.getSize(\" %1$s\" ) != -1) { tracker.add(\" %1$s\" ); }%n" +
231
- " if (%1$s != null && %2$s.getSize(\" %1$s\" ) != %1$s.size()) { tracker.add(\" %1$s\" ); }%n" ,
232
- ctField .getName (),
233
- EnhancerConstants .TRACKER_COLLECTION_NAME ) );
260
+ if ( !enhancementContext .isMappedCollection ( ctField ) ) {
261
+ body .append (
262
+ String .format (
263
+ "" +
264
+ " // Collection field [%1$s]%n" +
265
+ " if (%1$s == null && %2$s.getSize(\" %1$s\" ) != -1) { tracker.add(\" %1$s\" ); }%n" +
266
+ " if (%1$s != null && %2$s.getSize(\" %1$s\" ) != %1$s.size()) { tracker.add(\" %1$s\" ); }%n" ,
267
+ ctField .getName (),
268
+ EnhancerConstants .TRACKER_COLLECTION_NAME
269
+ )
270
+ );
234
271
}
235
272
}
236
273
body .append ( "}" );
@@ -246,21 +283,29 @@ private void createClearDirtyCollectionMethod(CtClass managedCtClass) throws Can
246
283
try {
247
284
final StringBuilder body = new StringBuilder ();
248
285
249
- body .append ( String .format ( "" +
250
- "private void %1$s() {%n" +
251
- " if (%2$s == null) { %2$s = new %3$s(); }%n" ,
252
- EnhancerConstants .TRACKER_COLLECTION_CLEAR_NAME ,
253
- EnhancerConstants .TRACKER_COLLECTION_NAME ,
254
- CollectionTracker .class .getName ()) );
286
+ body .append (
287
+ String .format (
288
+ "" +
289
+ "private void %1$s() {%n" +
290
+ " if (%2$s == null) { %2$s = new %3$s(); }%n" ,
291
+ EnhancerConstants .TRACKER_COLLECTION_CLEAR_NAME ,
292
+ EnhancerConstants .TRACKER_COLLECTION_NAME ,
293
+ CollectionTracker .class .getName ()
294
+ )
295
+ );
255
296
256
297
for ( CtField ctField : collectCollectionFields ( managedCtClass ) ) {
257
298
if ( !enhancementContext .isMappedCollection ( ctField ) ) {
258
- body .append ( String .format ( "" +
259
- " // Collection field [%1$s]%n" +
260
- " if (%1$s == null) { %2$s.add(\" %1$s\" , -1); }%n" +
261
- " else { %2$s.add(\" %1$s\" , %1$s.size()); }%n" ,
262
- ctField .getName (),
263
- EnhancerConstants .TRACKER_COLLECTION_NAME ) );
299
+ body .append (
300
+ String .format (
301
+ "" +
302
+ " // Collection field [%1$s]%n" +
303
+ " if (%1$s == null) { %2$s.add(\" %1$s\" , -1); }%n" +
304
+ " else { %2$s.add(\" %1$s\" , %1$s.size()); }%n" ,
305
+ ctField .getName (),
306
+ EnhancerConstants .TRACKER_COLLECTION_NAME
307
+ )
308
+ );
264
309
}
265
310
}
266
311
body .append ( "}" );
0 commit comments