From f20547a9f617a971d7dfa64a5a4564cd2f013170 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Thu, 14 Jun 2012 11:35:25 +0200 Subject: Created ModuleException --- src/main/java/com/c2kernel/process/Module.java | 28 ++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) (limited to 'src/main/java/com/c2kernel/process/Module.java') diff --git a/src/main/java/com/c2kernel/process/Module.java b/src/main/java/com/c2kernel/process/Module.java index e2a4f2e..6e5f8d1 100644 --- a/src/main/java/com/c2kernel/process/Module.java +++ b/src/main/java/com/c2kernel/process/Module.java @@ -47,21 +47,28 @@ public class Module { private final ArrayList imports = new ArrayList(); private static DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); private final DocumentBuilder parser; + private Document moduleDOM; static { dbf.setValidating(false); dbf.setNamespaceAware(false); } - public Module(String moduleXML) throws Exception { - parser = dbf.newDocumentBuilder(); - Document moduleDOM = parser.parse(new InputSource(new StringReader(moduleXML))); - + 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 info = (Element)moduleDOM.getElementsByTagName("Info").item(0); desc = ((Text)info.getElementsByTagName("Description").item(0).getFirstChild()).getData(); version = ((Text)info.getElementsByTagName("Version").item(0).getFirstChild()).getData(); @@ -95,10 +102,15 @@ public class Module { String target = confElement.getAttribute("target"); String event = confElement.getAttribute("event"); String lang = confElement.getAttribute("lang"); - Script thisScript = new Script(lang, ((Text)confElement.getFirstChild()).getData(), ErrorInfo.class); - // target can be 'client', 'server' or missing, which implies both. - if (!target.equals("client")) serverScripts.put(event, thisScript); - if (!target.equals("server")) clientScripts.put(event, thisScript); + try { + Script thisScript = new Script(lang, ((Text)confElement.getFirstChild()).getData(), ErrorInfo.class); + // target can be 'client', 'server' or missing, which implies both. + if (!target.equals("client")) serverScripts.put(event, thisScript); + if (!target.equals("server")) clientScripts.put(event, thisScript); + } catch (ScriptingEngineException e) { + Logger.error(e); + throw new ModuleException("Could not process module script"); + } } // Get imports -- cgit v1.2.3