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