/******************************************************************** * Copyright (c) 2007 Contributors. All rights reserved. * This program and the accompanying materials are made available * under the terms of the Eclipse Public License v 2.0 * which accompanies this distribution and is available at * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt * * Contributors: IBM Corporation - initial API and implementation * Helen Hawkins - initial version *******************************************************************/ package org.aspectj.ajde.core; import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; /** * Test implementation of IOutputLocationManager. By default returns the same location for both resources and classes, however, * setter methods enable the user to specify different location for these. Note that the user is unable to specify different output * location for different class files. */ public class TestOutputLocationManager implements IOutputLocationManager { private String testProjectOutputPath; private File classOutputLoc; private File resourceOutputLoc; private List allOutputLocations; private Map inpathMap = Collections.emptyMap(); public TestOutputLocationManager(String testProjectPath) { this.testProjectOutputPath = testProjectPath + File.separator + "bin"; } public TestOutputLocationManager(String string, Map inpathMap) { this(string); this.inpathMap = inpathMap; } @Override public File getOutputLocationForClass(File compilationUnit) { initLocations(); return classOutputLoc; } @Override public File getOutputLocationForResource(File resource) { initLocations(); return resourceOutputLoc; } @Override public Map getInpathMap() { return inpathMap; } // -------------- setter methods useful for testing ------------- public void setOutputLocForClass(File f) { classOutputLoc = f; } public void setOutputLocForResource(File f) { resourceOutputLoc = f; } @Override public List getAllOutputLocations() { if (allOutputLocations == null) { allOutputLocations = new ArrayList<>(); initLocations(); allOutputLocations.add(classOutputLoc); if (!classOutputLoc.equals(resourceOutputLoc)) { allOutputLocations.add(resourceOutputLoc); } } return allOutputLocations; } @Override public File getDefaultOutputLocation() { initLocations(); return classOutputLoc; } private void initLocations() { if (classOutputLoc == null) { classOutputLoc = new File(testProjectOutputPath); } if (resourceOutputLoc == null) { resourceOutputLoc = new File(testProjectOutputPath); } } @Override public String getSourceFolderForFile(File sourceFile) { return null; } @Override public void reportFileWrite(String outputfile, int filetype) { } @Override public void reportFileRemove(String outputfile, int filetype) { } @Override public int discoverChangesSince(File dir, long buildtime) { // TODO Auto-generated method stub return 0; } }