瀏覽代碼

MultiIncrementalSupport: manages state for multiple projects.

tags/PRE_ANDY
aclement 19 年之前
父節點
當前提交
4b602c7b6c

+ 72
- 0
org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/IncrementalStateManager.java 查看文件

@@ -0,0 +1,72 @@
/* *******************************************************************
* Copyright (c) 2005 Contributors.
* 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://eclipse.org/legal/epl-v10.html
*
* Contributors:
* Andy Clement initial implementation
* ******************************************************************/
package org.aspectj.ajdt.internal.core.builder;

import java.io.File;
import java.util.Collection;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Set;


/**
* Central point for all things incremental...
* - keeps track of the state recorded for each different config file
* - allows limited interaction with these states
*
* - records dependency/change info for particular classpaths
* > this will become what JDT keeps in its 'State' object when its finished
*/
public class IncrementalStateManager {

// FIXME asc needs an API through Ajde for trashing its contents
// FIXME asc needs some memory mgmt (softrefs?) to recover memory
// SECRETAPI will consume more memory, so turn on at your own risk ;) Set to 'true' when memory usage is understood
public static boolean recordIncrementalStates = false;
private static Hashtable incrementalStates = new Hashtable();
public static void recordSuccessfulBuild(String buildConfig, AjState state) {
if (!recordIncrementalStates) return;
incrementalStates.put(buildConfig,state);
}
public static boolean removeIncrementalStateInformationFor(String buildConfig) {
return incrementalStates.remove(buildConfig)!=null;
}
public static void clearIncrementalStates() {
incrementalStates.clear();
}
public static Set getConfigFilesKnown() {
return incrementalStates.keySet();
}

public static AjState retrieveStateFor(String configFile) {
return (AjState)incrementalStates.get(configFile);
}
// now, managing changes to entries on a classpath
public static AjState findStateManagingOutputLocation(File location) {
Collection allStates = incrementalStates.values();
for (Iterator iter = allStates.iterator(); iter.hasNext();) {
AjState element = (AjState) iter.next();
File outputDir = element.buildConfig.getOutputDir();
if (outputDir.equals(location)) return element;
}
return null;
}
// FIXME asc needs a persistence mechanism for storing/loading all state info
// FIXME asc needs to understand two config files might point at the same output dir... what to do about this?
}

Loading…
取消
儲存