Skip to content

Commit 2553418

Browse files
authored
Merge pull request #223 from ebean-orm/feature/LinkedList
Support LinkedList and HashMap for initialisation of OneToMany,ManyToMany,DbArray
2 parents 75a2f7f + a6bf894 commit 2553418

File tree

3 files changed

+32
-2
lines changed

3 files changed

+32
-2
lines changed

ebean-agent/src/main/java/io/ebean/enhance/entity/ConstructorDeferredCode.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -297,10 +297,11 @@ private boolean stateConsumeDeferred() {
297297
*/
298298
private boolean isConsumeManyType() {
299299
return "java/util/ArrayList".equals(stateInitialiseType)
300+
|| "java/util/LinkedList".equals(stateInitialiseType)
300301
|| "java/util/LinkedHashSet".equals(stateInitialiseType)
301302
|| "java/util/HashSet".equals(stateInitialiseType)
302-
|| "java/util/LinkedHashMap".equals(stateInitialiseType);
303-
//|| "java/util/HashMap".equals(stateInitialiseType));
303+
|| "java/util/LinkedHashMap".equals(stateInitialiseType)
304+
|| "java/util/HashMap".equals(stateInitialiseType);
304305
}
305306

306307
private static class ALoad implements DeferredCode {

test/src/test/java/test/enhancement/WithInitialisedCollections2Test.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,22 @@ void oneToMany_initialisationCode_expect_removed() {
1717

1818
assertThat(bean.listOf()).isInstanceOf(BeanList.class);
1919
assertThat(bean.listCollEmpty()).isInstanceOf(BeanList.class);
20+
assertThat(bean.listCollLinked()).isInstanceOf(BeanList.class);
2021
assertThat(bean.setOf()).isInstanceOf(BeanSet.class);
2122
assertThat(bean.setCollEmpty()).isInstanceOf(BeanSet.class);
2223
assertThat(bean.mapOf()).isInstanceOf(BeanMap.class);
2324
assertThat(bean.mapCollEmpty()).isInstanceOf(BeanMap.class);
25+
assertThat(bean.mapCollHash()).isInstanceOf(BeanMap.class);
2426

2527

2628
assertThat(bean.transientList()).isNotInstanceOf(BeanList.class);
2729
assertThat(bean.transientList2()).isNotInstanceOf(BeanList.class);
30+
assertThat(bean.transientList3()).isNotInstanceOf(BeanList.class);
2831
assertThat(bean.transientSet()).isNotInstanceOf(BeanSet.class);
2932
assertThat(bean.transientSet2()).isNotInstanceOf(BeanSet.class);
3033
assertThat(bean.transientMap()).isNotInstanceOf(BeanMap.class);
3134
assertThat(bean.transientMap2()).isNotInstanceOf(BeanMap.class);
35+
assertThat(bean.transientMap3()).isNotInstanceOf(BeanMap.class);
3236

3337

3438
// these methods work because the underlying collection is a BeanCollection

test/src/test/java/test/model/WithInitialisedCollections2.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ public class WithInitialisedCollections2 extends BaseEntity {
2525
final Set<Contact> setCollEmpty = Collections.emptySet();
2626
@OneToMany(cascade = CascadeType.PERSIST)
2727
Map<Long,Contact> mapCollEmpty = Collections.emptyMap();
28+
@OneToMany(cascade = CascadeType.PERSIST)
29+
Map<Long,Contact> mapCollHash = new HashMap<>();
30+
31+
@OneToMany(cascade = CascadeType.PERSIST)
32+
final List<Contact> listCollLinked = new LinkedList<>();
2833

2934
// @OneToMany final List<Contact> listCollNotValidInitialisation0 = new io.ebean.common.BeanList<>();
3035
// @OneToMany final List<Contact> listCollNotValidInitialisation1 = Collections.EMPTY_LIST;
@@ -38,11 +43,15 @@ public class WithInitialisedCollections2 extends BaseEntity {
3843
@Transient
3944
Map<String,Contact> transientMap = Map.of();
4045
@Transient
46+
List<String> transientList3 = new LinkedList<>();
47+
@Transient
4148
List<String> transientList2 = Collections.emptyList();
4249
@Transient
4350
Set<String> transientSet2 = Collections.emptySet();
4451
@Transient
4552
Map<String,Contact> transientMap2 = Collections.emptyMap();
53+
@Transient
54+
Map<String,Contact> transientMap3 = new HashMap<>();
4655

4756
public String name() {
4857
return name;
@@ -100,4 +109,20 @@ public Map<String, Contact> transientMap() {
100109
public Map<String, Contact> transientMap2() {
101110
return transientMap2;
102111
}
112+
113+
public List<Contact> listCollLinked() {
114+
return listCollLinked;
115+
}
116+
117+
public List<String> transientList3() {
118+
return transientList3;
119+
}
120+
121+
public Map<Long, Contact> mapCollHash() {
122+
return mapCollHash;
123+
}
124+
125+
public Map<String, Contact> transientMap3() {
126+
return transientMap3;
127+
}
103128
}

0 commit comments

Comments
 (0)