You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2023/01/23 20:39:20 UTC
[tomcat] branch main updated: Remove deprecated code
This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/main by this push:
new 4c70a12e8a Remove deprecated code
4c70a12e8a is described below
commit 4c70a12e8aac4081a11f200a7e70f0db30a6c79b
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Mon Jan 23 20:39:14 2023 +0000
Remove deprecated code
---
.../catalina/loader/WebappClassLoaderBase.java | 4 -
.../TomcatURLStreamHandlerFactory.java | 169 ---------------------
.../TomcatURLStreamHandlerProvider.java | 11 +-
.../TestTomcatURLStreamHandlerFactory.java | 41 -----
4 files changed, 2 insertions(+), 223 deletions(-)
diff --git a/java/org/apache/catalina/loader/WebappClassLoaderBase.java b/java/org/apache/catalina/loader/WebappClassLoaderBase.java
index 1111d8edd4..c334e1bf19 100644
--- a/java/org/apache/catalina/loader/WebappClassLoaderBase.java
+++ b/java/org/apache/catalina/loader/WebappClassLoaderBase.java
@@ -1492,7 +1492,6 @@ public abstract class WebappClassLoaderBase extends URLClassLoader
/**
* Clear references.
*/
- @SuppressWarnings("deprecation")
protected void clearReferences() {
// If the JVM is shutting down, skip the memory leak checks
@@ -1543,9 +1542,6 @@ public abstract class WebappClassLoaderBase extends URLClassLoader
// Clear the classloader reference in the VM's bean introspector
java.beans.Introspector.flushCaches();
-
- // Clear any custom URLStreamHandlers
- org.apache.catalina.webresources.TomcatURLStreamHandlerFactory.release(this);
}
diff --git a/java/org/apache/catalina/webresources/TomcatURLStreamHandlerFactory.java b/java/org/apache/catalina/webresources/TomcatURLStreamHandlerFactory.java
deleted file mode 100644
index 830858e774..0000000000
--- a/java/org/apache/catalina/webresources/TomcatURLStreamHandlerFactory.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * 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
- *
- * http://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.catalina.webresources;
-
-import java.net.URL;
-import java.net.URLStreamHandler;
-import java.net.URLStreamHandlerFactory;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-/**
- * @deprecated Unused. Use the ServiceLoader mechanism to define additional
- * handlers. Will be removed in Tomcat 11 onwards.
- */
-@Deprecated
-public class TomcatURLStreamHandlerFactory implements URLStreamHandlerFactory {
-
- // Singleton instance
- private static volatile TomcatURLStreamHandlerFactory instance = null;
-
- /**
- * Obtain a reference to the singleton instance. It is recommended that
- * callers check the value of {@link #isRegistered()} before using the
- * returned instance.
- *
- * @return A reference to the singleton instance
- */
- public static TomcatURLStreamHandlerFactory getInstance() {
- getInstanceInternal(true);
- return instance;
- }
-
-
- private static TomcatURLStreamHandlerFactory getInstanceInternal(boolean register) {
- // Double checked locking. OK because instance is volatile.
- if (instance == null) {
- synchronized (TomcatURLStreamHandlerFactory.class) {
- if (instance == null) {
- instance = new TomcatURLStreamHandlerFactory(register);
- }
- }
- }
- return instance;
- }
-
-
- private final boolean registered;
-
- // List of factories for application defined stream handler factories.
- private final List<URLStreamHandlerFactory> userFactories =
- new CopyOnWriteArrayList<>();
-
- /**
- * Register this factory with the JVM. May be called more than once. The
- * implementation ensures that registration only occurs once.
- *
- * @return <code>true</code> if the factory is already registered with the
- * JVM or was successfully registered as a result of this call.
- * <code>false</code> if the factory was disabled prior to this
- * call.
- */
- public static boolean register() {
- return getInstanceInternal(true).isRegistered();
- }
-
-
- /**
- * Prevent this this factory from registering with the JVM. May be called
- * more than once.
- *
- * @return <code>true</code> if the factory is already disabled or was
- * successfully disabled as a result of this call.
- * <code>false</code> if the factory was already registered prior
- * to this call.
- */
- public static boolean disable() {
- return !getInstanceInternal(false).isRegistered();
- }
-
-
- /**
- * Release references to any user provided factories that have been loaded
- * using the provided class loader. Called during web application stop to
- * prevent memory leaks.
- *
- * @param classLoader The class loader to release
- */
- public static void release(ClassLoader classLoader) {
- if (instance == null) {
- return;
- }
- List<URLStreamHandlerFactory> factories = instance.userFactories;
- for (URLStreamHandlerFactory factory : factories) {
- ClassLoader factoryLoader = factory.getClass().getClassLoader();
- while (factoryLoader != null) {
- if (classLoader.equals(factoryLoader)) {
- // Implementation note: userFactories is a
- // CopyOnWriteArrayList, so items are removed with
- // List.remove() instead of usual Iterator.remove()
- factories.remove(factory);
- break;
- }
- factoryLoader = factoryLoader.getParent();
- }
- }
- }
-
-
- private TomcatURLStreamHandlerFactory(boolean register) {
- // Hide default constructor
- // Singleton pattern to ensure there is only one instance of this
- // factory
- this.registered = register;
- if (register) {
- URL.setURLStreamHandlerFactory(this);
- }
- }
-
-
- public boolean isRegistered() {
- return registered;
- }
-
-
- /**
- * Since the JVM only allows a single call to
- * {@link URL#setURLStreamHandlerFactory(URLStreamHandlerFactory)} and
- * Tomcat needs to register a handler, provide a mechanism to allow
- * applications to register their own handlers.
- *
- * @param factory The user provided factory to add to the factories Tomcat
- * has already registered
- */
- public void addUserFactory(URLStreamHandlerFactory factory) {
- userFactories.add(factory);
- }
-
-
- @Override
- public URLStreamHandler createURLStreamHandler(String protocol) {
-
-
- // Application handlers
- for (URLStreamHandlerFactory factory : userFactories) {
- URLStreamHandler handler =
- factory.createURLStreamHandler(protocol);
- if (handler != null) {
- return handler;
- }
- }
-
- // Unknown protocol
- return null;
- }
-}
diff --git a/java/org/apache/catalina/webresources/TomcatURLStreamHandlerProvider.java b/java/org/apache/catalina/webresources/TomcatURLStreamHandlerProvider.java
index 971e5ea4f8..6be9781506 100644
--- a/java/org/apache/catalina/webresources/TomcatURLStreamHandlerProvider.java
+++ b/java/org/apache/catalina/webresources/TomcatURLStreamHandlerProvider.java
@@ -21,18 +21,11 @@ import java.net.spi.URLStreamHandlerProvider;
import org.apache.catalina.webresources.war.Handler;
-@SuppressWarnings("deprecation")
public class TomcatURLStreamHandlerProvider extends URLStreamHandlerProvider {
private static final String WAR_PROTOCOL = "war";
private static final String CLASSPATH_PROTOCOL = "classpath";
- static {
- // Create an instance without calling URL.setURLStreamHandlerFactory
- TomcatURLStreamHandlerFactory.disable();
- }
-
-
@Override
public URLStreamHandler createURLStreamHandler(String protocol) {
if (WAR_PROTOCOL.equals(protocol)) {
@@ -41,7 +34,7 @@ public class TomcatURLStreamHandlerProvider extends URLStreamHandlerProvider {
return new ClasspathURLStreamHandler();
}
- // Possible user handler defined via Tomcat's custom API
- return TomcatURLStreamHandlerFactory.getInstance().createURLStreamHandler(protocol);
+
+ return null;
}
}
diff --git a/test/org/apache/catalina/webresources/TestTomcatURLStreamHandlerFactory.java b/test/org/apache/catalina/webresources/TestTomcatURLStreamHandlerFactory.java
deleted file mode 100644
index ac5b6342ff..0000000000
--- a/test/org/apache/catalina/webresources/TestTomcatURLStreamHandlerFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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
- *
- * http://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.catalina.webresources;
-
-import java.net.URLStreamHandler;
-import java.net.URLStreamHandlerFactory;
-
-import org.junit.Test;
-
-/**
- * @deprecated Code under test is deprecated and will be removed in Tomcat 11
- */
-@Deprecated
-public class TestTomcatURLStreamHandlerFactory {
-
- @Test
- public void testUserFactory() throws Exception {
- URLStreamHandlerFactory factory = new URLStreamHandlerFactory() {
- @Override
- public URLStreamHandler createURLStreamHandler(String protocol) {
- return null;
- }
- };
- TomcatURLStreamHandlerFactory.getInstance().addUserFactory(factory);
- TomcatURLStreamHandlerFactory.release(factory.getClass().getClassLoader());
- }
-}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org