1 /*2 * Copyright (c) 2002-2003 by OpenSymphony3 * All rights reserved.4 */5 package com.opensymphony.workflow;6 7 import com.opensymphony.workflow.loader.DTDEntityResolver;8 import com.opensymphony.workflow.loader.WorkflowDescriptor;9 import com.opensymphony.workflow.loader.WorkflowLoader;10 11 import org.w3c.dom.Document ;12 import org.w3c.dom.Element ;13 14 import java.io.File ;15 import java.io.FileInputStream ;16 17 import java.net.URL ;18 19 import javax.xml.parsers.DocumentBuilder ;20 import javax.xml.parsers.DocumentBuilderFactory ;21 22 23 /**24 * User: Hani Suleiman (hani@formicary.net)25 * Date: Feb 12, 200326 * Time: 6:49:46 PM27 */28 public class DescriptorLoader {29 //~ Methods ////////////////////////////////////////////////////////////////30 31 public static WorkflowDescriptor getDescriptor(String url) throws Exception {32 File file = new File (new URL (url).getFile());33 34 if (!file.exists()) {35 throw new IllegalArgumentException ("file " + file + " does not exist");36 }37 38 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();39 dbf.setNamespaceAware(true);40 dbf.setValidating(true);41 42 DocumentBuilder db = dbf.newDocumentBuilder();43 db.setEntityResolver(new DTDEntityResolver());44 db.setErrorHandler(new WorkflowLoader.WorkflowErrorHandler(new URL (url)));45 46 Document doc = db.parse(new FileInputStream (file));47 Element root = (Element ) doc.getElementsByTagName("workflow").item(0);48 49 WorkflowDescriptor descriptor = new WorkflowDescriptor(root);50 51 return descriptor;52 }53 }54