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 if ( resource != null && resource.equalsIgnoreCase( r ) )
47 {
48 return true;
49 }
50
51 return false;
52 }
53
54 public void processResource( String resource, InputStream is, List<Relocator> relocators, long time )
55 throws IOException
56 {
57 IOUtil.copy( is, data );
58 data.write( '\n' );
59 if ( time > this.time )
60 {
61 this.time = time;
62 }
63 }
64
65 public boolean hasTransformedResource()
66 {
67 return data.size() > 0;
68 }
69
70 public void modifyOutputStream( JarOutputStream jos )
71 throws IOException
72 {
73 JarEntry jarEntry = new JarEntry( resource );
74 jarEntry.setTime( time );
75 jos.putNextEntry( jarEntry );
76
77 jos.write( data.toByteArray() );
78 data.reset();
79 }
80 }