public void transform()

in dummy-transform/src/main/java/com/uber/okbuck/transform/DummyTransform.java [55:116]


  public void transform(TransformInvocation transformInvocation)
      throws TransformException, InterruptedException, IOException {

    if (transformInvocation.getOutputProvider() == null) {
      throw new IllegalArgumentException("Transform invocation needs a valid output provider.");
    }

    File outputDir =
        transformInvocation
            .getOutputProvider()
            .getContentLocation(TRANSFORM_OUTPUT, getOutputTypes(), getScopes(), Format.DIRECTORY);

    for (TransformInput input : transformInvocation.getInputs()) {

      for (JarInput inputJar : input.getJarInputs()) {
        File outputJar =
            transformInvocation
                .getOutputProvider()
                .getContentLocation(inputJar.getName(), getOutputTypes(), getScopes(), Format.JAR);
        outputJar.getParentFile().mkdirs();

        if (!transformInvocation.isIncremental() || inputJar.getStatus() != Status.REMOVED) {
          FileUtils.copyFile(inputJar.getFile(), outputJar);
        }
      }

      for (DirectoryInput directoryInput : input.getDirectoryInputs()) {

        File inputDir = directoryInput.getFile();
        if (transformInvocation.isIncremental()) {

          for (Map.Entry<File, Status> changedInput : directoryInput.getChangedFiles().entrySet()) {

            File inputFile = changedInput.getKey();
            File outputFile =
                new File(outputDir, relativePossiblyNonExistingPath(inputFile, inputDir));

            switch (changedInput.getValue()) {
              case REMOVED:
                FileUtils.delete(outputFile);
                break;

              case ADDED:
              case CHANGED:
                FileUtils.copyFile(inputFile, outputFile);
            }
          }
        } else {

          FileUtils.deleteDirectoryContents(inputDir);
          inputDir.mkdirs();

          Iterable<File> files = FileUtils.getAllFiles(inputDir);
          for (File inputFile : files) {

            File outputFile = new File(outputDir, relativePath(inputFile, inputDir));
            FileUtils.copyFile(inputFile, outputFile);
          }
        }
      }
    }
  }