Configuration filtering is now completed in Maven "Assembly" packaging.

git-svn-id: http://scm.dspace.org/svn/repo/trunk@2019 9c30dcfa-912a-0410-8fc2-9e0234be79fd
This commit is contained in:
Mark Diggory
2007-06-18 17:26:04 +00:00
parent 57670aadd0
commit 3dba86e80f
4 changed files with 4 additions and 241 deletions

View File

@@ -642,152 +642,10 @@ public class ConfigurationManager
return (result == null) ? null : result.toString(); return (result == null) ? null : result.toString();
} }
/**
* Fill out of the configuration file templates in
* <code>dspace.dir/config/templates</code> with appropriate values from
* <code>dspace.cfg</code>, and copy to their appropriate destination.
* The destinations are defined as properties in <code>dspace.cfg</code>
* called <code>config.template.XXX</code> where <code>XXX</code> is the
* filename of the template. If this property doesn't exist, the
* configuration file template is skipped.
*
* @throws IOException
* if there was some problem reading the templates or writing
* the filled-out configuration files
*/
public static void installConfigurations() throws IOException
{
// Get the templates
File templateDir = new File(getProperty("dspace.dir") + File.separator
+ "config" + File.separator + "templates");
File[] templateFiles = templateDir.listFiles();
for (int i = 0; i < templateFiles.length; i++)
{
installConfigurationFile(templateFiles[i].getName());
}
}
/**
* Install the given configuration file template in its required location.
* Configuration values in the template, specified as
* <code>@@property.name@@</code> are filled out with appropriate properties from
* the configuration. The filled-out configuration file is
* written to the file named by the property
* <code>config.template.XXX</code> where
* <code>XXX</code> is the name of the template as
* passed in to this method.
*
* @param template
* the name of the configuration template. This must correspond
* to the filename in <code>dspace.dir/config/templates</code>
* and the property starting with <code>config.template.</code>.
*
* @throws IOException
* if there was some problem reading the template or writing the
* filled-out configuration file
*/
private static void installConfigurationFile(String template)
throws IOException
{
// Get the destination: specified in property config.template.XXX
String destination = getProperty("config.template." + template);
if (destination == null)
{
// If no destination is specified
info("Not processing config file template " + template
+ " because no destination specified (no property "
+ "config.template." + template + ")");
return;
}
info("Installing configuration file template " + template + " to "
+ destination);
// Open the template
BufferedReader in = new BufferedReader(new FileReader(
getProperty("dspace.dir") + File.separator + "config"
+ File.separator + "templates" + File.separator
+ template));
// Open the destination for writing
PrintWriter out = new PrintWriter(new FileWriter(destination));
// We'll keep track of line numbers for error messages etc.
int lineNumber = 0;
String line;
// Copy the template, filling out config values
while ((line = in.readLine()) != null)
{
lineNumber++;
// Find configuration values
boolean moreValues = true;
while (moreValues)
{
// Look for "@@"
int first = line.indexOf("@@");
if (first > -1)
{
// Look for the "@@" on the other side
int second = line.indexOf("@@", first + 2);
if (second > -1)
{
// We have a property
String propName = line.substring(first + 2, second);
String propValue = getProperty(propName);
if (propValue == null)
{
warn(template + " line " + lineNumber
+ ": Property " + propName
+ " not defined in DSpace configuration - "
+ "using empty string");
propValue = "";
}
// Fill in the value
line = line.substring(0, first) + propValue
+ line.substring(second + 2);
}
else
{
// There's a "@@" with no second one... just leave as-is
warn(template + " line " + lineNumber
+ ": Single @@ - leaving as-is");
moreValues = false;
}
}
else
{
// No more @@'s
moreValues = false;
}
}
// Write the line
out.println(line);
}
in.close();
out.close();
}
/** /**
* Command-line interface for running configuration tasks. Possible * Command-line interface for running configuration tasks. Possible
* arguments: * arguments:
* <ul> * <ul>
* <li><code>-installTemplates</code> processes and installs the
* configuration file templates for other tools</li>
* <li><code>-property name</code> prints the value of the property * <li><code>-property name</code> prints the value of the property
* <code>name</code> from <code>dspace.cfg</code> to the standard * <code>name</code> from <code>dspace.cfg</code> to the standard
* output. If the property does not exist, nothing is written.</li> * output. If the property does not exist, nothing is written.</li>
@@ -798,20 +656,7 @@ public class ConfigurationManager
*/ */
public static void main(String[] argv) public static void main(String[] argv)
{ {
if ((argv.length == 1) && argv[0].equals("-installTemplates")) if ((argv.length == 2) && argv[0].equals("-property"))
{
try
{
info("Installing configuration files for other tools");
installConfigurations();
System.exit(0);
}
catch (IOException ie)
{
warn("Error installing configuration files", ie);
}
}
else if ((argv.length == 2) && argv[0].equals("-property"))
{ {
String val = getProperty(argv[1]); String val = getProperty(argv[1]);
@@ -847,19 +692,6 @@ public class ConfigurationManager
} }
} }
private static void warn(String string, Exception e)
{
if (log == null)
{
System.out.println("WARN: " + string);
e.printStackTrace();
}
else
{
log.warn(string, e);
}
}
private static void warn(String string) private static void warn(String string)
{ {
if (log == null) if (log == null)

View File

@@ -1,54 +0,0 @@
#!/bin/sh
###########################################################################
#
# install-configs
#
# Version: $Revision$
#
# Date: $Date$
#
# Copyright (c) 2002, Hewlett-Packard Company and Massachusetts
# Institute of Technology. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# - Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# - Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# - Neither the name of the Hewlett-Packard Company nor the name of the
# Massachusetts Institute of Technology nor the names of their
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
# DAMAGE.
#
###########################################################################
# Shell script for processing the configuration file templates for external
# tools in DSPACE/config/templates, and installing the filled-out files to
# their appropriate locations (defined in dspace.cfg.)
# Get the DSPACE/bin directory
BINDIR=`dirname $0`
echo "Processing and installing configuration files for external tools"
$BINDIR/dsrun org.dspace.core.ConfigurationManager -installTemplates

View File

@@ -20,19 +20,6 @@ dspace.hostname = dspace.myu.edu
# Name of the site # Name of the site
dspace.name = DSpace at My University dspace.name = DSpace at My University
##### Destinations for configuration files for other tools #####
# Comment out any lines corresponding to files you don't need, so they
# don't get copied
# Example Apache HTTPD configuration
# config.template.apache13.conf = ${dspace.dir}/config/httpd.conf
config.template.log4j.properties = ${dspace.dir}/config/log4j.properties
config.template.log4j-handle-plugin.properties = ${dspace.dir}/config/log4j-handle-plugin.properties
config.template.oaicat.properties = ${dspace.dir}/config/oaicat.properties
##### Database settings ##### ##### Database settings #####
# Database name ("oracle", or "postgres") # Database name ("oracle", or "postgres")

View File

@@ -6,14 +6,12 @@
# OAICat Configuration file - see OAICat documentation for details # OAICat Configuration file - see OAICat documentation for details
# Text surrounded by two '@' symbols is replaced with the corresponding # Text surrounded by two '${' and '}' symbols is replaced with the corresponding
# property from dspace.cfg. For example: # property from dspace.cfg. For example:
# #
# @@dspace.url@@ # ${dspace.url}
# #
# would be replaced with the dspace.url property in dspace.cfg. # would be replaced with the dspace.url property in dspace.cfg on Maven compilation
# When /dspace/bin/install-configs is run, this file will be installed in the
# location specified by the property: config.template.oaicat.properties
AbstractCatalog.oaiCatalogClassName=org.dspace.app.oai.DSpaceOAICatalog AbstractCatalog.oaiCatalogClassName=org.dspace.app.oai.DSpaceOAICatalog
AbstractCatalog.recordFactoryClassName=org.dspace.app.oai.DSpaceRecordFactory AbstractCatalog.recordFactoryClassName=org.dspace.app.oai.DSpaceRecordFactory