1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugin.eclipse.writers.wtp;
20
21 import java.io.File;
22 import java.io.FileOutputStream;
23 import java.io.IOException;
24 import java.io.OutputStreamWriter;
25 import java.io.Writer;
26 import java.util.Iterator;
27 import java.util.Map.Entry;
28
29 import org.apache.maven.plugin.MojoExecutionException;
30 import org.apache.maven.plugin.eclipse.Constants;
31 import org.apache.maven.plugin.eclipse.Messages;
32 import org.apache.maven.plugin.ide.IdeUtils;
33 import org.apache.maven.plugin.ide.JeeUtils;
34 import org.codehaus.plexus.util.IOUtil;
35 import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
36 import org.codehaus.plexus.util.xml.XMLWriter;
37
38
39
40
41
42
43
44
45 public class EclipseWtpFacetsWriter
46 extends AbstractWtpResourceWriter
47 {
48
49 private static final String FACET_JST_EAR = "jst.ear";
50
51 private static final String FACET_JST_UTILITY = "jst.utility";
52
53 private static final String FACET_JST_EJB = "jst.ejb";
54
55 private static final String FACET_JST_WEB = "jst.web";
56
57 private static final String FACET_JST_JAVA = "jst.java";
58
59 private static final String ATTR_VERSION = "version";
60
61 private static final String ELT_INSTALLED = "installed";
62
63 private static final String ATTR_FACET = "facet";
64
65 private static final String ELT_FIXED = "fixed";
66
67 private static final String ELT_FACETED_PROJECT = "faceted-project";
68
69
70
71
72 private static final String DIR_WTP_SETTINGS = ".settings";
73
74
75
76
77 private static final String FILE_FACET_CORE_XML = "org.eclipse.wst.common.project.facet.core.xml";
78
79
80
81
82 public void write()
83 throws MojoExecutionException
84 {
85
86
87 File settingsDir = new File( config.getEclipseProjectDirectory(), DIR_WTP_SETTINGS );
88 settingsDir.mkdirs();
89
90 Writer w;
91
92 String packaging = config.getPackaging();
93
94
95 try
96 {
97 w = new OutputStreamWriter( new FileOutputStream( new File( settingsDir, FILE_FACET_CORE_XML ) ), "UTF-8" );
98 }
99 catch ( IOException ex )
100 {
101 throw new MojoExecutionException( Messages.getString( "EclipsePlugin.erroropeningfile" ), ex );
102 }
103 XMLWriter writer = new PrettyPrintXMLWriter( w );
104 writeModuleTypeFacetCore( writer, packaging );
105 IOUtil.close( w );
106 }
107
108
109
110
111
112
113
114 private void writeModuleTypeFacetCore( XMLWriter writer, String packaging )
115 {
116 writer.startElement( ELT_FACETED_PROJECT );
117
118 writer.startElement( ELT_FIXED );
119 writer.addAttribute( ATTR_FACET, FACET_JST_JAVA );
120 writer.endElement();
121 if ( Constants.PROJECT_PACKAGING_WAR.equalsIgnoreCase( packaging ) )
122 {
123 writer.startElement( ELT_FIXED );
124 writer.addAttribute( ATTR_FACET, FACET_JST_WEB );
125 writer.endElement();
126 writer.startElement( ELT_INSTALLED );
127 writer.addAttribute( ATTR_FACET, FACET_JST_WEB );
128 writer.addAttribute( ATTR_VERSION, JeeUtils.resolveServletVersion( config.getProject() ) );
129 writer.endElement();
130 }
131 else if ( Constants.PROJECT_PACKAGING_EJB.equalsIgnoreCase( packaging ) )
132 {
133 writer.startElement( ELT_FIXED );
134 writer.addAttribute( ATTR_FACET, FACET_JST_EJB );
135 writer.endElement();
136 writer.startElement( ELT_INSTALLED );
137 writer.addAttribute( ATTR_FACET, FACET_JST_EJB );
138 writer.addAttribute( ATTR_VERSION, JeeUtils.resolveEjbVersion( config.getProject() ) );
139 writer.endElement();
140 }
141 else if ( Constants.PROJECT_PACKAGING_EAR.equalsIgnoreCase( packaging ) )
142 {
143 writer.startElement( ELT_FIXED );
144 writer.addAttribute( ATTR_FACET, FACET_JST_EAR );
145 writer.endElement();
146 writer.startElement( ELT_INSTALLED );
147 writer.addAttribute( ATTR_FACET, FACET_JST_EAR );
148 writer.addAttribute( ATTR_VERSION, JeeUtils.resolveJeeVersion( config.getProject() ) );
149 writer.endElement();
150 }
151 else if ( Constants.PROJECT_PACKAGING_JAR.equalsIgnoreCase( packaging ) )
152 {
153 writer.startElement( ELT_FIXED );
154 writer.addAttribute( ATTR_FACET, FACET_JST_UTILITY );
155 writer.endElement();
156 writer.startElement( ELT_INSTALLED );
157 writer.addAttribute( ATTR_FACET, FACET_JST_UTILITY );
158 writer.addAttribute( ATTR_VERSION, "1.0" );
159 writer.endElement();
160 }
161
162
163 writer.startElement( ELT_INSTALLED );
164 writer.addAttribute( ATTR_FACET, FACET_JST_JAVA );
165 writer.addAttribute( ATTR_VERSION, IdeUtils.resolveJavaVersion( config.getProject() ) );
166 writer.endElement();
167
168 writeAdditionalProjectFacets( writer );
169
170 writer.endElement();
171 }
172
173
174
175
176
177
178
179 private void writeAdditionalProjectFacets( XMLWriter writer )
180 {
181 if ( config.getProjectFacets() == null )
182 {
183 return;
184 }
185
186 Iterator facetIterator = config.getProjectFacets().entrySet().iterator();
187 while ( facetIterator.hasNext() )
188 {
189 Entry facetEntry = (Entry) facetIterator.next();
190
191 writer.startElement( ELT_INSTALLED );
192 writer.addAttribute( ATTR_FACET, (String) facetEntry.getKey() );
193 writer.addAttribute( ATTR_VERSION, (String) facetEntry.getValue() );
194 writer.endElement();
195 }
196 }
197
198 }