|
What this is
Other links
The source code
/*
* Copyright 1999-2004 The Apache Sofware Foundation.
*
* Licensed 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.tomcat.util.compat;
import java.io.ByteArrayInputStream;
import java.net.URL;
import java.net.URLClassLoader;
import java.security.AccessControlContext;
import java.security.AccessController;
import java.security.Policy;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import java.security.ProtectionDomain;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.Locale;
import java.util.ResourceBundle;
import org.apache.tomcat.util.depend.DependClassLoader;
/**
*
*/
public class Jdk12Support extends Jdk11Compat {
/** Return a class loader. For JDK1.2+ will return a URLClassLoader.
* For JDK1.1 will return the util.SimepleClassLoader
*/
public ClassLoader newClassLoaderInstance( URL urls[],
ClassLoader parent )
{
return URLClassLoader.newInstance( urls, parent );
}
public Object getAccessControlContext() throws Exception {
return AccessController.getContext();
}
public Object doPrivileged( Action action, Object accObj ) throws Exception {
ProtectionDomain domain[]=null;
if ( accObj instanceof ProtectionDomain ) {
domain=new ProtectionDomain[1];
domain[0]=(ProtectionDomain)accObj;
} else if (accObj instanceof ProtectionDomain[] ) {
domain=(ProtectionDomain []) accObj;
}
AccessControlContext acc=null;
if( domain==null ) {
acc=(AccessControlContext)accObj;
} else {
acc=new AccessControlContext( domain );
}
if( acc==null )
throw new Exception("Invalid access control context ");
Object proxy=action.getProxy();
if( proxy==null ) {
proxy=new PrivilegedProxy(action);
action.setProxy( proxy );
}
try {
return AccessController.
doPrivileged((PrivilegedExceptionAction)proxy, acc);
} catch( PrivilegedActionException pe ) {
Exception e = pe.getException();
throw e;
}
}
public void refreshPolicy() {
Policy.getPolicy().refresh();
}
public void setContextClassLoader( ClassLoader cl ) {
// we can't doPrivileged here - it'll be a major security
// problem
Thread.currentThread().setContextClassLoader(cl);
}
public ClassLoader getContextClassLoader() {
return Thread.currentThread().getContextClassLoader();
}
public ClassLoader getParentLoader( ClassLoader cl ) {
if( cl instanceof DependClassLoader ) {
return ((DependClassLoader)cl).getParentLoader();
}
if( cl instanceof SimpleClassLoader ) {
return ((SimpleClassLoader)cl).getParentLoader();
}
if( cl instanceof URLClassLoader ) {
return ((URLClassLoader)cl).getParent();
}
return null;
}
public URL[] getURLs(ClassLoader cl,int depth){
int c=0;
do{
while(cl instanceof DependClassLoader && cl != null )
cl=((DependClassLoader)cl).getParentLoader();
if (cl==null) break;
if (depth==c) {
if(cl instanceof URLClassLoader)
return ((URLClassLoader)cl).getURLs();
else if(cl instanceof SimpleClassLoader)
return ((SimpleClassLoader)cl).getURLs();
else
return null;
}
c++;
cl=getParentLoader(cl);
}while((cl!=null) && ( depth >= c ));
return null;
}
public java.util.ResourceBundle getBundle(String name, Locale loc, ClassLoader cl ) {
if( cl==null )
cl=getContextClassLoader();
if( cl==null )
return ResourceBundle.getBundle(name, loc);
else
return ResourceBundle.getBundle(name, loc, cl);
}
public Object getX509Certificates( byte x509[] ) throws Exception {
ByteArrayInputStream bais = new ByteArrayInputStream(x509);
// Fill the first element.
X509Certificate jsseCerts[] = null;
CertificateFactory cf =
CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate)
cf.generateCertificate(bais);
jsseCerts = new X509Certificate[1];
jsseCerts[0] = cert;
return jsseCerts;
}
// -------------------- Support --------------------
static class PrivilegedProxy implements PrivilegedExceptionAction
{
Action action;
PrivilegedProxy( Action act ) {
action=act;
}
public Object run() throws Exception
{
return action.run();
}
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.