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
19package org.apache.harmony.jpda.tests.jdwp.ObjectReference;
20
21
22import java.util.ArrayList;
23import java.util.Random;
24
25import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
26import org.apache.harmony.jpda.tests.share.SyncDebuggee;
27
28public 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
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
63    public static void main(String[] args) {
64        runDebuggee(ReferringObjectsDebuggee.class);
65    }
66
67}
68
69class ReferringObjectsReferree001 {
70
71}
72
73class ReferringObjectsReferrer001 {
74    @SuppressWarnings("unused")
75    private boolean isReferrer;
76    @SuppressWarnings("unused")
77    private ReferringObjectsReferree001 reference;
78
79    ReferringObjectsReferrer001(ReferringObjectsReferree001 reference) {
80        if(null != reference) {
81            isReferrer = true;
82        }
83        else {
84            isReferrer = false;
85        }
86        this.reference = reference;
87    }
88}
89
90
91