View Javadoc
1   package org.apache.maven.plugins.war.overlay;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import static org.apache.maven.plugins.war.Overlay.DEFAULT_INCLUDES;
23  import static org.apache.maven.plugins.war.Overlay.DEFAULT_EXCLUDES;
24  
25  import org.apache.maven.plugin.testing.stubs.ArtifactStub;
26  import org.apache.maven.plugins.war.Overlay;
27  import org.apache.maven.plugins.war.stub.MavenProjectArtifactsStub;
28  import org.apache.maven.plugins.war.stub.WarArtifactStub;
29  import org.codehaus.plexus.PlexusTestCase;
30  
31  import java.util.ArrayList;
32  import java.util.List;
33  
34  /**
35   * @author Stephane Nicoll
36   */
37  public class OverlayManagerTest
38      extends PlexusTestCase
39  {
40  
41  
42      public void testEmptyProject()
43          throws Exception
44      {
45          final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
46          final List<Overlay> overlays = new ArrayList<>();
47          try
48          {
49              final Overlay currentProjectOverlay = Overlay.createInstance();
50              OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES,
51                                                           currentProjectOverlay );
52              assertNotNull( manager.getOverlays() );
53              assertEquals( 1, manager.getOverlays().size() );
54              assertEquals( currentProjectOverlay, manager.getOverlays().get( 0 ) );
55          }
56          catch ( InvalidOverlayConfigurationException e )
57          {
58              e.printStackTrace();
59              fail( "Should not have failed to validate a valid overly config " + e.getMessage() );
60          }
61      }
62  
63      public void testAutodetectSimpleOverlay( Overlay currentProjectOverlay )
64          throws Exception
65      {
66  
67          final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
68          final ArtifactStub first = newWarArtifact( "test", "test-webapp" );
69          project.addArtifact( first );
70  
71          final List<Overlay> overlays = new ArrayList<>();
72  
73          try
74          {
75              final Overlay overlay = currentProjectOverlay;
76              OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES,
77                                                           overlay );
78              assertNotNull( manager.getOverlays() );
79              assertEquals( 2, manager.getOverlays().size() );
80              assertEquals( overlay, manager.getOverlays().get( 0 ) );
81              assertEquals( new DefaultOverlay( first ), manager.getOverlays().get( 1 ) );
82          }
83          catch ( InvalidOverlayConfigurationException e )
84          {
85              e.printStackTrace();
86              fail( "Should not have failed to validate a valid overlay config " + e.getMessage() );
87          }
88      }
89  
90      public void testSimpleOverlay()
91          throws Exception
92      {
93  
94          final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
95          final ArtifactStub first = newWarArtifact( "test", "test-webapp" );
96          project.addArtifact( first );
97  
98          final List<Overlay> overlays = new ArrayList<>();
99          overlays.add( new DefaultOverlay( first ) );
100 
101         try
102         {
103             final Overlay currentProjectOverlay = Overlay.createInstance();
104             OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES,
105                                                          currentProjectOverlay );
106             assertNotNull( manager.getOverlays() );
107             assertEquals( 2, manager.getOverlays().size() );
108             assertEquals( Overlay.createInstance(), manager.getOverlays().get( 0 ) );
109             assertEquals( overlays.get( 0 ), manager.getOverlays().get( 1 ) );
110         }
111         catch ( InvalidOverlayConfigurationException e )
112         {
113             e.printStackTrace();
114             fail( "Should not have failed to validate a valid overlay config " + e.getMessage() );
115         }
116     }
117 
118     public void testUnknownOverlay()
119         throws Exception
120     {
121 
122         final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
123         final ArtifactStub first = newWarArtifact( "test", "test-webapp" );
124         project.addArtifact( first );
125 
126         final List<Overlay> overlays = new ArrayList<>();
127         overlays.add( new Overlay( "test", "test-webapp-2" ) );
128 
129         try
130         {
131             final Overlay currentProjectOverlay = Overlay.createInstance();
132             new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES, currentProjectOverlay );
133             fail( "Should have failed to validate an unknown overlay" );
134         }
135         catch ( InvalidOverlayConfigurationException e )
136         {
137             // OK
138         }
139     }
140 
141     public void testCustomCurrentProject()
142         throws Exception
143     {
144 
145         final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
146         final ArtifactStub first = newWarArtifact( "test", "test-webapp" );
147         final ArtifactStub second = newWarArtifact( "test", "test-webapp-2" );
148         project.addArtifact( first );
149         project.addArtifact( second );
150 
151         final List<Overlay> overlays = new ArrayList<>();
152         overlays.add( new DefaultOverlay( first ) );
153         final Overlay currentProjectOverlay = Overlay.createInstance();
154         overlays.add( currentProjectOverlay );
155 
156         try
157         {
158             OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES,
159                                                          currentProjectOverlay );
160             assertNotNull( manager.getOverlays() );
161             assertEquals( 3, manager.getOverlays().size() );
162             assertEquals( overlays.get( 0 ), manager.getOverlays().get( 0 ) );
163             assertEquals( currentProjectOverlay, manager.getOverlays().get( 1 ) );
164             assertEquals( new DefaultOverlay( second ), manager.getOverlays().get( 2 ) );
165 
166         }
167         catch ( InvalidOverlayConfigurationException e )
168         {
169             e.printStackTrace();
170             fail( "Should not have failed to validate a valid overlay config " + e.getMessage() );
171         }
172     }
173 
174     public void testOverlaysWithSameArtifactAndGroupId()
175         throws Exception
176     {
177 
178         final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
179         final ArtifactStub first = newWarArtifact( "test", "test-webapp" );
180         final ArtifactStub second = newWarArtifact( "test", "test-webapp", "my-classifier" );
181 
182         project.addArtifact( first );
183         project.addArtifact( second );
184 
185         final List<Overlay> overlays = new ArrayList<>();
186         overlays.add( new DefaultOverlay( first ) );
187         overlays.add( new DefaultOverlay( second ) );
188 
189         try
190         {
191             final Overlay currentProjectOverlay = Overlay.createInstance();
192             OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES,
193                                                          currentProjectOverlay );
194             assertNotNull( manager.getOverlays() );
195             assertEquals( 3, manager.getOverlays().size() );
196             assertEquals( currentProjectOverlay, manager.getOverlays().get( 0 ) );
197             assertEquals( overlays.get( 0 ), manager.getOverlays().get( 1 ) );
198             assertEquals( overlays.get( 1 ), manager.getOverlays().get( 2 ) );
199 
200         }
201         catch ( InvalidOverlayConfigurationException e )
202         {
203             e.printStackTrace();
204             fail( "Should not have failed to validate a valid overlay config " + e.getMessage() );
205         }
206     }
207 
208 
209     protected ArtifactStub newWarArtifact( String groupId, String artifactId, String classifier )
210     {
211         final WarArtifactStub a = new WarArtifactStub( getBasedir() );
212         a.setGroupId( groupId );
213         a.setArtifactId( artifactId );
214         if ( classifier != null )
215         {
216             a.setClassifier( classifier );
217         }
218         return a;
219     }
220 
221     protected ArtifactStub newWarArtifact( String groupId, String artifactId )
222     {
223         return newWarArtifact( groupId, artifactId, null );
224 
225     }
226 }