2006/unicorn/src/org/w3c/unicorn UnicornCall.java,1.1.2.1,1.1.2.2 Framework.java,1.1.2.1,1.1.2.2 Init.java,1.1.2.7,NONE Controller.java,1.1.2.6,NONE

Update of /sources/public/2006/unicorn/src/org/w3c/unicorn
In directory hutz:/tmp/cvs-serv22119/src/org/w3c/unicorn

Modified Files:
      Tag: dev2
	UnicornCall.java Framework.java 
Removed Files:
      Tag: dev2
	Init.java Controller.java 
Log Message:
All initialization actions moved to Framework.java

Index: Framework.java
===================================================================
RCS file: /sources/public/2006/unicorn/src/org/w3c/unicorn/Attic/Framework.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -d -r1.1.2.1 -r1.1.2.2
--- Framework.java	11 Aug 2009 16:05:38 -0000	1.1.2.1
+++ Framework.java	12 Aug 2009 13:15:18 -0000	1.1.2.2
@@ -7,23 +7,27 @@
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileFilter;
+import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.IOException;
 import java.net.MalformedURLException;
+import java.net.URI;
 import java.net.URL;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
 import java.util.Map.Entry;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import javax.xml.namespace.NamespaceContext;
+import org.apache.log4j.Logger;
+import org.apache.log4j.PropertyConfigurator;
 import org.w3c.unicorn.contract.Observer;
 import org.w3c.unicorn.contract.WADLUnmarshaller;
 import org.w3c.unicorn.contract.WADLUnmarshallerXPath;
+import org.w3c.unicorn.output.OutputFactory;
 import org.w3c.unicorn.response.parser.ResponseParser;
 import org.w3c.unicorn.tasklist.RDFUnmarshaller;
 import org.w3c.unicorn.tasklist.RDFUnmarshallerJena;
@@ -33,6 +37,8 @@
 import org.w3c.unicorn.util.ListFiles;
 import org.w3c.unicorn.util.LocalizedString;
 import org.w3c.unicorn.util.Property;
+import org.w3c.unicorn.util.TemplateHelper;
+import org.w3c.unicorn.util.UCNProperties;
 
 /**
  * Main class of the central module of UniCORN.
@@ -42,12 +48,6 @@
 public class Framework {
 
 	/**
-	 * Instance of log class to, as his name say, log any information during
-	 * execution.
-	 */
-	public static final Log logger = LogFactory.getLog(Framework.class);
-
-	/**
 	 * Data structure for the Observers
 	 */
 	public static Map<String, Observer> mapOfObserver = null;
@@ -71,24 +71,180 @@
 	 * Data structure for the various response parser
 	 */
 	public static Map<String, ResponseParser> mapOfReponseParser = null;
+	
 	/**
-	 * Load the list of extensions
+	 * Log4j Logger
 	 */
-	public static void init() {
-		/*try {
-			/*URL aURLPropFile = Property
-					.getPropertyFileURL("extensions.properties");
-
-			final Properties aProperties = new Properties();
-			aProperties.load(aURLPropFile.openStream());*/
-			
-			Framework.aPropertiesExtension = Property.getProps("extensions.properties");
+	public static Logger logger;
+	
+	/**
+	 * URI to unicorn home
+	 */
+	public static URI unicornHome;
+	
+	/**
+	 * True if initialization did not throw any exception
+	 */
+	public static boolean isUcnInitialized = false;
+	
+	/**
+	 * Initialize Unicorn
+	 * @throws Exception 
+	 */
+	public static void init() throws Exception {
+		// Checks that unicorn.home (JVM parameter) is set to an existing directory
+		String ucnHome = System.getProperty("unicorn.home");
+		System.err.println(ucnHome);
+		File ucnHomeFile = new File(ucnHome);
+		if (ucnHome == null) {
+			String error = "ERROR: \"unicorn.home\" is not set in the JVM parameters. Please read the README file before trying to install Unicorn";
+			System.err.println(error);
+			throw new Exception(error);
+		} else if (!ucnHomeFile.exists() && ucnHomeFile.isDirectory()) {
+			String error = "ERROR: \"unicorn.home\" is not an existing directory: " + System.getProperty("unicorn.home");
+			System.err.println(error);
+			throw new Exception(error);
+		} else {
+			unicornHome = ucnHomeFile.toURI();
+			System.out.println("OK - \"unicorn.home\" was found: " + unicornHome.getPath());
+		}
+		
+		// Log4j initialization attempt
+		String log4jPath = unicornHome.getPath() + "/WEB-INF/conf/log4j.properties";
+		File log4jPropFile = new File(log4jPath);
+		if (!log4jPropFile.exists()) {
+			String error = "WARN: \"log4j.properties\" could not be found: " + log4jPath;
+			System.err.println(error);
+			System.err.println("WARN: Log4j will not be initialized.");
+		} else {
+			System.out.println("OK - Log4j initialized with file: " + log4jPath);
+			PropertyConfigurator.configure(log4jPropFile.toURI().toURL());
+			logger = Logger.getLogger("Framework");
+			logger.info("Unicorn home directory was found");
+			logger.debug("Unicorn home path = " + unicornHome.getPath());
+			logger.info("Log4j has been successfully initialized");
+			logger.debug("Log4j properties file = " + log4jPropFile.toURI().getPath());
+		}
+		
+		// Loading unicorn.properties
+		logger.debug("Loading unicorn.properties");		
+		String unicornPath = unicornHome.getPath() + "/WEB-INF/conf/unicorn.properties";
+		logger.debug("Unicorn properties file = " + unicornPath);
+		File unicornPropFile = new File(unicornPath);
+		if (!unicornPropFile.exists()) {
+			String error = "ERROR: \"unicorn.properties\" could not be found: " + unicornPath;
+			System.err.println(error);
+			logger.error("Unicorn properties file does not exists! Path is: " + unicornPath);
+			throw new Exception(error);
+		} else {
+			UCNProperties ucnProperties = new UCNProperties();
+			ucnProperties.put("UNICORN_HOME", unicornHome.getPath());
+			ucnProperties.load(unicornPropFile.toURI().toURL().openStream());
+			Property.getUnicornPropertiesFiles().put("unicorn.properties", ucnProperties);
+			//Property.setUnicornProps(ucnProperties);
+			logger.info("Unicorn properties file successfully loaded");
+			logger.debug("Loaded properties: " + ucnProperties);
+		}
+		
+		// Checking Unicorn properties
+		String[] mandatoryProperties = {"PATH_TO_CONF_FILES","ROUTE_XML","PATH_TO_CACHE"};
+		for (String property: mandatoryProperties) {
+			if (Property.get(property) == null) {
+				String error = "\""+ property +"\" is not defined in unicorn.properties. This property is mandatory.";
+				logger.error(error);
+				throw new Exception(error);
+			}
+		}
+		
+		// Loading config files
+		String[] propertyFiles = {"extensions.properties", "responseParsers.properties", "specialFormaters.properties", "velocity.properties"};
+		for (String fileName : propertyFiles) {
+			logger.debug("Loading " + fileName);	
+			String path = Property.get("PATH_TO_CONF_FILES") + fileName;
+			logger.debug(fileName + " path = " + path);
+			File file = new File(path);
+			if (!file.exists()) {
+				String error = "ERROR: \"" + fileName + "\" could not be found: " + path;
+				System.err.println(error);
+				logger.error(fileName + " file does not exists! Path is: " + path);
+				throw new Exception(error);
+			} else {
+				Properties properties = new Properties();
+				properties.load(file.toURI().toURL().openStream());
+				Property.getUnicornPropertiesFiles().put(fileName, properties);
+				logger.info(fileName + " file successfully loaded");
+				logger.debug("Loaded properties: " + properties);
+			}
+		}
+		
+		TemplateHelper.init();
+		
+		// Initialize WADLUnmarshallerXPath (Gets the Namespace URI and the prefix)
+		WADLUnmarshallerXPath.setNamespaceContext(new NamespaceContext() {
+			public String getNamespaceURI(final String sPrefix) {
+				if ("xs".equals(sPrefix)) {
+					return "http://www.w3.org/2001/XMLSchema";
+				} else if ("uco".equals(sPrefix)) {
+					return "http://www.w3.org/unicorn/observationresponse";
+				} else {
+					return null;
+				}
+			}
+			public String getPrefix(final String sNamespaceURI) {
+				if ("http://www.w3.org/2001/XMLSchema".equals(sNamespaceURI)) {
+					return "xs";
+				} else if ("http://www.w3.org/unicorn/observationresponse"
+						.equals(sNamespaceURI)) {
+					return "uco";
+				} else {
+					return null;
+				}
+			}
+			public Iterator<String> getPrefixes(final String sNamespaceURI) {
+				return null;
+			}
+		});
+		
+		
+		// Initialize RDFUnmarshallerJena
+		FileInputStream fis = new FileInputStream(org.w3c.unicorn.util.Property
+				.get("TASKLIST_RDF_MODEL"));
+		RDFUnmarshallerJena.getModel().read(fis, null);
+		// define resource use to find information into the RDF graph
+		RDFUnmarshallerJena.setRESOURCE_TASK(RDFUnmarshallerJena.getModel()
+				.getProperty(RDFUnmarshallerJena.getUcnNamespace() + "Task"));
+		// define property use to find information into the RDF graph
+		RDFUnmarshallerJena.setPROPERTY_DESCRIPTION(RDFUnmarshallerJena.getModel()
+				.getProperty(RDFUnmarshallerJena.getUcnNamespace() + "description"));
+		RDFUnmarshallerJena.setPROPERTY_HASMAPPING(RDFUnmarshallerJena.getModel()
+				.getProperty(RDFUnmarshallerJena.getUcnNamespace() + "hasMapping"));
+		RDFUnmarshallerJena.setPROPERTY_HASPARAMETER(RDFUnmarshallerJena.getModel()
+				.getProperty(RDFUnmarshallerJena.getUcnNamespace() + "hasParameter"));
+		RDFUnmarshallerJena.setPROPERTY_HASVALUE(RDFUnmarshallerJena.getModel()
+				.getProperty(RDFUnmarshallerJena.getUcnNamespace() + "hasValue"));
+		RDFUnmarshallerJena.setPROPERTY_LONGNAME(RDFUnmarshallerJena.getModel()
+				.getProperty(RDFUnmarshallerJena.getUcnNamespace() + "longName"));
+		RDFUnmarshallerJena.setPROPERTY_OBSERVER(RDFUnmarshallerJena.getModel()
+				.getProperty(RDFUnmarshallerJena.getUcnNamespace() + "observer"));
+		RDFUnmarshallerJena.setPROPERTY_PARAMETER(RDFUnmarshallerJena.getModel()
+				.getProperty(RDFUnmarshallerJena.getUcnNamespace() + "parameter"));
+		RDFUnmarshallerJena.setPROPERTY_REFERENCE(RDFUnmarshallerJena.getModel()
+				.getProperty(RDFUnmarshallerJena.getUcnNamespace() + "reference"));
+		RDFUnmarshallerJena.setPROPERTY_TYPE(RDFUnmarshallerJena.getModel()
+				.getProperty("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"));
+		RDFUnmarshallerJena.setPROPERTY_VALUE(RDFUnmarshallerJena.getModel()
+				.getProperty(RDFUnmarshallerJena.getUcnNamespace() + "value"));
+		
+		// Initialize OutputFactory
+		OutputFactory.setPropertiesSpecialFormaters(Property.getProps("specialFormaters.properties"));
+		
+		//WADLUnmarshallerXPath.init();
+		//RDFUnmarshallerJena.init();
+		//Framework.init();
+		//OutputFactory.init();
+		//IndexGenerator.init();
 			
-			//Framework.aPropertiesExtension = aProperties;
-		/*} catch (final IOException e) {
-			Framework.logger.error("IOException : " + e.getMessage(), e);
-			e.printStackTrace();
-		}*/
+		Framework.aPropertiesExtension = Property.getProps("extensions.properties");
 		
 	    //Load the map of ResponseParser
 	 
@@ -99,12 +255,7 @@
 			// Retrieve the properties of the response parsers in the resources
 			mapOfReponseParser = new LinkedHashMap<String, ResponseParser>();
 
-			//URL aURLPropFile = Property
-			//		.getPropertyFileURL("responseParsers.properties");
-
-			//final Properties aProperties = new Properties();
 			Properties aProperties = Property.getProps("responseParsers.properties");
-			//aProperties.load(aURLPropFile.openStream());
 
 			for (Entry<Object, Object> e : aProperties.entrySet()) {
 				ResponseParser aResponseParser = (ResponseParser) (Class
@@ -119,8 +270,7 @@
 			}
 		}
 
-	   // Static operations to initialize framework the first time this class is used.
-
+		// Static operations to initialize framework the first time this class is used.
 		if (Framework.logger.isDebugEnabled()) {
 			Framework.logger.debug("Loading available observers...");
 		}
@@ -145,8 +295,7 @@
 				}
 
 				// Get URL of the contract. If the name of wadl file is not
-				// defined,
-				// the contract's name will be observer.wadl
+				// defined, the contract's name will be observer.wadl
 				final String sWADL;
 				if (sReadLine.matches(".*\\.wadl$")) {
 					sWADL = sReadLine;
@@ -253,5 +402,6 @@
 		}
 
 		Framework.logger.info("End of initialisation of UniCORN.");
+		isUcnInitialized = true;
 	}
 }

--- Controller.java DELETED ---

--- Init.java DELETED ---

Index: UnicornCall.java
===================================================================
RCS file: /sources/public/2006/unicorn/src/org/w3c/unicorn/Attic/UnicornCall.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -d -r1.1.2.1 -r1.1.2.2
--- UnicornCall.java	11 Aug 2009 16:05:38 -0000	1.1.2.1
+++ UnicornCall.java	12 Aug 2009 13:15:18 -0000	1.1.2.2
@@ -15,7 +15,6 @@
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-
 import javax.activation.MimeType;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
@@ -23,9 +22,8 @@
 import javax.xml.xpath.XPathConstants;
 import javax.xml.xpath.XPathExpression;
 import javax.xml.xpath.XPathFactory;
-
 import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.logging.Log;
+import org.apache.log4j.Logger;
 import org.apache.velocity.Template;
 import org.apache.velocity.VelocityContext;
 import org.w3c.dom.Document;
@@ -52,7 +50,6 @@
 import org.w3c.unicorn.tasklisttree.TLTNode;
 import org.w3c.unicorn.util.Property;
 import org.w3c.unicorn.util.TemplateHelper;
-
 import com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl;
 
 /**
@@ -65,7 +62,7 @@
 	/**
 	 * Log Object to perform powerful logs
 	 */
-	private static final Log logger = Framework.logger;
+	private static final Logger logger = Framework.logger;
 
 	// Request
 	/**
@@ -799,7 +796,7 @@
 	/**
 	 * Used for complex logging purpose
 	 */
-	private static final Log logger = Framework.logger;
+	private static final Logger logger = Framework.logger;
 
 	/**
 	 * Data Structure for the responses

Received on Wednesday, 12 August 2009 13:16:01 UTC