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
The following commit(s) were added to refs/heads/main by this push:
new 0befc63 Refactor AI copy-pasta slop.
0befc63 is described below
commit 0befc637d16484961f5fa7357eda4c919537088c
Author: Gary Gregory <[email protected]>
AuthorDate: Fri Aug 28 07:16:11 2026 -0400
Refactor AI copy-pasta slop.
Refactor into MethodHandleFactory
---
.../xml/HardeningDocumentBuilderFactory.java | 13 +-----
.../commons/xml/HardeningSAXParserFactory.java | 13 +-----
.../apache/commons/xml/HardeningSchemaFactory.java | 14 +------
.../commons/xml/HardeningTransformerFactory.java | 14 +------
.../commons/xml/HardeningXMLInputFactory.java | 14 +------
.../apache/commons/xml/HardeningXPathFactory.java | 14 +------
.../apache/commons/xml/MethodHandleFactory.java | 46 ++++++++++++++++++++++
.../apache/commons/xml/ShadingFootprintTest.java | 12 ++++--
8 files changed, 66 insertions(+), 74 deletions(-)
diff --git
a/src/main/java/org/apache/commons/xml/HardeningDocumentBuilderFactory.java
b/src/main/java/org/apache/commons/xml/HardeningDocumentBuilderFactory.java
index 1c16de6..d9cc806 100644
--- a/src/main/java/org/apache/commons/xml/HardeningDocumentBuilderFactory.java
+++ b/src/main/java/org/apache/commons/xml/HardeningDocumentBuilderFactory.java
@@ -18,7 +18,6 @@
package org.apache.commons.xml;
import java.lang.invoke.MethodHandle;
-import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
import java.util.Objects;
@@ -54,16 +53,8 @@ public final class HardeningDocumentBuilderFactory {
/** Class name of the JDK's built-in default implementation, the Java 8
fallback for {@link #newDefaultInstance()}. */
private static final String JDK_DOCUMENT_BUILDER_FACTORY =
"com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl";
- private static final MethodHandle NEW_DEFAULT_INSTANCE =
findStatic("newDefaultInstance",
MethodType.methodType(DocumentBuilderFactory.class));
-
- private static MethodHandle findStatic(final String name, final MethodType
type) {
- try {
- return
MethodHandles.publicLookup().findStatic(DocumentBuilderFactory.class, name,
type);
- } catch (final ReflectiveOperationException e) {
- // The method is absent: the running platform predates it.
- return null;
- }
- }
+ private static final MethodHandle NEW_DEFAULT_INSTANCE =
MethodHandleFactory.findStatic(DocumentBuilderFactory.class,
"newDefaultInstance",
+ MethodType.methodType(DocumentBuilderFactory.class));
/**
* Capability-driven hardening for any {@link DocumentBuilderFactory} on
the classpath.
diff --git
a/src/main/java/org/apache/commons/xml/HardeningSAXParserFactory.java
b/src/main/java/org/apache/commons/xml/HardeningSAXParserFactory.java
index 9101acd..5e6a84f 100644
--- a/src/main/java/org/apache/commons/xml/HardeningSAXParserFactory.java
+++ b/src/main/java/org/apache/commons/xml/HardeningSAXParserFactory.java
@@ -18,7 +18,6 @@
package org.apache.commons.xml;
import java.lang.invoke.MethodHandle;
-import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
import java.util.Objects;
@@ -64,16 +63,8 @@ public final class HardeningSAXParserFactory {
/** Class name of the JDK's built-in default implementation, the Java 8
fallback for {@link #newDefaultInstance()}. */
private static final String JDK_SAX_PARSER_FACTORY =
"com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl";
- private static final MethodHandle NEW_DEFAULT_INSTANCE =
findStatic("newDefaultInstance", MethodType.methodType(SAXParserFactory.class));
-
- private static MethodHandle findStatic(final String name, final MethodType
type) {
- try {
- return
MethodHandles.publicLookup().findStatic(SAXParserFactory.class, name, type);
- } catch (final ReflectiveOperationException e) {
- // The method is absent: the running platform predates it.
- return null;
- }
- }
+ private static final MethodHandle NEW_DEFAULT_INSTANCE =
MethodHandleFactory.findStatic(SAXParserFactory.class, "newDefaultInstance",
+ MethodType.methodType(SAXParserFactory.class));
/**
* Capability-driven hardening for any {@link SAXParserFactory} on the
classpath.
diff --git a/src/main/java/org/apache/commons/xml/HardeningSchemaFactory.java
b/src/main/java/org/apache/commons/xml/HardeningSchemaFactory.java
index 539b8cf..c97cc48 100644
--- a/src/main/java/org/apache/commons/xml/HardeningSchemaFactory.java
+++ b/src/main/java/org/apache/commons/xml/HardeningSchemaFactory.java
@@ -18,7 +18,6 @@
package org.apache.commons.xml;
import java.lang.invoke.MethodHandle;
-import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
import java.util.Objects;
@@ -62,17 +61,8 @@ public final class HardeningSchemaFactory {
/** Class name of the JDK's built-in default implementation, the Java 8
fallback for {@link #newDefaultInstance()}. */
private static final String JDK_SCHEMA_FACTORY =
"com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory";
- private static final MethodHandle NEW_DEFAULT_INSTANCE =
findNewDefaultInstance();
-
- private static MethodHandle findNewDefaultInstance() {
- try {
- return
MethodHandles.publicLookup().findStatic(SchemaFactory.class,
"newDefaultInstance",
- MethodType.methodType(SchemaFactory.class));
- } catch (final ReflectiveOperationException e) {
- // The method is absent: the running platform predates it.
- return null;
- }
- }
+ private static final MethodHandle NEW_DEFAULT_INSTANCE =
MethodHandleFactory.findStatic(SchemaFactory.class, "newDefaultInstance",
+ MethodType.methodType(SchemaFactory.class));
/**
* Hardening for any {@link SchemaFactory} on the classpath.
diff --git
a/src/main/java/org/apache/commons/xml/HardeningTransformerFactory.java
b/src/main/java/org/apache/commons/xml/HardeningTransformerFactory.java
index 7f030c5..b73c4d8 100644
--- a/src/main/java/org/apache/commons/xml/HardeningTransformerFactory.java
+++ b/src/main/java/org/apache/commons/xml/HardeningTransformerFactory.java
@@ -19,7 +19,6 @@
import java.io.IOException;
import java.lang.invoke.MethodHandle;
-import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
import java.util.Objects;
import java.util.function.Supplier;
@@ -80,17 +79,8 @@ public final class HardeningTransformerFactory {
/** Class name of the JDK's built-in default implementation, the Java 8
fallback for {@link #newDefaultInstance()}. */
private static final String JDK_TRANSFORMER_FACTORY =
"com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl";
- private static final MethodHandle NEW_DEFAULT_INSTANCE =
findNewDefaultInstance();
-
- private static MethodHandle findNewDefaultInstance() {
- try {
- return
MethodHandles.publicLookup().findStatic(TransformerFactory.class,
"newDefaultInstance",
- MethodType.methodType(TransformerFactory.class));
- } catch (final ReflectiveOperationException e) {
- // The method is absent: the running platform predates it.
- return null;
- }
- }
+ private static final MethodHandle NEW_DEFAULT_INSTANCE =
MethodHandleFactory.findStatic(TransformerFactory.class, "newDefaultInstance",
+ MethodType.methodType(TransformerFactory.class));
/**
* Capability-driven hardening for any {@link TransformerFactory} on the
classpath.
diff --git a/src/main/java/org/apache/commons/xml/HardeningXMLInputFactory.java
b/src/main/java/org/apache/commons/xml/HardeningXMLInputFactory.java
index 6f15542..c438154 100644
--- a/src/main/java/org/apache/commons/xml/HardeningXMLInputFactory.java
+++ b/src/main/java/org/apache/commons/xml/HardeningXMLInputFactory.java
@@ -20,7 +20,6 @@
import java.io.InputStream;
import java.io.Reader;
import java.lang.invoke.MethodHandle;
-import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
import java.util.Objects;
@@ -59,17 +58,8 @@ public final class HardeningXMLInputFactory {
/** Class name of the JDK's built-in default implementation, the Java 8
fallback for {@link #newDefaultFactory()}. */
private static final String JDK_XML_INPUT_FACTORY =
"com.sun.xml.internal.stream.XMLInputFactoryImpl";
- private static final MethodHandle NEW_DEFAULT_FACTORY =
findNewDefaultFactory();
-
- private static MethodHandle findNewDefaultFactory() {
- try {
- return
MethodHandles.publicLookup().findStatic(XMLInputFactory.class,
"newDefaultFactory",
- MethodType.methodType(XMLInputFactory.class));
- } catch (final ReflectiveOperationException e) {
- // The method is absent: the running platform predates it.
- return null;
- }
- }
+ private static final MethodHandle NEW_DEFAULT_FACTORY =
MethodHandleFactory.findStatic(XMLInputFactory.class, "newDefaultFactory",
+ MethodType.methodType(XMLInputFactory.class));
/**
* Capability-driven hardening for any {@link XMLInputFactory} (StAX) on
the classpath.
diff --git a/src/main/java/org/apache/commons/xml/HardeningXPathFactory.java
b/src/main/java/org/apache/commons/xml/HardeningXPathFactory.java
index cde63ab..abfa65a 100644
--- a/src/main/java/org/apache/commons/xml/HardeningXPathFactory.java
+++ b/src/main/java/org/apache/commons/xml/HardeningXPathFactory.java
@@ -18,7 +18,6 @@
package org.apache.commons.xml;
import java.lang.invoke.MethodHandle;
-import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
import java.util.Objects;
@@ -51,17 +50,8 @@ public final class HardeningXPathFactory {
/** Class name of the JDK's built-in default implementation, the Java 8
fallback for {@link #newDefaultInstance()}. */
private static final String JDK_XPATH_FACTORY =
"com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl";
- private static final MethodHandle NEW_DEFAULT_INSTANCE =
findNewDefaultInstance();
-
- private static MethodHandle findNewDefaultInstance() {
- try {
- return MethodHandles.publicLookup().findStatic(XPathFactory.class,
"newDefaultInstance",
- MethodType.methodType(XPathFactory.class));
- } catch (final ReflectiveOperationException e) {
- // The method is absent: the running platform predates it.
- return null;
- }
- }
+ private static final MethodHandle NEW_DEFAULT_INSTANCE =
MethodHandleFactory.findStatic(XPathFactory.class, "newDefaultInstance",
+ MethodType.methodType(XPathFactory.class));
/**
* Capability-driven hardening for any {@link XPathFactory} on the
classpath.
diff --git a/src/main/java/org/apache/commons/xml/MethodHandleFactory.java
b/src/main/java/org/apache/commons/xml/MethodHandleFactory.java
new file mode 100644
index 0000000..18d11bb
--- /dev/null
+++ b/src/main/java/org/apache/commons/xml/MethodHandleFactory.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.xml;
+
+import java.lang.invoke.MethodHandle;
+import java.lang.invoke.MethodHandles;
+import java.lang.invoke.MethodType;
+
+/**
+ * MethodHandle utility.
+ */
+class MethodHandleFactory {
+
+ /**
+ * Finds a static method handle for the given class, method name, and
method type.
+ *
+ * @param refc the class to search for the method.
+ * @param name the name of the method.
+ * @param type the method type.
+ * @return the method handle, or {@code null} if not found.
+ * @throws SecurityException if a security manager is present and it <a
href="MethodHandles.Lookup.html#secmgr">refuses access</a>.
+ * @throws NullPointerException if any argument is null.
+ */
+ static MethodHandle findStatic(final Class<?> refc, final String name,
final MethodType type) {
+ try {
+ return MethodHandles.publicLookup().findStatic(refc, name, type);
+ } catch (final ReflectiveOperationException e) {
+ return null;
+ }
+ }
+}
diff --git a/src/test/java/org/apache/commons/xml/ShadingFootprintTest.java
b/src/test/java/org/apache/commons/xml/ShadingFootprintTest.java
index 57ea76f..cdd9c3d 100644
--- a/src/test/java/org/apache/commons/xml/ShadingFootprintTest.java
+++ b/src/test/java/org/apache/commons/xml/ShadingFootprintTest.java
@@ -62,7 +62,8 @@ class ShadingFootprintTest {
"HardeningDocumentBuilderFactory",
"HardeningDocumentBuilderFactory$1",
"HardeningDocumentBuilderFactory$Wrapper",
- "HardeningException");
+ "HardeningException",
+ "MethodHandleFactory");
// @formatter:on
// @formatter:off
@@ -74,7 +75,8 @@ class ShadingFootprintTest {
"HardeningSAXParserFactory$1",
"HardeningSAXParserFactory$HardeningExpatXMLReader",
"HardeningSAXParserFactory$Wrapper",
- "HardeningXMLReader");
+ "HardeningXMLReader",
+ "MethodHandleFactory");
// @formatter:on
// @formatter:off
@@ -83,7 +85,8 @@ class ShadingFootprintTest {
"HardeningException",
"HardeningXMLInputFactory",
"HardeningXMLInputFactory$1",
- "HardeningXMLInputFactory$Wrapper");
+ "HardeningXMLInputFactory$Wrapper",
+ "MethodHandleFactory");
// @formatter:on
/**
@@ -128,6 +131,7 @@ class ShadingFootprintTest {
"HardeningDocumentBuilderFactory",
"HardeningDocumentBuilderFactory$1",
"HardeningDocumentBuilderFactory$Wrapper",
+ "MethodHandleFactory",
"HardeningException",
"HardeningSAXParser",
"HardeningSAXParserFactory",
@@ -168,7 +172,7 @@ class ShadingFootprintTest {
/**
* Class count of the {@link #rootClosure()} DOM entry point, the baseline
the {@link #reportFootprint()} percentages are computed against.
*/
- private static final int LIBRARY_CLASS_COUNT = 6;
+ private static final int LIBRARY_CLASS_COUNT = 7;
/**
* Entry points reported by the {@link #reportFootprint()} diagnostic,
most-focused first, ending with the whole library.