aboutsummaryrefslogtreecommitdiffstats
path: root/testing-util/src/test/java/org/aspectj/testingutil/TestCompareClassFile.java
blob: fb3e4dbe007dfff3bd8443cf396f127076904bbf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/* *******************************************************************
 * Copyright (c) 1999-2001 Xerox Corporation,
 *               2002 Palo Alto Research Center, Incorporated (PARC).
 * All rights reserved.
 * This program and the accompanying materials are made available
 * under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Xerox/PARC     initial implementation
 * ******************************************************************/

package org.aspectj.testingutil;

import java.lang.reflect.Array;
import java.util.LinkedList;
import java.util.StringTokenizer;

import org.aspectj.util.LangUtil;

/**
 * This is source for a sample .class file.
 * It is compiled and the corresponding .class files are
 * checked in under the testdata directory.
 * It has no other purpose.
 */
public class TestCompareClassFile implements Runnable {
    public static final String STATIC_CONST = "STATIC_CONST";
	public static void main(String[] args) {
        // tc static references
        long l = Math.abs(System.currentTimeMillis());
	   String s = STATIC_CONST + " is constant";
    }
    public static void runStatic() {
    }
    private static void privateRunStatic() {
    }
    static void defaultRunStatic() {
    }
    protected static void protectedRunStatic() {
    }

    private long privateLong;
    private final Object privateFinalObject;

    private TestCompareClassFile() {
        super();
        privateLong = System.currentTimeMillis();
        // method-local inner class
        privateFinalObject = new Runnable() { public void run(){}};
    }

    /** implement Runnable */
    public void run() {
    }
    private void privateRun() {
    }
    void defaultRun() {
    }
    protected void protectedRun() {
    }

    // ------- misc stolen utility code
    // Collections Util
    /*
    public static List getListInMap(Map<Object,List> map, Object key) {
        List list = map.get(key);
        if (list == null) {
            list = new ArrayList();
            map.put(key, list);
        }
        return list;
    }

    public static SortedSet getSortedSetInMap(Map<Object,SortedSet> map, Object key) {
        SortedSet list = map.get(key);
        if (list == null) {
            list = new TreeSet();
            map.put(key, list);
        }
        return list;
    }
    */

    // LangUtil
    /**
     * Make a copy of the array.
     * @return an array with the same component type as source
     * containing same elements, even if null.
     * @throws IllegalArgumentException if source is null
     */
    public static final Object[] copy(Object[] source) {
        final Class c = source.getClass().getComponentType();
        Object[] result = (Object[]) Array.newInstance(c, source.length);
        System.arraycopy(source, 0, result, 0, result.length);
        return result;
    }
    /**
     * Trim ending lines from a StringBuffer,
     * clipping to maxLines and further removing any number of
     * trailing lines accepted by checker.
     * @param stack StringBuffer with lines to elide
     * @param maxLines int for maximum number of resulting lines
     */
    static void elideEndingLines(StringBuffer stack, int maxLines) {
        if ((null == stack) || (0 == stack.length())) {
            return;
        }
        final LinkedList lines = new LinkedList();
        StringTokenizer st = new StringTokenizer(stack.toString(),"\n\r");
        while (st.hasMoreTokens() && (0 < --maxLines)) {
            lines.add(st.nextToken());
        }
        st = null;

        String line;
        int elided = 0;
        while (!lines.isEmpty()) {
            line = (String) lines.getLast();
            if (null == line) {
                break;
            } else {
                elided++;
                lines.removeLast();
            }
        }
        if ((elided > 0) || (maxLines < 1)) {
            final int EOL_LEN = LangUtil.EOL.length();
            int totalLength = 0;
            while (!lines.isEmpty()) {
                totalLength += EOL_LEN + ((String) lines.getFirst()).length();
                lines.removeFirst();
            }
            if (stack.length() > totalLength) {
                stack.setLength(totalLength);
                if (elided > 0) {
                    stack.append("    (... " + elided + " lines...)");
                }
            }
        }
    }

}