aboutsummaryrefslogtreecommitdiffstats
path: root/anttasks/src/com/android/ant/AidlExecTask.java
diff options
context:
space:
mode:
Diffstat (limited to 'anttasks/src/com/android/ant/AidlExecTask.java')
-rw-r--r--anttasks/src/com/android/ant/AidlExecTask.java192
1 files changed, 0 insertions, 192 deletions
diff --git a/anttasks/src/com/android/ant/AidlExecTask.java b/anttasks/src/com/android/ant/AidlExecTask.java
deleted file mode 100644
index 5a39436..0000000
--- a/anttasks/src/com/android/ant/AidlExecTask.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.ant;
-
-import com.android.sdklib.io.FileOp;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.taskdefs.ExecTask;
-import org.apache.tools.ant.types.Path;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Task to execute aidl.
- * <p>
- * It expects 5 attributes:<br>
- * 'executable' ({@link Path} with a single path) for the location of the aidl executable<br>
- * 'framework' ({@link Path} with a single path) for the "preprocessed" file containing all the
- * parcelables exported by the framework<br>
- * 'genFolder' ({@link Path} with a single path) for the location of the gen folder.
- * 'aidlOutFolder' ({@link Path} with a single path) for the location of the bin/aidl folder to
- * copy the aidl files.
- * 'libraryBinAidlFolderPathRefid' the name of the reference to a path object that contains
- * libraries aidl output folder.
- *
- * It also expects one or more inner elements called "source" which are identical to {@link Path}
- * elements.
- */
-public class AidlExecTask extends MultiFilesTask {
-
- private String mExecutable;
- private String mFramework;
- private Path mLibraryBinAidlFolderPath;
- private String mGenFolder;
- private final ArrayList<Path> mPaths = new ArrayList<Path>();
- private String mAidlOutFolder;
-
- private class AidlProcessor implements SourceProcessor {
-
- @Override
- public String getSourceFileExtension() {
- return "aidl";
- }
-
- @Override
- public void process(String filePath, String sourceFolder,
- List<String> sourceFolders, Project taskProject) {
- ExecTask task = new ExecTask();
- task.setProject(taskProject);
- task.setOwningTarget(getOwningTarget());
- task.setExecutable(mExecutable);
- task.setTaskName("aidl");
- task.setFailonerror(true);
-
- task.createArg().setValue("-p" + mFramework);
- task.createArg().setValue("-o" + mGenFolder);
- // add all the source folders as import in case an aidl file in a source folder
- // imports a parcelable from another source folder.
- for (String importFolder : sourceFolders) {
- task.createArg().setValue("-I" + importFolder);
- }
-
- // add all the library aidl folders to access parcelables that are in libraries
- if (mLibraryBinAidlFolderPath != null) {
- for (String importFolder : mLibraryBinAidlFolderPath.list()) {
- task.createArg().setValue("-I" + importFolder);
- }
- }
-
- // set auto dependency file creation
- task.createArg().setValue("-a");
-
- task.createArg().setValue(filePath);
-
- // execute it.
- task.execute();
-
- // if we reach here, it was successful (execute throws an exception otherwise).
- // Copy the file into the bin/aidl directory.
- String relative = filePath.substring(sourceFolder.length());
- if (relative.charAt(0) == '/' || relative.charAt(0) == File.separatorChar) {
- relative = relative.substring(1);
- }
-
- try {
- File dest = new File(mAidlOutFolder, relative);
- File parent = dest.getParentFile();
- parent.mkdirs();
-
- FileOp op = new FileOp();
- op.copyFile(new File(filePath), dest);
- } catch (IOException e) {
- throw new BuildException(e);
- }
- }
-
- @Override
- public void displayMessage(DisplayType type, int count) {
- switch (type) {
- case FOUND:
- System.out.println(String.format("Found %1$d AIDL files.", count));
- break;
- case COMPILING:
- if (count > 0) {
- System.out.println(String.format("Compiling %1$d AIDL files.",
- count));
- } else {
- System.out.println("No AIDL files to compile.");
- }
- break;
- case REMOVE_OUTPUT:
- System.out.println(String.format("Found %1$d obsolete output files to remove.",
- count));
- break;
- case REMOVE_DEP:
- System.out.println(
- String.format("Found %1$d obsolete dependency files to remove.",
- count));
- break;
- }
- }
- }
-
- /**
- * Sets the value of the "executable" attribute.
- * @param executable the value.
- */
- public void setExecutable(Path executable) {
- mExecutable = TaskHelper.checkSinglePath("executable", executable);
- }
-
- public void setFramework(Path value) {
- mFramework = TaskHelper.checkSinglePath("framework", value);
- }
-
- public void setLibraryBinAidlFolderPathRefid(String libraryBinAidlFolderPathRefid) {
- Object libBinAidlRef = getProject().getReference(libraryBinAidlFolderPathRefid);
- if (libBinAidlRef instanceof Path) {
- mLibraryBinAidlFolderPath = (Path) libBinAidlRef;
- }
- }
-
- public void setGenFolder(Path value) {
- mGenFolder = TaskHelper.checkSinglePath("genFolder", value);
- }
-
- public void setAidlOutFolder(Path value) {
- mAidlOutFolder = TaskHelper.checkSinglePath("aidlOutFolder", value);
- }
-
- public Path createSource() {
- Path p = new Path(getProject());
- mPaths.add(p);
- return p;
- }
-
- @Override
- public void execute() throws BuildException {
- if (mExecutable == null) {
- throw new BuildException("AidlExecTask's 'executable' is required.");
- }
- if (mFramework == null) {
- throw new BuildException("AidlExecTask's 'framework' is required.");
- }
- if (mGenFolder == null) {
- throw new BuildException("AidlExecTask's 'genFolder' is required.");
- }
- if (mAidlOutFolder == null) {
- throw new BuildException("AidlExecTask's 'aidlOutFolder' is required.");
- }
-
- processFiles(new AidlProcessor(), mPaths, mGenFolder);
- }
-}