1 /*******************************************************************************
2  * Copyright (c) 2000, 2018 IBM Corporation and others.
3  *
4  * This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License 2.0
6  * which accompanies this distribution, and is available at
7  * https://www.eclipse.org/legal/epl-2.0/
8  *
9  * SPDX-License-Identifier: EPL-2.0
10  *
11  * Contributors:
12  *     IBM Corporation - initial API and implementation
13  *******************************************************************************/
14 package org.eclipse.jdt.core.tests.builder;
15 
16 import java.util.ArrayList;
17 import org.eclipse.jdt.internal.compiler.ClassFile;
18 import org.eclipse.jdt.internal.compiler.CompilationResult;
19 import org.eclipse.jdt.internal.compiler.IDebugRequestor;
20 import org.eclipse.jdt.internal.core.util.Util;
21 
22 public class EfficiencyCompilerRequestor implements IDebugRequestor {
23 	private boolean isActive = false;
24 
25 	private ArrayList<String> compiledClasses = new ArrayList<>();
26 	private ArrayList<String> compiledFiles = new ArrayList<>();
27 	private ArrayList<ClassFile> classes = new ArrayList<>();
28 
29 
acceptDebugResult(CompilationResult result)30 	public void acceptDebugResult(CompilationResult result){
31 		this.compiledFiles.add(new String(result.fileName));
32 		ClassFile[] classFiles = result.getClassFiles();
33 		Util.sort(classFiles, new Util.Comparer() {
34 			public int compare(Object a, Object b) {
35 				String aName = new String(((ClassFile)a).fileName());
36 				String bName = new String(((ClassFile)b).fileName());
37 				return aName.compareTo(bName);
38 			}
39 		});
40 		for (int i = 0; i < classFiles.length; i++) {
41 			ClassFile c = classFiles[i];
42 			this.classes.add(c);
43 			String className = new String(c.fileName());
44 			this.compiledClasses.add(className.replace('/', '.'));
45 		}
46 	}
47 
getCompiledClasses()48 	String[] getCompiledClasses(){
49 		return this.compiledClasses.toArray(new String[this.compiledClasses.size()]);
50 	}
51 
getCompiledFiles()52 	String[] getCompiledFiles(){
53 		return this.compiledFiles.toArray(new String[this.compiledFiles.size()]);
54 	}
getClassFiles()55 	public ClassFile[] getClassFiles() {
56 		return this.classes.toArray(new ClassFile[this.classes.size()]);
57 	}
58 
clearResult()59 	public void clearResult(){
60 		this.compiledClasses.clear();
61 		this.compiledFiles.clear();
62 		this.classes.clear();
63 	}
64 
reset()65 	public void reset() {
66 	    // do nothing by default
67 	}
68 
activate()69 	public void activate() {
70 		this.isActive = true;
71 	}
72 
deactivate()73 	public void deactivate() {
74 		this.isActive = false;
75 	}
76 
isActive()77 	public boolean isActive() {
78 		return this.isActive;
79 	}
80 }
81