This is an automated email from the ASF dual-hosted git repository.

garydgregory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/commons-xml.git

commit bbe9bb0c21bfad98ffc46a6b863473e1b2d4bd49
Author: Gary Gregory <[email protected]>
AuthorDate: Fri Aug 28 15:20:01 2026 -0400

    Reduce AI copy-pasta.
    
    Broaden utility method exception type.
---
 .../java/org/apache/commons/xml/MethodHandleFactory.java   |  2 +-
 .../java/org/apache/commons/xml/SecureXPathFactory.java    | 14 ++------------
 2 files changed, 3 insertions(+), 13 deletions(-)

diff --git a/src/main/java/org/apache/commons/xml/MethodHandleFactory.java 
b/src/main/java/org/apache/commons/xml/MethodHandleFactory.java
index d55b222..9418b60 100644
--- a/src/main/java/org/apache/commons/xml/MethodHandleFactory.java
+++ b/src/main/java/org/apache/commons/xml/MethodHandleFactory.java
@@ -50,7 +50,7 @@ static MethodHandle findStatic(final Class<?> refc, final 
String name, final Met
         }
     }
 
-    static <T, E extends Error> T invokeExact(final ThrowableCallable<T> 
methodHandle, final Class<E> rethrow) throws E {
+    static <T, E extends Throwable> T invokeExact(final ThrowableCallable<T> 
methodHandle, final Class<E> rethrow) throws E {
         try {
             return methodHandle.call();
         } catch (final Throwable e) {
diff --git a/src/main/java/org/apache/commons/xml/SecureXPathFactory.java 
b/src/main/java/org/apache/commons/xml/SecureXPathFactory.java
index 5233865..ff16db4 100644
--- a/src/main/java/org/apache/commons/xml/SecureXPathFactory.java
+++ b/src/main/java/org/apache/commons/xml/SecureXPathFactory.java
@@ -138,24 +138,14 @@ public void setXPathVariableResolver(final 
XPathVariableResolver resolver) {
      */
     public static XPathFactory newDefaultInstance() {
         if (MH_newDefaultInstance != null) {
-            final XPathFactory factory;
-            try {
-                factory = (XPathFactory) MH_newDefaultInstance.invokeExact();
-            } catch (final RuntimeException e) {
-                throw e;
-            } catch (final Throwable e) {
-                // Unreachable: the looked-up method declares no other 
exceptions.
-                throw new IllegalStateException(e);
-            }
-            return secure(factory);
+            return secure(MethodHandleFactory.invokeExact(() -> (XPathFactory) 
MH_newDefaultInstance.invokeExact(), RuntimeException.class));
         }
         try {
             // Java 8: the method does not exist; instantiate the JDK's 
built-in default by its class name instead.
             return newInstance(XPathFactory.DEFAULT_OBJECT_MODEL_URI, 
JDK_XPATH_FACTORY, null);
         } catch (final XPathFactoryConfigurationException e) {
             // newDefaultInstance declares no checked exception; mirror 
XPathFactory.newInstance(), which reports a default-model miss as a 
RuntimeException.
-            throw new RuntimeException(
-                    "Neither XPathFactory.newDefaultInstance() nor " + 
JDK_XPATH_FACTORY + " is available", e);
+            throw new RuntimeException("Neither 
XPathFactory.newDefaultInstance() nor " + JDK_XPATH_FACTORY + " is available", 
e);
         }
     }
 

Reply via email to