[SM-2102]GenerateServiceAssemblyMojo should be able to pacakge SA according to serviceUnitName specified for the SU

git-svn-id: https://svn.apache.org/repos/asf/servicemix/maven-plugins/trunk@1159082 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/AbstractJbiMojo.java b/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/AbstractJbiMojo.java
index e94c955..86e5251 100644
--- a/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/AbstractJbiMojo.java
+++ b/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/AbstractJbiMojo.java
@@ -42,6 +42,7 @@
 import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.DependencyManagement;
+import org.apache.maven.model.Plugin;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.project.MavenProject;
@@ -51,6 +52,7 @@
 import org.apache.servicemix.maven.plugin.jbi.JbiResolutionListener.Node;
 import org.codehaus.plexus.archiver.jar.Manifest;
 import org.codehaus.plexus.archiver.jar.ManifestException;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
 
 public abstract class AbstractJbiMojo extends AbstractMojo {
 
@@ -349,5 +351,26 @@
         sb.append(version.substring(matcher.end(), version.length()));
         return sb.toString();
     }
+    
+    protected String getServiceUnitName(MavenProject project) {
+		for (Object elem : project.getBuildPlugins()) {
+			if (elem instanceof Plugin) {
+				Plugin plugin = (Plugin)elem;
+				if (plugin.getGroupId().equals("org.apache.servicemix.tooling")
+						&& plugin.getArtifactId().equals("jbi-maven-plugin")) {
+					Xpp3Dom configuration = (Xpp3Dom) plugin.getConfiguration();
+					if (configuration != null) {
+						Xpp3Dom serviceUnitName = configuration.getChild("serviceUnitName");
+						if (serviceUnitName != null) {
+							return serviceUnitName.getValue();
+						}
+					}
+					break;
+				}
+			}
+		}
+		return null;
+	}
+
 
 }
diff --git a/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/GenerateServiceAssemblyDescriptorMojo.java b/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/GenerateServiceAssemblyDescriptorMojo.java
index f1285ec..ef07ba9 100644
--- a/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/GenerateServiceAssemblyDescriptorMojo.java
+++ b/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/GenerateServiceAssemblyDescriptorMojo.java
@@ -220,7 +220,12 @@
                     if (fileName.equals("classes")) {
                     	fileName = artifact.getArtifactId() + "-" + artifact.getVersion() + ".jar";
                     }
-                    fileName = fileName.substring(0, fileName.lastIndexOf('.')) + ".zip";
+                    String suName = getServiceUnitName(project);
+                    if (suName != null && suName.length() > 0) {
+                    	fileName = suName;
+                    } else {
+                    	fileName = fileName.substring(0, fileName.lastIndexOf('.')) + ".zip";
+                    }
                     info.setFilename(fileName);
                     info.setComponent(getComponentName(project, artifacts, artifact));
                     info.setDescription(project.getDescription());
diff --git a/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/GenerateServiceAssemblyMojo.java b/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/GenerateServiceAssemblyMojo.java
index 3f2a8ec..cdbfc6b 100644
--- a/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/GenerateServiceAssemblyMojo.java
+++ b/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/GenerateServiceAssemblyMojo.java
@@ -22,6 +22,7 @@
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
+import org.apache.maven.model.Plugin;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.project.MavenProject;
@@ -30,6 +31,7 @@
 import org.codehaus.plexus.archiver.jar.Manifest;
 import org.codehaus.plexus.util.DirectoryScanner;
 import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
 
 import java.io.File;
 import java.io.IOException;
@@ -133,9 +135,14 @@
                 }
                 if (project != null && project.getPackaging().equals("jbi-service-unit")) {
                     try {
-                        String path = artifact.getFile().getAbsolutePath();
-                        path = path.substring(0, path.lastIndexOf('.')) + ".zip";
-                        FileUtils.copyFileToDirectory(new File(path), workDirectory);
+                    	String suName = getServiceUnitName(project);
+                    	String path = artifact.getFile().getAbsolutePath();
+                    	if (suName != null && suName.length() > 0) {
+                    		path = path.substring(0, path.lastIndexOf(File.separator)) + File.separator + suName;
+                    	} else {
+                    		path = path.substring(0, path.lastIndexOf('.')) + ".zip";
+                    	}
+                    	FileUtils.copyFileToDirectory(new File(path), workDirectory);
                     } catch (IOException e) {
                         throw new JbiPluginException(e);
                     }
@@ -143,5 +150,4 @@
             }
         }
     }
-
 }