Github user chtyim commented on a diff in the pull request:

    https://github.com/apache/incubator-twill/pull/66#discussion_r44348453
  
    --- Diff: 
twill-core/src/main/java/org/apache/twill/internal/ApplicationBundler.java ---
    @@ -145,41 +145,63 @@ public void createBundle(Location target, Class<?> 
clz, Class<?>...classes) thro
        * @throws IOException
        */
       public void createBundle(Location target, Iterable<Class<?>> classes, 
Iterable<URI> resources) throws IOException {
    -    LOG.debug("start creating bundle {}. building a temporary file locally 
at first", target.getName());
    +    createBundleAndGetClassPathUrls(target, classes, resources);
    +  }
    +
    +  public Set<URL> createBundleAndGetClassPathUrls(Location target, 
Iterable<Class<?>> classes,
    +                                                  Iterable<URI> resources) 
throws IOException {
    +    return createBundleAndGetClassPathUrls(target.getName(), 
target.toString(),
    +                                           target.getOutputStream(), 
classes, resources);
    +  }
    +
    +  private Set<URL> createBundleAndGetClassPathUrls(String targetName, 
String targetPath,
    +                                                   OutputStream 
targetOutputStream,
    +                                                   Iterable<Class<?>> 
classes,
    +                                                   Iterable<URI> 
resources) throws IOException {
    +    LOG.debug("start creating bundle {}. building a temporary file locally 
at first", targetName);
         // Write the jar to local tmp file first
    -    File tmpJar = File.createTempFile(target.getName(), ".tmp");
    +    File tmpJar = File.createTempFile(targetName, ".tmp");
    +    Set<URL> classPathUrls;
         try {
           Set<String> entries = Sets.newHashSet();
           try (JarOutputStream jarOut = new JarOutputStream(new 
FileOutputStream(tmpJar))) {
             // Find class dependencies
    -        findDependencies(classes, entries, jarOut);
    +        classPathUrls = findDependenciesAndGetClassPathUrls(classes, 
entries, jarOut);
     
             // Add extra resources
             for (URI resource : resources) {
               copyResource(resource, entries, jarOut);
             }
           }
    -      LOG.debug("copying temporary bundle to destination {} ({} bytes)", 
target, tmpJar.length());
    +      LOG.debug("copying temporary bundle to destination {} ({} bytes)", 
targetPath, tmpJar.length());
           // Copy the tmp jar into destination.
           try {
    -        OutputStream os = new 
BufferedOutputStream(target.getOutputStream());
    +        OutputStream os = new BufferedOutputStream(targetOutputStream);
             try {
               Files.copy(tmpJar, os);
             } finally {
               Closeables.closeQuietly(os);
             }
           } catch (IOException e) {
    -        throw new IOException("failed to copy bundle from " + 
tmpJar.toURI() + " to " + target, e);
    +        throw new IOException("failed to copy bundle from " + 
tmpJar.toURI() + " to " + targetPath, e);
           }
    -      LOG.debug("finished creating bundle at {}", target);
    +      LOG.debug("finished creating bundle at {}", targetPath);
         } finally {
           tmpJar.delete();
           LOG.debug("cleaned up local temporary for bundle {}", 
tmpJar.toURI());
         }
    +    return classPathUrls;
    +
    +  }
    +
    +  public Set<URL> createBundleAndGetClassPathUrls(File target, 
Iterable<Class<?>> classes,
    --- End diff --
    
    no doc.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to