List of usage examples for org.w3c.dom DOMException DOMException
public DOMException(short code, String message)
From source file:org.exist.dom.ElementImpl.java
public Attr setAttributeNodeNS(Attr newAttr) { throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "setAttributeNodeNS(Attr newAttr) not implemented on class " + getClass().getName()); }
From source file:org.exist.dom.ElementImpl.java
/** * @see org.w3c.dom.Node#insertBefore(org.w3c.dom.Node, org.w3c.dom.Node) *//*from w w w. j a v a2 s.co m*/ @Override public Node insertBefore(Node newChild, Node refChild) throws DOMException { if (refChild == null) { return appendChild(newChild); } if (!(refChild instanceof StoredNode)) { throw new DOMException(DOMException.WRONG_DOCUMENT_ERR, "Wrong node type"); } final NodeListImpl nl = new NodeListImpl(); nl.add(newChild); final TransactionManager transact = ownerDocument.getBrokerPool().getTransactionManager(); final Txn transaction = transact.beginTransaction(); DBBroker broker = null; try { broker = ownerDocument.getBrokerPool().get(null); insertBefore(transaction, nl, refChild); broker.storeXMLResource(transaction, (DocumentImpl) getOwnerDocument()); transact.commit(transaction); return refChild.getPreviousSibling(); } catch (final TransactionException e) { transact.abort(transaction); throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR, e.getMessage()); } catch (final EXistException e) { transact.abort(transaction); LOG.warn("Exception while inserting node: " + e.getMessage(), e); } finally { if (broker != null) { try { transact.close(transaction); } finally { broker.release(); } } } return null; }
From source file:org.exist.dom.ElementImpl.java
/** * Insert a list of nodes at the position before the reference * child./*from w w w. ja v a2 s . c o m*/ */ @Override public void insertBefore(Txn transaction, NodeList nodes, Node refChild) throws DOMException { if (refChild == null) { //TODO : use NodeImpl.UNKNOWN_NODE_IMPL_GID ? -pb appendChildren(transaction, nodes, -1); return; } if (!(refChild instanceof StoredNode)) { throw new DOMException(DOMException.WRONG_DOCUMENT_ERR, "wrong node type"); } DBBroker broker = null; try { broker = ownerDocument.getBrokerPool().get(null); final NodePath path = getPath(); StreamListener listener = null; //May help getReindexRoot() to make some useful things broker.getIndexController().setDocument(ownerDocument); final StoredNode reindexRoot = broker.getIndexController().getReindexRoot(this, path, true, true); broker.getIndexController().setMode(StreamListener.STORE); if (reindexRoot == null) { listener = broker.getIndexController().getStreamListener(); } final StoredNode following = (StoredNode) refChild; final StoredNode previous = (StoredNode) following.getPreviousSibling(); if (previous == null) { // there's no sibling node before the new node final NodeId newId = following.getNodeId().insertBefore(); appendChildren(transaction, newId, following.getNodeId(), new NodeImplRef(this), path, nodes, listener); } else { // insert the new node between the preceding and following sibling final NodeId newId = previous.getNodeId().insertNode(following.getNodeId()); appendChildren(transaction, newId, following.getNodeId(), new NodeImplRef(getLastNode(previous)), path, nodes, listener); } setDirty(true); broker.updateNode(transaction, this, true); broker.getIndexController().reindex(transaction, reindexRoot, StreamListener.STORE); broker.flush(); } catch (final EXistException e) { LOG.warn("Exception while inserting node: " + e.getMessage(), e); } finally { if (broker != null) broker.release(); } }
From source file:org.exist.dom.ElementImpl.java
/** * Insert a list of nodes at the position following the reference * child./*from w ww . j ava 2 s . c o m*/ */ @Override public void insertAfter(Txn transaction, NodeList nodes, Node refChild) throws DOMException { if (refChild == null) { //TODO : use NodeImpl.UNKNOWN_NODE_IMPL_GID ? -pb appendChildren(null, nodes, -1); return; } if (!(refChild instanceof StoredNode)) { throw new DOMException(DOMException.WRONG_DOCUMENT_ERR, "wrong node type: "); } DBBroker broker = null; try { broker = ownerDocument.getBrokerPool().get(null); final NodePath path = getPath(); StreamListener listener = null; //May help getReindexRoot() to make some useful things broker.getIndexController().setDocument(ownerDocument); final StoredNode reindexRoot = broker.getIndexController().getReindexRoot(this, path, true, true); broker.getIndexController().setMode(StreamListener.STORE); if (reindexRoot == null) { listener = broker.getIndexController().getStreamListener(); } final StoredNode previous = (StoredNode) refChild; final StoredNode following = (StoredNode) previous.getNextSibling(); final NodeId followingId = following == null ? null : following.getNodeId(); final NodeId newNodeId = previous.getNodeId().insertNode(followingId); appendChildren(transaction, newNodeId, followingId, new NodeImplRef(getLastNode(previous)), path, nodes, listener); setDirty(true); broker.updateNode(transaction, this, true); broker.getIndexController().reindex(transaction, reindexRoot, StreamListener.STORE); broker.flush(); } catch (final EXistException e) { LOG.warn("Exception while inserting node: " + e.getMessage(), e); } finally { if (broker != null) broker.release(); } }
From source file:org.exist.dom.ElementImpl.java
/** * Update a child node. This method will only update the child node * but not its potential descendant nodes. * * @param oldChild//ww w . j a va 2 s . c om * @param newChild * @throws DOMException */ @Override public StoredNode updateChild(Txn transaction, Node oldChild, Node newChild) throws DOMException { if (!(oldChild instanceof StoredNode)) { throw new DOMException(DOMException.WRONG_DOCUMENT_ERR, "Wrong node type"); } if (!(newChild instanceof StoredNode)) { throw new DOMException(DOMException.WRONG_DOCUMENT_ERR, "Wrong node type"); } StoredNode oldNode = (StoredNode) oldChild; final StoredNode newNode = (StoredNode) newChild; if (!oldNode.nodeId.getParentId().equals(nodeId)) { throw new DOMException(DOMException.NOT_FOUND_ERR, "Node is not a child of this element"); } if (newNode.getNodeType() == Node.ATTRIBUTE_NODE) { if (newNode.getQName().equalsSimple(Namespaces.XML_ID_QNAME)) { // an xml:id attribute. Normalize the attribute and set its type to ID final AttrImpl attr = (AttrImpl) newNode; attr.setValue(StringValue.trimWhitespace(StringValue.collapseWhitespace(attr.getValue()))); attr.setType(AttrImpl.ID); } } StoredNode previousNode = (StoredNode) oldNode.getPreviousSibling(); if (previousNode == null) { previousNode = this; } else { previousNode = getLastNode(previousNode); } final NodePath currentPath = getPath(); final NodePath oldPath = oldNode.getPath(currentPath); DBBroker broker = null; try { broker = ownerDocument.getBrokerPool().get(null); //May help getReindexRoot() to make some useful things broker.getIndexController().setDocument(ownerDocument); //Check if the change affects any ancestor nodes, which then need to be reindexed later StoredNode reindexRoot = broker.getIndexController().getReindexRoot(oldNode, oldPath, false); //Remove indexes if (reindexRoot == null) { reindexRoot = oldNode; } broker.getIndexController().reindex(transaction, reindexRoot, StreamListener.REMOVE_SOME_NODES); //TODO: fix once range index has been moved to new architecture final StoredNode valueReindexRoot = broker.getValueIndex().getReindexRoot(this, oldPath); broker.getValueIndex().reindex(valueReindexRoot); //Remove the actual node data broker.removeNode(transaction, oldNode, oldPath, null); broker.endRemove(transaction); newNode.nodeId = oldNode.nodeId; //Reinsert the new node data broker.insertNodeAfter(transaction, previousNode, newNode); final NodePath path = newNode.getPath(currentPath); broker.indexNode(transaction, newNode, path); if (newNode.getNodeType() == Node.ELEMENT_NODE) { broker.endElement(newNode, path, null); } broker.updateNode(transaction, this, true); //Recreate indexes on ancestor nodes broker.getIndexController().reindex(transaction, reindexRoot, StreamListener.STORE); broker.getValueIndex().reindex(valueReindexRoot); broker.flush(); } catch (final EXistException e) { LOG.warn("Exception while inserting node: " + e.getMessage(), e); } finally { if (broker != null) broker.release(); } return newNode; }
From source file:org.exist.dom.ElementImpl.java
/** * @see org.w3c.dom.Node#removeChild(org.w3c.dom.Node) *//*from w ww . j av a 2s .c om*/ @Override public Node removeChild(Txn transaction, Node oldChild) throws DOMException { if (!(oldChild instanceof StoredNode)) { throw new DOMException(DOMException.WRONG_DOCUMENT_ERR, "wrong node type"); } final StoredNode oldNode = (StoredNode) oldChild; if (!oldNode.nodeId.getParentId().equals(nodeId)) { throw new DOMException(DOMException.NOT_FOUND_ERR, "node is not a child of this element"); } final NodePath oldPath = oldNode.getPath(); StreamListener listener = null; DBBroker broker = null; try { //May help getReindexRoot() to make some useful things broker = ownerDocument.getBrokerPool().get(null); broker.getIndexController().setDocument(ownerDocument); final StoredNode reindexRoot = broker.getIndexController().getReindexRoot(oldNode, oldPath, false); broker.getIndexController().setMode(StreamListener.REMOVE_SOME_NODES); if (reindexRoot == null) { listener = broker.getIndexController().getStreamListener(); } else { broker.getIndexController().reindex(transaction, reindexRoot, StreamListener.REMOVE_SOME_NODES); } broker.removeAllNodes(transaction, oldNode, oldPath, listener); --children; if (oldChild.getNodeType() == Node.ATTRIBUTE_NODE) { --attributes; } broker.endRemove(transaction); setDirty(true); broker.updateNode(transaction, this, false); broker.flush(); if (reindexRoot != null && !reindexRoot.getNodeId().equals(oldNode.getNodeId())) { broker.getIndexController().reindex(transaction, reindexRoot, StreamListener.STORE); } } catch (final EXistException e) { LOG.warn("Exception while inserting node: " + e.getMessage(), e); } finally { if (broker != null) broker.release(); } return oldNode; }
From source file:org.exist.dom.ElementImpl.java
public void removeAppendAttributes(Txn transaction, NodeList removeList, NodeList appendList) { DBBroker broker = null;//from w w w . ja v a2s .c o m try { broker = ownerDocument.getBrokerPool().get(null); if (removeList != null) { try { for (int i = 0; i < removeList.getLength(); i++) { final Node oldChild = removeList.item(i); if (!(oldChild instanceof StoredNode)) { throw new DOMException(DOMException.WRONG_DOCUMENT_ERR, "Wrong node type"); } final StoredNode old = (StoredNode) oldChild; if (!old.nodeId.isChildOf(nodeId)) { throw new DOMException(DOMException.NOT_FOUND_ERR, "node " + old.nodeId.getParentId() + " is not a child of element " + nodeId); } final NodePath oldPath = old.getPath(); // remove old custom indexes broker.getIndexController().reindex(transaction, old, StreamListener.REMOVE_SOME_NODES); broker.removeNode(transaction, old, oldPath, null); children--; attributes--; } } finally { broker.endRemove(transaction); } } final NodePath path = getPath(); broker.getIndexController().setDocument(ownerDocument, StreamListener.STORE); final StreamListener listener = broker.getIndexController().getStreamListener(); if (children == 0) { appendChildren(transaction, nodeId.newChild(), null, new NodeImplRef(this), path, appendList, listener); } else { if (attributes == 0) { final StoredNode firstChild = (StoredNode) getFirstChild(); final NodeId newNodeId = firstChild.nodeId.insertBefore(); appendChildren(transaction, newNodeId, firstChild.getNodeId(), new NodeImplRef(this), path, appendList, listener); } else { final AttribVisitor visitor = new AttribVisitor(); accept(visitor); final NodeId firstChildId = visitor.firstChild == null ? null : visitor.firstChild.nodeId; final NodeId newNodeId = visitor.lastAttrib.nodeId.insertNode(firstChildId); appendChildren(transaction, newNodeId, firstChildId, new NodeImplRef(visitor.lastAttrib), path, appendList, listener); } setDirty(true); } attributes += appendList.getLength(); broker.updateNode(transaction, this, true); broker.flush(); } catch (final EXistException e) { LOG.warn("Exception while inserting node: " + e.getMessage(), e); } finally { if (broker != null) broker.release(); } }
From source file:org.exist.dom.ElementImpl.java
/** * Replaces the oldNode with the newChild * // www. j av a 2s . co m * @param transaction * @param newChild * @param oldChild * * @return The new node (this differs from the {@link org.w3c.dom.Node#replaceChild(Node, Node)} specification) * * @see org.w3c.dom.Node#replaceChild(org.w3c.dom.Node, org.w3c.dom.Node) */ @Override public Node replaceChild(Txn transaction, Node newChild, Node oldChild) throws DOMException { if (!(oldChild instanceof StoredNode)) { throw new DOMException(DOMException.WRONG_DOCUMENT_ERR, "Wrong node type"); } final StoredNode oldNode = (StoredNode) oldChild; if (!oldNode.nodeId.getParentId().equals(nodeId)) { throw new DOMException(DOMException.NOT_FOUND_ERR, "Node is not a child of this element"); } StoredNode previous = (StoredNode) oldNode.getPreviousSibling(); if (previous == null) { previous = this; } else { previous = getLastNode(previous); } final NodePath oldPath = oldNode.getPath(); StreamListener listener = null; //May help getReindexRoot() to make some useful things Node newNode = null; DBBroker broker = null; try { broker = ownerDocument.getBrokerPool().get(null); broker.getIndexController().setDocument(ownerDocument); final StoredNode reindexRoot = broker.getIndexController().getReindexRoot(oldNode, oldPath, false); broker.getIndexController().setMode(StreamListener.REMOVE_SOME_NODES); if (reindexRoot == null) { listener = broker.getIndexController().getStreamListener(); } else { broker.getIndexController().reindex(transaction, reindexRoot, StreamListener.REMOVE_SOME_NODES); } broker.removeAllNodes(transaction, oldNode, oldPath, listener); broker.endRemove(transaction); broker.flush(); broker.getIndexController().setMode(StreamListener.STORE); listener = broker.getIndexController().getStreamListener(); newNode = appendChild(transaction, oldNode.nodeId, new NodeImplRef(previous), getPath(), newChild, listener); //Reindex if required final DocumentImpl owner = (DocumentImpl) getOwnerDocument(); broker.storeXMLResource(transaction, owner); broker.updateNode(transaction, this, false); broker.getIndexController().reindex(transaction, reindexRoot, StreamListener.STORE); broker.flush(); } catch (final EXistException e) { LOG.warn("Exception while inserting node: " + e.getMessage(), e); } finally { if (broker != null) broker.release(); } //return oldChild; // method is spec'd to return the old child, even though that's probably useless in this case return newNode; //returning the newNode is more sensible than returning the oldNode }
From source file:org.exist.dom.ElementImpl.java
/** ? @see org.w3c.dom.Element#getSchemaTypeInfo() *///from w w w .j ava2s .c om public TypeInfo getSchemaTypeInfo() { throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "getSchemaTypeInfo() not implemented on class " + getClass().getName()); }
From source file:org.exist.dom.ElementImpl.java
/** ? @see org.w3c.dom.Element#setIdAttribute(java.lang.String, boolean) */// w ww. j av a 2s .c om public void setIdAttribute(String name, boolean isId) throws DOMException { throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "setIdAttribute(String name, boolean isId) not implemented on class " + getClass().getName()); }