1 package org.apache.maven.plugin.eclipse.writers.rad;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23 import java.io.FileOutputStream;
24 import java.io.IOException;
25 import java.io.OutputStreamWriter;
26 import java.io.Writer;
27
28 import org.apache.maven.plugin.MojoExecutionException;
29 import org.apache.maven.plugin.eclipse.Constants;
30 import org.apache.maven.plugin.eclipse.Messages;
31 import org.apache.maven.plugin.eclipse.writers.AbstractEclipseWriter;
32 import org.apache.maven.plugin.ide.JeeUtils;
33 import org.codehaus.plexus.util.IOUtil;
34 import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
35 import org.codehaus.plexus.util.xml.XMLWriter;
36
37
38
39
40
41
42
43 public class RadJ2EEWriter
44 extends AbstractEclipseWriter
45 {
46
47 private static final String J2EE_FILENAME = ".j2ee";
48
49 private static final String J2EE_J2EESETTINGS = "j2eesettings";
50
51 private static final String J2EE_MODULEVERSION = "moduleversion";
52
53 private static final String J2EE_VERSION = "version";
54
55
56
57
58
59
60
61
62
63 public void write()
64 throws MojoExecutionException
65 {
66 Writer w;
67 String packaging = config.getPackaging();
68
69 if ( Constants.PROJECT_PACKAGING_WAR.equalsIgnoreCase( packaging )
70 || Constants.PROJECT_PACKAGING_EJB.equalsIgnoreCase( packaging )
71 || Constants.PROJECT_PACKAGING_EAR.equalsIgnoreCase( packaging ) )
72 {
73 try
74 {
75 w =
76 new OutputStreamWriter( new FileOutputStream( new File( config.getEclipseProjectDirectory(),
77 J2EE_FILENAME ) ), "UTF-8" );
78 }
79 catch ( IOException ex )
80 {
81 throw new MojoExecutionException( Messages.getString( "EclipsePlugin.erroropeningfile" ), ex );
82 }
83
84 XMLWriter writer = new PrettyPrintXMLWriter( w, "UTF-8", null );
85 writeModuleTypeFacetCore( writer, packaging );
86 IOUtil.close( w );
87 }
88 }
89
90
91
92
93
94
95
96 private void writeModuleTypeFacetCore( XMLWriter writer, String packaging )
97 {
98 writer.startElement( J2EE_J2EESETTINGS );
99 writer.addAttribute( J2EE_VERSION, "600" );
100 writer.startElement( J2EE_MODULEVERSION );
101 if ( Constants.PROJECT_PACKAGING_WAR.equalsIgnoreCase( packaging ) )
102 {
103
104 String servletVersion;
105 if ( config.getJeeVersion() != null )
106 {
107 servletVersion = JeeUtils.getJeeDescriptorFromJeeVersion( config.getJeeVersion() ).getServletVersion();
108 }
109 else
110 {
111 servletVersion = JeeUtils.resolveServletVersion( config.getProject() );
112 }
113 writer.writeText( "" + servletVersion.charAt( 0 ) + servletVersion.charAt( 2 ) );
114 }
115 else if ( Constants.PROJECT_PACKAGING_EJB.equalsIgnoreCase( packaging ) )
116 {
117
118 String ejbVersion;
119 if ( config.getJeeVersion() != null )
120 {
121 ejbVersion = JeeUtils.getJeeDescriptorFromJeeVersion( config.getJeeVersion() ).getEjbVersion();
122 }
123 else
124 {
125 ejbVersion = JeeUtils.resolveEjbVersion( config.getProject() );
126 }
127 writer.writeText( "" + ejbVersion.charAt( 0 ) + ejbVersion.charAt( 2 ) );
128 }
129 else if ( Constants.PROJECT_PACKAGING_EAR.equalsIgnoreCase( packaging ) )
130 {
131
132 String jeeVersion;
133 if ( config.getJeeVersion() != null )
134 {
135 jeeVersion = JeeUtils.getJeeDescriptorFromJeeVersion( config.getJeeVersion() ).getJeeVersion();
136 }
137 else
138 {
139 jeeVersion = JeeUtils.resolveJeeVersion( config.getProject() );
140 }
141 writer.writeText( "" + jeeVersion.charAt( 0 ) + jeeVersion.charAt( 2 ) );
142 }
143 writer.endElement();
144 writer.endElement();
145 }
146
147 }