package com.c2kernel.process.module; import java.io.StringReader; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.Properties; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.w3c.dom.Text; import org.xml.sax.InputSource; import com.c2kernel.common.CannotManageException; import com.c2kernel.common.ObjectAlreadyExistsException; import com.c2kernel.common.ObjectCannotBeUpdated; import com.c2kernel.common.ObjectNotFoundException; import com.c2kernel.entity.proxy.ItemProxy; import com.c2kernel.lifecycle.instance.predefined.entitycreation.NewAgent; import com.c2kernel.lifecycle.instance.predefined.entitycreation.NewItem; import com.c2kernel.lookup.DomainPath; import com.c2kernel.process.Bootstrap; import com.c2kernel.process.Gateway; import com.c2kernel.scripting.ErrorInfo; import com.c2kernel.scripting.ScriptingEngineException; import com.c2kernel.utils.Logger; import com.c2kernel.utils.Resource; public class Module { public String ns, name; public ModuleInfo info; public String resURL; public ModuleImports imports = new ModuleImports(); public ArrayList config = new ArrayList(); public ArrayList scripts = new ArrayList(); private static DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); private DocumentBuilder parser; private Document moduleDOM; static { dbf.setValidating(false); dbf.setNamespaceAware(false); } public Module() { super(); } public Module(String moduleXML) throws ModuleException { try { parser = dbf.newDocumentBuilder(); moduleDOM = parser.parse(new InputSource(new StringReader(moduleXML))); } catch (Exception e) { Logger.error(e); throw new ModuleException("Could not process modules. XML Parser exception"); } Element root = (Element)moduleDOM.getElementsByTagName("CristalModule").item(0); // Get module metadata ns = root.getAttribute("ns"); name = root.getAttribute("name"); Element infoElem = (Element)moduleDOM.getElementsByTagName("Info").item(0); info = new ModuleInfo(); info.desc = ((Text)infoElem.getElementsByTagName("Description").item(0).getFirstChild()).getData(); info.version = ((Text)infoElem.getElementsByTagName("Version").item(0).getFirstChild()).getData(); NodeList nl = infoElem.getElementsByTagName("Dependency"); for (int i=0; i0) { resURL = ((Text)nl.item(0).getFirstChild()).getData(); Resource.addModuleBaseURL(ns, resURL); } // Get config properties nl = root.getElementsByTagName("Config"); for (int i=0; i0) { Element impElem = (Element)nl.item(0); nl = impElem.getChildNodes(); for (int i=0; i getDependencies() { return info.dependency; } public boolean hasDependency(String dep) { return info.dependency.contains(dep); } }