Coverage Report - org.apache.maven.plugin.eclipse.writers.myeclipse.MyEclipseMetadataWriter
 
Classes in this File Line Coverage Branch Coverage Complexity
MyEclipseMetadataWriter
0%
0/43
0%
0/22
7
 
 1  
 package org.apache.maven.plugin.eclipse.writers.myeclipse;
 2  
 
 3  
 import java.io.File;
 4  
 import java.io.FileWriter;
 5  
 import java.io.IOException;
 6  
 
 7  
 import org.apache.maven.plugin.MojoExecutionException;
 8  
 import org.apache.maven.plugin.eclipse.Constants;
 9  
 import org.apache.maven.plugin.eclipse.Messages;
 10  
 import org.apache.maven.plugin.eclipse.writers.AbstractEclipseWriter;
 11  
 import org.apache.maven.plugin.ide.IdeUtils;
 12  
 import org.apache.maven.plugin.ide.JeeDescriptor;
 13  
 import org.apache.maven.plugin.ide.JeeUtils;
 14  
 import org.codehaus.plexus.util.IOUtil;
 15  
 import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
 16  
 import org.codehaus.plexus.util.xml.XMLWriter;
 17  
 
 18  
 /**
 19  
  * MyEclipse .mymetadata configuration file writer
 20  
  * 
 21  
  * @author Olivier Jacob
 22  
  */
 23  0
 public class MyEclipseMetadataWriter
 24  
     extends AbstractEclipseWriter
 25  
 {
 26  
 
 27  
     private static final String MYECLIPSE_MYMETADATA_FILENAME = ".mymetadata";
 28  
 
 29  
     private static final String MYECLIPSE_METADATA_PROJECT = "project-module";
 30  
 
 31  
     private static final String MYECLIPSE_METADATA_PROJECT_TYPE = "type";
 32  
 
 33  
     private static final String MYECLIPSE_METADATA_PROJECT_NAME = "name";
 34  
 
 35  
     private static final String MYECLIPSE_METADATA_PROJECT_ID = "id";
 36  
 
 37  
     private static final String MYECLIPSE_METADATA_PROJECT_CONTEXT_ROOT = "context-root";
 38  
 
 39  
     private static final String MYECLIPSE_METADATA_PROJECT_J2EE_SPEC = "j2ee-spec";
 40  
 
 41  
     private static final String MYECLIPSE_METADATA_PROJECT_ARCHIVE = "archive";
 42  
 
 43  
     private static final String MYECLIPSE_METADATA_PROJECT_TYPE_WAR = "WEB";
 44  
 
 45  
     private static final String MYECLIPSE_METADATA_PROJECT_TYPE_EAR = "EAR";
 46  
 
 47  
     private static final String MYECLIPSE_METADATA_PROJECT_TYPE_EJB = "EJB";
 48  
 
 49  
     private static final String MYECLIPSE_METADATA_PROJECT_ATTRIBUTES = "attributes";
 50  
 
 51  
     private static final String MYECLIPSE_METADATA_PROJECT_ATTRIBUTE = "attribute";
 52  
 
 53  
     /**
 54  
      * Writer entry point
 55  
      * 
 56  
      * @throws MojoExecutionException
 57  
      */
 58  
     public void write()
 59  
         throws MojoExecutionException
 60  
     {
 61  0
         String packaging = config.getProject().getPackaging();
 62  
 
 63  0
         if ( !Constants.PROJECT_PACKAGING_EAR.equalsIgnoreCase( packaging )
 64  
             && !Constants.PROJECT_PACKAGING_WAR.equalsIgnoreCase( packaging )
 65  
             && !Constants.PROJECT_PACKAGING_EJB.equalsIgnoreCase( packaging ) )
 66  
         {
 67  0
             return;
 68  
         }
 69  
 
 70  
         FileWriter w;
 71  
 
 72  
         try
 73  
         {
 74  0
             w = new FileWriter( new File( config.getEclipseProjectDirectory(), MYECLIPSE_MYMETADATA_FILENAME ) );
 75  
         }
 76  0
         catch ( IOException ex )
 77  
         {
 78  0
             throw new MojoExecutionException( Messages.getString( "EclipsePlugin.erroropeningfile" ), ex ); //$NON-NLS-1$
 79  0
         }
 80  
 
 81  0
         XMLWriter writer = new PrettyPrintXMLWriter( w, "UTF-8", null );
 82  
 
 83  0
         writer.startElement( MYECLIPSE_METADATA_PROJECT );
 84  0
         writer.addAttribute( MYECLIPSE_METADATA_PROJECT_TYPE, getMyEclipseProjectType( packaging ) );
 85  0
         writer.addAttribute( MYECLIPSE_METADATA_PROJECT_NAME, config.getEclipseProjectName() );
 86  0
         writer.addAttribute( MYECLIPSE_METADATA_PROJECT_ID, config.getEclipseProjectName() );
 87  
 
 88  0
         if ( Constants.PROJECT_PACKAGING_WAR.equalsIgnoreCase( packaging ) )
 89  
         {
 90  
             // Find web application context root from maven-war-plugin configuration.
 91  
             // ArtifactId is used as the default value
 92  0
             String warContextRoot =
 93  
                 IdeUtils.getPluginSetting( config.getProject(), JeeUtils.ARTIFACT_MAVEN_WAR_PLUGIN, "warContextRoot",//$NON-NLS-1$
 94  
                                            "/" + config.getProject().getArtifactId() );
 95  
 
 96  0
             writer.addAttribute( MYECLIPSE_METADATA_PROJECT_CONTEXT_ROOT, warContextRoot );
 97  
 
 98  0
             writer.addAttribute( MYECLIPSE_METADATA_PROJECT_J2EE_SPEC, getJeeVersion() );
 99  
             // TODO : use maven final name
 100  0
             writer.addAttribute( MYECLIPSE_METADATA_PROJECT_ARCHIVE, config.getEclipseProjectName() + ".war" );
 101  
         }
 102  
 
 103  0
         if ( Constants.PROJECT_PACKAGING_EAR.equalsIgnoreCase( packaging ) )
 104  
         {
 105  
             // TODO : use maven final name
 106  0
             writer.addAttribute( MYECLIPSE_METADATA_PROJECT_ARCHIVE, config.getEclipseProjectName() + ".ear" );
 107  
         }
 108  
 
 109  0
         writer.startElement( MYECLIPSE_METADATA_PROJECT_ATTRIBUTES );
 110  0
         if ( Constants.PROJECT_PACKAGING_WAR.equalsIgnoreCase( packaging ) )
 111  
         {
 112  0
             writer.startElement( MYECLIPSE_METADATA_PROJECT_ATTRIBUTE );
 113  0
             writer.addAttribute( "name", "webrootdir" );
 114  
             // TODO : retrieve this from project configuration
 115  0
             writer.addAttribute( "value", "src/main/webapp" );
 116  0
             writer.endElement();
 117  
         }
 118  
         // Close <attributes>
 119  0
         writer.endElement();
 120  
 
 121  
         // Close <project-module>
 122  0
         writer.endElement();
 123  
 
 124  0
         IOUtil.close( w );
 125  0
     }
 126  
 
 127  
     /**
 128  
      * @param packaging maven project packaging
 129  
      * @return MyEclipse project type (EAR, WAR, EJB)
 130  
      */
 131  
     private String getMyEclipseProjectType( String packaging )
 132  
     {
 133  0
         if ( Constants.PROJECT_PACKAGING_WAR.equalsIgnoreCase( packaging ) )
 134  
         {
 135  0
             return MYECLIPSE_METADATA_PROJECT_TYPE_WAR;
 136  
         }
 137  0
         if ( Constants.PROJECT_PACKAGING_EAR.equalsIgnoreCase( packaging ) )
 138  
         {
 139  0
             return MYECLIPSE_METADATA_PROJECT_TYPE_EAR;
 140  
         }
 141  0
         if ( Constants.PROJECT_PACKAGING_EJB.equalsIgnoreCase( packaging ) )
 142  
         {
 143  0
             return MYECLIPSE_METADATA_PROJECT_TYPE_EJB;
 144  
         }
 145  
         // Should never be reached
 146  0
         return null;
 147  
     }
 148  
 
 149  
     /**
 150  
      * Find JEE version from the project dependencies : find version from 'j2ee.jar' artifact or from 'servlet-api'
 151  
      * 
 152  
      * @return the JEE version for the project (1.2, 1.3, 1.4, 1.5)
 153  
      * @see org.apache.maven.plugin.ide.JeeUtils#resolveJeeVersion(org.apache.maven.project.MavenProject)
 154  
      */
 155  
     private String getJeeVersion()
 156  
     {
 157  
         String jeeVersion;
 158  0
         if ( config.getJeeVersion() != null )
 159  
         {
 160  0
             jeeVersion = JeeUtils.getJeeDescriptorFromJeeVersion( config.getJeeVersion() ).getJeeVersion();
 161  
         }
 162  
         else
 163  
         {
 164  0
             jeeVersion =
 165  
                 JeeUtils.getJeeDescriptorFromServletVersion( JeeUtils.resolveServletVersion( config.getProject() ) ).getJeeVersion();
 166  
         }
 167  
 
 168  0
         if ( jeeVersion == null )
 169  
         {
 170  0
             return JeeDescriptor.JEE_1_4;
 171  
         }
 172  
 
 173  0
         return jeeVersion;
 174  
     }
 175  
 }