Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/java/beans/XMLEncoder/Test6921644.java
38812 views
1
/*
2
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
/*
25
* @test
26
* @bug 6921644
27
* @summary Tests references to cached integer
28
* @author Sergey Malenkov
29
*/
30
31
import java.beans.ConstructorProperties;
32
import java.util.ArrayList;
33
import java.util.List;
34
35
public final class Test6921644 extends AbstractTest {
36
public static void main(String[] args) {
37
new Test6921644().test(true);
38
}
39
40
protected Object getObject() {
41
Owner<Author> o = new Owner<Author>(100); // it works if ID >= 128
42
43
Category c = new Category(o);
44
45
Document d1 = new Document(o);
46
Document d2 = new Document(o);
47
Document d3 = new Document(o);
48
49
Author a1 = new Author(o);
50
Author a2 = new Author(o);
51
Author a3 = new Author(o);
52
53
o.getList().add(a1);
54
o.getList().add(a2);
55
o.getList().add(a3);
56
57
a3.setRef(o.getId());
58
59
d2.setCategory(c);
60
d3.setCategory(c);
61
62
a1.addDocument(d1);
63
a1.addDocument(d2);
64
a3.addDocument(d3);
65
66
c.addDocument(d2);
67
c.addDocument(d3);
68
69
return o;
70
}
71
72
public static class Owner<T> {
73
private int id;
74
private List<T> list = new ArrayList<T>();
75
76
@ConstructorProperties("id")
77
public Owner(int id) {
78
this.id = id;
79
}
80
81
public int getId() {
82
return this.id;
83
}
84
85
public List<T> getList() {
86
return this.list;
87
}
88
89
public void setList(List<T> list) {
90
this.list = list;
91
}
92
}
93
94
public static class Author {
95
private int id;
96
private int ref;
97
private Owner owner;
98
private List<Document> list = new ArrayList<Document>();
99
100
@ConstructorProperties("owner")
101
public Author(Owner<Author> owner) {
102
this.owner = owner;
103
this.id = owner.getId();
104
}
105
106
public Owner getOwner() {
107
return this.owner;
108
}
109
110
public Integer getId() {
111
return this.id;
112
}
113
114
public void setId(Integer id) {
115
this.id = id;
116
}
117
118
public Integer getRef() {
119
return this.ref;
120
}
121
122
public void setRef(Integer ref) {
123
this.ref = ref;
124
}
125
126
public List<Document> getList() {
127
return this.list;
128
}
129
130
public void setList(List<Document> list) {
131
this.list = list;
132
}
133
134
public void addDocument(Document document) {
135
this.list.add(document);
136
document.setAuthor(this);
137
}
138
}
139
140
public static class Category {
141
private Owner owner;
142
private List<Document> list = new ArrayList<Document>();
143
144
@ConstructorProperties("owner")
145
public Category(Owner owner) {
146
this.owner = owner;
147
}
148
149
public Owner getOwner() {
150
return this.owner;
151
}
152
153
public List<Document> getList() {
154
return this.list;
155
}
156
157
public void setList(List<Document> list) {
158
this.list = list;
159
}
160
161
public void addDocument(Document document) {
162
this.list.add(document);
163
document.setCategory(this);
164
}
165
}
166
167
public static class Document {
168
private Owner owner;
169
private Author author;
170
private Category category;
171
172
@ConstructorProperties("owner")
173
public Document(Owner owner) {
174
this.owner = owner;
175
}
176
177
public Owner getOwner() {
178
return this.owner;
179
}
180
181
public Author getAuthor() {
182
return this.author;
183
}
184
185
public void setAuthor(Author author) {
186
this.author = author;
187
}
188
189
public Category getCategory() {
190
return this.category;
191
}
192
193
public void setCategory(Category category) {
194
this.category = category;
195
}
196
}
197
}
198
199