From 5f3d4a7de54c13dff30f3e61761b693e26c406fa Mon Sep 17 00:00:00 2001 From: Mark Donszelmann Date: Thu, 5 Nov 2009 16:17:51 +0100 Subject: Added test for layout change, it0016 --- .../org/apache/maven/plugin/nar/NarLayout21.java | 100 ++++++++++++++++++--- 1 file changed, 88 insertions(+), 12 deletions(-) (limited to 'src/main/java/org/apache/maven/plugin/nar/NarLayout21.java') diff --git a/src/main/java/org/apache/maven/plugin/nar/NarLayout21.java b/src/main/java/org/apache/maven/plugin/nar/NarLayout21.java index 074d594..61c3a19 100644 --- a/src/main/java/org/apache/maven/plugin/nar/NarLayout21.java +++ b/src/main/java/org/apache/maven/plugin/nar/NarLayout21.java @@ -2,6 +2,10 @@ package org.apache.maven.plugin.nar; import java.io.File; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.project.MavenProject; +import org.apache.maven.project.MavenProjectHelper; + /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file @@ -35,16 +39,16 @@ import java.io.File; * @author Mark Donszelmann (Mark.Donszelmann@gmail.com) */ public class NarLayout21 - implements NarLayout + extends AbstractNarLayout { - public File getAolDirectory( File baseDir ) + private File getNoarchDirectory( File baseDir ) { - return new File( baseDir, "aol" ); + return new File( baseDir, "noarch" ); } - public File getNoarchDirectory( File baseDir ) + private File getAolDirectory( File baseDir ) { - return new File( baseDir, "noarch" ); + return new File( baseDir, "aol" ); } private File getAolDirectory( File baseDir, String aol, String type ) @@ -58,23 +62,95 @@ public class NarLayout21 */ public File getIncludeDirectory( File baseDir ) { - File dir = getNoarchDirectory( baseDir ); - dir = new File( dir, "include" ); - return dir; + return new File( getNoarchDirectory( baseDir ), "include" ); } /* * (non-Javadoc) - * @see org.apache.maven.plugin.nar.NarLayout#getLibDir(org.apache.maven.plugin.nar.AOL, java.lang.String) + * @see org.apache.maven.plugin.nar.NarLayout#getLibDir(java.io.File, org.apache.maven.plugin.nar.AOL, + * java.lang.String) */ public File getLibDirectory( File baseDir, String aol, String type ) { + if ( type.equals( Library.EXECUTABLE ) ) + { + System.err.println( "WARNING, Replace call to getLibDirectory with getBinDirectory" ); + Thread.dumpStack(); + } + File dir = getAolDirectory( baseDir, aol, type ); - dir = new File( dir, type.equals( Library.EXECUTABLE ) ? "bin" : "lib" ); + dir = new File( dir, "lib" ); dir = new File( dir, aol.toString() ); - if ( !type.equals( Library.EXECUTABLE ) ) - dir = new File( dir, type ); + dir = new File( dir, type ); return dir; } + /* + * (non-Javadoc) + * @see org.apache.maven.plugin.nar.NarLayout#getLibDir(java.io.File, org.apache.maven.plugin.nar.AOL, + * java.lang.String) + */ + public File getBinDirectory( File baseDir, String aol ) + { + File dir = getAolDirectory( baseDir, aol, Library.EXECUTABLE ); + dir = new File( dir, "bin" ); + dir = new File( dir, aol.toString() ); + return dir; + } + + /* + * (non-Javadoc) + * @see org.apache.maven.plugin.nar.NarLayout#attachNars(java.io.File, org.apache.maven.project.MavenProjectHelper, + * org.apache.maven.project.MavenProject, org.apache.maven.plugin.nar.NarInfo) + */ + public void attachNars( File baseDir, MavenProjectHelper projectHelper, MavenProject project, NarInfo narInfo ) + throws MojoExecutionException + { + if (getNoarchDirectory( baseDir ).exists()) { + attachNar( projectHelper, project, "noarch", getNoarchDirectory( baseDir ), "*/**" ); + narInfo.setNar( null, "noarch", project.getGroupId() + ":" + project.getArtifactId() + ":" + + NarConstants.NAR_TYPE + ":" + "noarch" ); + } + + String bindingType = null; + File classifierDir = getAolDirectory( baseDir ); + String[] classifier = classifierDir.list(); + for ( int i = 0; ( classifier != null ) && ( i < classifier.length ); i++ ) + { + File dir = new File( classifierDir, classifier[i] ); + attachNar( projectHelper, project, classifier[i], dir, "*/**" ); + + // look for type in aol/lib//type + String type = Library.EXECUTABLE; + File libDir = new File( dir, "lib" ); + String[] aolDir = libDir.list(); + if ( ( aolDir != null ) && aolDir.length > 0 ) + { + String[] typeDir = new File( libDir, aolDir[0] ).list(); + if ( ( typeDir != null ) && ( typeDir.length > 0 ) ) + { + type = typeDir[0]; + } + } + + narInfo.setNar( null, type, project.getGroupId() + ":" + project.getArtifactId() + ":" + + NarConstants.NAR_TYPE + ":" + "${aol}" + "-" + type ); + + // set if not Executable + if ( !type.equals( Library.EXECUTABLE ) ) + { + // and not set or override if SHARED + if ( ( bindingType == null ) || type.equals( Library.SHARED ) ) + { + bindingType = type; + } + } + + } + + if ( narInfo.getBinding( null, null ) == null ) + { + narInfo.setBinding( null, bindingType != null ? bindingType : Library.NONE ); + } + } } -- cgit v1.2.3