/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun * Microsystems, Inc. All Rights Reserved. */ package org.openide.filesystems; import org.openide.util.Lookup; import org.openide.ErrorManager; /** Contains utility methods to deal with repository and error manager, * so we do not need to directly contact * * @author Jaroslav Tulach */ final class ExternalUtil extends Object { /** value for the repository & error manager */ private static Repository repository; /** Static method to find the Repository to use. * @return Repository instance */ public static Repository getRepository () { initialize (); return repository; } /** Notifies an exception. */ public static void exception (Exception ex) { ErrorManager.getDefault().notify (ErrorManager.INFORMATIONAL, ex); } /** Copies anotation. * @param newEx new exception to annotate * @param oldEx old exception to take annotation from * @return newEx */ public static Throwable copyAnnotation (Throwable newEx, Throwable oldEx) { return ErrorManager.getDefault().annotate(newEx, oldEx); } /** Annotates the exception with a message. */ public static void annotate (Throwable ex, String msg) { ErrorManager.getDefault().annotate (ex, msg); } /** Annotates the exception with a message. */ public static Throwable annotate (Throwable ex, Throwable stack) { return ErrorManager.getDefault().annotate (ex, stack); } /** Logs a text. */ public static void log (String msg) { ErrorManager.getDefault().log (ErrorManager.INFORMATIONAL, msg); } /** Loads a class of given name * @param name name of the class * @return the class * @exception ClassNotFoundException if class was not found */ public static Class findClass (String name) throws ClassNotFoundException { initialize (); ClassLoader c = (ClassLoader)Lookup.getDefault ().lookup (ClassLoader.class); if (c == null) { return Class.forName (name); } else { return Class.forName (name, true, c); } } /** Initializes the context and errManager */ private static void initialize () { if (!isInitialized ()) { Lookup l = Lookup.getDefault (); Repository rep = (Repository)l.lookup (org.openide.filesystems.Repository.class); setRepository (rep); } } private static synchronized boolean isInitialized () { if (repository == null) return false; return true; } /** * @param rep may be null */ private static synchronized void setRepository (Repository rep) { repository = rep; if (repository == null) { // if not provided use default one repository = new Repository (new XMLFileSystem ()); } } }