1 package org.codehaus.mojo.webstart.generator;
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.plugin.MojoExecutionException;
23 import org.codehaus.mojo.webstart.ResolvedJarResource;
24 import org.codehaus.plexus.util.WriterFactory;
25
26 import java.io.BufferedWriter;
27 import java.io.File;
28 import java.io.IOException;
29 import java.util.Collection;
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 public class VersionXmlGenerator
46 {
47
48 private final String encoding;
49
50
51
52
53
54
55 public VersionXmlGenerator( String encoding )
56 {
57 this.encoding = encoding;
58 }
59
60
61
62
63
64
65
66
67
68
69
70 public void generate( File outputDir, Collection<ResolvedJarResource> jarResources )
71 throws MojoExecutionException
72 {
73
74 if ( outputDir == null )
75 {
76 throw new IllegalArgumentException( "outputDir must not be null" );
77 }
78
79 BufferedWriter writer = null;
80
81 try
82 {
83 File versionXmlFile = new File( outputDir, "version.xml" );
84 writer = new BufferedWriter( WriterFactory.newWriter( versionXmlFile, encoding ) );
85
86 generateXml( writer, jarResources );
87
88 }
89 catch ( IOException e )
90 {
91 throw new MojoExecutionException( "Unable to create the version.xml file", e );
92 }
93 finally
94 {
95 if ( writer != null )
96 {
97 try
98 {
99 writer.close();
100 }
101 catch ( IOException e )
102 {
103
104 }
105 }
106 }
107
108 }
109
110 private void generateXml( BufferedWriter writer, Collection<ResolvedJarResource> jarResources )
111 throws IOException
112 {
113
114 writer.write( "<?xml version=\"1.0\"?>" );
115 writer.newLine();
116 writer.write( "<jnlp-versions>" );
117 writer.newLine();
118
119 for ( ResolvedJarResource jarResource : jarResources )
120 {
121 writer.write( " <resource>" );
122 writer.newLine();
123 writer.write( " <pattern>" );
124 writer.newLine();
125 writer.write( " <name>" );
126 writer.write( jarResource.getHrefValue() );
127 writer.write( "</name>" );
128 writer.newLine();
129 writer.write( " <version-id>" );
130 writer.write( jarResource.getVersion() );
131 writer.write( "</version-id>" );
132 writer.newLine();
133 writer.write( " </pattern>" );
134 writer.newLine();
135 writer.write( " <file>" );
136 writer.write( jarResource.getArtifact().getFile().getName() );
137 writer.write( "</file>" );
138 writer.newLine();
139 writer.write( " </resource>" );
140 writer.newLine();
141 }
142
143 writer.write( "</jnlp-versions>" );
144 writer.newLine();
145 }
146 }