You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2020/05/19 20:10:56 UTC
svn commit: r1877931 [3/9] - in /xmlbeans:
site/src/documentation/content/xdocs/ trunk/ trunk/lib/
trunk/src/jamsupport/ trunk/src/store/org/apache/xmlbeans/impl/store/
trunk/src/xmlconfig/org/apache/xmlbeans/impl/config/
trunk/src/xpath_xquery/org/apa...
Modified: xmlbeans/trunk/src/store/org/apache/xmlbeans/impl/store/Cursor.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/store/org/apache/xmlbeans/impl/store/Cursor.java?rev=1877931&r1=1877930&r2=1877931&view=diff
==============================================================================
--- xmlbeans/trunk/src/store/org/apache/xmlbeans/impl/store/Cursor.java (original)
+++ xmlbeans/trunk/src/store/org/apache/xmlbeans/impl/store/Cursor.java Tue May 19 20:10:55 2020
@@ -15,46 +15,27 @@
package org.apache.xmlbeans.impl.store;
-import java.util.ArrayList;
-
-import java.io.PrintStream;
-
-import javax.xml.namespace.QName;
-
-import javax.xml.stream.XMLStreamReader;
-
-import org.apache.xmlbeans.xml.stream.XMLInputStream;
-
-import org.apache.xmlbeans.SchemaTypeLoader;
-import org.apache.xmlbeans.SchemaType;
import org.apache.xmlbeans.XmlCursor;
+import org.apache.xmlbeans.XmlDocumentProperties;
import org.apache.xmlbeans.XmlObject;
import org.apache.xmlbeans.XmlOptions;
-import org.apache.xmlbeans.XmlDocumentProperties;
-
-import org.apache.xmlbeans.impl.common.XMLChar;
import org.apache.xmlbeans.impl.common.GlobalLock;
-
-import java.util.Map;
-import java.util.Collection;
-
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Reader;
-import java.io.Writer;
-import java.io.File;
-import java.io.IOException;
-import java.io.FileOutputStream;
-
+import org.apache.xmlbeans.impl.common.XMLChar;
+import org.apache.xmlbeans.impl.store.Locale.ChangeListener;
+import org.apache.xmlbeans.impl.store.Path.PathEngine;
+import org.apache.xmlbeans.impl.store.Saver.TextSaver;
+import org.apache.xmlbeans.xml.stream.XMLInputStream;
import org.w3c.dom.Node;
-
import org.xml.sax.ContentHandler;
-import org.xml.sax.ext.LexicalHandler;
import org.xml.sax.SAXException;
+import org.xml.sax.ext.LexicalHandler;
-import org.apache.xmlbeans.impl.store.Saver.TextSaver;
-import org.apache.xmlbeans.impl.store.Locale.ChangeListener;
-import org.apache.xmlbeans.impl.store.Path.PathEngine;
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
+import java.io.*;
+import java.util.Collection;
+import java.util.Map;
+import java.util.function.Supplier;
public final class Cursor implements XmlCursor, ChangeListener {
static final int ROOT = Cur.ROOT;
@@ -64,6 +45,12 @@ public final class Cursor implements Xml
static final int PROCINST = Cur.PROCINST;
static final int TEXT = Cur.TEXT;
+ private Cur _cur;
+ private PathEngine _pathEngine;
+ private int _currentSelection;
+
+ private ChangeListener _nextChangeListener;
+
Cursor(Xobj x, int p) {
_cur = x._locale.weakCur(this);
_cur.moveTo(x, p);
@@ -191,7 +178,7 @@ public final class Cursor implements Xml
_cur.toEnd();
_cur.nextWithAttrs();
}
-
+
//
//
//
@@ -200,7 +187,7 @@ public final class Cursor implements Xml
// Can I move the ref from one q to another? If not I will have to
// change from a phantom ref to a soft/weak ref so I can know what
// to do when I dequeue from the old q.
-
+
public void _dispose() {
_cur.release();
_cur = null;
@@ -212,7 +199,7 @@ public final class Cursor implements Xml
public QName _getName() {
// TODO - consider taking this out of the gateway
-
+
switch (_cur.kind()) {
case ATTR:
@@ -222,7 +209,7 @@ public final class Cursor implements Xml
}
// Fall thru
-
+
case ELEM:
case PROCINST:
return _cur.getName();
@@ -412,25 +399,27 @@ public final class Cursor implements Xml
// if the Cur in in attrs, it will not jump out of attrs. Also, if moving backwards and
// text is to the left and right, Cur will move to the beginning of that text, while
// Cursor will move further so that the token type to the right is not text.
-
+
boolean wasText = _cur.isText();
if (!_cur.prev()) {
assert _cur.isRoot() || _cur.isAttr();
- if (_cur.isRoot())
+ if (_cur.isRoot()) {
return TokenType.NONE;
+ }
_cur.toParent();
} else {
int k = _cur.kind();
- if (k < 0 && (k == -COMMENT || k == -PROCINST || k == -ATTR))
+ if (k == -COMMENT || k == -PROCINST || k == -ATTR) {
_cur.toParent();
- else if (_cur.isContainer())
+ } else if (_cur.isContainer()) {
_cur.toLastAttr();
- else if (wasText && _cur.isText())
+ } else if (wasText && _cur.isText()) {
return _toPrevToken();
+ }
}
return _currentTokenType();
@@ -438,7 +427,7 @@ public final class Cursor implements Xml
public Object _monitor() {
// TODO - some of these methods need not be protected by a
- // gatway. This is one of them. Inline this.
+ // gatway. This is one of them. Inline this.
return _cur._locale;
}
@@ -446,8 +435,9 @@ public final class Cursor implements Xml
public boolean _toParent() {
Cur c = _cur.tempCur();
- if (!c.toParent())
+ if (!c.toParent()) {
return false;
+ }
_cur.moveToCur(c);
@@ -563,12 +553,8 @@ public final class Cursor implements Xml
if (file == null)
throw new IllegalArgumentException("Null file specified");
- OutputStream os = new FileOutputStream(file);
-
- try {
+ try (OutputStream os = new FileOutputStream(file)) {
_save(os, options);
- } finally {
- os.close();
}
}
@@ -604,21 +590,18 @@ public final class Cursor implements Xml
return;
}
- Reader r = _newReader(options);
-
- try {
+ try (Reader r = _newReader(options)) {
char[] chars = new char[8192];
- for (; ;) {
+ for (;;) {
int n = r.read(chars);
- if (n < 0)
+ if (n < 0) {
break;
+ }
w.write(chars, 0, n);
}
- } finally {
- r.close();
}
}
@@ -637,19 +620,19 @@ public final class Cursor implements Xml
try {
LOOP: for (; ;) {
- SWITCH: switch (token) {
+ switch (token) {
case TokenType.INT_START:
if (seenElement)
return true;
seenElement = true;
token = c.toEndToken().intValue();
- break SWITCH;
+ break;
case TokenType.INT_TEXT:
if (!Locale.isWhiteSpace(c.getChars()))
return true;
token = c.toNextToken().intValue();
- break SWITCH;
+ break;
case TokenType.INT_NONE:
case TokenType.INT_ENDDOC:
@@ -663,7 +646,7 @@ public final class Cursor implements Xml
case TokenType.INT_COMMENT:
case TokenType.INT_PROCINST:
token = c.toNextToken().intValue();
- break SWITCH;
+ break;
case TokenType.INT_STARTDOC:
assert false;
@@ -677,179 +660,9 @@ public final class Cursor implements Xml
return !seenElement;
}
- private static final class DomSaver extends Saver {
- DomSaver(Cur c, boolean isFrag, XmlOptions options) {
- super(c, options);
-
- if (c.isUserNode())
- _type = c.getUser().get_schema_type();
-
- _stl = c._locale._schemaTypeLoader;
- _options = options;
- _isFrag = isFrag;
- }
-
- Node saveDom() {
- Locale l = Locale.getLocale(_stl, _options);
-
- l.enter();
-
- try {
- _nodeCur = l.getCur(); // Not weak or temp
-
- // Build the tree
-
- while (process())
- ;
-
- // Set the type
-
- while (!_nodeCur.isRoot())
- _nodeCur.toParent();
-
- if (_type != null)
- _nodeCur.setType(_type);
-
- Node node = (Node) _nodeCur.getDom();
-
- _nodeCur.release();
-
- _nodeCur = null;
-
- return node;
- } finally {
- l.exit();
- }
- }
-
- protected boolean emitElement(SaveCur c, ArrayList attrNames, ArrayList attrValues) {
- // If there was text or comments before the frag element, I will loose them -- oh well
- // Also, I will lose any attributes and namesapces on the fragment -- DOM can
- // have attrs in fragments
-
- if (Locale.isFragmentQName(c.getName()))
- _nodeCur.moveTo(null, Cur.NO_POS);
-
- ensureDoc();
-
- _nodeCur.createElement(getQualifiedName(c, c.getName()));
- _nodeCur.next();
-
- for (iterateMappings(); hasMapping(); nextMapping()) {
- _nodeCur.createAttr(_nodeCur._locale.createXmlns(mappingPrefix()));
- _nodeCur.next();
- _nodeCur.insertString(mappingUri());
- _nodeCur.toParent();
- _nodeCur.skipWithAttrs();
- }
-
- for (int i = 0; i < attrNames.size(); i++) {
- _nodeCur.createAttr(getQualifiedName(c, (QName) attrNames.get(i)));
- _nodeCur.next();
- _nodeCur.insertString((String) attrValues.get(i));
- _nodeCur.toParent();
- _nodeCur.skipWithAttrs();
- }
-
- return false;
- }
-
- protected void emitFinish(SaveCur c) {
- if (!Locale.isFragmentQName(c.getName())) {
- assert _nodeCur.isEnd();
- _nodeCur.next();
- }
- }
-
- protected void emitText(SaveCur c) {
- ensureDoc();
-
- Object src = c.getChars();
-
- if (c._cchSrc > 0) {
- _nodeCur.insertChars(src, c._offSrc, c._cchSrc);
- _nodeCur.next();
- }
- }
-
- protected void emitComment(SaveCur c) {
- ensureDoc();
-
- _nodeCur.createComment();
- emitTextValue(c);
- _nodeCur.skip();
- }
-
- protected void emitProcinst(SaveCur c) {
- ensureDoc();
-
- _nodeCur.createProcinst(c.getName().getLocalPart());
- emitTextValue(c);
- _nodeCur.skip();
- }
-
- protected void emitDocType(String docTypeName, String publicId, String systemId) {
- ensureDoc();
-
- XmlDocumentProperties props = Locale.getDocProps(_nodeCur, true);
- props.setDoctypeName(docTypeName);
- props.setDoctypePublicId(publicId);
- props.setDoctypeSystemId(systemId);
- }
-
- protected void emitStartDoc(SaveCur c) {
- ensureDoc();
- }
-
- protected void emitEndDoc ( SaveCur c )
- {
- }
-
- private QName getQualifiedName(SaveCur c, QName name) {
- String uri = name.getNamespaceURI();
-
- String prefix = uri.length() > 0 ? getUriMapping(uri) : "";
-
- if (prefix.equals(name.getPrefix()))
- return name;
-
- return _nodeCur._locale.makeQName(uri, name.getLocalPart(), prefix);
- }
-
- private void emitTextValue(SaveCur c) {
- c.push();
- c.next();
-
- if (c.isText()) {
- _nodeCur.next();
- _nodeCur.insertChars(c.getChars(), c._offSrc, c._cchSrc);
- _nodeCur.toParent();
- }
-
- c.pop();
- }
-
- private void ensureDoc() {
- if (!_nodeCur.isPositioned()) {
- if (_isFrag)
- _nodeCur.createDomDocFragRoot();
- else
- _nodeCur.createDomDocumentRoot();
-
- _nodeCur.next();
- }
- }
-
- private Cur _nodeCur;
- private SchemaType _type;
- private SchemaTypeLoader _stl;
- private XmlOptions _options;
- private boolean _isFrag;
- }
-
public Node _newDomNode(XmlOptions options) {
// Must ignore inner options for compat with v1.
-
+
if (XmlOptions.hasOption(options, XmlOptions.SAVE_INNER)) {
options = new XmlOptions(options);
options.remove(XmlOptions.SAVE_INNER);
@@ -1143,20 +956,23 @@ public final class Cursor implements Xml
if (attrName == null)
throw new IllegalArgumentException("Attr name is null");
- if (!_cur.isContainer())
+ if (!_cur.isContainer()) {
return null;
+ }
return _cur.getAttrValue(attrName);
}
public boolean _setAttributeText(QName attrName, String value) {
- if (attrName == null)
+ if (attrName == null) {
throw new IllegalArgumentException("Attr name is null");
+ }
validateLocalName(attrName.getLocalPart());
- if (!_cur.isContainer())
+ if (!_cur.isContainer()) {
return false;
+ }
_cur.setAttrValue(attrName, value);
@@ -1164,18 +980,21 @@ public final class Cursor implements Xml
}
public boolean _removeAttribute(QName attrName) {
- if (attrName == null)
+ if (attrName == null) {
throw new IllegalArgumentException("Attr name is null");
+ }
- if (!_cur.isContainer())
+ if (!_cur.isContainer()) {
return false;
+ }
return _cur.removeAttr(attrName);
}
public String _getTextValue() {
- if (_cur.isText())
+ if (_cur.isText()) {
return _getChars();
+ }
if (!_cur.isNode()) {
throw new IllegalStateException("Can't get text value, current token can have no text value");
@@ -1185,23 +1004,29 @@ public final class Cursor implements Xml
}
public int _getTextValue(char[] chars, int offset, int max) {
- if (_cur.isText())
+ if (_cur.isText()) {
return _getChars(chars, offset, max);
+ }
- if (chars == null)
+ if (chars == null) {
throw new IllegalArgumentException("char buffer is null");
+ }
- if (offset < 0)
+ if (offset < 0) {
throw new IllegalArgumentException("offset < 0");
+ }
- if (offset >= chars.length)
+ if (offset >= chars.length) {
throw new IllegalArgumentException("offset off end");
+ }
- if (max < 0)
+ if (max < 0) {
max = Integer.MAX_VALUE;
+ }
- if (offset + max > chars.length)
+ if (offset + max > chars.length) {
max = chars.length - offset;
+ }
if (!_cur.isNode()) {
throw new IllegalStateException("Can't get text value, current token can have no text value");
@@ -1209,18 +1034,21 @@ public final class Cursor implements Xml
// If there are no children (hopefully the common case), I can get the text faster.
- if (_cur.hasChildren())
+ if (_cur.hasChildren()) {
return Locale.getTextValue(_cur, Locale.WS_PRESERVE, chars, offset, max);
+ }
// Fast way
-
+
Object src = _cur.getFirstChars();
- if (_cur._cchSrc > max)
+ if (_cur._cchSrc > max) {
_cur._cchSrc = max;
+ }
- if (_cur._cchSrc <= 0)
+ if (_cur._cchSrc <= 0) {
return 0;
+ }
CharUtil.getChars(chars, offset, src, _cur._offSrc, _cur._cchSrc);
@@ -1239,30 +1067,35 @@ public final class Cursor implements Xml
}
public void _setTextValue(String text) {
- if (text == null)
+ if (text == null) {
text = "";
+ }
setTextValue(text, 0, text.length());
}
public void _setTextValue(char[] sourceChars, int offset, int length) {
- if (length < 0)
+ if (length < 0) {
throw new IndexOutOfBoundsException("setTextValue: length < 0");
+ }
if (sourceChars == null) {
- if (length > 0)
+ if (length > 0) {
throw new IllegalArgumentException("setTextValue: sourceChars == null");
+ }
setTextValue(null, 0, 0);
return;
}
- if (offset < 0 || offset >= sourceChars.length)
+ if (offset < 0 || offset >= sourceChars.length) {
throw new IndexOutOfBoundsException("setTextValue: offset out of bounds");
+ }
- if (offset + length > sourceChars.length)
+ if (offset + length > sourceChars.length) {
length = sourceChars.length - offset;
+ }
CharUtil cu = _cur._locale.getCharUtil();
@@ -1270,20 +1103,23 @@ public final class Cursor implements Xml
}
public String _getChars() {
- return _cur.getCharsAsString(-1);
+ return _cur.getCharsAsString();
}
public int _getChars(char[] buf, int off, int cch) {
int cchRight = _cur.cchRight();
- if (cch < 0 || cch > cchRight)
+ if (cch < 0 || cch > cchRight) {
cch = cchRight;
+ }
- if (buf == null || off >= buf.length)
+ if (buf == null || off >= buf.length) {
return 0;
+ }
- if (buf.length - off < cch)
+ if (buf.length - off < cch) {
cch = buf.length - off;
+ }
Object src = _cur.getChars(cch);
@@ -1293,22 +1129,20 @@ public final class Cursor implements Xml
}
public void _toStartDoc() {
-// while (_cur.toParent())
-// ;
- _cur.toRoot();
+ _cur.toRoot();
}
public void _toEndDoc() {
_toStartDoc();
-
_cur.toEnd();
}
public int _comparePosition(Cursor other) {
int s = _cur.comparePosition(other._cur);
- if (s == 2)
+ if (s == 2) {
throw new IllegalArgumentException("Cursors not in same document");
+ }
assert s >= -1 && s <= 1;
@@ -1332,20 +1166,21 @@ public final class Cursor implements Xml
}
public XmlCursor _execQuery(String query, XmlOptions options) {
- checkThisCursor();
- return Query.cursorExecQuery(_cur,query,options);
-
+ checkThisCursor();
+ return Query.cursorExecQuery(_cur,query,options);
}
public boolean _toBookmark(XmlBookmark bookmark) {
- if (bookmark == null || !(bookmark._currentMark instanceof Xobj.Bookmark))
+ if (bookmark == null || !(bookmark._currentMark instanceof Bookmark)) {
return false;
+ }
- Xobj.Bookmark m = (Xobj.Bookmark) bookmark._currentMark;
+ Bookmark m = (Bookmark) bookmark._currentMark;
- if (m._xobj == null || m._xobj._locale != _cur._locale)
+ if (m._xobj == null || m._xobj._locale != _cur._locale) {
return false;
+ }
_cur.moveTo(m._xobj, m._pos);
@@ -1353,8 +1188,9 @@ public final class Cursor implements Xml
}
public XmlBookmark _toNextBookmark(Object key) {
- if (key == null)
+ if (key == null) {
return null;
+ }
int cch;
@@ -1362,7 +1198,7 @@ public final class Cursor implements Xml
for (; ;) {
// Move a minimal amount. If at text, move to a potential bookmark in the text.
-
+
if ((cch = _cur.cchRight()) > 1) {
_cur.nextChars(1);
_cur.nextChars((cch = _cur.firstBookmarkInChars(key, cch - 1)) >= 0 ? cch : -1);
@@ -1395,7 +1231,7 @@ public final class Cursor implements Xml
for (; ;) {
// Move a minimal amount. If at text, move to a potential bookmark in the text.
-
+
if ((cch = _cur.cchLeft()) > 1) {
_cur.prevChars(1);
@@ -1404,7 +1240,7 @@ public final class Cursor implements Xml
// _toPrevToken will not skip to the beginning of the text, it will go further
// so that the token to the right is not text. I need to simply skip to
// the beginning of the text ...
-
+
_cur.prevChars(1);
} else if (_toPrevToken().isNone()) {
_cur.pop();
@@ -1427,9 +1263,10 @@ public final class Cursor implements Xml
public void _setBookmark(XmlBookmark bookmark) {
if (bookmark != null) {
- if (bookmark.getKey() == null)
+ if (bookmark.getKey() == null) {
throw new IllegalArgumentException("Annotation key is null");
-
+ }
+
// TODO - I Don't do weak bookmarks yet ... perhaps I'll never do them ....
bookmark._currentMark = _cur.setBookmark(bookmark.getKey(), bookmark);
@@ -1439,12 +1276,13 @@ public final class Cursor implements Xml
static XmlBookmark getBookmark(Object key, Cur c) {
// TODO - I Don't do weak bookmarks yet ...
- if (key == null)
+ if (key == null) {
return null;
+ }
Object bm = c.getBookmark(key);
- return bm != null && bm instanceof XmlBookmark ? (XmlBookmark) bm : null;
+ return bm instanceof XmlBookmark ? (XmlBookmark) bm : null;
}
public XmlBookmark _getBookmark(Object key) {
@@ -1452,24 +1290,29 @@ public final class Cursor implements Xml
}
public void _clearBookmark(Object key) {
- if (key != null)
+ if (key != null) {
_cur.setBookmark(key, null);
+ }
}
public void _getAllBookmarkRefs(Collection listToFill) {
if (listToFill != null) {
- for (Xobj.Bookmark b = _cur._xobj._bookmarks; b != null; b = b._next)
- if (b._value instanceof XmlBookmark)
+ for (Bookmark b = _cur._xobj._bookmarks; b != null; b = b._next) {
+ if (b._value instanceof XmlBookmark) {
listToFill.add(b._value);
+ }
+ }
}
}
public boolean _removeXml() {
- if (_cur.isRoot())
+ if (_cur.isRoot()) {
throw new IllegalStateException("Can't remove a whole document.");
+ }
- if (_cur.isFinish())
+ if (_cur.isFinish()) {
return false;
+ }
assert _cur.isText() || _cur.isNode();
@@ -1485,14 +1328,15 @@ public final class Cursor implements Xml
to.checkInsertionValidity(_cur);
// Check for a no-op
-
+
if (_cur.isText()) {
int cchRight = _cur.cchRight();
assert cchRight > 0;
- if (_cur.inChars(to._cur, cchRight, true))
+ if (_cur.inChars(to._cur, cchRight, true)) {
return false;
+ }
_cur.moveChars(to._cur, cchRight);
@@ -1501,11 +1345,12 @@ public final class Cursor implements Xml
return true;
}
- if (_cur.contains(to._cur))
+ if (_cur.contains(to._cur)) {
return false;
+ }
// Make a cur which will float to the right of the insertion
-
+
Cur c = to.tempCur();
_cur.moveNode(to._cur);
@@ -1524,10 +1369,11 @@ public final class Cursor implements Xml
Cur c = to.tempCur();
- if (_cur.isText())
+ if (_cur.isText()) {
to._cur.insertChars(_cur.getChars(-1), _cur._offSrc, _cur._cchSrc);
- else
+ } else {
_cur.copyNode(to._cur);
+ }
to._cur.moveToCur(c);
@@ -1537,8 +1383,9 @@ public final class Cursor implements Xml
}
public boolean _removeXmlContents() {
- if (!_cur.isContainer())
+ if (!_cur.isContainer()) {
return false;
+ }
_cur.moveNodeContents(null, false);
@@ -1568,11 +1415,13 @@ public final class Cursor implements Xml
}
public boolean _moveXmlContents(Cursor to) {
- if (!_cur.isContainer() || _cur.contains(to._cur))
+ if (!_cur.isContainer() || _cur.contains(to._cur)) {
return false;
+ }
- if (!checkContentInsertionValidity(to))
+ if (!checkContentInsertionValidity(to)) {
return false;
+ }
Cur c = to.tempCur();
@@ -1586,11 +1435,13 @@ public final class Cursor implements Xml
}
public boolean _copyXmlContents(Cursor to) {
- if (!_cur.isContainer() || _cur.contains(to._cur))
+ if (!_cur.isContainer() || _cur.contains(to._cur)) {
return false;
+ }
- if (!checkContentInsertionValidity(to))
+ if (!checkContentInsertionValidity(to)) {
return false;
+ }
// I don't have a primitive to copy contents, make a copy of the node and them move the
// contents
@@ -1615,11 +1466,13 @@ public final class Cursor implements Xml
public int _removeChars(int cch) {
int cchRight = _cur.cchRight();
- if (cchRight == 0 || cch == 0)
+ if (cchRight == 0 || cch == 0) {
return 0;
+ }
- if (cch < 0 || cch > cchRight)
+ if (cch < 0 || cch > cchRight) {
cch = cchRight;
+ }
_cur.moveChars(null, cch);
@@ -1679,7 +1532,7 @@ public final class Cursor implements Xml
//
// Inserting elements
//
-
+
public void _beginElement(String localName) {
_insertElementWithText(localName, null, null);
_toPrevToken();
@@ -1732,7 +1585,7 @@ public final class Cursor implements Xml
//
//
//
-
+
public void _insertAttribute(String localName) {
_insertAttributeWithValue(localName, null);
}
@@ -1770,7 +1623,7 @@ public final class Cursor implements Xml
//
//
//
-
+
public void _insertNamespace(String prefix, String namespace) {
_insertAttributeWithValue(_cur._locale.createXmlns(prefix), namespace);
}
@@ -1833,7 +1686,7 @@ public final class Cursor implements Xml
return other;
}
-
+
//
// The following operations have two cursors, and can be in different documents
//
@@ -1852,13 +1705,7 @@ public final class Cursor implements Xml
Locale otherLocale = other._cur._locale;
if (locale == otherLocale) {
- if (locale.noSync())
- return twoLocaleOp(other, op, arg);
- else {
- synchronized (locale) {
- return twoLocaleOp(other, op, arg);
- }
- }
+ return syncWrapNoEnter(() -> twoLocaleOp(other, op, arg));
}
if (locale.noSync()) {
@@ -1950,6 +1797,7 @@ public final class Cursor implements Xml
return twoLocaleOp(xTo, COPY_CHARS, cch);
}
+
//
// Special methods involving multiple cursors which can be in different locales, but do not
// require sync on both locales.
@@ -1957,33 +1805,15 @@ public final class Cursor implements Xml
public boolean toCursor(XmlCursor xOther) {
// One may only move cursors within the same locale
-
- Cursor other = checkCursors(xOther);
- if (_cur._locale != other._cur._locale)
- return false;
+ Cursor other = checkCursors(xOther);
- if (_cur._locale.noSync()) {
- _cur._locale.enter();
- try {
- return _toCursor(other);
- } finally {
- _cur._locale.exit();
- }
- } else {
- synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toCursor(other);
- } finally {
- _cur._locale.exit();
- }
- }
- }
+ return _cur._locale == other._cur._locale &&
+ syncWrap(() -> _toCursor(other));
}
public boolean isInSameDocument(XmlCursor xOther) {
- return xOther == null ? false : _cur.isInSameTree(checkCursors(xOther)._cur);
+ return xOther != null && _cur.isInSameTree(checkCursors(xOther)._cur);
}
//
@@ -1993,92 +1823,37 @@ public final class Cursor implements Xml
private Cursor preCheck(XmlCursor xOther) {
Cursor other = checkCursors(xOther);
- if (_cur._locale != other._cur._locale)
+ if (_cur._locale != other._cur._locale) {
throw new IllegalArgumentException("Cursors not in same document");
+ }
return other;
}
public int comparePosition(XmlCursor xOther) {
Cursor other = preCheck(xOther);
- if (_cur._locale.noSync()) {
- _cur._locale.enter();
- try {
- return _comparePosition(other);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _comparePosition(other);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _comparePosition(other));
}
public boolean isLeftOf(XmlCursor xOther) {
Cursor other = preCheck(xOther);
- if (_cur._locale.noSync()) {
- _cur._locale.enter();
- try {
- return _isLeftOf(other);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _isLeftOf(other);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _isLeftOf(other));
}
public boolean isAtSamePositionAs(XmlCursor xOther) {
Cursor other = preCheck(xOther);
- if (_cur._locale.noSync()) {
- _cur._locale.enter();
- try {
- return _isAtSamePositionAs(other);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _isAtSamePositionAs(other);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _isAtSamePositionAs(other));
}
public boolean isRightOf(XmlCursor xOther) {
Cursor other = preCheck(xOther);
- if (_cur._locale.noSync()) {
- _cur._locale.enter();
- try {
- return _isRightOf(other);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _isRightOf(other);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _isRightOf(other));
}
-
+
//
// Create a cursor from an Xobj -- used for XmlBookmark.createCursor
//
-
+
public static XmlCursor newCursor(Xobj x, int p) {
Locale l = x._locale;
if (l.noSync()) {
@@ -2097,7 +1872,7 @@ public final class Cursor implements Xml
}
}
}
-
+
//
// The following operations involve only one cursor
//
@@ -2109,1199 +1884,274 @@ public final class Cursor implements Xml
public void dispose() {
if (_cur != null) {
- Locale l = _cur._locale;
- if (preCheck()) {
- l.enter();
- try {
- _dispose();
- } finally {
- l.exit();
- }
- } else synchronized (l) {
- l.enter();
- try {
- _dispose();
- } finally {
- l.exit();
- }
- }
+ syncWrap(this::_dispose);
}
}
public Object monitor() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _monitor();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _monitor();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_monitor);
}
public XmlDocumentProperties documentProperties() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _documentProperties();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _documentProperties();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_documentProperties);
}
public XmlCursor newCursor() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _newCursor();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _newCursor();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_newCursor);
}
public XMLStreamReader newXMLStreamReader() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _newXMLStreamReader();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _newXMLStreamReader();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap((Supplier<XMLStreamReader>)this::_newXMLStreamReader);
}
public XMLStreamReader newXMLStreamReader(XmlOptions options) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _newXMLStreamReader(options);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _newXMLStreamReader(options);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _newXMLStreamReader(options));
}
/**
* @deprecated XMLInputStream was deprecated by XMLStreamReader from STaX - jsr173 API.
*/
public XMLInputStream newXMLInputStream() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _newXMLInputStream();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _newXMLInputStream();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap((Supplier<XMLInputStream>)this::_newXMLInputStream);
}
public String xmlText() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _xmlText();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _xmlText();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap((Supplier<String>)this::_xmlText);
}
public InputStream newInputStream() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _newInputStream();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _newInputStream();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap((Supplier<InputStream>)this::_newInputStream);
}
public Reader newReader() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _newReader();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _newReader();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap((Supplier<Reader>)this::_newReader);
}
public Node newDomNode() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _newDomNode();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _newDomNode();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap((Supplier<Node>)this::_newDomNode);
}
public Node getDomNode() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _getDomNode();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _getDomNode();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_getDomNode);
}
public void save(ContentHandler ch, LexicalHandler lh) throws SAXException {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- _save(ch, lh);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- _save(ch, lh);
- } finally {
- _cur._locale.exit();
- }
- }
+ syncWrapSAXEx(() -> _save(ch, lh));
}
public void save(File file) throws IOException {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- _save(file);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- _save(file);
- } finally {
- _cur._locale.exit();
- }
- }
+ syncWrapIOEx(() -> _save(file));
}
public void save(OutputStream os) throws IOException {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- _save(os);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- _save(os);
- } finally {
- _cur._locale.exit();
- }
- }
+ syncWrapIOEx(() -> _save(os));
}
public void save(Writer w) throws IOException {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- _save(w);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- _save(w);
- } finally {
- _cur._locale.exit();
- }
- }
+ syncWrapIOEx(() -> _save(w));
}
/**
* @deprecated XMLInputStream was deprecated by XMLStreamReader from STaX - jsr173 API.
*/
public XMLInputStream newXMLInputStream(XmlOptions options) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _newXMLInputStream(options);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _newXMLInputStream(options);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _newXMLInputStream(options));
}
public String xmlText(XmlOptions options) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _xmlText(options);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _xmlText(options);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _xmlText(options));
}
public InputStream newInputStream(XmlOptions options) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _newInputStream(options);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _newInputStream(options);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _newInputStream(options));
}
public Reader newReader(XmlOptions options) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _newReader(options);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _newReader(options);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _newReader(options));
}
public Node newDomNode(XmlOptions options) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _newDomNode(options);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _newDomNode(options);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _newDomNode(options));
}
public void save(ContentHandler ch, LexicalHandler lh, XmlOptions options) throws SAXException {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- _save(ch, lh, options);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- _save(ch, lh, options);
- } finally {
- _cur._locale.exit();
- }
- }
+ syncWrapSAXEx(() -> _save(ch, lh, options));
}
public void save(File file, XmlOptions options) throws IOException {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- _save(file, options);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- _save(file, options);
- } finally {
- _cur._locale.exit();
- }
- }
+ syncWrapIOEx(() -> _save(file, options));
}
public void save(OutputStream os, XmlOptions options) throws IOException {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- _save(os, options);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- _save(os, options);
- } finally {
- _cur._locale.exit();
- }
- }
+ syncWrapIOEx(() -> _save(os, options));
}
public void save(Writer w, XmlOptions options) throws IOException {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- _save(w, options);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- _save(w, options);
- } finally {
- _cur._locale.exit();
- }
- }
+ syncWrapIOEx(() -> _save(w, options));
}
public void push() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- _push();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- _push();
- } finally {
- _cur._locale.exit();
- }
- }
+ syncWrap(this::_push);
}
public boolean pop() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _pop();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _pop();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_pop);
}
public void selectPath(String path) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- _selectPath(path);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- _selectPath(path);
- } finally {
- _cur._locale.exit();
- }
- }
+ syncWrap(() -> _selectPath(path));
}
public void selectPath(String path, XmlOptions options) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- _selectPath(path, options);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- _selectPath(path, options);
- } finally {
- _cur._locale.exit();
- }
- }
+ syncWrap(() -> _selectPath(path, options));
}
public boolean hasNextSelection() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _hasNextSelection();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _hasNextSelection();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_hasNextSelection);
}
public boolean toNextSelection() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toNextSelection();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toNextSelection();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_toNextSelection);
}
public boolean toSelection(int i) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toSelection(i);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toSelection(i);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _toSelection(i));
}
public int getSelectionCount() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _getSelectionCount();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _getSelectionCount();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_getSelectionCount);
}
public void addToSelection() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- _addToSelection();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- _addToSelection();
- } finally {
- _cur._locale.exit();
- }
- }
+ syncWrap(this::_addToSelection);
}
public void clearSelections() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- _clearSelections();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- _clearSelections();
- } finally {
- _cur._locale.exit();
- }
- }
+ syncWrap(this::_clearSelections);
}
public boolean toBookmark(XmlBookmark bookmark) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toBookmark(bookmark);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toBookmark(bookmark);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _toBookmark(bookmark));
}
public XmlBookmark toNextBookmark(Object key) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toNextBookmark(key);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toNextBookmark(key);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _toNextBookmark(key));
}
public XmlBookmark toPrevBookmark(Object key) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toPrevBookmark(key);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toPrevBookmark(key);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _toPrevBookmark(key));
}
public QName getName() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _getName();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _getName();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_getName);
}
public void setName(QName name) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- _setName(name);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- _setName(name);
- } finally {
- _cur._locale.exit();
- }
- }
+ syncWrap(() -> _setName(name));
}
public String namespaceForPrefix(String prefix) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _namespaceForPrefix(prefix);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _namespaceForPrefix(prefix);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _namespaceForPrefix(prefix));
}
public String prefixForNamespace(String namespaceURI) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _prefixForNamespace(namespaceURI);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _prefixForNamespace(namespaceURI);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _prefixForNamespace(namespaceURI));
}
public void getAllNamespaces(Map addToThis) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- _getAllNamespaces(addToThis);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- _getAllNamespaces(addToThis);
- } finally {
- _cur._locale.exit();
- }
- }
+ syncWrap(() -> _getAllNamespaces(addToThis));
}
public XmlObject getObject() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _getObject();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _getObject();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_getObject);
}
public TokenType currentTokenType() {
- if (preCheck()) {
-// _cur._locale.enter();
-// try {
- return _currentTokenType();
-// } finally {
-// _cur._locale.exit();
-// }
- } else synchronized (_cur._locale) {
-// _cur._locale.enter();
-// try {
- return _currentTokenType();
-// } finally {
-// _cur._locale.exit();
-// }
- }
+ return syncWrapNoEnter(this::_currentTokenType);
}
public boolean isStartdoc() {
- if (preCheck()) {
-// _cur._locale.enter();
-// try {
- return _isStartdoc();
-// } finally {
-// _cur._locale.exit();
-// }
- } else synchronized (_cur._locale) {
-// _cur._locale.enter();
-// try {
- return _isStartdoc();
-// } finally {
-// _cur._locale.exit();
-// }
- }
+ return syncWrapNoEnter(this::_isStartdoc);
}
public boolean isEnddoc() {
- if (preCheck()) {
-// _cur._locale.enter();
-// try {
- return _isEnddoc();
-// } finally {
-// _cur._locale.exit();
-// }
- } else synchronized (_cur._locale) {
-// _cur._locale.enter();
-// try {
- return _isEnddoc();
-// } finally {
-// _cur._locale.exit();
-// }
- }
+ return syncWrapNoEnter(this::_isEnddoc);
}
public boolean isStart() {
- if (preCheck()) {
-// _cur._locale.enter();
-// try {
- return _isStart();
-// } finally {
-// _cur._locale.exit();
-// }
- } else synchronized (_cur._locale) {
-// _cur._locale.enter();
-// try {
- return _isStart();
-// } finally {
-// _cur._locale.exit();
-// }
- }
+ return syncWrapNoEnter(this::_isStart);
}
public boolean isEnd() {
- if (preCheck()) {
-// _cur._locale.enter();
-// try {
- return _isEnd();
-// } finally {
-// _cur._locale.exit();
-// }
- } else synchronized (_cur._locale) {
-// _cur._locale.enter();
-// try {
- return _isEnd();
-// } finally {
-// _cur._locale.exit();
-// }
- }
+ return syncWrapNoEnter(this::_isEnd);
}
public boolean isText() {
- if (preCheck()) {
-// _cur._locale.enter();
-// try {
- return _isText();
-// } finally {
-// _cur._locale.exit();
-// }
- } else synchronized (_cur._locale) {
-// _cur._locale.enter();
-// try {
- return _isText();
-// } finally {
-// _cur._locale.exit();
-// }
- }
+ return syncWrapNoEnter(this::_isText);
}
public boolean isAttr() {
- if (preCheck()) {
-// _cur._locale.enter();
-// try {
- return _isAttr();
-// } finally {
-// _cur._locale.exit();
-// }
- } else synchronized (_cur._locale) {
-// _cur._locale.enter();
-// try {
- return _isAttr();
-// } finally {
-// _cur._locale.exit();
-// }
- }
+ return syncWrapNoEnter(this::_isAttr);
}
public boolean isNamespace() {
- if (preCheck()) {
-// _cur._locale.enter();
-// try {
- return _isNamespace();
-// } finally {
-// _cur._locale.exit();
-// }
- } else synchronized (_cur._locale) {
-// _cur._locale.enter();
-// try {
- return _isNamespace();
-// } finally {
-// _cur._locale.exit();
-// }
- }
+ return syncWrapNoEnter(this::_isNamespace);
}
public boolean isComment() {
- if (preCheck()) {
-// _cur._locale.enter();
-// try {
- return _isComment();
-// } finally {
-// _cur._locale.exit();
-// }
- } else synchronized (_cur._locale) {
-// _cur._locale.enter();
-// try {
- return _isComment();
-// } finally {
-// _cur._locale.exit();
-// }
- }
+ return syncWrapNoEnter(this::_isComment);
}
public boolean isProcinst() {
- if (preCheck()) {
-// _cur._locale.enter();
-// try {
- return _isProcinst();
-// } finally {
-// _cur._locale.exit();
-// }
- } else synchronized (_cur._locale) {
-// _cur._locale.enter();
-// try {
- return _isProcinst();
-// } finally {
-// _cur._locale.exit();
-// }
- }
+ return syncWrapNoEnter(this::_isProcinst);
}
public boolean isContainer() {
- if (preCheck()) {
-// _cur._locale.enter();
-// try {
- return _isContainer();
-// } finally {
-// _cur._locale.exit();
-// }
- } else synchronized (_cur._locale) {
-// _cur._locale.enter();
-// try {
- return _isContainer();
-// } finally {
-// _cur._locale.exit();
-// }
- }
+ return syncWrapNoEnter(this::_isContainer);
}
public boolean isFinish() {
- if (preCheck()) {
-// _cur._locale.enter();
-// try {
- return _isFinish();
-// } finally {
-// _cur._locale.exit();
-// }
- } else synchronized (_cur._locale) {
-// _cur._locale.enter();
-// try {
- return _isFinish();
-// } finally {
-// _cur._locale.exit();
-// }
- }
+ return syncWrapNoEnter(this::_isFinish);
}
public boolean isAnyAttr() {
- if (preCheck()) {
-// _cur._locale.enter();
-// try {
- return _isAnyAttr();
-// } finally {
-// _cur._locale.exit();
-// }
- } else synchronized (_cur._locale) {
-// _cur._locale.enter();
-// try {
- return _isAnyAttr();
-// } finally {
-// _cur._locale.exit();
-// }
- }
+ return syncWrapNoEnter(this::_isAnyAttr);
}
public TokenType prevTokenType() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _prevTokenType();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _prevTokenType();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_prevTokenType);
}
public boolean hasNextToken() {
- if (preCheck()) {
-// _cur._locale.enter();
-// try {
- return _hasNextToken();
-// } finally {
-// _cur._locale.exit();
-// }
- } else synchronized (_cur._locale) {
-// _cur._locale.enter();
-// try {
- return _hasNextToken();
-// } finally {
-// _cur._locale.exit();
-// }
- }
+ return syncWrapNoEnter(this::_hasNextToken);
}
public boolean hasPrevToken() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _hasPrevToken();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _hasPrevToken();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_hasPrevToken);
}
public TokenType toNextToken() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toNextToken();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toNextToken();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_toNextToken);
}
public TokenType toPrevToken() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toPrevToken();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toPrevToken();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_toPrevToken);
}
public TokenType toFirstContentToken() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toFirstContentToken();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toFirstContentToken();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_toFirstContentToken);
}
public TokenType toEndToken() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toEndToken();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toEndToken();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_toEndToken);
}
public int toNextChar(int cch) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toNextChar(cch);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toNextChar(cch);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _toNextChar(cch));
}
public int toPrevChar(int cch) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toPrevChar(cch);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toPrevChar(cch);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _toPrevChar(cch));
}
// public boolean _toNextSibling()
@@ -3309,18 +2159,16 @@ public final class Cursor implements Xml
// return Locale.toNextSiblingElement(_cur);
// }
- public boolean ___toNextSibling()
- {
- if (!_cur.hasParent())
+ public boolean ___toNextSibling() {
+ if (!_cur.hasParent()) {
return false;
+ }
Xobj parent = _cur.getParentNoRoot();
- if (parent==null)
- {
+ if (parent==null) {
_cur._locale.enter();
- try
- {
+ try {
parent = _cur.getParent();
} finally {
_cur._locale.exit();
@@ -3330,1048 +2178,358 @@ public final class Cursor implements Xml
return Locale.toNextSiblingElement(_cur, parent);
}
- public boolean toNextSibling()
- {
- if (preCheck()) {
- return ___toNextSibling();
- } else synchronized (_cur._locale) {
- return ___toNextSibling();
- }
+ public boolean toNextSibling() {
+ return syncWrapNoEnter(this::___toNextSibling);
}
public boolean toPrevSibling() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toPrevSibling();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toPrevSibling();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_toPrevSibling);
}
public boolean toParent() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toParent();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toParent();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_toParent);
}
public boolean toFirstChild() {
- if (preCheck()) {
-// _cur._locale.enter();
-// try {
- return _toFirstChild();
-// } finally {
-// _cur._locale.exit();
-// }
- } else synchronized (_cur._locale) {
-// _cur._locale.enter();
-// try {
- return _toFirstChild();
-// } finally {
-// _cur._locale.exit();
-// }
- }
+ return syncWrapNoEnter(this::_toFirstChild);
}
public boolean toLastChild() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toLastChild();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toLastChild();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_toLastChild);
}
public boolean toChild(String name) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toChild(name);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toChild(name);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _toChild(name));
}
public boolean toChild(String namespace, String name) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toChild(namespace, name);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toChild(namespace, name);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _toChild(namespace, name));
}
public boolean toChild(QName name) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toChild(name);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toChild(name);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _toChild(name));
}
public boolean toChild(int index) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toChild(index);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toChild(index);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _toChild(index));
}
public boolean toChild(QName name, int index) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toChild(name, index);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toChild(name, index);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _toChild(name, index));
}
public boolean toNextSibling(String name) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toNextSibling(name);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toNextSibling(name);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _toNextSibling(name));
}
public boolean toNextSibling(String namespace, String name) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toNextSibling(namespace, name);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toNextSibling(namespace, name);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _toNextSibling(namespace, name));
}
public boolean toNextSibling(QName name) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toNextSibling(name);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toNextSibling(name);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _toNextSibling(name));
}
public boolean toFirstAttribute() {
- if (preCheck()) {
-// _cur._locale.enter();
-// try {
- return _toFirstAttribute();
-// } finally {
-// _cur._locale.exit();
-// }
- } else synchronized (_cur._locale) {
-// _cur._locale.enter();
-// try {
- return _toFirstAttribute();
-// } finally {
-// _cur._locale.exit();
-// }
- }
+ return syncWrapNoEnter(this::_toFirstAttribute);
}
public boolean toLastAttribute() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toLastAttribute();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toLastAttribute();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_toLastAttribute);
}
public boolean toNextAttribute() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toNextAttribute();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toNextAttribute();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_toNextAttribute);
}
public boolean toPrevAttribute() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _toPrevAttribute();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _toPrevAttribute();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_toPrevAttribute);
}
public String getAttributeText(QName attrName) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _getAttributeText(attrName);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _getAttributeText(attrName);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _getAttributeText(attrName));
}
public boolean setAttributeText(QName attrName, String value) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _setAttributeText(attrName, value);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _setAttributeText(attrName, value);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _setAttributeText(attrName, value));
}
public boolean removeAttribute(QName attrName) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _removeAttribute(attrName);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _removeAttribute(attrName);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _removeAttribute(attrName));
}
public String getTextValue() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _getTextValue();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _getTextValue();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap((Supplier<String>)this::_getTextValue);
}
public int getTextValue(char[] chars, int offset, int cch) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _getTextValue(chars, offset, cch);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _getTextValue(chars, offset, cch);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _getTextValue(chars, offset, cch));
}
public void setTextValue(String text) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- _setTextValue(text);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- _setTextValue(text);
- } finally {
- _cur._locale.exit();
- }
- }
+ syncWrap(() -> _setTextValue(text));
}
public void setTextValue(char[] sourceChars, int offset, int length) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- _setTextValue(sourceChars, offset, length);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- _setTextValue(sourceChars, offset, length);
- } finally {
- _cur._locale.exit();
- }
- }
+ syncWrap(() -> _setTextValue(sourceChars, offset, length));
}
public String getChars() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _getChars();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _getChars();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap((Supplier<String>)this::_getChars);
}
public int getChars(char[] chars, int offset, int cch) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _getChars(chars, offset, cch);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _getChars(chars, offset, cch);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _getChars(chars, offset, cch));
}
public void toStartDoc() {
- if (preCheck()) {
-// _cur._locale.enter();
-// try {
- _toStartDoc();
-// } finally {
-// _cur._locale.exit();
-// }
- } else synchronized (_cur._locale) {
-// _cur._locale.enter();
-// try {
- _toStartDoc();
-// } finally {
-// _cur._locale.exit();
-// }
- }
+ syncWrapNoEnter(this::_toStartDoc);
}
public void toEndDoc() {
- if (preCheck()) {
-// _cur._locale.enter();
-// try {
- _toEndDoc();
-// } finally {
-// _cur._locale.exit();
-// }
- } else synchronized (_cur._locale) {
-// _cur._locale.enter();
-// try {
- _toEndDoc();
-// } finally {
-// _cur._locale.exit();
-// }
- }
+ syncWrapNoEnter(this::_toEndDoc);
}
public XmlCursor execQuery(String query) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _execQuery(query);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _execQuery(query);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _execQuery(query));
}
public XmlCursor execQuery(String query, XmlOptions options) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _execQuery(query, options);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _execQuery(query, options);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _execQuery(query, options));
}
public ChangeStamp getDocChangeStamp() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _getDocChangeStamp();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _getDocChangeStamp();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_getDocChangeStamp);
}
public void setBookmark(XmlBookmark bookmark) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- _setBookmark(bookmark);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- _setBookmark(bookmark);
- } finally {
- _cur._locale.exit();
- }
- }
+ syncWrap(() -> _setBookmark(bookmark));
}
public XmlBookmark getBookmark(Object key) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _getBookmark(key);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _getBookmark(key);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _getBookmark(key));
}
public void clearBookmark(Object key) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- _clearBookmark(key);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- _clearBookmark(key);
- } finally {
- _cur._locale.exit();
- }
- }
+ syncWrap(() -> _clearBookmark(key));
}
public void getAllBookmarkRefs(Collection listToFill) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- _getAllBookmarkRefs(listToFill);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- _getAllBookmarkRefs(listToFill);
- } finally {
- _cur._locale.exit();
- }
- }
+ syncWrap(() -> _getAllBookmarkRefs(listToFill));
}
public boolean removeXml() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _removeXml();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _removeXml();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_removeXml);
}
public boolean removeXmlContents() {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _removeXmlContents();
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _removeXmlContents();
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(this::_removeXmlContents);
}
public int removeChars(int cch) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- return _removeChars(cch);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- return _removeChars(cch);
- } finally {
- _cur._locale.exit();
- }
- }
+ return syncWrap(() -> _removeChars(cch));
}
public void insertChars(String text) {
- if (preCheck()) {
- _cur._locale.enter();
- try {
- _insertChars(text);
- } finally {
- _cur._locale.exit();
- }
- } else synchronized (_cur._locale) {
- _cur._locale.enter();
- try {
- _insertChars(text);
- } finally {
[... 484 lines stripped ...]
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org