use of org.apache.cxf.ws.transfer.dialect.fragment.faults.InvalidExpression in project cxf by apache.
the class FragmentDialect method modifyRepresentationModeAdd.
/**
* Process Put requests for Add mode.
* @param value Value defined in the Value element.
* @return Representation element, which is returned as response.
*/
private Representation modifyRepresentationModeAdd(List<Node> nodeList, ValueType value) {
if (nodeList.isEmpty()) {
throw new InvalidExpression();
}
Node firstNode = nodeList.get(0);
Document ownerDocument = firstNode.getOwnerDocument();
// if firstNode.getOwnerDocument == null the firstNode is ownerDocument
ownerDocument = ownerDocument == null ? (Document) firstNode : ownerDocument;
for (Node node : nodeList) {
addNode(ownerDocument, node, null, value);
}
Representation representation = new Representation();
representation.setAny(ownerDocument.getDocumentElement());
return representation;
}
use of org.apache.cxf.ws.transfer.dialect.fragment.faults.InvalidExpression in project cxf by apache.
the class FragmentDialect method modifyRepresentation.
/**
* Process Put requests.
* @param resourceFragment Result of the XPath evaluation. It can be Node or NodeList.
* @param mode Mode defined in the Mode attribute.
* @param value Value defined in the Value element.
* @return Representation element, which is returned as response.
*/
private Representation modifyRepresentation(Object resourceFragment, String mode, ValueType value) {
if (resourceFragment instanceof Node) {
List<Node> nodeList = new ArrayList<>();
nodeList.add((Node) resourceFragment);
return modifyRepresentationMode(nodeList, mode, value);
} else if (resourceFragment instanceof NodeList) {
NodeList rfNodeList = (NodeList) resourceFragment;
List<Node> nodeList = new ArrayList<>();
for (int i = 0; i < rfNodeList.getLength(); i++) {
nodeList.add(rfNodeList.item(i));
}
return modifyRepresentationMode(nodeList, mode, value);
} else {
throw new InvalidExpression();
}
}
use of org.apache.cxf.ws.transfer.dialect.fragment.faults.InvalidExpression in project cxf by apache.
the class FragmentDialect method insertAfter.
private void insertAfter(Document ownerDocument, Node parent, Node refChild, ValueType value) {
for (Object o : value.getContent()) {
if (o instanceof Node) {
Node node = (Node) o;
if (FragmentDialectConstants.FRAGMENT_2011_03_IRI.equals(node.getNamespaceURI()) && FragmentDialectConstants.FRAGMENT_ATTR_NODE_NAME.equals(node.getLocalName())) {
throw new InvalidRepresentation();
}
Node importedNode = ownerDocument.importNode(node, true);
if (parent.getNodeType() == Node.DOCUMENT_NODE) {
parent.appendChild(importedNode);
} else {
Node nextSibling = refChild.getNextSibling();
if (nextSibling == null) {
parent.appendChild(importedNode);
} else {
parent.insertBefore(importedNode, nextSibling);
}
}
} else {
throw new InvalidExpression();
}
}
}
use of org.apache.cxf.ws.transfer.dialect.fragment.faults.InvalidExpression in project cxf by apache.
the class FragmentDialectLanguageQName method getXPathFromQNameExpression.
/**
* Converts expression in QName language to XPath expression.
* @param expression Expression in QName language.
* @return Expression in XPath language.
*/
private String getXPathFromQNameExpression(ExpressionType expression) {
if (expression.getContent().size() == 1) {
String expressionValue = (String) expression.getContent().get(0);
Matcher m = qNamePattern.matcher(expressionValue);
if (m.matches()) {
return "/node()/" + expressionValue;
}
throw new InvalidExpression();
}
throw new InvalidExpression();
}
use of org.apache.cxf.ws.transfer.dialect.fragment.faults.InvalidExpression in project cxf by apache.
the class FragmentDialect method modifyRepresentationModeReplace.
/**
* Process Put requests for Replace mode.
* @param value Value defined in the Value element.
* @return Representation element, which is returned as response.
*/
private Representation modifyRepresentationModeReplace(List<Node> nodeList, ValueType value) {
if (nodeList.isEmpty()) {
throw new InvalidExpression();
}
Node firstNode = nodeList.get(0);
Document ownerDocument = firstNode.getOwnerDocument();
// if firstNode.getOwnerDocument == null the firstNode is ownerDocument
ownerDocument = ownerDocument == null ? (Document) firstNode : ownerDocument;
Node nextSibling = null;
Node parent = null;
for (Node node : nodeList) {
nextSibling = node.getNextSibling();
parent = removeNode(node);
}
addNode(ownerDocument, parent, nextSibling, value);
Representation representation = new Representation();
representation.setAny(ownerDocument.getDocumentElement());
return representation;
}
Aggregations