Author: vgritsenko
Date: Tue Mar 27 18:00:00 2007
New Revision: 523128
URL: http://svn.apache.org/viewvc?view=rev&rev=523128
Log:
<action dev="VG" type="update">
Moved configuration file in WAR file to /WEB-INF/config. Updated
XindiceServlet to check for xindice.configuration system
property
before attempting to load configuration from WAR file.
</action>
Modified:
xml/xindice/trunk/build.xml
xml/xindice/trunk/config/web.xml
xml/xindice/trunk/java/src/org/apache/xindice/server/Xindice.java
xml/xindice/trunk/java/src/org/apache/xindice/server/XindiceServlet.java
xml/xindice/trunk/status.xml
xml/xindice/trunk/xindice.sh
Modified: xml/xindice/trunk/build.xml
URL:
http://svn.apache.org/viewvc/xml/xindice/trunk/build.xml?view=diff&rev=523128&r1=523127&r2=523128
==============================================================================
--- xml/xindice/trunk/build.xml (original)
+++ xml/xindice/trunk/build.xml Tue Mar 27 18:00:00 2007
@@ -296,11 +296,8 @@
<war destfile="${dist.dir}/${project.filename}-${project.version}.war"
update="false" webxml="config/web.xml">
- <webinf dir="${config.dir}">
- <include name="system.xml"/>
- </webinf>
<webinf dir=".">
- <!-- TODO include name="${config.dir}/system.xml"/ -->
+ <include name="${config.dir}/system.xml"/>
<include name="${config.dir}/commands.xml"/>
</webinf>
<webinf dir="${build.dir}/war-bin">
Modified: xml/xindice/trunk/config/web.xml
URL:
http://svn.apache.org/viewvc/xml/xindice/trunk/config/web.xml?view=diff&rev=523128&r1=523127&r2=523128
==============================================================================
--- xml/xindice/trunk/config/web.xml (original)
+++ xml/xindice/trunk/config/web.xml Tue Mar 27 18:00:00 2007
@@ -45,7 +45,7 @@
-->
<init-param>
<param-name>xindice.configuration</param-name>
- <param-value>WEB-INF/system.xml</param-value>
+ <param-value>WEB-INF/config/system.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
Modified: xml/xindice/trunk/java/src/org/apache/xindice/server/Xindice.java
URL:
http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/server/Xindice.java?view=diff&rev=523128&r1=523127&r2=523128
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/server/Xindice.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/server/Xindice.java Tue Mar
27 18:00:00 2007
@@ -39,7 +39,8 @@
public static final String PROP_XINDICE_DB_HOME = "xindice.db.home";
/**
- * System property specyfying location of the Xindice configuration file
(system.xml).
+ * System property specyfying location of the Xindice database
configuration
+ * file (system.xml).
*/
public static final String PROP_XINDICE_CONFIGURATION =
"xindice.configuration";
@@ -51,23 +52,23 @@
public static final String Codename = "Christmas+.2";
// Copyright/Authorship Information
- public static final String Title = "Xindice";
- public static final String Author = "The Apache Foundation";
- public static final String Year = "2003";
- public static final String Company = "The Apache Foundation";
- public static final String URL = "http://xml.apache.org/xindice/";
+ public static final String Title = "Xindice";
+ public static final String Author = "The Apache Software Foundation";
+ public static final String Year = "2003";
+ public static final String Company = "The Apache Software Foundation";
+ public static final String URL = "http://xml.apache.org/xindice/";
// Default configuration if a system.xml file isn't available.
public static final String DEFAULT_CONFIGURATION
= "<xindice>"
- + " <root-collection dbroot=\"./db/\" name=\"db\">"
+ + " <root-collection dbroot='./db/' name='db'>"
+ " <queryengine>"
- + " <resolver autoindex=\"false\"
class=\"org.apache.xindice.core.query.XPathQueryResolver\" />"
- + " <resolver
class=\"org.apache.xindice.core.xupdate.XUpdateQueryResolver\" />"
+ + " <resolver autoindex='false'
class='org.apache.xindice.core.query.XPathQueryResolver'/>"
+ + " <resolver
class='org.apache.xindice.core.xupdate.XUpdateQueryResolver'/>"
+ " </queryengine>"
+ " </root-collection>"
+ " <xml-rpc>"
- + " <driver name=\"xerces\" />"
+ + " <driver name='xerces'/>"
+ " </xml-rpc>"
+ "</xindice>";
}
Modified:
xml/xindice/trunk/java/src/org/apache/xindice/server/XindiceServlet.java
URL:
http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/server/XindiceServlet.java?view=diff&rev=523128&r1=523127&r2=523128
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/server/XindiceServlet.java
(original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/server/XindiceServlet.java
Tue Mar 27 18:00:00 2007
@@ -37,6 +37,7 @@
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -110,63 +111,64 @@
Configuration[] rootConfigurations =
configuration.getChildren("root-collection");
if (rootConfigurations.length == 0) {
throw new ConfigurationException("The database configuration
is missing the <root-collection> element");
- } else {
- for (int i = 0; i < rootConfigurations.length; i++) {
- Configuration rootConfiguration = rootConfigurations[i];
- String name =
rootConfiguration.getAttribute(Database.NAME);
-
- //
- // We need to ensure that the database points to a place
where it makes
- // sense. If the path in the system.xml file is an
absolute path, then
- // honor it. If it's not, we first check for the system
property "xindice.db.home"
- // and if the lookup is successful we use it as the
database root parent. If
- // the property is not set, we use /WEB-INF relative to
the servlet context, unless
- // the war has not been unpacked. In this case, we throw
an exception and
- // ask the user to specify the location of database root
- //
- String dbRoot =
rootConfiguration.getAttribute(Database.DBROOT, Database.DBROOT_DEFAULT);
-
- //
- // If there is no absolute path, we have to perform some
checks.
- //
- if (!new File(dbRoot).isAbsolute()) {
-
- // Stupid hack but spec compliant:
- // If getRealPath() returns null the war archive has
not been unpacked.
- String realPath =
servletConfig.getServletContext().getRealPath("/WEB-INF");
-
- // Let's see if the property was specified.
- String home =
System.getProperty(Xindice.PROP_XINDICE_DB_HOME);
- if (log.isDebugEnabled()) {
- log.debug(Xindice.PROP_XINDICE_DB_HOME + " is set
to " + home);
- }
-
- if (home != null) {
- dbRoot = new File(home + File.separator +
dbRoot).getCanonicalPath();
- } else if (realPath != null) {
- dbRoot = new File(realPath + File.separator +
dbRoot).getCanonicalPath();
- log.warn("The database '" + name + "' root
directory has been set to " + dbRoot +
- ". Keep in mind that if a war upgrade
will take place the database will be lost.");
- } else {
- throw new ConfigurationException(
- "The database '" + name + "' configuration
points to a relative path, "
- + "but there was no " +
Xindice.PROP_XINDICE_DB_HOME + " property set. "
- + "Furthermore, the war was not unpacked
by the application server "
- + "so Xindice was unable to find a
database location "
- + "Please check /WEB-INF/system.xml and
set an absolute path "
- + "as the \"dbroot\" attribute of
\"root-collection\" "
- + "or specify a suitable " +
Xindice.PROP_XINDICE_DB_HOME + " system property.");
- }
- rootConfiguration.setAttribute(Database.DBROOT,
dbRoot);
+ }
+
+ for (int i = 0; i < rootConfigurations.length; i++) {
+ Configuration rootConfiguration = rootConfigurations[i];
+ String name = rootConfiguration.getAttribute(Database.NAME);
+
+ //
+ // We need to ensure that the database points to a place where
it makes
+ // sense. If the path in the system.xml file is an absolute
path, then
+ // honor it. If it's not, we first check for the system
property "xindice.db.home"
+ // and if the lookup is successful we use it as the database
root parent. If
+ // the property is not set, we use /WEB-INF relative to the
servlet context, unless
+ // the war has not been unpacked. In this case, we throw an
exception and
+ // ask the user to specify the location of database root
+ //
+ String dbRoot =
rootConfiguration.getAttribute(Database.DBROOT, Database.DBROOT_DEFAULT);
+
+ //
+ // If there is no absolute path, we have to perform some
checks.
+ //
+ if (!new File(dbRoot).isAbsolute()) {
+
+ // Stupid hack but spec compliant:
+ // If getRealPath() returns null the war archive has not
been unpacked.
+ String realPath =
servletConfig.getServletContext().getRealPath("/WEB-INF");
+
+ // Let's see if the property was specified.
+ String home =
System.getProperty(Xindice.PROP_XINDICE_DB_HOME);
+ if (log.isDebugEnabled()) {
+ log.debug(Xindice.PROP_XINDICE_DB_HOME + " is set to "
+ home);
+ }
+
+ if (home != null) {
+ dbRoot = new File(home + File.separator +
dbRoot).getCanonicalPath();
+ } else if (realPath != null) {
+ dbRoot = new File(realPath + File.separator +
dbRoot).getCanonicalPath();
+ log.warn("The database '" + name + "' root directory
has been set to " + dbRoot +
+ ". Keep in mind that if a war upgrade will
take place the database will be lost.");
+ } else {
+ throw new ConfigurationException(
+ "The database '" + name + "' configuration
points to a relative path, "
+ + "but there was no " +
Xindice.PROP_XINDICE_DB_HOME + " property set. "
+ + "Furthermore, the war was not unpacked by
the application server "
+ + "so Xindice was unable to find a database
location "
+ + "Please check /WEB-INF/system.xml and set an
absolute path "
+ + "as the \"dbroot\" attribute of
\"root-collection\" "
+ + "or specify a suitable " +
Xindice.PROP_XINDICE_DB_HOME + " system property.");
}
- //
- // We need to use this method to be consistent between
deployments (embed, standalone, etc)
- // and let the Database object maintain the set of
Databases.
- //
- Database.getDatabase(rootConfiguration);
- log.info("Database '" + name + "' successfully opened");
+ rootConfiguration.setAttribute(Database.DBROOT, dbRoot);
}
+
+ //
+ // We need to use this method to be consistent between
deployments (embed, standalone, etc)
+ // and let the Database object maintain the set of Databases.
+ //
+ Database.getDatabase(rootConfiguration);
+ log.info("Database '" + name + "' successfully opened");
}
// Setup the XML-RPC impl to support UTF-8 input via Xerces.
@@ -215,43 +217,52 @@
/**
* Loads the Xindice configuration file. The file is searched in the
following locations:
* <ul>
- * <li>the
<tt>ServletConfig.getInitParameter(Xindice.PROP_XINDICE_CONFIGURATION)</tt>
variable located in the servlet
- * configuration file</li>
- * <li>use the default configuration stored in the <tt>Xindice</tt>
class</li>
+ * <li>the <i>System.getProperty(Xindice.PROP_XINDICE_CONFIGURATION)</i>
system property.
+ * <li>the
<i>ServletConfig.getInitParameter(Xindice.PROP_XINDICE_CONFIGURATION)</i>
servlet
+ * configuration parameter in web.xml file.</li>
+ * <li>default configuration stored in the <tt>Xindice</tt> class</li>
* </ul>
*
- * <br/>
- * TODO: we should probably try to load from the file system if we can't
load it this way.
+ * @return Xindice configuration
+ * @throws ConfigurationException if unable to read configuration file or
parse it
*/
public Configuration loadConfiguration(ServletConfig servletConfig) {
try {
- Document configurationDocument;
-
- String path =
servletConfig.getInitParameter(Xindice.PROP_XINDICE_CONFIGURATION);
- if (path != null) {
- InputStream inputStream;
- if (path.startsWith("/")) {
- // Absolute file path
- log.debug("Loading configuration from filesystem path " +
path);
- inputStream = new FileInputStream(path);
- } else {
- // Relative (to the context) path
- log.debug("Loading configuration from context path " +
path);
- ServletContext context = servletConfig.getServletContext();
- inputStream = context.getResourceAsStream("/" + path);
+ InputStream in = null;
+ String path =
System.getProperty(Xindice.PROP_XINDICE_CONFIGURATION);
+ if (path != null && path.length() > 0) {
+ // Configuration file specified by system property
+ log.info("Loading configuration from file path " + path + "
(system property)");
+ in = new FileInputStream(path);
+ } else {
+ path =
servletConfig.getInitParameter(Xindice.PROP_XINDICE_CONFIGURATION);
+ if (path != null && path.length() > 0) {
+ if (path.startsWith("/")) {
+ // Absolute file path
+ log.info("Loading configuration from file path " +
path);
+ in = new FileInputStream(path);
+ } else {
+ // Relative (to the context) path
+ log.info("Loading configuration from context path " +
path);
+ ServletContext context =
servletConfig.getServletContext();
+ in = context.getResourceAsStream("/" + path);
+ }
}
+ }
+ Document doc;
+ if (in != null) {
try {
- configurationDocument = DOMParser.toDocument(inputStream);
+ doc = DOMParser.toDocument(in);
} finally {
- inputStream.close();
+ in.close();
}
} else {
- log.debug("Loading the standard configuration");
- configurationDocument =
DOMParser.toDocument(Xindice.DEFAULT_CONFIGURATION);
+ log.warn("Loading the standard configuration");
+ doc = DOMParser.toDocument(Xindice.DEFAULT_CONFIGURATION);
}
- return new Configuration(configurationDocument, false);
+ return new Configuration(doc, false);
} catch (Exception e) {
throw new ConfigurationException("Failed to load configuration.",
e);
}
Modified: xml/xindice/trunk/status.xml
URL:
http://svn.apache.org/viewvc/xml/xindice/trunk/status.xml?view=diff&rev=523128&r1=523127&r2=523128
==============================================================================
--- xml/xindice/trunk/status.xml (original)
+++ xml/xindice/trunk/status.xml Tue Mar 27 18:00:00 2007
@@ -117,7 +117,12 @@
</todo>
<changes>
- <release version="1.1b5-dev" date="Mar 1 2007">
+ <release version="1.1b5-dev" date="(not released)">
+ <action dev="VG" type="update">
+ Moved configuration file in WAR file to /WEB-INF/config.
Updated
+ XindiceServlet to check for xindice.configuration system
property
+ before attempting to load configuration from WAR file.
+ </action>
<action dev="VG" type="fix" fixes-bug="33148" due-to="Natalia
Shilenkova">
Eliminate gap when index is registered but not created yet,
causing
corruption of index file.
Modified: xml/xindice/trunk/xindice.sh
URL:
http://svn.apache.org/viewvc/xml/xindice/trunk/xindice.sh?view=diff&rev=523128&r1=523127&r2=523128
==============================================================================
--- xml/xindice/trunk/xindice.sh (original)
+++ xml/xindice/trunk/xindice.sh Tue Mar 27 18:00:00 2007
@@ -84,6 +84,9 @@
XINDICE_HOME=`pwd`
fi
+if [ "$XINDICE_DB_HOME" = "" ] ; then XINDICE_DB_HOME=$XINDICE_HOME ; fi
+if [ "$XINDICE_CONFIG" = "" ] ; then
XINDICE_CONFIG=$XINDICE_HOME/config/system.xml ; fi
+
if [ "$JETTY_PORT" = "" ] ; then
JETTY_PORT=8888
fi
@@ -129,6 +132,8 @@
JETTY_CONFIG=`cygpath --path --windows "$JETTY_CONFIG"`
JETTY_WEBAPP=`cygpath --path --windows "$JETTY_WEBAPP"`
XINDICE_HOME=`cygpath --path --windows "$XINDICE_HOME"`
+ XINDICE_DB_HOME=`cygpath --path --windows "$XINDICE_DB_HOME"`
+ XINDICE_CONFIG=`cygpath --path --windows "$XINDICE_CONFIG"`
fi
case "$ACTION" in
@@ -147,14 +152,14 @@
echo "Starting Xindice - Log files are under $XINDICE_HOME/logs"
echo
- nohup "$JAVACMD" $JAVA_OPTIONS -classpath "$CP"
-Djava.endorsed.dirs=lib/endorsed -Dxindice.home="$XINDICE_HOME"
-Dxindice.db.home="$XINDICE_HOME" -Dwebapp="$JETTY_WEBAPP"
-Dorg.xml.sax.parser=org.apache.xerces.parsers.SAXParser
-Djetty.port=$JETTY_PORT -Djetty.admin.port=$JETTY_ADMIN_PORT
org.mortbay.jetty.Server "$JETTY_CONFIG" >> $XINDICE_HOME/logs/xindice.out 2>&1
&
+ nohup "$JAVACMD" $JAVA_OPTIONS -classpath "$CP"
-Djava.endorsed.dirs=lib/endorsed -Dxindice.home="$XINDICE_HOME"
-Dxindice.db.home="$XINDICE_DB_HOME" -Dxindice.configuration="$XINDICE_CONFIG"
-Dwebapp="$JETTY_WEBAPP"
-Dorg.xml.sax.parser=org.apache.xerces.parsers.SAXParser
-Djetty.port=$JETTY_PORT -Djetty.admin.port=$JETTY_ADMIN_PORT
org.mortbay.jetty.Server "$JETTY_CONFIG" >> $XINDICE_HOME/logs/xindice.out 2>&1
&
echo $! > $XINDICE_PID
echo "Xindice is running with PID `cat $XINDICE_PID`"
;;
debug)
- "$JAVACMD" $JAVA_OPTIONS -Xdebug
-Xrunjdwp:transport=dt_socket,address=$JAVA_DEBUG_PORT,server=y,suspend=n
-classpath "$CP" -Djava.endorsed.dirs=lib/endorsed
-Dxindice.home="$XINDICE_HOME" -Dxindice.db.home="$XINDICE_HOME"
-Dwebapp="$JETTY_WEBAPP"
-Dorg.xml.sax.parser=org.apache.xerces.parsers.SAXParser
-Djetty.port=$JETTY_PORT -Djetty.admin.port=$JETTY_ADMIN_PORT
org.mortbay.jetty.Server "$JETTY_CONFIG"
"$XINDICE_HOME/tools/jetty/conf/admin.xml" >> $XINDICE_HOME/logs/xindice.out
2>&1
+ "$JAVACMD" $JAVA_OPTIONS -Xdebug
-Xrunjdwp:transport=dt_socket,address=$JAVA_DEBUG_PORT,server=y,suspend=n
-classpath "$CP" -Djava.endorsed.dirs=lib/endorsed
-Dxindice.home="$XINDICE_HOME" -Dxindice.db.home="$XINDICE_DB_HOME"
-Dxindice.configuration="$XINDICE_CONFIG" -Dwebapp="$JETTY_WEBAPP"
-Dorg.xml.sax.parser=org.apache.xerces.parsers.SAXParser
-Djetty.port=$JETTY_PORT -Djetty.admin.port=$JETTY_ADMIN_PORT
org.mortbay.jetty.Server "$JETTY_CONFIG"
"$XINDICE_HOME/tools/jetty/conf/admin.xml" >> $XINDICE_HOME/logs/xindice.out
2>&1
;;
stop)