1 package org.apache.maven.plugins.shade.resource;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.plugins.shade.relocation.Relocator;
23 import org.codehaus.plexus.util.IOUtil;
24
25 import java.io.ByteArrayOutputStream;
26 import java.io.IOException;
27 import java.io.InputStream;
28 import java.util.List;
29 import java.util.jar.JarEntry;
30 import java.util.jar.JarOutputStream;
31
32
33
34
35 public class AppendingTransformer
36 extends AbstractCompatibilityTransformer
37 {
38 String resource;
39
40 ByteArrayOutputStream data = new ByteArrayOutputStream();
41
42 private long time = Long.MIN_VALUE;
43
44 public boolean canTransformResource( String r )
45 {
46 return resource != null && resource.equalsIgnoreCase( r );
47 }
48
49 public void processResource( String resource, InputStream is, List<Relocator> relocators, long time )
50 throws IOException
51 {
52 IOUtil.copy( is, data );
53 data.write( '\n' );
54 if ( time > this.time )
55 {
56 this.time = time;
57 }
58 }
59
60 public boolean hasTransformedResource()
61 {
62 return data.size() > 0;
63 }
64
65 public void modifyOutputStream( JarOutputStream jos )
66 throws IOException
67 {
68 JarEntry jarEntry = new JarEntry( resource );
69 jarEntry.setTime( time );
70 jos.putNextEntry( jarEntry );
71
72 jos.write( data.toByteArray() );
73 data.reset();
74 }
75 }