All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jivesoftware.openfire.starter.JiveClassLoader Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (C) 2004-2008 Jive Software. All rights reserved.
 *
 * 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.jivesoftware.openfire.starter;

import java.io.File;
import java.io.FilenameFilter;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Arrays;

/**
 * A simple classloader to extend the classpath to
 * include all jars in a lib directory.

* * The new classpath includes all *.jar and *.zip * archives (zip is commonly used in packaging JDBC drivers). The extended * classpath is used for both the initial server startup, as well as loading * plug-in support jars. * * @author Derek DeMoro * @author Iain Shigeoka */ class JiveClassLoader extends URLClassLoader { /** * Constructs the classloader. * * @param parent the parent class loader (or null for none). * @param libDir the directory to load jar files from. * @throws java.net.MalformedURLException if the libDir path is not valid. */ JiveClassLoader(ClassLoader parent, File libDir) throws MalformedURLException { super(new URL[] { libDir.toURI().toURL() }, parent); File[] jars = libDir.listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { boolean accept = false; String smallName = name.toLowerCase(); if (smallName.endsWith(".jar")) { accept = true; } else if (smallName.endsWith(".zip")) { accept = true; } return accept; } }); // Do nothing if no jar or zip files were found if (jars == null) { return; } // sort jars otherwise order differs between installations (e.g. it's not alphabetical) // order may matter if trying to patch an install by adding patch jar to lib folder Arrays.sort(jars); for (int i = 0; i < jars.length; i++) { if (jars[i].isFile()) { addURL(jars[i].toURI().toURL()); } } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy