1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements.  See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License.  You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *  Unless required by applicable law or agreed to in writing, software
12  *  distributed under the License is distributed on an "AS IS" BASIS,
13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *
15  *  See the License for the specific language governing permissions and
16  *  limitations under the License.
17  */
18 
19 package org.apache.harmony.jpda.tests.jdwp.ObjectReference;
20 
21 
22 import java.util.ArrayList;
23 import java.util.Random;
24 
25 import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
26 import org.apache.harmony.jpda.tests.share.SyncDebuggee;
27 
28 public class ReferringObjectsDebuggee extends SyncDebuggee {
29 
30     static final int maxNum = 17;
31 
32     static int referringObjNum;
33 
34     static int nonreferringObjNum;
35 
36     static {
37         referringObjNum = new Random().nextInt(maxNum) + 2;
38         nonreferringObjNum = new Random().nextInt(maxNum) + 2;
39     }
40 
41     @Override
run()42     public void run() {
43         ReferringObjectsReferree001 referree = new ReferringObjectsReferree001();
44         //Referrer objects which contain reference of referree object
45         ArrayList<ReferringObjectsReferrer001> referringObjs = new ArrayList<ReferringObjectsReferrer001>();
46 
47         for(int i = 0; i < referringObjNum; i++) {
48             referringObjs.add(new ReferringObjectsReferrer001(referree));
49         }
50 
51         //Referrer objects which contain reference which is null
52         ArrayList<ReferringObjectsReferrer001> nonreferringObjs = new ArrayList<ReferringObjectsReferrer001>();
53 
54         for(int i = 0; i < nonreferringObjNum; i++) {
55             nonreferringObjs.add(new ReferringObjectsReferrer001(null));
56         }
57 
58         synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
59         logWriter.println("--> Debuggee: ReferringObjectsDebuggee...");
60         synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
61     }
62 
main(String[] args)63     public static void main(String[] args) {
64         runDebuggee(ReferringObjectsDebuggee.class);
65     }
66 
67 }
68 
69 class ReferringObjectsReferree001 {
70 
71 }
72 
73 class ReferringObjectsReferrer001 {
74     private boolean isReferrer;
75     private ReferringObjectsReferree001 reference;
76 
ReferringObjectsReferrer001(ReferringObjectsReferree001 reference)77     ReferringObjectsReferrer001(ReferringObjectsReferree001 reference) {
78         if(null != reference) {
79             isReferrer = true;
80         }
81         else {
82             isReferrer = false;
83         }
84         this.reference = reference;
85     }
86 }
87 
88 
89