You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by pa...@apache.org on 2008/07/08 17:49:26 UTC

svn commit: r674862 - in /directory/daemon/branches/bigbang/plugin/src/main: java/org/apache/directory/daemon/installers/ java/org/apache/directory/daemon/installers/archive/ resources/org/apache/directory/daemon/installers/archive/

Author: pamarcelot
Date: Tue Jul  8 08:49:25 2008
New Revision: 674862

URL: http://svn.apache.org/viewvc?rev=674862&view=rev
Log:
Fix for DIRSERVER-931 (Provide a zip/tar.gz download for DS).

Added:
    directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/archive/
    directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/archive/ArchiveInstallerCommand.java
    directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/archive/ArchiveTarget.java
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/archive/
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/archive/apacheds.bat
    directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/archive/apacheds.sh
Modified:
    directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/ServiceInstallersMojo.java

Modified: directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/ServiceInstallersMojo.java
URL: http://svn.apache.org/viewvc/directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/ServiceInstallersMojo.java?rev=674862&r1=674861&r2=674862&view=diff
==============================================================================
--- directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/ServiceInstallersMojo.java (original)
+++ directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/ServiceInstallersMojo.java Tue Jul  8 08:49:25 2008
@@ -28,6 +28,8 @@
 import java.util.List;
 import java.util.Set;
 
+import org.apache.directory.daemon.installers.archive.ArchiveInstallerCommand;
+import org.apache.directory.daemon.installers.archive.ArchiveTarget;
 import org.apache.directory.daemon.installers.bin.BinInstallerCommand;
 import org.apache.directory.daemon.installers.bin.BinTarget;
 import org.apache.directory.daemon.installers.deb.DebInstallerCommand;
@@ -135,6 +137,10 @@
      * @parameter
      */
     private BinTarget[] binTargets;
+    /**
+     * @parameter
+     */
+    private ArchiveTarget[] archiveTargets;
 
     /**
      * @parameter 
@@ -295,6 +301,13 @@
                 binCmd = new BinInstallerCommand( this, ( BinTarget ) target );
                 binCmd.execute();
             }
+
+            if ( target instanceof ArchiveTarget )
+            {
+                ArchiveInstallerCommand archiveCmd = null;
+                archiveCmd = new ArchiveInstallerCommand( this, ( ArchiveTarget ) target );
+                archiveCmd.execute();
+            }
         }
     }
 
@@ -310,6 +323,7 @@
         addAll( allTargets, macOsXPkgTargets );
         addAll( allTargets, solarisPkgTargets );
         addAll( allTargets, binTargets );
+        addAll( allTargets, archiveTargets );
     }
 
 

Added: directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/archive/ArchiveInstallerCommand.java
URL: http://svn.apache.org/viewvc/directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/archive/ArchiveInstallerCommand.java?rev=674862&view=auto
==============================================================================
--- directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/archive/ArchiveInstallerCommand.java (added)
+++ directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/archive/ArchiveInstallerCommand.java Tue Jul  8 08:49:25 2008
@@ -0,0 +1,250 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.directory.daemon.installers.archive;
+
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Properties;
+
+import org.apache.directory.daemon.installers.MojoCommand;
+import org.apache.directory.daemon.installers.MojoHelperUtils;
+import org.apache.directory.daemon.installers.ServiceInstallersMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugin.logging.Log;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.taskdefs.BZip2;
+import org.apache.tools.ant.taskdefs.GZip;
+import org.apache.tools.ant.taskdefs.Tar;
+import org.apache.tools.ant.taskdefs.Zip;
+import org.apache.tools.ant.types.FileSet;
+import org.codehaus.plexus.util.FileUtils;
+
+
+/**
+ * Archive Installer command for any platform.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev: 434414 $
+ */
+public class ArchiveInstallerCommand extends MojoCommand
+{
+    private final Properties filterProperties = new Properties( System.getProperties() );
+    /** The archive target */
+    private final ArchiveTarget target;
+    /** The Maven logger */
+    private final Log log;
+
+
+    /**
+     * Creates a new instance of ArchiveInstallerCommand.
+     *
+     * @param mymojo
+     *      the Server Installers Mojo
+     * @param target
+     *      the target
+     */
+    public ArchiveInstallerCommand( ServiceInstallersMojo mymojo, ArchiveTarget target )
+    {
+        super( mymojo );
+        this.target = target;
+        this.log = mymojo.getLog();
+        initializeFiltering();
+    }
+
+
+    /**
+     * Performs the following:
+     * <ol>
+     *   <li>Bail if the archive type is unknown</li>
+     *   <li>Creates the Archive Installer for Apache DS</li>
+     * </ol>
+     */
+    public void execute() throws MojoExecutionException, MojoFailureException
+    {
+        // Getting the archive type
+        String archiveType = target.getArchiveType();
+
+        // Checking for a null archive type
+        if ( archiveType == null )
+        {
+            log.warn( "Archive type is null!" );
+            log.warn( "The build will continue, but please check the archive type of this installer " );
+            log.warn( "target" );
+            return;
+        }
+
+        // Checking for a known archive type
+        if ( !archiveType.equalsIgnoreCase( "zip" ) && !archiveType.equalsIgnoreCase( "tar" )
+            && !archiveType.equalsIgnoreCase( "tar.gz" ) && !archiveType.equalsIgnoreCase( "tar.bz2" ) )
+        {
+            log.warn( "Archive type is unknwown (" + archiveType + ")!" );
+            log.warn( "The build will continue, but please check the archive type of this installer " );
+            log.warn( "target" );
+            return;
+        }
+
+        File baseDirectory = target.getLayout().getBaseDirectory();
+        File imagesDirectory = baseDirectory.getParentFile();
+
+        log.info( "Creating Archive Installer..." );
+
+        // Creating the archive directory
+        File archiveDirectory = new File( imagesDirectory, target.getId() );
+
+        log.info( "Copying Archive Installer files" );
+
+        // Copying the resources files
+        try
+        {
+            // Copying the apacheds.bat file
+            MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, getClass().getResourceAsStream( "apacheds.bat" ),
+                new File( archiveDirectory, "apacheds.bat" ), false );
+
+            // Copying the apacheds.sh file
+            MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, getClass().getResourceAsStream( "apacheds.sh" ),
+                new File( archiveDirectory, "apacheds.sh" ), false );
+        }
+        catch ( IOException e )
+        {
+            log.error( e.getMessage() );
+            throw new MojoFailureException( "Failed to copy Archive Installer resources files." );
+        }
+
+        // Generating the Bin
+        log.info( "Generating Archive Installer" );
+        
+        Project project = new Project();
+        project.setBaseDir( archiveDirectory );
+        
+        // ZIP Archive
+        if ( archiveType.equalsIgnoreCase( "zip" ) )
+        {   
+            Zip zipTask = new Zip();
+            zipTask.setProject( project );
+            zipTask.setDestFile( new File( imagesDirectory, target.getFinalName() ) );
+            zipTask.setBasedir( archiveDirectory );
+            zipTask.execute();
+        }
+        // TAR Archive
+        else if ( archiveType.equalsIgnoreCase( "tar" ) )
+        {
+            Tar tarTask = new Tar();
+            tarTask.setProject( project );
+            tarTask.setDestFile( new File( imagesDirectory, target.getFinalName() ) );
+            tarTask.setBasedir( archiveDirectory );
+            tarTask.execute();
+        }
+        // TAR.GZ Archive
+        else if ( archiveType.equalsIgnoreCase( "tar.gz" ) )
+        {
+            File tarFile = new File( imagesDirectory, target.getId() + ".tar" );
+
+            Tar tarTask = new Tar();
+            tarTask.setProject( project );
+            tarTask.setDestFile( tarFile );
+            tarTask.setBasedir( archiveDirectory );
+            tarTask.execute();
+
+            GZip gzipTask = new GZip();
+            gzipTask.setProject( project );
+            gzipTask.setDestfile( new File( imagesDirectory, target.getFinalName() ) );
+            gzipTask.setSrc( tarFile );
+            gzipTask.execute();
+
+            tarFile.delete();
+        }
+        // TAR.BZ2 Archive
+        else if ( archiveType.equalsIgnoreCase( "tar.bz2" ) )
+        {
+            File tarFile = new File( imagesDirectory, target.getId() + ".tar" );
+
+            Tar tarTask = new Tar();
+            tarTask.setProject( project );
+            tarTask.setDestFile( tarFile );
+            tarTask.setBasedir( archiveDirectory );
+            tarTask.execute();
+
+            BZip2 bzip2Task = new BZip2();
+            bzip2Task.setProject( project );
+            bzip2Task.setDestfile( new File( imagesDirectory, target.getFinalName() ) );
+            bzip2Task.setSrc( tarFile );
+            bzip2Task.execute();
+
+            tarFile.delete();
+        }
+
+        log.info( "Archive Installer generated at " + new File( imagesDirectory, target.getFinalName() ) );
+    }
+
+
+    /**
+     * Recursively copy files from the given source to the given destination.
+     *
+     * @param src
+     *      the source
+     * @param dest
+     *      the destination
+     * @throws IOException
+     *      If an error occurs when copying a file
+     */
+    public void copyFiles( File src, File dest ) throws IOException
+    {
+        if ( src.isDirectory() )
+        {
+            dest.mkdirs();
+
+            for ( File file : src.listFiles() )
+            {
+                copyFiles( file, new File( dest, file.getName() ) );
+            }
+        }
+        else
+        {
+            FileUtils.copyFile( src, dest );
+        }
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.directory.daemon.installers.MojoCommand#getFilterProperties()
+     */
+    public Properties getFilterProperties()
+    {
+        return filterProperties;
+    }
+
+
+    private void initializeFiltering()
+    {
+        filterProperties.putAll( mymojo.getProject().getProperties() );
+        filterProperties.put( "app", target.getApplication().getName() );
+        String version = target.getApplication().getVersion();
+        if ( version != null )
+        {
+            filterProperties.put( "app.version", version );
+        }
+        else
+        {
+            filterProperties.put( "app.version", "1.0" );
+        }
+    }
+}

Added: directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/archive/ArchiveTarget.java
URL: http://svn.apache.org/viewvc/directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/archive/ArchiveTarget.java?rev=674862&view=auto
==============================================================================
--- directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/archive/ArchiveTarget.java (added)
+++ directory/daemon/branches/bigbang/plugin/src/main/java/org/apache/directory/daemon/installers/archive/ArchiveTarget.java Tue Jul  8 08:49:25 2008
@@ -0,0 +1,70 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.directory.daemon.installers.archive;
+
+
+import org.apache.directory.daemon.installers.Target;
+
+
+/**
+ * An archive installer for any platform.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class ArchiveTarget extends Target
+{
+    /** The archive type */
+    /**
+     * The archive type.
+     * <p>
+     * Possible types are:
+     * <ul>
+     *   <li>zip (default)</li>
+     *   <li>tar</li>
+     *   <li>tar.gz</li>
+     *   <li>tar.bz2</li>
+     * </ul>
+     */
+    private String archiveType = "zip";
+
+
+    /**
+     * Gets the archive type.
+     *
+     * @return
+     *      the archive type
+     */
+    public String getArchiveType()
+    {
+        return archiveType;
+    }
+
+
+    /**
+     * Sets the archive type.
+     *
+     * @param archiveType
+     */
+    public void setArchiveType( String archiveType )
+    {
+        this.archiveType = archiveType;
+    }
+}
\ No newline at end of file

Added: directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/archive/apacheds.bat
URL: http://svn.apache.org/viewvc/directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/archive/apacheds.bat?rev=674862&view=auto
==============================================================================
--- directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/archive/apacheds.bat (added)
+++ directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/archive/apacheds.bat Tue Jul  8 08:49:25 2008
@@ -0,0 +1,2 @@
+@echo off
+java -Dlog4j.configuration="file:conf/log4j.properties" -cp lib\antlr-2.7.7.jar;lib\apacheds-bootstrap-extract-1.5.3-SNAPSHOT.jar;lib\apacheds-bootstrap-partition-1.5.3-SNAPSHOT.jar;lib\apacheds-btree-base-1.5.3-SNAPSHOT.jar;lib\apacheds-core-1.5.3-SNAPSHOT.jar;lib\apacheds-core-constants-1.5.3-SNAPSHOT.jar;lib\apacheds-core-entry-1.5.3-SNAPSHOT.jar;lib\apacheds-core-shared-1.5.3-SNAPSHOT.jar;lib\apacheds-jdbm-1.5.3-SNAPSHOT.jar;lib\apacheds-jdbm-store-1.5.3-SNAPSHOT.jar;lib\apacheds-kerberos-shared-1.5.3-SNAPSHOT.jar;lib\apacheds-noarch-installer-1.5.3-SNAPSHOT.jar;lib\apacheds-protocol-changepw-1.5.3-SNAPSHOT.jar;lib\apacheds-protocol-dhcp-1.5.3-SNAPSHOT.jar;lib\apacheds-protocol-dns-1.5.3-SNAPSHOT.jar;lib\apacheds-protocol-kerberos-1.5.3-SNAPSHOT.jar;lib\apacheds-protocol-ldap-1.5.3-SNAPSHOT.jar;lib\apacheds-protocol-ntp-1.5.3-SNAPSHOT.jar;lib\apacheds-protocol-shared-1.5.3-SNAPSHOT.jar;lib\apacheds-schema-bootstrap-1.5.3-SNAPSHOT.jar;lib\apacheds-schema-extras-1.5.3-SNAP
 SHOT.jar;lib\apacheds-schema-registries-1.5.3-SNAPSHOT.jar;lib\apacheds-server-jndi-1.5.3-SNAPSHOT.jar;lib\apacheds-server-xml-1.5.3-SNAPSHOT.jar;lib\apacheds-utils-1.5.3-SNAPSHOT.jar;lib\apacheds-xbean-spring-1.5.3-SNAPSHOT.jar;lib\bootstrapper.jar;lib\commons-cli-1.1.jar;lib\commons-collections-3.2.jar;lib\commons-daemon-1.0.1.jar;lib\commons-lang-2.3.jar;lib\jcl104-over-slf4j-1.4.3.jar;lib\log4j-1.2.14.jar;lib\mina-core-1.1.6.jar;lib\mina-filter-ssl-1.1.6.jar;lib\shared-asn1-0.9.11-SNAPSHOT.jar;lib\shared-asn1-codec-0.9.11-SNAPSHOT.jar;lib\shared-bouncycastle-reduced-0.9.11-SNAPSHOT.jar;lib\shared-ldap-0.9.11-SNAPSHOT.jar;lib\shared-ldap-constants-0.9.11-SNAPSHOT.jar;lib\slf4j-api-1.4.3.jar;lib\slf4j-log4j12-1.4.3.jar;lib\spring-beans-2.0.6.jar;lib\spring-context-2.0.6.jar;lib\spring-core-2.0.6.jar;lib\xbean-spring-3.3.jar org.apache.directory.server.UberjarMain conf\server.xml
\ No newline at end of file

Added: directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/archive/apacheds.sh
URL: http://svn.apache.org/viewvc/directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/archive/apacheds.sh?rev=674862&view=auto
==============================================================================
--- directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/archive/apacheds.sh (added)
+++ directory/daemon/branches/bigbang/plugin/src/main/resources/org/apache/directory/daemon/installers/archive/apacheds.sh Tue Jul  8 08:49:25 2008
@@ -0,0 +1,2 @@
+#!/bin/sh
+java -Dlog4j.configuration=file:conf/log4j.properties -cp lib/antlr-2.7.7.jar:lib/apacheds-bootstrap-extract-1.5.3-SNAPSHOT.jar:lib/apacheds-bootstrap-partition-1.5.3-SNAPSHOT.jar:lib/apacheds-btree-base-1.5.3-SNAPSHOT.jar:lib/apacheds-core-1.5.3-SNAPSHOT.jar:lib/apacheds-core-constants-1.5.3-SNAPSHOT.jar:lib/apacheds-core-entry-1.5.3-SNAPSHOT.jar:lib/apacheds-core-shared-1.5.3-SNAPSHOT.jar:lib/apacheds-jdbm-1.5.3-SNAPSHOT.jar:lib/apacheds-jdbm-store-1.5.3-SNAPSHOT.jar:lib/apacheds-kerberos-shared-1.5.3-SNAPSHOT.jar:lib/apacheds-noarch-installer-1.5.3-SNAPSHOT.jar:lib/apacheds-protocol-changepw-1.5.3-SNAPSHOT.jar:lib/apacheds-protocol-dhcp-1.5.3-SNAPSHOT.jar:lib/apacheds-protocol-dns-1.5.3-SNAPSHOT.jar:lib/apacheds-protocol-kerberos-1.5.3-SNAPSHOT.jar:lib/apacheds-protocol-ldap-1.5.3-SNAPSHOT.jar:lib/apacheds-protocol-ntp-1.5.3-SNAPSHOT.jar:lib/apacheds-protocol-shared-1.5.3-SNAPSHOT.jar:lib/apacheds-schema-bootstrap-1.5.3-SNAPSHOT.jar:lib/apacheds-schema-extras-1.5.3-SNAPSH
 OT.jar:lib/apacheds-schema-registries-1.5.3-SNAPSHOT.jar:lib/apacheds-server-jndi-1.5.3-SNAPSHOT.jar:lib/apacheds-server-xml-1.5.3-SNAPSHOT.jar:lib/apacheds-utils-1.5.3-SNAPSHOT.jar:lib/apacheds-xbean-spring-1.5.3-SNAPSHOT.jar:lib/bootstrapper.jar:lib/commons-cli-1.1.jar:lib/commons-collections-3.2.jar:lib/commons-daemon-1.0.1.jar:lib/commons-lang-2.3.jar:lib/jcl104-over-slf4j-1.4.3.jar:lib/log4j-1.2.14.jar:lib/mina-core-1.1.6.jar:lib/mina-filter-ssl-1.1.6.jar:lib/shared-asn1-0.9.11-SNAPSHOT.jar:lib/shared-asn1-codec-0.9.11-SNAPSHOT.jar:lib/shared-bouncycastle-reduced-0.9.11-SNAPSHOT.jar:lib/shared-ldap-0.9.11-SNAPSHOT.jar:lib/shared-ldap-constants-0.9.11-SNAPSHOT.jar:lib/slf4j-api-1.4.3.jar:lib/slf4j-log4j12-1.4.3.jar:lib/spring-beans-2.0.6.jar:lib/spring-context-2.0.6.jar:lib/spring-core-2.0.6.jar:lib/xbean-spring-3.3.jar org.apache.directory.server.UberjarMain conf/server.xml
\ No newline at end of file