aboutsummaryrefslogtreecommitdiffstats
path: root/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide
diff options
context:
space:
mode:
authorXavier Ducrohet <xav@android.com>2012-11-05 10:55:13 -0800
committerXavier Ducrohet <xav@android.com>2012-11-29 17:09:46 -0800
commitfbf28acf3eb01515e94444de8a916a3c2d779211 (patch)
treefa45276338a2d57398e22c19f512f4959442455f /eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide
parent1456483b66473b16ecc8b2dcfb05a450decf9456 (diff)
downloadsdk-fbf28acf3eb01515e94444de8a916a3c2d779211.zip
sdk-fbf28acf3eb01515e94444de8a916a3c2d779211.tar.gz
sdk-fbf28acf3eb01515e94444de8a916a3c2d779211.tar.bz2
Add filterscript suppport.
Change-Id: Iaefb640f35bdad1dc5d4be8565c2cafdc02e8324
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AdtConstants.java3
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/AidlProcessor.java7
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/RenderScriptProcessor.java69
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/SourceChangeHandler.java2
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/SourceProcessor.java6
5 files changed, 61 insertions, 26 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AdtConstants.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AdtConstants.java
index cbbb1b7..f83bd3c 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AdtConstants.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AdtConstants.java
@@ -20,6 +20,7 @@ import static com.android.SdkConstants.DOT_AIDL;
import static com.android.SdkConstants.DOT_DEP;
import static com.android.SdkConstants.DOT_JAVA;
import static com.android.SdkConstants.DOT_RS;
+import static com.android.SdkConstants.DOT_FS;
import com.android.SdkConstants;
import com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder;
@@ -118,6 +119,8 @@ public class AdtConstants {
public final static String RE_AIDL_EXT = "\\" + DOT_AIDL + "$"; //$NON-NLS-1$ //$NON-NLS-2$
/** Regexp for rs extension, i.e. "\.rs$" */
public final static String RE_RS_EXT = "\\" + DOT_RS + "$"; //$NON-NLS-1$ //$NON-NLS-2$
+ /** Regexp for rs extension, i.e. "\.fs$" */
+ public final static String RE_FS_EXT = "\\" + DOT_FS + "$"; //$NON-NLS-1$ //$NON-NLS-2$
/** Regexp for .d extension, i.e. "\.d$" */
public final static String RE_DEP_EXT = "\\" + DOT_DEP + "$"; //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/AidlProcessor.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/AidlProcessor.java
index 52e887a..e399b69 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/AidlProcessor.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/AidlProcessor.java
@@ -45,7 +45,9 @@ import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.List;
+import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -65,6 +67,7 @@ public class AidlProcessor extends SourceProcessor {
*/
private static Pattern sAidlPattern1 = Pattern.compile("^(.+?):(\\d+):?\\s(.+)$"); //$NON-NLS-1$
+ private final static Set<String> EXTENSIONS = Collections.singleton(SdkConstants.EXT_AIDL);
private enum AidlType {
UNKNOWN, INTERFACE, PARCELABLE;
@@ -83,8 +86,8 @@ public class AidlProcessor extends SourceProcessor {
}
@Override
- protected String getExtension() {
- return SdkConstants.EXT_AIDL;
+ protected Set<String> getExtensions() {
+ return EXTENSIONS;
}
@Override
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/RenderScriptProcessor.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/RenderScriptProcessor.java
index 5b58c4f..2ec781f 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/RenderScriptProcessor.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/RenderScriptProcessor.java
@@ -26,6 +26,7 @@ import com.android.ide.eclipse.adt.internal.project.BaseProjectHelper;
import com.android.ide.eclipse.adt.internal.sdk.Sdk;
import com.android.resources.ResourceFolderType;
import com.android.sdklib.IAndroidTarget;
+import com.google.common.collect.Sets;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
@@ -47,6 +48,7 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -63,6 +65,12 @@ public class RenderScriptProcessor extends SourceProcessor {
*/
private static Pattern sLlvmPattern1 = Pattern.compile("^(.+?):(\\d+):(\\d+):\\s(.+)$"); //$NON-NLS-1$
+ private final static Set<String> EXTENSIONS = Sets.newHashSetWithExpectedSize(2);
+ static {
+ EXTENSIONS.add(SdkConstants.EXT_RS);
+ EXTENSIONS.add(SdkConstants.EXT_FS);
+ }
+
private static class RsChangeHandler extends SourceChangeHandler {
@Override
@@ -85,31 +93,50 @@ public class RenderScriptProcessor extends SourceProcessor {
// remove the file name segment
relative = relative.removeLastSegments(1);
// add the file name of a Renderscript file.
- relative = relative.append(file.getName().replaceAll(AdtConstants.RE_DEP_EXT,
- SdkConstants.DOT_RS));
-
- // now look for a match in the source folders.
- List<IPath> sourceFolders = BaseProjectHelper.getSourceClasspaths(
- processor.getJavaProject());
- IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
-
- for (IPath sourceFolderPath : sourceFolders) {
- IFolder sourceFolder = root.getFolder(sourceFolderPath);
- // we don't look in the 'gen' source folder as there will be no source in there.
- if (sourceFolder.exists() && sourceFolder.equals(genFolder) == false) {
- IFile sourceFile = sourceFolder.getFile(relative);
- SourceFileData data = processor.getFileData(sourceFile);
- if (data != null) {
- addFileToCompile(sourceFile);
- return true;
- }
- }
+ relative = relative.append(file.getName().replaceAll(
+ AdtConstants.RE_DEP_EXT, SdkConstants.DOT_RS));
+
+ if (!findInSourceFolders(processor, genFolder, relative)) {
+ // could be a FilterScript file?
+ relative = file.getFullPath().makeRelativeTo(genFolder.getFullPath());
+ // remove the file name segment
+ relative = relative.removeLastSegments(1);
+ // add the file name of a FilterScript file.
+ relative = relative.append(file.getName().replaceAll(
+ AdtConstants.RE_DEP_EXT, SdkConstants.DOT_FS));
+
+ return findInSourceFolders(processor, genFolder, relative);
}
+
+ return true;
}
return r;
}
+ private boolean findInSourceFolders(SourceProcessor processor, IFolder genFolder,
+ IPath relative) {
+ // now look for a match in the source folders.
+ List<IPath> sourceFolders = BaseProjectHelper.getSourceClasspaths(
+ processor.getJavaProject());
+ IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+
+ for (IPath sourceFolderPath : sourceFolders) {
+ IFolder sourceFolder = root.getFolder(sourceFolderPath);
+ // we don't look in the 'gen' source folder as there will be no source in there.
+ if (sourceFolder.exists() && sourceFolder.equals(genFolder) == false) {
+ IFile sourceFile = sourceFolder.getFile(relative);
+ SourceFileData data = processor.getFileData(sourceFile);
+ if (data != null) {
+ addFileToCompile(sourceFile);
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
@Override
protected boolean filterResourceFolder(IContainer folder) {
return ResourceFolderType.RAW.getName().equals(folder.getName());
@@ -121,8 +148,8 @@ public class RenderScriptProcessor extends SourceProcessor {
}
@Override
- protected String getExtension() {
- return SdkConstants.EXT_RS;
+ protected Set<String> getExtensions() {
+ return EXTENSIONS;
}
@Override
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/SourceChangeHandler.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/SourceChangeHandler.java
index 537dd61..5436798 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/SourceChangeHandler.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/SourceChangeHandler.java
@@ -59,7 +59,7 @@ public class SourceChangeHandler {
public void handleSourceFile(IFile file, int kind) {
// first the file itself if this is a match for the processor's extension
- if (mProcessor.getExtension().equals(file.getFileExtension())) {
+ if (mProcessor.getExtensions().contains(file.getFileExtension())) {
if (kind == IResourceDelta.REMOVED) {
mRemoved.add(file);
} else {
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/SourceProcessor.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/SourceProcessor.java
index 8e50ec6..794ed52 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/SourceProcessor.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/SourceProcessor.java
@@ -38,6 +38,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.Set;
@@ -210,7 +211,7 @@ public abstract class SourceProcessor {
* Returns the extension of the source files handled by this processor.
* @return
*/
- protected abstract String getExtension();
+ protected abstract Set<String> getExtensions();
protected abstract String getSavePropertyName();
@@ -369,7 +370,8 @@ public abstract class SourceProcessor {
// if this a file, check that the file actually exist
// and that it's the type of of file that's used in this processor
if (r.exists() &&
- getExtension().equalsIgnoreCase(r.getFileExtension())) {
+ getExtensions().contains(
+ r.getFileExtension().toLowerCase(Locale.US))) {
mFiles.put((IFile) r, new SourceFileData((IFile) r));
}
break;