Skip to content

Commit 8ea53f9

Browse files
authored
Merge pull request #5652 from dizzzz/feature/java21_syntax
2 parents e4b6809 + 730f52a commit 8ea53f9

File tree

118 files changed

+935
-1065
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

118 files changed

+935
-1065
lines changed

exist-core-jmh/src/main/java/org/exist/xquery/utils/StringJoinBenchmark.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,8 @@ public StringBuilder forApproachRadek(/*final BuilderState builderState*/) {
9494
// final StringBuilder builder = builderState.builder;
9595
final StringBuilder builder = new StringBuilder();
9696

97-
for (int i = 0; i < strings.size(); i++) {
98-
builder.append(strings.get(i));
97+
for (String string : strings) {
98+
builder.append(string);
9999
builder.append(", ");
100100
}
101101

exist-core/src/main/java/org/exist/client/InteractiveClient.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1943,7 +1943,7 @@ private boolean processCommandLineActions() throws IOException {
19431943
} else if (options.xpath.isPresent() || !options.queryFiles.isEmpty()) {
19441944
String xpath = null;
19451945
if (!options.queryFiles.isEmpty()) {
1946-
try (final BufferedReader reader = Files.newBufferedReader(options.queryFiles.get(0))) {
1946+
try (final BufferedReader reader = Files.newBufferedReader(options.queryFiles.getFirst())) {
19471947
final StringBuilder buf = new StringBuilder();
19481948
String line;
19491949
while ((line = reader.readLine()) != null) {
@@ -2090,7 +2090,7 @@ public boolean run() throws Exception {
20902090
printNotice();
20912091

20922092
// Fix "uri" property: Excalibur CLI can't parse dashes, so we need to URL encode them:
2093-
properties.setProperty(URI, URLDecoder.decode(properties.getProperty(URI), UTF_8.name()));
2093+
properties.setProperty(URI, URLDecoder.decode(properties.getProperty(URI), UTF_8));
20942094

20952095
final boolean interactive = isInteractive();
20962096

exist-core/src/main/java/org/exist/collections/CollectionConfiguration.java

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -133,44 +133,48 @@ protected void read(final DBBroker broker, final Document doc, final boolean che
133133
for (int i = 0; i < childNodes.getLength(); i++) {
134134
Node node = childNodes.item(i);
135135
if (NAMESPACE.equals(node.getNamespaceURI())) {
136-
if (TRIGGERS_ELEMENT.equals(node.getLocalName())) {
137-
final NodeList triggers = node.getChildNodes();
138-
for (int j = 0; j < triggers.getLength(); j++) {
139-
node = triggers.item(j);
140-
if (node.getNodeType() == Node.ELEMENT_NODE && node.getLocalName().equals(TRIGGER_ELEMENT)) {
141-
configureTrigger(broker.getBrokerPool().getClassLoader(), (Element) node, srcCollectionURI, checkOnly);
136+
switch (node.getLocalName()) {
137+
case TRIGGERS_ELEMENT -> {
138+
final NodeList triggers = node.getChildNodes();
139+
for (int j = 0; j < triggers.getLength(); j++) {
140+
node = triggers.item(j);
141+
if (node.getNodeType() == Node.ELEMENT_NODE && node.getLocalName().equals(TRIGGER_ELEMENT)) {
142+
configureTrigger(broker.getBrokerPool().getClassLoader(), (Element) node, srcCollectionURI, checkOnly);
143+
}
142144
}
143145
}
144-
} else if (INDEX_ELEMENT.equals(node.getLocalName())) {
145-
final Element elem = (Element) node;
146-
try {
147-
if (indexSpec == null) {
148-
indexSpec = new IndexSpec(broker, elem);
149-
} else {
150-
indexSpec.read(broker, elem);
146+
case INDEX_ELEMENT -> {
147+
final Element elem = (Element) node;
148+
try {
149+
if (indexSpec == null) {
150+
indexSpec = new IndexSpec(broker, elem);
151+
} else {
152+
indexSpec.read(broker, elem);
153+
}
154+
} catch (final DatabaseConfigurationException e) {
155+
if (checkOnly) {
156+
throw new CollectionConfigurationException(e.getMessage(), e);
157+
} else {
158+
LOG.warn(e.getMessage(), e);
159+
}
151160
}
152-
} catch (final DatabaseConfigurationException e) {
153-
if (checkOnly) {
154-
throw new CollectionConfigurationException(e.getMessage(), e);
161+
162+
}
163+
case VALIDATION_ELEMENT -> {
164+
final Element elem = (Element) node;
165+
final String mode = elem.getAttribute(VALIDATION_MODE_ATTR);
166+
if (mode == null) {
167+
LOG.debug("Unable to determine validation mode in {}", srcCollectionURI);
168+
validationMode = XMLReaderObjectFactory.VALIDATION_SETTING.UNKNOWN;
155169
} else {
156-
LOG.warn(e.getMessage(), e);
170+
LOG.debug("{} : Validation mode={}", srcCollectionURI, mode);
171+
validationMode = XMLReaderObjectFactory.VALIDATION_SETTING.fromOption(mode);
157172
}
158-
}
159173

160-
} else if (VALIDATION_ELEMENT.equals(node.getLocalName())) {
161-
final Element elem = (Element) node;
162-
final String mode = elem.getAttribute(VALIDATION_MODE_ATTR);
163-
if (mode == null) {
164-
LOG.debug("Unable to determine validation mode in {}", srcCollectionURI);
165-
validationMode = XMLReaderObjectFactory.VALIDATION_SETTING.UNKNOWN;
166-
} else {
167-
LOG.debug("{} : Validation mode={}", srcCollectionURI, mode);
168-
validationMode = XMLReaderObjectFactory.VALIDATION_SETTING.fromOption(mode);
169174
}
170-
171-
} else {
172-
throwOrLog("Ignored node '" + node.getLocalName() +
175+
case null, default -> throwOrLog("Ignored node '" + node.getLocalName() +
173176
"' in configuration document", checkOnly);
177+
174178
//TODO : throw an exception like above ? -pb
175179
}
176180

exist-core/src/main/java/org/exist/collections/triggers/CSVExtractingTrigger.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,15 +104,15 @@ public void configure(final DBBroker broker, final Txn transaction, final Collec
104104
if(separators == null || separators.size() != 1) {
105105
throw new TriggerException("A separator parameter must be provided to the CSVExtractingTrigger configuration");
106106
} else {
107-
this.separator = separators.get(0);
107+
this.separator = separators.getFirst();
108108
}
109109

110110
//get the extractions
111111
final List<Map<String, List>> paths = (List<Map<String, List>>)parameters.get("path");
112112
for(final Map<String, List> path : paths){
113113
final List<String> xpaths = path.get("xpath");
114114
if(xpaths != null && xpaths.size() == 1) {
115-
String xpath = xpaths.get(0);
115+
String xpath = xpaths.getFirst();
116116

117117
//split out the path and preficate (if present) from the xpath
118118
String pathExpr;

exist-core/src/main/java/org/exist/collections/triggers/DeferrableFilteringTrigger.java

Lines changed: 26 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -241,42 +241,32 @@ public void comment(final char[] ch, final int start, final int length) throws S
241241
protected void applyDeferredEvents() throws SAXException {
242242
SAXEvent event = null;
243243
while((event = deferred.poll()) != null) {
244-
if(event instanceof SetDocumentLocator setDocumentLocator) {
245-
setDocumentLocator_deferred(setDocumentLocator.locator);
246-
} else if(event instanceof StartDocument) {
247-
startDocument_deferred();
248-
} else if(event instanceof EndDocument) {
249-
endDocument_deferred();
250-
} else if(event instanceof StartPrefixMapping startPrefixMapping) {
251-
startPrefixMapping_deferred(startPrefixMapping.prefix, startPrefixMapping.uri);
252-
} else if(event instanceof EndPrefixMapping endPrefixMapping) {
253-
endPrefixMapping_deferred(endPrefixMapping.prefix);
254-
} else if(event instanceof StartElement startElement) {
255-
startElement_deferred(startElement.namespaceURI, startElement.localName, startElement.qname, startElement.attributes);
256-
} else if(event instanceof EndElement endElement) {
257-
endElement_deferred(endElement.namespaceURI, endElement.localName, endElement.qname);
258-
} else if(event instanceof Characters characters) {
259-
characters_deferred(characters.ch, 0, characters.ch.length);
260-
} else if(event instanceof IgnorableWhitespace ignorableWhitespace) {
261-
ignorableWhitespace_deferred(ignorableWhitespace.ch, 0, ignorableWhitespace.ch.length);
262-
} else if(event instanceof ProcessingInstruction processingInstruction) {
263-
processingInstruction_deferred(processingInstruction.target, processingInstruction.data);
264-
} else if(event instanceof SkippedEntity skippedEntity) {
265-
skippedEntity_deferred(skippedEntity.name);
266-
} else if(event instanceof StartDTD startDTD) {
267-
startDTD_deferred(startDTD.name, startDTD.publicId, startDTD.systemId);
268-
} else if(event instanceof EndDTD) {
269-
endDTD_deferred();
270-
} else if(event instanceof StartEntity startEntity) {
271-
startEntity_deferred(startEntity.name);
272-
} else if(event instanceof EndEntity endEntity) {
273-
endEntity_deferred(endEntity.name);
274-
} else if(event instanceof StartCDATA) {
275-
startCDATA_deferred();
276-
} else if(event instanceof EndCDATA) {
277-
endCDATA_deferred();
278-
} else if(event instanceof Comment comment) {
279-
comment_deferred(comment.ch, 0, comment.ch.length);
244+
switch (event) {
245+
case SetDocumentLocator setDocumentLocator -> setDocumentLocator_deferred(setDocumentLocator.locator);
246+
case StartDocument startDocument -> startDocument_deferred();
247+
case EndDocument endDocument -> endDocument_deferred();
248+
case StartPrefixMapping startPrefixMapping ->
249+
startPrefixMapping_deferred(startPrefixMapping.prefix, startPrefixMapping.uri);
250+
case EndPrefixMapping endPrefixMapping -> endPrefixMapping_deferred(endPrefixMapping.prefix);
251+
case StartElement startElement ->
252+
startElement_deferred(startElement.namespaceURI, startElement.localName, startElement.qname, startElement.attributes);
253+
case EndElement endElement ->
254+
endElement_deferred(endElement.namespaceURI, endElement.localName, endElement.qname);
255+
case Characters characters -> characters_deferred(characters.ch, 0, characters.ch.length);
256+
case IgnorableWhitespace ignorableWhitespace ->
257+
ignorableWhitespace_deferred(ignorableWhitespace.ch, 0, ignorableWhitespace.ch.length);
258+
case ProcessingInstruction processingInstruction ->
259+
processingInstruction_deferred(processingInstruction.target, processingInstruction.data);
260+
case SkippedEntity skippedEntity -> skippedEntity_deferred(skippedEntity.name);
261+
case StartDTD startDTD -> startDTD_deferred(startDTD.name, startDTD.publicId, startDTD.systemId);
262+
case EndDTD endDTD -> endDTD_deferred();
263+
case StartEntity startEntity -> startEntity_deferred(startEntity.name);
264+
case EndEntity endEntity -> endEntity_deferred(endEntity.name);
265+
case StartCDATA startCDATA -> startCDATA_deferred();
266+
case EndCDATA endCDATA -> endCDATA_deferred();
267+
case Comment comment -> comment_deferred(comment.ch, 0, comment.ch.length);
268+
default -> {
269+
}
280270
}
281271
}
282272
}

exist-core/src/main/java/org/exist/collections/triggers/HistoryTrigger.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public void configure(final DBBroker broker, final Txn transaction, final Collec
8181

8282
if(parameters.containsKey(PARAM_ROOT_NAME)) {
8383
try {
84-
rootPath = XmldbURI.xmldbUriFor(parameters.get(PARAM_ROOT_NAME).get(0).toString());
84+
rootPath = XmldbURI.xmldbUriFor(parameters.get(PARAM_ROOT_NAME).getFirst().toString());
8585
} catch(final URISyntaxException e) {
8686
throw new TriggerException(e);
8787
}

exist-core/src/main/java/org/exist/collections/triggers/STXTransformerTrigger.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public class STXTransformerTrigger extends SAXTrigger implements DocumentTrigger
6363
@Override
6464
public void configure(DBBroker broker, Txn transaction, Collection parent, Map<String, List<?>> parameters) throws TriggerException {
6565
super.configure(broker, transaction, parent, parameters);
66-
final String stylesheet = (String)parameters.get("src").get(0);
66+
final String stylesheet = (String)parameters.get("src").getFirst();
6767
if(stylesheet == null) {
6868
throw new TriggerException("STXTransformerTrigger requires an attribute 'src'");
6969
}

exist-core/src/main/java/org/exist/collections/triggers/TriggerStatePerThread.java

Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import java.util.ArrayDeque;
2828
import java.util.Deque;
2929
import java.util.Iterator;
30+
import java.util.Objects;
3031

3132
/**
3233
* Avoid infinite recursions in Triggers by preventing the same trigger
@@ -59,38 +60,38 @@ public static void setAndTest(final Trigger trigger, final TriggerPhase triggerP
5960

6061
int skipBefores = 0;
6162

62-
for (final Iterator<TriggerState> it = states.iterator(); it.hasNext(); ) {
63-
prevState = it.next();
64-
65-
// travel up, first "Before" we encounter - we should check if (a) that we complete it, and/or (b) is non-cyclic (if not we are also cyclic)
66-
if (prevState.triggerPhase == TriggerPhase.BEFORE) {
67-
68-
if (skipBefores > 0) {
69-
skipBefores--;
70-
71-
} else {
72-
if (prevState.isCompletedBy(trigger, triggerPhase, triggerEvent, src, dst)) {
73-
if (prevState instanceof PossibleCyclicTriggerState) {
74-
// if the Before phase is a PossibleCyclicTriggerState then this completing After phase must also be a PossibleCyclicTriggerState
75-
final TriggerState newState = new PossibleCyclicTriggerState(trigger, triggerPhase, triggerEvent, src, dst);
76-
states.addFirst(newState);
77-
78-
throw new CyclicTriggerException("Detected Matching possible cyclic trigger event for After phase (" + newState + ") of previous Before phase (" + prevState + ")");
79-
80-
} else {
81-
// if the Before Phase is NOT a PossibleCyclicTriggerState, then neither is this completing After phase...
82-
states.addFirst(new TriggerState(trigger, triggerPhase, triggerEvent, src, dst));
83-
return;
84-
}
85-
86-
} else {
87-
throw new IllegalStateException("Cannot interleave Trigger states");
88-
}
89-
}
90-
} else if (prevState.triggerPhase == TriggerPhase.AFTER) {
91-
skipBefores++;
92-
}
93-
}
63+
for (TriggerState state : states) {
64+
prevState = state;
65+
66+
// travel up, first "Before" we encounter - we should check if (a) that we complete it, and/or (b) is non-cyclic (if not we are also cyclic)
67+
if (prevState.triggerPhase == TriggerPhase.BEFORE) {
68+
69+
if (skipBefores > 0) {
70+
skipBefores--;
71+
72+
} else {
73+
if (prevState.isCompletedBy(trigger, triggerPhase, triggerEvent, src, dst)) {
74+
if (prevState instanceof PossibleCyclicTriggerState) {
75+
// if the Before phase is a PossibleCyclicTriggerState then this completing After phase must also be a PossibleCyclicTriggerState
76+
final TriggerState newState = new PossibleCyclicTriggerState(trigger, triggerPhase, triggerEvent, src, dst);
77+
states.addFirst(newState);
78+
79+
throw new CyclicTriggerException("Detected Matching possible cyclic trigger event for After phase (" + newState + ") of previous Before phase (" + prevState + ")");
80+
81+
} else {
82+
// if the Before Phase is NOT a PossibleCyclicTriggerState, then neither is this completing After phase...
83+
states.addFirst(new TriggerState(trigger, triggerPhase, triggerEvent, src, dst));
84+
return;
85+
}
86+
87+
} else {
88+
throw new IllegalStateException("Cannot interleave Trigger states");
89+
}
90+
}
91+
} else if (prevState.triggerPhase == TriggerPhase.AFTER) {
92+
skipBefores++;
93+
}
94+
}
9495

9596
throw new IllegalStateException("Could not find a matching Before phase for After phase");
9697

@@ -238,7 +239,7 @@ private boolean equals(final Object o, final boolean ignorePhase) {
238239
return false;
239240
}
240241

241-
return dst != null ? dst.equals(that.dst) : that.dst == null;
242+
return Objects.equals(dst, that.dst);
242243
}
243244

244245
private boolean equalsIgnoringPhase(final Trigger otherTrigger, final TriggerEvent otherTriggerEvent, final XmldbURI otherSrc, @Nullable final XmldbURI otherDst) {
@@ -254,7 +255,7 @@ private boolean equalsIgnoringPhase(final Trigger otherTrigger, final TriggerEve
254255
return false;
255256
}
256257

257-
return dst != null ? dst.equals(otherDst) : otherDst == null;
258+
return Objects.equals(dst, otherDst);
258259
}
259260

260261
public boolean isCompletedBy(final Trigger otherTrigger, final TriggerPhase otherTriggerPhase, final TriggerEvent otherTriggerEvent, final XmldbURI otherSrc, @Nullable final XmldbURI otherDst) {
@@ -275,7 +276,7 @@ public boolean isCompletedBy(final Trigger otherTrigger, final TriggerPhase othe
275276
return false;
276277
}
277278

278-
return dst != null ? dst.equals(otherDst) : otherDst == null;
279+
return Objects.equals(dst, otherDst);
279280
}
280281

281282
public boolean completes(final Object o) {
@@ -306,7 +307,7 @@ public boolean completes(final Object o) {
306307
return false;
307308
}
308309

309-
return dst != null ? dst.equals(that.dst) : that.dst == null;
310+
return Objects.equals(dst, that.dst);
310311
}
311312
}
312313
}

0 commit comments

Comments
 (0)