diff options
14 files changed, 288 insertions, 47 deletions
diff --git a/jack/src/com/android/jack/Jack.java b/jack/src/com/android/jack/Jack.java index 6b2e4de..13b2cf6 100644 --- a/jack/src/com/android/jack/Jack.java +++ b/jack/src/com/android/jack/Jack.java @@ -82,6 +82,8 @@ import com.android.jack.ir.formatter.TypePackageAndMethodFormatter; import com.android.jack.ir.formatter.UserFriendlyFormatter; import com.android.jack.ir.sourceinfo.SourceInfoCreation; import com.android.jack.jayce.JaycePackageLoader; +import com.android.jack.library.InputJackLibrary; +import com.android.jack.library.OutputJackLibrary; import com.android.jack.lookup.CommonTypes; import com.android.jack.lookup.JPhantomLookup; import com.android.jack.optimizations.ConstantRefinerAndVariableRemover; @@ -262,9 +264,11 @@ import com.android.sched.util.log.Event; import com.android.sched.util.log.LoggerFactory; import com.android.sched.util.log.Tracer; import com.android.sched.util.log.TracerFactory; +import com.android.sched.vfs.Container; import com.android.sched.vfs.DirectDir; -import com.android.sched.vfs.InputVDir; +import com.android.sched.vfs.InputRootVDir; import com.android.sched.vfs.InputZipRootVDir; +import com.android.sched.vfs.OutputVDir; import org.antlr.runtime.RecognitionException; @@ -314,7 +318,9 @@ public abstract class Jack { "jack.internal.jayce.loader.classpath.policy", "Hint on default load policy for classpath entries", JaycePackageLoader.class) - .addArgType(InputVDir.class).addArgType(JPhantomLookup.class).bypassAccessibility() + .addArgType(InputJackLibrary.class) + .addArgType(JPhantomLookup.class) + .bypassAccessibility() .addDefaultValue("structure"); @Nonnull @@ -323,7 +329,9 @@ public abstract class Jack { "jack.internal.jayce.loader.import.policy", "Hint on default load policy for import entries", JaycePackageLoader.class) - .addArgType(InputVDir.class).addArgType(JPhantomLookup.class).bypassAccessibility() + .addArgType(InputJackLibrary.class) + .addArgType(JPhantomLookup.class) + .bypassAccessibility() .addDefaultValue("full"); @Nonnull @@ -385,6 +393,7 @@ public abstract class Jack { Config config = options.getConfig(); ThreadConfig.setConfig(config); + ConfigPrinterFactory.getConfigPrinter().printConfig(config); Event event = TracerFactory.getTracer().start(JackEventType.JACK_RUN); try { @@ -399,6 +408,18 @@ public abstract class Jack { (options.hasSanityChecks() ? "enabled" : "disabled")); JSession session = buildSession(options, hooks); + + if (ThreadConfig.get(Options.GENERATE_JACK_FILE).booleanValue()) { + Container containerType = ThreadConfig.get(Options.JACK_OUTPUT_CONTAINER_TYPE); + OutputVDir outputDir; + if (containerType == Container.DIR) { + outputDir = ThreadConfig.get(Options.JACK_FILE_OUTPUT_DIR); + } else { + outputDir = ThreadConfig.get(Options.JACK_FILE_OUTPUT_ZIP); + } + session.setOutputLibrary(new OutputJackLibrary(outputDir)); + } + Request request = createInitialRequest(); request.addFeature(Resources.class); @@ -673,21 +694,22 @@ public abstract class Jack { private static JayceFileImporter getJayceFileImporter(@Nonnull List<File> jayceImport, @Nonnull JPackage rootPackage, @Nonnull JPhantomLookup phantomLookup, @Nonnull RunnableHooks hooks) throws JackFileException { - List<InputVDir> jackFilesToImport = new ArrayList<InputVDir>(jayceImport.size()); + List<InputJackLibrary> inputJackLibraries = new ArrayList<InputJackLibrary>(jayceImport.size()); ReflectFactory<JaycePackageLoader> factory = ThreadConfig.get(IMPORT_POLICY); for (final File jackFile : jayceImport) { try { - InputVDir vDir = wrapAsVDir(jackFile, hooks); - jackFilesToImport.add(vDir); + InputRootVDir vDir = wrapAsVDir(jackFile, hooks); + InputJackLibrary inputJackLibrary = new InputJackLibrary(vDir); + inputJackLibraries.add(inputJackLibrary); // add to classpath - JaycePackageLoader rootPLoader = factory.create(vDir, phantomLookup); + JaycePackageLoader rootPLoader = factory.create(inputJackLibrary, phantomLookup); rootPackage.addLoader(rootPLoader); } catch (IOException ioException) { throw new JackFileException("Error importing jack container: " + ioException.getMessage(), ioException); } } - return new JayceFileImporter(jackFilesToImport); + return new JayceFileImporter(inputJackLibraries); } private static void putInJackClasspath(@Nonnull List<File> jackFiles, @@ -697,8 +719,9 @@ public abstract class Jack { ReflectFactory<JaycePackageLoader> factory = ThreadConfig.get(CLASSPATH_POLICY); for (final File jackFile : jackFiles) { try { - InputVDir vDir = wrapAsVDir(jackFile, hooks); - JaycePackageLoader rootPLoader = factory.create(vDir, phantomJNodeLookup); + InputRootVDir vDir = wrapAsVDir(jackFile, hooks); + JaycePackageLoader rootPLoader = + factory.create(new InputJackLibrary(vDir), phantomJNodeLookup); rootPackage.addLoader(rootPLoader); } catch (IOException ioException) { // Ignore bad entry @@ -708,9 +731,10 @@ public abstract class Jack { } @Nonnull - private static InputVDir wrapAsVDir(@Nonnull final File dirOrZip, @Nonnull RunnableHooks hooks) + private static InputRootVDir wrapAsVDir(@Nonnull final File dirOrZip, + @Nonnull RunnableHooks hooks) throws IOException { - InputVDir dir; + InputRootVDir dir; if (dirOrZip.isDirectory()) { dir = new DirectDir(new Directory(dirOrZip.getPath(), hooks, Existence.MUST_EXIST, Permission.READ, ChangePermission.NOCHANGE)); diff --git a/jack/src/com/android/jack/backend/jayce/JayceFileImporter.java b/jack/src/com/android/jack/backend/jayce/JayceFileImporter.java index 6c8b9b7..a2bba12 100644 --- a/jack/src/com/android/jack/backend/jayce/JayceFileImporter.java +++ b/jack/src/com/android/jack/backend/jayce/JayceFileImporter.java @@ -23,6 +23,7 @@ import com.android.jack.ir.ast.JPackageLookupException; import com.android.jack.ir.ast.JSession; import com.android.jack.ir.ast.JTypeLookupException; import com.android.jack.ir.ast.Resource; +import com.android.jack.library.InputJackLibrary; import com.android.jack.lookup.JLookup; import com.android.sched.util.HasDescription; import com.android.sched.util.codec.EnumCodec; @@ -34,6 +35,7 @@ import com.android.sched.util.log.Event; import com.android.sched.util.log.LoggerFactory; import com.android.sched.util.log.Tracer; import com.android.sched.util.log.TracerFactory; +import com.android.sched.vfs.InputRootVDir; import com.android.sched.vfs.InputVDir; import com.android.sched.vfs.InputVElement; import com.android.sched.vfs.InputVFile; @@ -46,7 +48,7 @@ import java.util.logging.Logger; import javax.annotation.Nonnull; /** - * Imports jayce file content in J-AST. + * Imports jayce files from jack libraries in J-AST. */ @HasKeyId public class JayceFileImporter { @@ -63,7 +65,7 @@ public class JayceFileImporter { private static final Logger logger = LoggerFactory.getLogger(); @Nonnull - private final List<InputVDir> jayceContainers; + private final List<InputJackLibrary> inputJackLibraries; private static final char VPATH_SEPARATOR = JLookup.PACKAGE_SEPARATOR; @@ -106,16 +108,17 @@ public class JayceFileImporter { private final CollisionPolicy resourceCollisionPolicy = ThreadConfig.get(RESOURCE_COLLISION_POLICY); - public JayceFileImporter(@Nonnull List<InputVDir> jayceContainers) { - this.jayceContainers = jayceContainers; + public JayceFileImporter(@Nonnull List<InputJackLibrary> jackLibraries) { + this.inputJackLibraries = jackLibraries; } public void doImport(@Nonnull JSession session) throws JPackageLookupException, ImportConflictException, JTypeLookupException { - for (InputVDir jayceContainer : jayceContainers) { - logger.log(Level.FINE, "Importing {0}", jayceContainer.getLocation().getDescription()); - for (InputVElement subFile : jayceContainer.list()) { + for (InputJackLibrary inputJackLibrary : inputJackLibraries) { + InputRootVDir libraryVDir = inputJackLibrary.getInputVDir(); + logger.log(Level.FINE, "Importing {0}", libraryVDir.getLocation().getDescription()); + for (InputVElement subFile : libraryVDir.list()) { importJayceFile(subFile, session, ""); } } diff --git a/jack/src/com/android/jack/backend/jayce/JayceSingleTypeWriter.java b/jack/src/com/android/jack/backend/jayce/JayceSingleTypeWriter.java index 10bc65e..3af4ef2 100644 --- a/jack/src/com/android/jack/backend/jayce/JayceSingleTypeWriter.java +++ b/jack/src/com/android/jack/backend/jayce/JayceSingleTypeWriter.java @@ -18,7 +18,6 @@ package com.android.jack.backend.jayce; import com.android.jack.Jack; import com.android.jack.JackFileException; -import com.android.jack.Options; import com.android.jack.experimental.incremental.CompilerState; import com.android.jack.experimental.incremental.JackIncremental; import com.android.jack.ir.JackFormatIr; @@ -26,6 +25,7 @@ import com.android.jack.ir.NonJackFormatIr; import com.android.jack.ir.ast.JDefinedClassOrInterface; import com.android.jack.ir.formatter.BinaryQualifiedNameFormatter; import com.android.jack.jayce.JayceWriter; +import com.android.jack.library.OutputLibrary; import com.android.jack.scheduling.feature.JackFileOutput; import com.android.sched.item.Description; import com.android.sched.item.Name; @@ -35,7 +35,6 @@ import com.android.sched.schedulable.Produce; import com.android.sched.schedulable.RunnableSchedulable; import com.android.sched.schedulable.Support; import com.android.sched.util.config.ThreadConfig; -import com.android.sched.vfs.Container; import com.android.sched.vfs.DirectFile; import com.android.sched.vfs.OutputVDir; import com.android.sched.vfs.OutputVFile; @@ -62,13 +61,9 @@ public class JayceSingleTypeWriter implements RunnableSchedulable<JDefinedClassO private final OutputVDir outputDir; { - assert ThreadConfig.get(Options.GENERATE_JACK_FILE).booleanValue(); - Container containerType = ThreadConfig.get(Options.JACK_OUTPUT_CONTAINER_TYPE); - if (containerType == Container.DIR) { - outputDir = ThreadConfig.get(Options.JACK_FILE_OUTPUT_DIR); - } else { - outputDir = ThreadConfig.get(Options.JACK_FILE_OUTPUT_ZIP); - } + OutputLibrary outputLibrary = Jack.getSession().getOutputLibrary(); + assert outputLibrary != null; + outputDir = outputLibrary.getOutputVDir(); } @Synchronized diff --git a/jack/src/com/android/jack/ir/ast/JSession.java b/jack/src/com/android/jack/ir/ast/JSession.java index 9d405ea..64576a2 100644 --- a/jack/src/com/android/jack/ir/ast/JSession.java +++ b/jack/src/com/android/jack/ir/ast/JSession.java @@ -20,6 +20,7 @@ import com.android.jack.ir.InternalCompilerException; import com.android.jack.ir.ast.JPrimitiveType.JPrimitiveTypeEnum; import com.android.jack.ir.sourceinfo.SourceInfo; import com.android.jack.ir.sourceinfo.SourceInfoFactory; +import com.android.jack.library.OutputLibrary; import com.android.jack.lookup.JNodeLookup; import com.android.jack.lookup.JPhantomLookup; import com.android.jack.reporting.Reporter; @@ -38,6 +39,7 @@ import java.util.List; import java.util.Set; import java.util.logging.Logger; +import javax.annotation.CheckForNull; import javax.annotation.Nonnull; /** @@ -77,6 +79,9 @@ public class JSession extends JNode { @Nonnull private final Reporter reporter = ThreadConfig.get(Reporter.REPORTER); + @CheckForNull + private OutputLibrary outputLibrary; + public JSession() { super(SourceInfo.UNKNOWN); topLevelPackage = new JPackage("", this, null); @@ -179,4 +184,13 @@ public class JSession extends JNode { throw new InternalCompilerException(this, "Invalid parent"); } } + + @CheckForNull + public OutputLibrary getOutputLibrary() { + return outputLibrary; + } + + public void setOutputLibrary(@Nonnull OutputLibrary outputLibrary) { + this.outputLibrary = outputLibrary; + } } diff --git a/jack/src/com/android/jack/jayce/FullPackageLoader.java b/jack/src/com/android/jack/jayce/FullPackageLoader.java index 00ffec0..5535427 100644 --- a/jack/src/com/android/jack/jayce/FullPackageLoader.java +++ b/jack/src/com/android/jack/jayce/FullPackageLoader.java @@ -16,16 +16,17 @@ package com.android.jack.jayce; +import com.android.jack.library.InputJackLibrary; import com.android.jack.lookup.JPhantomLookup; import com.android.sched.util.codec.ImplementationName; -import com.android.sched.vfs.InputVDir; import javax.annotation.Nonnull; @ImplementationName(iface = JaycePackageLoader.class, name = "full") class FullPackageLoader extends JaycePackageLoader { - public FullPackageLoader(@Nonnull InputVDir dir, @Nonnull JPhantomLookup lookup) { - super(dir, lookup, NodeLevel.FULL); + public FullPackageLoader(@Nonnull InputJackLibrary inputJackLibrary, + @Nonnull JPhantomLookup lookup) { + super(inputJackLibrary, inputJackLibrary.getInputVDir(), lookup, NodeLevel.FULL); } } diff --git a/jack/src/com/android/jack/jayce/JayceClassOrInterfaceLoader.java b/jack/src/com/android/jack/jayce/JayceClassOrInterfaceLoader.java index 3bda605..479864f 100644 --- a/jack/src/com/android/jack/jayce/JayceClassOrInterfaceLoader.java +++ b/jack/src/com/android/jack/jayce/JayceClassOrInterfaceLoader.java @@ -23,6 +23,9 @@ import com.android.jack.ir.ast.JDefinedAnnotation; import com.android.jack.ir.ast.JDefinedClassOrInterface; import com.android.jack.ir.ast.JPackage; import com.android.jack.ir.ast.JSession; +import com.android.jack.library.HasInputLibrary; +import com.android.jack.library.InputJackLibrary; +import com.android.jack.library.InputLibrary; import com.android.jack.load.AbtractClassOrInterfaceLoader; import com.android.jack.load.ClassOrInterfaceLoader; import com.android.jack.load.JackLoadingException; @@ -54,7 +57,8 @@ import javax.annotation.Nonnull; /** * {@link ClassOrInterfaceLoader} for jayce files. */ -public class JayceClassOrInterfaceLoader extends AbtractClassOrInterfaceLoader { +public class JayceClassOrInterfaceLoader extends AbtractClassOrInterfaceLoader implements + HasInputLibrary { @Nonnull private static final StatisticId<Percent> NNODE_RELOAD = new StatisticId< @@ -89,10 +93,14 @@ public class JayceClassOrInterfaceLoader extends AbtractClassOrInterfaceLoader { private int methodNotLoadedCount = Integer.MAX_VALUE; @Nonnull + private final InputJackLibrary inputJackLibrary; + + @Nonnull final Tracer tracer = TracerFactory.getTracer(); - JayceClassOrInterfaceLoader(@Nonnull InputVFile source, @Nonnull JPhantomLookup lookup, - @Nonnull NodeLevel defaultLoadLevel) { + JayceClassOrInterfaceLoader(@Nonnull InputJackLibrary jackLibrary, @Nonnull InputVFile source, + @Nonnull JPhantomLookup lookup, @Nonnull NodeLevel defaultLoadLevel) { + this.inputJackLibrary = jackLibrary; this.source = source; this.lookup = lookup; nnode = new SoftReference<DeclaredTypeNode>(null); @@ -223,4 +231,9 @@ public class JayceClassOrInterfaceLoader extends AbtractClassOrInterfaceLoader { } } + @Override + @Nonnull + public InputLibrary getInputLibrary() { + return inputJackLibrary; + } } diff --git a/jack/src/com/android/jack/jayce/JayceMethodLoader.java b/jack/src/com/android/jack/jayce/JayceMethodLoader.java index 3b74b83..4efae56 100644 --- a/jack/src/com/android/jack/jayce/JayceMethodLoader.java +++ b/jack/src/com/android/jack/jayce/JayceMethodLoader.java @@ -19,6 +19,8 @@ package com.android.jack.jayce; import com.android.jack.JackFileException; import com.android.jack.ir.ast.JMethod; import com.android.jack.ir.ast.JNode; +import com.android.jack.library.HasInputLibrary; +import com.android.jack.library.InputLibrary; import com.android.jack.load.AbstractMethodLoader; import com.android.jack.load.JackLoadingException; import com.android.jack.lookup.JLookupException; @@ -35,7 +37,7 @@ import javax.annotation.Nonnull; /** * A loader for method loaded from a jack file. */ -public class JayceMethodLoader extends AbstractMethodLoader { +public class JayceMethodLoader extends AbstractMethodLoader implements HasInputLibrary { @Nonnull private static final StatisticId<Counter> BODY_LOAD_COUNT = new StatisticId<Counter>( "jayce.body.load", "Body loaded from a NNode in a JNode", @@ -112,4 +114,9 @@ public class JayceMethodLoader extends AbstractMethodLoader { // nothing to do, only body is lazily loaded and ensureBody is handling that. } + @Override + @Nonnull + public InputLibrary getInputLibrary() { + return enclosingClassLoader.getInputLibrary(); + } } diff --git a/jack/src/com/android/jack/jayce/JaycePackageLoader.java b/jack/src/com/android/jack/jayce/JaycePackageLoader.java index fff8ebb..e45e321 100644 --- a/jack/src/com/android/jack/jayce/JaycePackageLoader.java +++ b/jack/src/com/android/jack/jayce/JaycePackageLoader.java @@ -22,6 +22,9 @@ import com.android.jack.ir.ast.JDefinedClassOrInterface; import com.android.jack.ir.ast.JPackage; import com.android.jack.ir.ast.JPackageLookupException; import com.android.jack.ir.ast.MissingJTypeLookupException; +import com.android.jack.library.HasInputLibrary; +import com.android.jack.library.InputJackLibrary; +import com.android.jack.library.InputLibrary; import com.android.jack.load.JackLoadingException; import com.android.jack.load.PackageLoader; import com.android.jack.lookup.JPhantomLookup; @@ -40,17 +43,23 @@ import javax.annotation.Nonnull; /** * {@link PackageLoader} for package containing classes defined in jack files. */ -public class JaycePackageLoader implements PackageLoader { +public class JaycePackageLoader implements PackageLoader, HasInputLibrary { @Nonnull private final InputVDir dir; + + @Nonnull private final JPhantomLookup lookup; @Nonnull private final NodeLevel defaultLoadLevel; - JaycePackageLoader(@Nonnull InputVDir dir, @Nonnull JPhantomLookup lookup, - @Nonnull NodeLevel defaultLoadLevel) { + @Nonnull + private final InputJackLibrary inputJackLibrary; + + JaycePackageLoader(@Nonnull InputJackLibrary inputJackLibrary, @Nonnull InputVDir dir, + @Nonnull JPhantomLookup lookup, @Nonnull NodeLevel defaultLoadLevel) { + this.inputJackLibrary = inputJackLibrary; this.dir = dir; this.lookup = lookup; this.defaultLoadLevel = defaultLoadLevel; @@ -63,8 +72,8 @@ public class JaycePackageLoader implements PackageLoader { for (InputVElement sub : dir.list()) { if (!sub.isVDir() && isJackFileNameOf(sub.getName(), simpleName)) { try { - return new JayceClassOrInterfaceLoader((InputVFile) sub, lookup, defaultLoadLevel) - .loadClassOrInterface(loading, simpleName); + return new JayceClassOrInterfaceLoader(inputJackLibrary, (InputVFile) sub, lookup, + defaultLoadLevel).loadClassOrInterface(loading, simpleName); } catch (IOException e) { throw new JackLoadingException(sub.getLocation(), e); } catch (JackFileException e) { @@ -92,11 +101,11 @@ public class JaycePackageLoader implements PackageLoader { @Override public PackageLoader getLoaderForSubPackage(@Nonnull JPackage loading, @Nonnull String simpleName) throws JPackageLookupException { - for (InputVElement sub : dir.list()) { - if (sub.isVDir() && sub.getName().equals(simpleName)) { - return new JaycePackageLoader((InputVDir) sub, lookup, defaultLoadLevel); - } + for (InputVElement sub : dir.list()) { + if (sub.isVDir() && sub.getName().equals(simpleName)) { + return new JaycePackageLoader(inputJackLibrary, (InputVDir) sub, lookup, defaultLoadLevel); } + } throw new JPackageLookupException(simpleName, loading); } @@ -129,4 +138,10 @@ public class JaycePackageLoader implements PackageLoader { public boolean isOnPath(@Nonnull JPackage loaded) { return true; } + + @Override + @Nonnull + public InputLibrary getInputLibrary() { + return inputJackLibrary; + } } diff --git a/jack/src/com/android/jack/jayce/StructurePackageLoader.java b/jack/src/com/android/jack/jayce/StructurePackageLoader.java index 83a2b87..76995ff 100644 --- a/jack/src/com/android/jack/jayce/StructurePackageLoader.java +++ b/jack/src/com/android/jack/jayce/StructurePackageLoader.java @@ -16,16 +16,17 @@ package com.android.jack.jayce; +import com.android.jack.library.InputJackLibrary; import com.android.jack.lookup.JPhantomLookup; import com.android.sched.util.codec.ImplementationName; -import com.android.sched.vfs.InputVDir; import javax.annotation.Nonnull; @ImplementationName(iface = JaycePackageLoader.class, name = "structure") class StructurePackageLoader extends JaycePackageLoader { - public StructurePackageLoader(@Nonnull InputVDir dir, @Nonnull JPhantomLookup lookup) { - super(dir, lookup, NodeLevel.STRUCTURE); + public StructurePackageLoader(@Nonnull InputJackLibrary inputJackLibrary, + @Nonnull JPhantomLookup lookup) { + super(inputJackLibrary, inputJackLibrary.getInputVDir(), lookup, NodeLevel.STRUCTURE); } } diff --git a/jack/src/com/android/jack/library/HasInputLibrary.java b/jack/src/com/android/jack/library/HasInputLibrary.java new file mode 100644 index 0000000..f0a7f1e --- /dev/null +++ b/jack/src/com/android/jack/library/HasInputLibrary.java @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2014 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.jack.library; + +import javax.annotation.Nonnull; + +/** + * Interface implemented by loaders having a library as input. + */ +public interface HasInputLibrary { + + @Nonnull + public InputLibrary getInputLibrary(); +} diff --git a/jack/src/com/android/jack/library/InputJackLibrary.java b/jack/src/com/android/jack/library/InputJackLibrary.java new file mode 100644 index 0000000..d163db1 --- /dev/null +++ b/jack/src/com/android/jack/library/InputJackLibrary.java @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2014 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.jack.library; + +import com.android.sched.vfs.InputRootVDir; + +import javax.annotation.Nonnull; + +/** + * Jack library used as input. + */ +public class InputJackLibrary implements InputLibrary { + + @Nonnull + private final InputRootVDir libraryVDir; + + public InputJackLibrary(@Nonnull InputRootVDir libraryVDir) { + this.libraryVDir = libraryVDir; + } + + @Override + @Nonnull + public InputRootVDir getInputVDir() { + return libraryVDir; + } +} diff --git a/jack/src/com/android/jack/library/InputLibrary.java b/jack/src/com/android/jack/library/InputLibrary.java new file mode 100644 index 0000000..38afc3f --- /dev/null +++ b/jack/src/com/android/jack/library/InputLibrary.java @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2014 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.jack.library; + +import com.android.sched.vfs.InputRootVDir; + +import javax.annotation.Nonnull; + +/** + * Library used as input. + */ +public interface InputLibrary { + + @Nonnull + public InputRootVDir getInputVDir(); +} diff --git a/jack/src/com/android/jack/library/OutputJackLibrary.java b/jack/src/com/android/jack/library/OutputJackLibrary.java new file mode 100644 index 0000000..28fbc54 --- /dev/null +++ b/jack/src/com/android/jack/library/OutputJackLibrary.java @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2014 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.jack.library; + +import com.android.sched.vfs.OutputVDir; + +import javax.annotation.Nonnull; + +/** + * Jack library generated by Jack. + */ +public class OutputJackLibrary implements OutputLibrary { + + @Nonnull + private final OutputVDir outputVDir; + + public OutputJackLibrary(@Nonnull OutputVDir outputVDir) { + this.outputVDir = outputVDir; + } + + @Override + @Nonnull + public OutputVDir getOutputVDir() { + return outputVDir; + } +} diff --git a/jack/src/com/android/jack/library/OutputLibrary.java b/jack/src/com/android/jack/library/OutputLibrary.java new file mode 100644 index 0000000..e662695 --- /dev/null +++ b/jack/src/com/android/jack/library/OutputLibrary.java @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2014 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.jack.library; + +import com.android.sched.vfs.OutputVDir; + +import javax.annotation.Nonnull; + +/** + * Library generated by Jack. + */ +public interface OutputLibrary { + + @Nonnull + public OutputVDir getOutputVDir(); +} |