- From: Mercurial notifier <nobody@w3.org>
- Date: Mon, 14 Jun 2010 09:22:33 -0400
- To: Unicorn Updates <www-validator-cvs@w3.org>
changeset: 1206:a2b1fa3340a3
user: Thomas Gambet <tgambet@w3.org>
date: Sat Jun 12 18:49:34 2010 -0400
files: src/org/w3c/unicorn/Framework.java
description:
guess unicorn.home instead of using a JVM parameter
+use observers.properties instead of obsevers.list to specify observers ID on unicorn side
diff -r b60b16a34f15 -r a2b1fa3340a3 src/org/w3c/unicorn/Framework.java
--- a/src/org/w3c/unicorn/Framework.java Fri Jun 11 16:41:46 2010 -0400
+++ b/src/org/w3c/unicorn/Framework.java Sat Jun 12 18:49:34 2010 -0400
@@ -3,15 +3,12 @@
// Please first read the full copyright statement in file COPYRIGHT.html
package org.w3c.unicorn;
-import java.io.BufferedReader;
import java.io.File;
-import java.io.FileInputStream;
import java.io.FileNotFoundException;
-import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
-import java.net.URI;
+import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Hashtable;
@@ -81,11 +78,6 @@
public static Log logger = LogFactory.getLog(Framework.class);
/**
- * URI to unicorn home
- */
- public static URI unicornHome;
-
- /**
* True if initialization did not throw any exception
*/
public static boolean isUcnInitialized;
@@ -99,7 +91,8 @@
"responseImpl.properties",
"output.properties",
"velocity.properties",
- "mail.properties"};
+ "mail.properties",
+ "observers.properties"};
public static void reset() {
unicornPropertiesFiles = new Hashtable<String, UCNProperties>();
@@ -130,38 +123,27 @@
logger.info("Unicorn initialized successfully.");
} catch (InitializationFailedException e) {
logger.fatal(e.getMessage(), e);
+ System.err.println(e.getMessage());
}
}
public static void initCore() throws InitializationFailedException {
-
- // Checks that unicorn.home (JVM parameter) is set to an existing directory
- String ucnHome = System.getProperty("unicorn.home");
- if (ucnHome == null) {
- String fatal = "\"unicorn.home\" is not set in the JVM parameters. Please read the README file before trying to install Unicorn";
- System.err.println("FATAL: " + fatal);
- throw new InitializationFailedException(fatal);
- } else {
- File ucnHomeFile = new File(ucnHome);
- if (!ucnHomeFile.exists() || !ucnHomeFile.isDirectory()) {
- String fatal = "JVM parameter \"unicorn.home\" is not an existing directory: " + System.getProperty("unicorn.home");
- System.err.println("FATAL: " + fatal);
- throw new InitializationFailedException(fatal);
- } else {
- unicornHome = ucnHomeFile.toURI();
- }
+ try {
+ URL classesDir = Framework.class.getResource("/");
+ File classes = new File(classesDir.toURI());
+ System.setProperty("unicorn.home", classes.getParent());
+ } catch (URISyntaxException e) {
+ throw new InitializationFailedException(e.getMessage(), e);
}
// Log4j initialization attempt
- String log4jPath = unicornHome.getPath() + "/WEB-INF/conf/log4j.xml";
- File log4jFile = new File(log4jPath);
- if (log4jFile.exists()) {
- DOMConfigurator.configure(log4jPath);
- logger.info("OK - JVM parameter \"unicorn.home\" was found: " + unicornHome.getPath());
+ URL log4jURL = Framework.class.getResource("/log4j.xml");
+ if (log4jURL != null) {
+ DOMConfigurator.configure(log4jURL);
logger.info("OK - Log4j successfully initialized");
- logger.debug("> Used log4j.xml file: " + log4jPath);
+ logger.debug("> Used log4j.xml file: " + log4jURL.toString());
} else {
- logger.warn("Log4j config file \"log4j.xml\" could not be found: " + log4jPath);
+ logger.warn("Log4j config file \"log4j.xml\" could not be found in classpath.");
logger.warn("Log4j will not be initialized");
}
}
@@ -169,25 +151,26 @@
public static void initConfig() throws InitializationFailedException {
// Load unicorn.properties
logger.debug("-------------------------------------------------------");
- String unicornPath = unicornHome.getPath() + "/WEB-INF/conf/unicorn.properties";
+ InputStream uniconfStream = Framework.class.getResourceAsStream("/unicorn.properties");
+ if (uniconfStream == null)
+ throw new InitializationFailedException("Unicorn config file \"unicorn.properties\" could not be found in classpath.");
try {
- loadConfigFile(unicornPath, true);
+ String[] uniHome = {"UNICORN_HOME", System.getProperty("unicorn.home")};
+ loadConfigFile(uniconfStream, "unicorn.properties", uniHome);
logger.info("OK - Config file unicorn.properties successfully loaded");
- } catch (FileNotFoundException e) {
- throw new InitializationFailedException("Unicorn config file \"unicorn.properties\" could not be found: " + unicornPath);
} catch (IOException e) {
throw new InitializationFailedException("Error reading \"unicorn.properties\": " + e.getMessage());
- }
+ }
// Loading other config files
for (String fileName : configFiles) {
- String path = Property.get("PATH_TO_CONF_FILES") + fileName;
+ InputStream confStream = Framework.class.getResourceAsStream("/" + fileName);
logger.debug("-------------------------------------------------------");
+ if (confStream == null)
+ throw new InitializationFailedException("Mandatory config file \"" + fileName + "\" could not be found in classpath.");
try {
- loadConfigFile(path, false);
+ loadConfigFile(confStream, fileName);
logger.info("OK - Config file " + fileName + " successfully loaded");
- } catch (FileNotFoundException e) {
- throw new InitializationFailedException("Mandatory config file \"" + fileName + "\" could not be found: " + path);
} catch (IOException e) {
throw new InitializationFailedException("Error reading \"" + fileName + "\": " + e.getMessage());
}
@@ -256,48 +239,32 @@
public static void initObservers() throws InitializationFailedException {
// Loading observers
logger.debug("-------------------------------------------------------");
- logger.debug("Loading available observers from the observers list file.");
- BufferedReader aBufferedReader;
- try {
- aBufferedReader = new BufferedReader(new FileReader(Property.get("OBSERVER_LIST_FILE")));
- logger.debug("Using file: " + Property.get("OBSERVER_LIST_FILE"));
- } catch (FileNotFoundException e) {
- throw new InitializationFailedException("The list of observers could not be found: " + Property.get("OBSERVER_LIST_FILE"));
- }
- String readLine;
- do {
- try {
- readLine = aBufferedReader.readLine();
- if (readLine == null)
- break;
- } catch (IOException e) {
- throw new InitializationFailedException("Error while reading the observer list file: " + e.getMessage());
- }
- if ("".equals(readLine.trim()) || readLine.matches("^#.*$"))
- continue;
- String sWADL = readLine;
- if (!readLine.matches(".*\\.wadl$")) {
- sWADL += "/" + Property.get("OBSERVER_XML_FILENAME");
- }
- logger.debug("- Loading observer contract: " + sWADL);
+ logger.debug("Loading available observers from the observers.properties");
+ Properties observers = Property.getProps("observers.properties");
+ for (Object key : observers.keySet()) {
+ String observerId = key.toString();
+ String observerContract = observers.getProperty(key.toString());
+ if (!observerContract.matches(".*\\.wadl$"))
+ observerContract += "/" + Property.get("OBSERVER_DEFAULT_FILENAME");
+ logger.debug("- Loading observer contract: " + observerContract);
Observer obs = new Observer();
WADLUnmarshaller unmarshaller;
try {
unmarshaller = new WADLUnmarshallerXPath();
- unmarshaller.addURL(new URL(sWADL));
+ unmarshaller.addURL(new URL(observerContract));
unmarshaller.unmarshal();
} catch (MalformedURLException e) {
- logger.error("Invalid observer contract URL \"" + sWADL + "\". Check the observers list file.", e);
+ logger.error("Invalid observer contract URL \"" + observerContract + "\". Check the observers list file.", e);
logger.warn("> This observer will be skiped");
continue;
} catch (ParserConfigurationException e) {
throw new InitializationFailedException("ParserConfigurationException: " + e.getMessage());
} catch (IOException e) {
- logger.error("Unable to read observer contract: " + sWADL, e);
+ logger.error("Unable to read observer contract: " + observerContract, e);
logger.warn("> This observer will be skiped");
continue;
} catch (Exception e) {
- logger.error("Error unmarshalling contract: " + sWADL, e);
+ logger.error("Error unmarshalling contract: " + observerContract, e);
logger.warn("> This observer will be skiped");
continue;
}
@@ -311,7 +278,7 @@
obs.setListOfCallMethod(unmarshaller.getListOfCallMethod());
obs.setParamLangName(unmarshaller.getNameOfLangParameter());
obs.setParamOutputName(unmarshaller.getNameOfOutputParameter());
- obs.setID(unmarshaller.getID());
+ obs.setID(observerId);
obs.setName(unmarshaller.getName());
obs.setDescription(unmarshaller.getDescription());
obs.setHelpLocation(unmarshaller.getHelpLocation());
@@ -320,7 +287,7 @@
obs.setSupportedMimeTypes(unmarshaller.getSupportedMimeTypes());
obs.setIndexURI(unmarshaller.getIndexUri());
mapOfObserver.put(new String(obs.getID()), obs);
- } while (readLine != null);
+ }
if (mapOfObserver.size() == 0) {
throw new InitializationFailedException("There is no observer loaded. Check the observers list file.");
} else {
@@ -602,19 +569,17 @@
logger.info("OK - Velocity successfully initialized");
}
- private static void loadConfigFile(String path, boolean addUnicornHome) throws FileNotFoundException, IOException {
+ private static void loadConfigFile(InputStream stream, String fileName, String[]... parameters) throws IOException {
UCNProperties properties = new UCNProperties();
- File configFile = new File(path);
- String fileName = configFile.getName();
- if (fileName != null) {
- logger.debug("Loading config file: " + fileName);
- if (addUnicornHome)
- properties.put("UNICORN_HOME", unicornHome.getPath());
- properties.load(new FileInputStream(configFile));
- properties.parse();
- unicornPropertiesFiles.put(fileName, properties);
- logger.debug("> " + fileName + ":" + properties);
+ logger.debug("Loading config file: " + fileName);
+ for (String[] param : parameters) {
+ if (param.length == 2 && param[1] != null)
+ properties.put(param[0], param[1]);
}
+ properties.load(stream);
+ properties.parse();
+ unicornPropertiesFiles.put(fileName, properties);
+ logger.debug("> " + fileName + ":" + properties);
}
public static Hashtable<String, UCNProperties> getUnicornPropertiesFiles() {
Received on Monday, 14 June 2010 13:25:05 UTC