1   package org.apache.felix.bundleplugin;
2   
3   
4   /*
5    * Licensed to the Apache Software Foundation (ASF) under one
6    * or more contributor license agreements.  See the NOTICE file
7    * distributed with this work for additional information
8    * regarding copyright ownership.  The ASF licenses this file
9    * to you under the Apache License, Version 2.0 (the
10   * "License"); you may not use this file except in compliance
11   * with the License.  You may obtain a copy of the License at
12   * 
13   * http://www.apache.org/licenses/LICENSE-2.0
14   * 
15   * Unless required by applicable law or agreed to in writing,
16   * software distributed under the License is distributed on an
17   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
18   * KIND, either express or implied.  See the License for the
19   * specific language governing permissions and limitations
20   * under the License.
21   */
22  
23  import java.io.File;
24  import java.util.Collections;
25  import java.util.Map;
26  
27  import org.apache.maven.plugin.testing.stubs.ArtifactStub;
28  import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
29  import org.apache.maven.project.MavenProject;
30  import org.apache.maven.shared.osgi.DefaultMaven2OsgiConverter;
31  
32  
33  /**
34   * Test for {@link BundleAllPlugin}
35   * 
36   * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
37   */
38  public class BundleAllPluginTest extends AbstractBundlePluginTest
39  {
40  
41      private BundleAllPlugin plugin;
42  
43  
44      protected void setUp() throws Exception
45      {
46          super.setUp();
47          init();
48      }
49  
50  
51      private void init()
52      {
53          plugin = new BundleAllPlugin();
54          File baseDirectory = new File( getBasedir() );
55          File buildDirectory = new File( baseDirectory, "target" );
56          plugin.setBuildDirectory( buildDirectory.getPath() );
57          File outputDirectory = new File( buildDirectory, "test-classes" );
58          plugin.setOutputDirectory( outputDirectory );
59          plugin.setMaven2OsgiConverter( new DefaultMaven2OsgiConverter() );
60      }
61  
62  
63      public void testSnapshotMatch()
64      {
65          ArtifactStub artifact = getArtifactStub();
66          String bundleName;
67  
68          artifact.setVersion( "2.1-SNAPSHOT" );
69          bundleName = "group.artifact_2.1.0.20070207_193904_2.jar";
70  
71          assertTrue( plugin.snapshotMatch( artifact, bundleName ) );
72  
73          artifact.setVersion( "2-SNAPSHOT" );
74          assertFalse( plugin.snapshotMatch( artifact, bundleName ) );
75  
76          artifact.setArtifactId( "artifactx" );
77          artifact.setVersion( "2.1-SNAPSHOT" );
78          assertFalse( plugin.snapshotMatch( artifact, bundleName ) );
79      }
80  
81  
82      public void testNoReBundling() throws Exception
83      {
84          File testFile = getTestFile( "target/test-classes/org.apache.maven.maven-model_1.0.0.0.jar" );
85          if ( testFile.exists() )
86          {
87              testFile.delete();
88          }
89  
90          ArtifactStub artifact = new ArtifactStub();
91          artifact.setGroupId( "group" );
92          artifact.setArtifactId( "artifact" );
93          artifact.setVersion( "1.0.0.0" );
94  
95          MavenProject project = new MavenProjectStub();
96          project.setGroupId( artifact.getGroupId() );
97          project.setArtifactId( artifact.getArtifactId() );
98          project.setVersion( artifact.getVersion() );
99          project.setArtifact( artifact );
100         project.setArtifacts( Collections.EMPTY_SET );
101         project.setDependencyArtifacts( Collections.EMPTY_SET );
102         File bundleFile = getTestFile( "src/test/resources/org.apache.maven.maven-model_2.1.0.SNAPSHOT.jar" );
103         artifact.setFile( bundleFile );
104 
105         BundleInfo bundleInfo = plugin.bundle( project );
106 
107         Map exports = bundleInfo.getExportedPackages();
108         String[] packages = new String[]
109             { "org.apache.maven.model.io.jdom", "org.apache.maven.model" };
110 
111         for ( int i = 0; i < packages.length; i++ )
112         {
113             assertTrue( "Bundle info does not contain a package that it is  exported in the manifest: " + packages[i],
114                 exports.containsKey( packages[i] ) );
115         }
116 
117         assertFalse( "Bundle info contains a package that it is not exported in the manifest",
118             exports.containsKey( "org.apache.maven.model.io.xpp3" ) );
119     }
120 
121     //    public void testRewriting()
122     //        throws Exception
123     //    {
124     //
125     //        MavenProjectStub project = new MavenProjectStub();
126     //        project.setArtifact( getArtifactStub() );
127     //        project.getArtifact().setFile( getTestBundle() );
128     //        project.setDependencyArtifacts( Collections.EMPTY_SET );
129     //        project.setVersion( project.getArtifact().getVersion() );
130     //
131     //        File output = new File( plugin.getBuildDirectory(), plugin.getBundleName( project ) );
132     //        boolean delete = output.delete();
133     //
134     //        plugin.bundle( project );
135     //
136     //        init();
137     //        try
138     //        {
139     //            plugin.bundle( project );
140     //            fail();
141     //        }
142     //        catch ( RuntimeException e )
143     //        {
144     //            // expected
145     //        }
146     //    }
147 }