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);
}
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();
}
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 ('<' and '&') 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);
}
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;
}
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;
}
Aggregations