Search in sources :

Example 56 with Namespace

use of org.jdom.Namespace in project felix by apache.

the class PomWriter method write.

public static void write(Writer w, Model newModel, boolean namespaceDeclaration) throws IOException {
    Element root = new Element("project");
    if (namespaceDeclaration) {
        String modelVersion = newModel.getModelVersion();
        Namespace pomNamespace = Namespace.getNamespace("", "http://maven.apache.org/POM/" + modelVersion);
        root.setNamespace(pomNamespace);
        Namespace xsiNamespace = Namespace.getNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
        root.addNamespaceDeclaration(xsiNamespace);
        if (root.getAttribute("schemaLocation", xsiNamespace) == null) {
            root.setAttribute("schemaLocation", "http://maven.apache.org/POM/" + modelVersion + " http://maven.apache.org/maven-v" + modelVersion.replace('.', '_') + ".xsd", xsiNamespace);
        }
    }
    Document doc = new Document(root);
    MavenJDOMWriter writer = new MavenJDOMWriter();
    String encoding = newModel.getModelEncoding() != null ? newModel.getModelEncoding() : "UTF-8";
    Format format = Format.getPrettyFormat().setEncoding(encoding);
    writer.write(newModel, doc, w, format);
}
Also used : Format(org.jdom.output.Format) Element(org.jdom.Element) Document(org.jdom.Document) Namespace(org.jdom.Namespace)

Example 57 with Namespace

use of org.jdom.Namespace in project vcell by virtualcell.

the class SEDMLExporter method getSEDMLFile.

public String getSEDMLFile(String sPath) {
    // Create an SEDMLDocument and create the SEDMLModel from the document, so that other details can be added to it in translateBioModel()
    SEDMLDocument sedmlDocument = new SEDMLDocument();
    sedmlDocument.getSedMLModel().setAdditionalNamespaces(Arrays.asList(new Namespace[] { Namespace.getNamespace(SEDMLTags.SBML_NS_PREFIX, SEDMLTags.SBML_NS_L2V4) }));
    sedmlModel = sedmlDocument.getSedMLModel();
    translateBioModelToSedML(sPath);
    // write SEDML document into SEDML writer, so that the SEDML str can be retrieved
    return sedmlDocument.writeDocumentToString();
}
Also used : SEDMLDocument(org.jlibsedml.SEDMLDocument) Namespace(org.jdom.Namespace)

Example 58 with Namespace

use of org.jdom.Namespace in project freemarker by apache.

the class NodeListModel method get.

/**
 * Provides node list traversal as well as special functions: filtering by name,
 * filtering by node type, shallow-copying, and duplicate removal.
 * While not as powerful as the full XPath support built into the
 * {@link #exec(List)} method, it does not require the external Jaxen
 * library to be present at run time. Below are listed the recognized keys.
 * In key descriptions, "applicable to this-and-that node type" means that if
 * a key is applied to a node list that contains a node of non-applicable type
 * a TemplateMethodModel will be thrown. However, you can use <tt>_ftype</tt>
 * key to explicitly filter out undesired node types prior to applying the
 * restricted-applicability key. Also "current nodes" means nodes contained in this
 * set.
 * <ul>
 *    <li><tt>*</tt> or <tt>_children</tt>: all direct element children of current nodes (non-recursive). Applicable
 *  to element and document nodes.</li>
 *    <li><tt>@*</tt> or <tt>_attributes</tt>: all attributes of current nodes. Applicable to elements only.</li>
 *    <li><tt>_content</tt> the complete content of current nodes (non-recursive).
 *  Applicable to elements and documents.</li>
 *    <li><tt>_text</tt>: the text of current nodes, one string per node (non-recursive).
 *  Applicable to elements, attributes, comments, processing instructions (returns its data)
 *  and CDATA sections. The reserved XML characters ('&lt;' and '&amp;') are escaped.</li>
 *    <li><tt>_plaintext</tt>: same as <tt>_text</tt>, but does not escape any characters,
 *  and instead of returning a NodeList returns a SimpleScalar.</li>
 *    <li><tt>_name</tt>: the names of current nodes, one string per node (non-recursive).
 *  Applicable to elements and attributes (returns their local name),
 *  entities, processing instructions (returns its target), doctypes
 * (returns its public ID)</li>
 *    <li><tt>_qname</tt>: the qualified names of current nodes in <tt>[namespacePrefix:]localName</tt>
 * form, one string per node (non-recursive). Applicable to elements and attributes</li>
 *    <li><tt>_cname</tt>: the canonical names of current nodes (namespace URI + local name),
 * one string per node (non-recursive). Applicable to elements and attributes</li>
 *    <li><tt>_nsprefix</tt>: namespace prefixes of current nodes,
 * one string per node (non-recursive). Applicable to elements and attributes</li>
 *    <li><tt>_nsuri</tt>: namespace URIs of current nodes,
 * one string per node (non-recursive). Applicable to elements and attributes</li>
 *    <li><tt>_parent</tt>: parent elements of current nodes. Applicable to element, attribute, comment,
 *  entity, processing instruction.</li>
 *    <li><tt>_ancestor</tt>: all ancestors up to root element (recursive) of current nodes. Applicable
 *  to same node types as <tt>_parent</tt>.</li>
 *    <li><tt>_ancestorOrSelf</tt>: all ancestors of current nodes plus current nodes. Applicable
 *  to same node types as <tt>_parent</tt>.</li>
 *    <li><tt>_descendant</tt>: all recursive descendant element children of current nodes. Applicable to
 *  document and element nodes.
 *    <li><tt>_descendantOrSelf</tt>: all recursive descendant element children of current nodes
 *  plus current nodes. Applicable to document and element nodes.
 *    <li><tt>_document</tt>: all documents the current nodes belong to.
 *  Applicable to all nodes except text.
 *    <li><tt>_doctype</tt>: doctypes of the current nodes.
 *  Applicable to document nodes only.
 *    <li><tt>_fname</tt>: is a filter-by-name template method model. When called,
 *  it will yield a node list that contains only those current nodes whose name
 *  matches one of names passed as argument. Attribute names should NOT be prefixed with the
 *  at sign (@). Applicable on all node types, however has no effect on unnamed nodes.</li>
 *    <li><tt>_ftype</tt>: is a filter-by-type template method model. When called,
 *  it will yield a node list that contains only those current nodes whose type matches one
 *  of types passed as argument. You should pass a single string to this method
 *  containing the characters of all types to keep. Valid characters are:
 *  e (Element), a (Attribute), n (Entity), d (Document), t (DocType),
 *  c (Comment), p (ProcessingInstruction), x (text). If the string anywhere contains
 *  the exclamation mark (!), the filter's effect is inverted.</li>
 *    <li><tt>_type</tt>: Returns a one-character String SimpleScalar containing
 *    the typecode of the first node in the node list. Valid characters are:
 *  e (Element), a (Attribute), n (Entity), d (Document), t (DocType),
 *  c (Comment), p (ProcessingInstruction), x (text). If the type of the node
 *  is unknown, returns '?'. If the node list is empty, returns an empty string scalar.</li>
 *    <li><tt>_unique</tt>: a copy of the current nodes that keeps only the
 *  first occurrence of every node, eliminating duplicates. Duplicates can
 *  occur in the node list by applying uptree-traversals <tt>_parent</tt>,
 *  <tt>_ancestor</tt>, <tt>_ancestorOrSelf</tt>, and <tt>_document</tt>.
 *  I.e. <tt>foo._children._parent</tt> will return a node list that has
 *  duplicates of nodes in foo - each node will have the number of occurrences
 *  equal to the number of its children. In these cases, use
 *  <tt>foo._children._parent._unique</tt> to eliminate duplicates. Applicable
 *  to all node types.</li>
 *    <li><tt>_copy</tt>: a copy of the current node list. It is a shallow copy that
 *  shares the underlying node list with this node list, however it has a
 *  separate namespace registry, so it can be used to guarantee that subsequent
 *  changes to the set of registered namespaces does not affect the node lists
 *  that were used to create this node list. Applicable to all node types.</li>
 *    <li><tt>_registerNamespace(prefix, uri)</tt>: register a XML namespace
 *  with the specified prefix and URI for the current node list and all node
 *  lists that are derived from the current node list. After registering,
 *  you can use the <tt>nodelist["prefix:localname"]</tt> or
 *  <tt>nodelist["@prefix:localname"]</tt> syntaxes to reach elements and
 *  attributes whose names are namespace-scoped. Note that the namespace
 *  prefix need not match the actual prefix used by the XML document itself
 *  since namespaces are compared solely by their URI. You can also register
 *  namespaces from Java code using the
 *  {@link #registerNamespace(String, String)} method.
 * </li>
 *    <li><tt>@attributeName</tt>: named attributes of current nodes. Applicable to
 *  elements, doctypes and processing instructions. On doctypes it supports
 *  attributes <tt>publicId</tt>, <tt>systemId</tt> and <tt>elementName</tt>. On processing
 *  instructions, it supports attributes <tt>target</tt> and <tt>data</tt>, as
 *  well as any other attribute name specified in data as <tt>name="value"</tt> pair.
 *  The attribute nodes for doctype and processing instruction are synthetic, and
 *  as such have no parent. Note, however that <tt>@*</tt> does NOT operate on
 *  doctypes or processing instructions.</li>
 *    <li>any other key: element children of current nodes with name matching the key.
 *  This allows for convenience child traversal in <tt>book.chapter.title</tt> style syntax.
 *  Note that <tt>nodeset.childname</tt> is technically equivalent to
 *  <tt>nodeset._children._fname("childname")</tt>, but is both shorter to write
 *  and evaluates faster. Applicable to document and element nodes.</li>
 * </ul>
 * The order of nodes in the resulting set is the order of evaluation of the key
 * on each node in this set from left to right. Evaluation of the key on a single
 * node always yields the results in "natural" order (that of the document preorder
 * traversal), even for uptree traversals. As a consequence, if this node list's nodes
 * are listed in natural order, applying any of the keys will produce a node list that
 * is also naturally ordered. As a special case, all node lists that are directly or
 * indirectly generated from a single Document or Element node through repeated
 * invocations of this method will be naturally ordered.
 * @param key a key that identifies a required set of nodes
 * @return a new NodeListModel that represents the requested set of nodes.
 */
public TemplateModel get(String key) throws TemplateModelException {
    if (isEmpty())
        return EMPTY;
    if (key == null || key.length() == 0)
        throw new TemplateModelException("Invalid key [" + key + "]");
    NodeOperator op = null;
    NamedNodeOperator nop = null;
    String name = null;
    switch(key.charAt(0)) {
        case '@':
            {
                if (key.length() != 2 || key.charAt(1) != '*') {
                    // Generic attribute key
                    nop = NAMED_ATTRIBUTE_OP;
                    name = key.substring(1);
                } else
                    // It is @*
                    op = ALL_ATTRIBUTES_OP;
                break;
            }
        case '*':
            {
                if (key.length() == 1)
                    op = ALL_CHILDREN_OP;
                else
                    // Explicitly disallow any other identifier starting with asterisk
                    throw new TemplateModelException("Invalid key [" + key + "]");
                break;
            }
        case 'x':
        case '_':
            {
                op = (NodeOperator) OPERATIONS.get(key);
                if (op == null) {
                    // Some special operation?
                    Integer specop = (Integer) SPECIAL_OPERATIONS.get(key);
                    if (specop != null) {
                        switch(specop.intValue()) {
                            case SPECIAL_OPERATION_COPY:
                                {
                                    synchronized (namespaces) {
                                        return new NodeListModel(nodes, (Map) ((HashMap) namespaces).clone());
                                    }
                                }
                            case SPECIAL_OPERATION_UNIQUE:
                                return new NodeListModel(removeDuplicates(nodes), namespaces);
                            case SPECIAL_OPERATION_FILTER_NAME:
                                return new NameFilter();
                            case SPECIAL_OPERATION_FILTER_TYPE:
                                return new TypeFilter();
                            case SPECIAL_OPERATION_QUERY_TYPE:
                                return getType();
                            case SPECIAL_OPERATION_REGISTER_NAMESPACE:
                                return new RegisterNamespace();
                            case SPECIAL_OPERATION_PLAINTEXT:
                                return getPlainText();
                        }
                    }
                }
                break;
            }
    }
    if (op == null && nop == null) {
        nop = NAMED_CHILDREN_OP;
        name = key;
    }
    List list = null;
    if (op != null)
        list = evaluateElementOperation(op, nodes);
    else {
        String localName = name;
        Namespace namespace = Namespace.NO_NAMESPACE;
        int colon = name.indexOf(':');
        if (colon != -1) {
            localName = name.substring(colon + 1);
            String nsPrefix = name.substring(0, colon);
            synchronized (namespaces) {
                namespace = (Namespace) namespaces.get(nsPrefix);
            }
            if (namespace == null) {
                if (nsPrefix.equals("xml"))
                    namespace = Namespace.XML_NAMESPACE;
                else
                    throw new TemplateModelException("Unregistered namespace prefix '" + nsPrefix + "'");
            }
        }
        list = evaluateNamedElementOperation(nop, localName, namespace, nodes);
    }
    return createNodeListModel(list, namespaces);
}
Also used : TemplateModelException(freemarker.template.TemplateModelException) HashMap(java.util.HashMap) WeakHashMap(java.util.WeakHashMap) Namespace(org.jdom.Namespace) ArrayList(java.util.ArrayList) LinkedList(java.util.LinkedList) List(java.util.List)

Example 59 with Namespace

use of org.jdom.Namespace in project oozie by apache.

the class Hive2ActionExecutor method setupActionConf.

@Override
@SuppressWarnings("unchecked")
Configuration setupActionConf(Configuration actionConf, Context context, Element actionXml, Path appPath) throws ActionExecutorException {
    Configuration conf = super.setupActionConf(actionConf, context, actionXml, appPath);
    Namespace ns = actionXml.getNamespace();
    String jdbcUrl = actionXml.getChild("jdbc-url", ns).getTextTrim();
    conf.set(HIVE2_JDBC_URL, jdbcUrl);
    String password = null;
    Element passwordElement = actionXml.getChild("password", ns);
    if (passwordElement != null) {
        password = actionXml.getChild("password", ns).getTextTrim();
        conf.set(HIVE2_PASSWORD, password);
    }
    Element queryElement = actionXml.getChild("query", ns);
    Element scriptElement = actionXml.getChild("script", ns);
    if (scriptElement != null) {
        String script = scriptElement.getTextTrim();
        String scriptName = new Path(script).getName();
        this.addScriptToCache = true;
        conf.set(HIVE2_SCRIPT, scriptName);
    } else if (queryElement != null) {
        // Unable to use getTextTrim due to https://issues.apache.org/jira/browse/HIVE-8182
        String query = queryElement.getText();
        conf.set(HIVE2_QUERY, query);
    } else {
        throw new ActionExecutorException(ActionExecutorException.ErrorType.ERROR, "INVALID_ARGUMENTS", "Hive 2 action requires one of <script> or <query> to be set. Neither were found.");
    }
    List<Element> params = (List<Element>) actionXml.getChildren("param", ns);
    String[] strParams = new String[params.size()];
    for (int i = 0; i < params.size(); i++) {
        strParams[i] = params.get(i).getTextTrim();
    }
    ActionUtils.setStrings(conf, HIVE2_PARAMS, strParams);
    String[] strArgs = null;
    List<Element> eArgs = actionXml.getChildren("argument", ns);
    if (eArgs != null && eArgs.size() > 0) {
        strArgs = new String[eArgs.size()];
        for (int i = 0; i < eArgs.size(); i++) {
            strArgs[i] = eArgs.get(i).getTextTrim();
        }
    }
    ActionUtils.setStrings(conf, HIVE2_ARGS, strArgs);
    return conf;
}
Also used : Path(org.apache.hadoop.fs.Path) Configuration(org.apache.hadoop.conf.Configuration) Element(org.jdom.Element) ActionExecutorException(org.apache.oozie.action.ActionExecutorException) List(java.util.List) ArrayList(java.util.ArrayList) Namespace(org.jdom.Namespace)

Example 60 with Namespace

use of org.jdom.Namespace in project oozie by apache.

the class HiveActionExecutor method setupActionConf.

@Override
@SuppressWarnings("unchecked")
Configuration setupActionConf(Configuration actionConf, Context context, Element actionXml, Path appPath) throws ActionExecutorException {
    Configuration conf = super.setupActionConf(actionConf, context, actionXml, appPath);
    Namespace ns = actionXml.getNamespace();
    Element scriptElement = actionXml.getChild("script", ns);
    Element queryElement = actionXml.getChild("query", ns);
    if (scriptElement != null) {
        String script = scriptElement.getTextTrim();
        String scriptName = new Path(script).getName();
        this.addScriptToCache = true;
        conf.set(HIVE_SCRIPT, scriptName);
    } else if (queryElement != null) {
        // Unable to use getTextTrim due to https://issues.apache.org/jira/browse/HIVE-8182
        String query = queryElement.getText();
        conf.set(HIVE_QUERY, query);
    } else {
        throw new ActionExecutorException(ActionExecutorException.ErrorType.ERROR, "INVALID_ARGUMENTS", "Hive action requires one of <script> or <query> to be set. Neither were found.");
    }
    List<Element> params = (List<Element>) actionXml.getChildren("param", ns);
    String[] strParams = new String[params.size()];
    for (int i = 0; i < params.size(); i++) {
        strParams[i] = params.get(i).getTextTrim();
    }
    ActionUtils.setStrings(conf, HIVE_PARAMS, strParams);
    String[] strArgs = null;
    List<Element> eArgs = actionXml.getChildren("argument", ns);
    if (eArgs != null && eArgs.size() > 0) {
        strArgs = new String[eArgs.size()];
        for (int i = 0; i < eArgs.size(); i++) {
            strArgs[i] = eArgs.get(i).getTextTrim();
        }
    }
    ActionUtils.setStrings(conf, HIVE_ARGS, strArgs);
    return conf;
}
Also used : Path(org.apache.hadoop.fs.Path) Configuration(org.apache.hadoop.conf.Configuration) Element(org.jdom.Element) ActionExecutorException(org.apache.oozie.action.ActionExecutorException) List(java.util.List) ArrayList(java.util.ArrayList) Namespace(org.jdom.Namespace)

Aggregations

Namespace (org.jdom.Namespace)102 Element (org.jdom.Element)85 IOException (java.io.IOException)24 XConfiguration (org.apache.oozie.util.XConfiguration)19 StringReader (java.io.StringReader)15 Configuration (org.apache.hadoop.conf.Configuration)15 JDOMException (org.jdom.JDOMException)15 ActionExecutorException (org.apache.oozie.action.ActionExecutorException)13 ArrayList (java.util.ArrayList)12 Path (org.apache.hadoop.fs.Path)11 Document (org.jdom.Document)11 List (java.util.List)9 File (java.io.File)7 HashMap (java.util.HashMap)6 CoordinatorJobBean (org.apache.oozie.CoordinatorJobBean)6 SAXBuilder (org.jdom.input.SAXBuilder)6 XMLOutputter (org.jdom.output.XMLOutputter)6 Writer (java.io.Writer)5 Attribute (org.jdom.Attribute)5 Format (org.jdom.output.Format)5