From 73806cc955261566192b76e773cc8993b221729f Mon Sep 17 00:00:00 2001 From: markt Date: Tue, 8 Mar 2011 11:04:38 +0000 Subject: [PATCH] Restore the ability to register the Tomcat jndi URL handler via the java.protocol.handler.pkgs system property. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1079320 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/naming/resources/Constants.java | 4 +++ .../resources/DirContextURLStreamHandler.java | 17 ++++++++++++ java/org/apache/naming/resources/jndi/Handler.java | 32 ++++++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 java/org/apache/naming/resources/jndi/Handler.java diff --git a/java/org/apache/naming/resources/Constants.java b/java/org/apache/naming/resources/Constants.java index 48d21a376..757f19dab 100644 --- a/java/org/apache/naming/resources/Constants.java +++ b/java/org/apache/naming/resources/Constants.java @@ -24,5 +24,9 @@ package org.apache.naming.resources; */ public final class Constants { + + public static final String PROTOCOL_HANDLER_VARIABLE = + "java.protocol.handler.pkgs"; + public static final String Package = "org.apache.naming.resources"; } diff --git a/java/org/apache/naming/resources/DirContextURLStreamHandler.java b/java/org/apache/naming/resources/DirContextURLStreamHandler.java index 1fdca96d8..a97b42217 100644 --- a/java/org/apache/naming/resources/DirContextURLStreamHandler.java +++ b/java/org/apache/naming/resources/DirContextURLStreamHandler.java @@ -133,6 +133,23 @@ public class DirContextURLStreamHandler extends URLStreamHandler { /** + * Set the java.protocol.handler.pkgs system property. For use when + * embedding Tomcat and the embedding application has already set its own + * {@link java.net.URLStreamHandlerFactory}. + */ + public static void setProtocolHandler() { + String value = System.getProperty(Constants.PROTOCOL_HANDLER_VARIABLE); + if (value == null) { + value = Constants.Package; + System.setProperty(Constants.PROTOCOL_HANDLER_VARIABLE, value); + } else if (value.indexOf(Constants.Package) == -1) { + value += "|" + Constants.Package; + System.setProperty(Constants.PROTOCOL_HANDLER_VARIABLE, value); + } + } + + + /** * Returns true if the thread or the context class loader of the current * thread is bound. */ diff --git a/java/org/apache/naming/resources/jndi/Handler.java b/java/org/apache/naming/resources/jndi/Handler.java new file mode 100644 index 000000000..fd56ccba0 --- /dev/null +++ b/java/org/apache/naming/resources/jndi/Handler.java @@ -0,0 +1,32 @@ +/* + * 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.naming.resources.jndi; + +import org.apache.naming.resources.DirContextURLStreamHandler; + +/** + * Stream handler to a JNDI directory context. For use when + * embedding Tomcat and the embedding application has already set its own + * {@link java.net.URLStreamHandlerFactory} and the Tomcat jndi handler needs to + * be registered via the java.protocol.handler.pkgs system property. + */ +public class Handler extends DirContextURLStreamHandler { + + public Handler() { + // NOOP + } +} -- 2.11.0