Addendum to r183
git-svn-id: https://svn.libreccm.org/ccm/trunk@177 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
7b1ffd0422
commit
eedb8474e4
|
|
@ -21,6 +21,7 @@ package com.arsdigita.packaging;
|
||||||
import com.arsdigita.runtime.ConfigRegistry;
|
import com.arsdigita.runtime.ConfigRegistry;
|
||||||
import com.arsdigita.util.Files;
|
import com.arsdigita.util.Files;
|
||||||
import com.arsdigita.util.StringUtils;
|
import com.arsdigita.util.StringUtils;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
|
|
@ -30,19 +31,25 @@ import java.util.List;
|
||||||
import java.util.jar.Attributes;
|
import java.util.jar.Attributes;
|
||||||
import java.util.jar.JarFile;
|
import java.util.jar.JarFile;
|
||||||
import java.util.jar.Manifest;
|
import java.util.jar.Manifest;
|
||||||
|
|
||||||
import org.apache.commons.cli.CommandLine;
|
import org.apache.commons.cli.CommandLine;
|
||||||
import org.apache.commons.cli.OptionBuilder;
|
import org.apache.commons.cli.OptionBuilder;
|
||||||
import org.apache.commons.cli.Options;
|
import org.apache.commons.cli.Options;
|
||||||
import org.apache.commons.cli.ParseException;
|
import org.apache.commons.cli.ParseException;
|
||||||
import org.apache.commons.cli.PosixParser;
|
import org.apache.commons.cli.PosixParser;
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implements the "hostinit" command.
|
|
||||||
*
|
|
||||||
* Called by the ccm hostinit / ccm hostinit-bundle command
|
|
||||||
*
|
|
||||||
* Populates the CCM application directory in webapps.
|
* Populates the CCM application directory in webapps.
|
||||||
|
*
|
||||||
|
* Implements the "hostinit" command and is called by the
|
||||||
|
* ccm hostinit / ccm hostinit-bundle command of the ccm PERL based
|
||||||
|
* script system (up to APLAWS 1.0.5 / CCM 6.5).
|
||||||
|
*
|
||||||
|
* In addition to populating the webapp directory the ccm command
|
||||||
|
* used to configure the servlet container (hence to information
|
||||||
|
* about servlet container and http port below).
|
||||||
* Does not create the database nor the config registry.
|
* Does not create the database nor the config registry.
|
||||||
*
|
*
|
||||||
* Options:
|
* Options:
|
||||||
|
|
@ -110,6 +117,7 @@ public class HostInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final void main(String[] args) {
|
public static final void main(String[] args) {
|
||||||
|
|
||||||
if (args.length == 0) {
|
if (args.length == 0) {
|
||||||
Command.usage(OPTIONS, System.err,
|
Command.usage(OPTIONS, System.err,
|
||||||
"com.arsdigita.packaging.HostInit", null);
|
"com.arsdigita.packaging.HostInit", null);
|
||||||
|
|
@ -117,7 +125,8 @@ public class HostInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register custom protocol handlers
|
// Register custom protocol handlers
|
||||||
com.arsdigita.runtime.Startup.startup();
|
// No longer needed as of CCM 6.6
|
||||||
|
// com.arsdigita.runtime.Startup.startup();
|
||||||
|
|
||||||
CommandLine line;
|
CommandLine line;
|
||||||
try {
|
try {
|
||||||
|
|
@ -135,12 +144,16 @@ public class HostInit {
|
||||||
// base dir for all webapps, same as CATALINA_HOME
|
// base dir for all webapps, same as CATALINA_HOME
|
||||||
// same as CCM_HOME
|
// same as CCM_HOME
|
||||||
File dest = new File(destination);
|
File dest = new File(destination);
|
||||||
|
|
||||||
// Currently: non-standard location of lib and classes
|
// Currently: non-standard location of lib and classes
|
||||||
File inf = new File(dest, "WEB-INF");
|
File inf = new File(dest, "WEB-INF");
|
||||||
|
|
||||||
// Currentliy: non-standard location of lib
|
// Currentliy: non-standard location of lib
|
||||||
File lib = new File(inf, "lib");
|
File lib = new File(inf, "lib");
|
||||||
// currently: non-standard, special URL:resource handler, to be discarded
|
|
||||||
File system = new File(inf, "system");
|
// currently (<=6.5): non-standard, special URL:resource handler, to be discarded
|
||||||
|
// Removed on >= 6.6
|
||||||
|
// File system = new File(inf, "system");
|
||||||
|
|
||||||
if (!dest.exists()) {
|
if (!dest.exists()) {
|
||||||
dest.mkdir();
|
dest.mkdir();
|
||||||
|
|
@ -164,18 +177,21 @@ public class HostInit {
|
||||||
err("unable to create lib: " + lib);
|
err("unable to create lib: " + lib);
|
||||||
}
|
}
|
||||||
|
|
||||||
system.mkdirs();
|
// >= 6.6 system jar removed
|
||||||
if (!(system.exists() && system.isDirectory())) {
|
// system.mkdirs();
|
||||||
err("unable to create system: " + system);
|
// if (!(system.exists() && system.isDirectory())) {
|
||||||
}
|
// err("unable to create system: " + system);
|
||||||
|
// }
|
||||||
|
|
||||||
// check the configuration database (registry) for packages (modules)
|
// check the configuration database (registry) for packages (modules)
|
||||||
// retrieve a list of packages to deal with
|
// retrieve a list of packages to deal with
|
||||||
ConfigRegistry reg = new ConfigRegistry();
|
ConfigRegistry reg = new ConfigRegistry();
|
||||||
List packages = reg.getPackages();
|
List packages = reg.getPackages();
|
||||||
|
// Do the real work now.
|
||||||
try {
|
try {
|
||||||
copy(classpath, packages, lib);
|
copy(classpath, packages, lib);
|
||||||
copySystem(classpath, packages, system);
|
// no longer used >= 6.6
|
||||||
|
// copySystem(classpath, packages, system);
|
||||||
copy(webapps, packages, dest);
|
copy(webapps, packages, dest);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
err(e.getMessage());
|
err(e.getMessage());
|
||||||
|
|
@ -183,10 +199,12 @@ public class HostInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Internal general helper method to copy files from one location to a
|
||||||
|
* destination dir using a list of files (packages) to copy.
|
||||||
*
|
*
|
||||||
* @param pathfile
|
* @param pathfile Path where to look for files specified in packages
|
||||||
* @param packages
|
* @param packages List of files to copy
|
||||||
* @param dest
|
* @param dest Destination directory
|
||||||
* @throws java.io.IOException
|
* @throws java.io.IOException
|
||||||
*/
|
*/
|
||||||
private static void copy(String pathfile, List packages, File dest)
|
private static void copy(String pathfile, List packages, File dest)
|
||||||
|
|
@ -226,45 +244,11 @@ public class HostInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copies the ccm-core-6.y.z-system.jar (java extension for URL:resource
|
* Internal helper method to copy all files in a given directory (dir)
|
||||||
* protocol handler) to its special location.
|
* to a destination directory (dest).
|
||||||
*
|
*
|
||||||
* Will not be used as soon as the resource protocol is replaced by a
|
* @param dir source directory path
|
||||||
* standard compliant mechanism.
|
* @param dest destination direcotry path
|
||||||
*
|
|
||||||
* @param pathfile
|
|
||||||
* @param packages
|
|
||||||
* @param dest
|
|
||||||
* @throws java.io.IOException
|
|
||||||
* @deprecated
|
|
||||||
*/
|
|
||||||
private static void copySystem(String pathfile, List packages, File dest)
|
|
||||||
throws IOException {
|
|
||||||
BufferedReader reader = new BufferedReader(new FileReader(pathfile));
|
|
||||||
String line;
|
|
||||||
while ((line = reader.readLine()) != null) {
|
|
||||||
line = line.trim();
|
|
||||||
if (contains(line, packages) && line.endsWith(".jar")) {
|
|
||||||
String newline = line.substring(0, line.lastIndexOf(".jar")) +
|
|
||||||
"-system.jar";
|
|
||||||
File file = new File(newline);
|
|
||||||
if (file.isFile()) {
|
|
||||||
if (s_log.isInfoEnabled()) {
|
|
||||||
s_log.info("Copying System JAR " + file.toString());
|
|
||||||
}
|
|
||||||
Files.copy(file, dest, Files.IGNORE_EXISTING);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
reader.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Copies all files in a given directory (dir) to a
|
|
||||||
* destination directory (dest).
|
|
||||||
*
|
|
||||||
* @param dir
|
|
||||||
* @param dest
|
|
||||||
* @throws java.io.IOException
|
* @throws java.io.IOException
|
||||||
*/
|
*/
|
||||||
private static void copyDirectory(File dir, File dest) throws IOException {
|
private static void copyDirectory(File dir, File dest) throws IOException {
|
||||||
|
|
@ -321,6 +305,9 @@ public class HostInit {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
private static boolean contains(String line, List packages) {
|
private static boolean contains(String line, List packages) {
|
||||||
for (Iterator it = packages.iterator(); it.hasNext(); ) {
|
for (Iterator it = packages.iterator(); it.hasNext(); ) {
|
||||||
String key = (String) it.next();
|
String key = (String) it.next();
|
||||||
|
|
@ -331,4 +318,40 @@ public class HostInit {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// As of version 6.6 system.jar is no longer used. Code kept here as
|
||||||
|
// an example just in case the mechanism is required for another purpose.
|
||||||
|
// /**
|
||||||
|
// * Copies the ccm-core-6.y.z-system.jar (java extension for URL:resource
|
||||||
|
// * protocol handler) to its special location.
|
||||||
|
// *
|
||||||
|
// * Will not be used as soon as the resource protocol is replaced by a
|
||||||
|
// * standard compliant mechanism.
|
||||||
|
// *
|
||||||
|
// * @param pathfile
|
||||||
|
// * @param packages
|
||||||
|
// * @param dest
|
||||||
|
// * @throws java.io.IOException
|
||||||
|
// * @deprecated
|
||||||
|
// */
|
||||||
|
// private static void copySystem(String pathfile, List packages, File dest)
|
||||||
|
// throws IOException {
|
||||||
|
// BufferedReader reader = new BufferedReader(new FileReader(pathfile));
|
||||||
|
// String line;
|
||||||
|
// while ((line = reader.readLine()) != null) {
|
||||||
|
// line = line.trim();
|
||||||
|
// if (contains(line, packages) && line.endsWith(".jar")) {
|
||||||
|
// String newline = line.substring(0, line.lastIndexOf(".jar")) +
|
||||||
|
// "-system.jar";
|
||||||
|
// File file = new File(newline);
|
||||||
|
// if (file.isFile()) {
|
||||||
|
// if (s_log.isInfoEnabled()) {
|
||||||
|
// s_log.info("Copying System JAR " + file.toString());
|
||||||
|
// }
|
||||||
|
// Files.copy(file, dest, Files.IGNORE_EXISTING);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// reader.close();
|
||||||
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue