From a1e045b36e763acef3fc6c4911d85ada8bef9814 Mon Sep 17 00:00:00 2001 From: Peter Donald Date: Thu, 7 Feb 2002 11:49:51 +0000 Subject: [PATCH] Fake tools.jar as an optional package git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271204 13f79535-47bb-0310-9956-ffa450edef68 --- .../extensions/DefaultExtensionManager.java | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/extensions/DefaultExtensionManager.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/extensions/DefaultExtensionManager.java index e5097ef8d..deae74522 100644 --- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/extensions/DefaultExtensionManager.java +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/components/extensions/DefaultExtensionManager.java @@ -9,6 +9,10 @@ package org.apache.myrmidon.components.extensions; import java.io.File; import org.apache.avalon.excalibur.extension.DefaultPackageRepository; +import org.apache.avalon.excalibur.extension.Extension; +import org.apache.avalon.excalibur.extension.OptionalPackage; +import org.apache.avalon.excalibur.i18n.ResourceManager; +import org.apache.avalon.excalibur.i18n.Resources; import org.apache.avalon.excalibur.util.StringUtil; import org.apache.avalon.framework.activity.Disposable; import org.apache.avalon.framework.activity.Initializable; @@ -29,6 +33,11 @@ public class DefaultExtensionManager extends DefaultPackageRepository implements LogEnabled, Parameterizable, Initializable, Disposable, ExtensionManager { + private static final Resources REZ = + ResourceManager.getPackageResources( DefaultExtensionManager.class ); + + private static final String TOOLS_JAR = File.separator + "lib" + File.separator + "tools.jar"; + private Logger m_logger; private String m_path; @@ -65,6 +74,13 @@ public class DefaultExtensionManager setPath( dirs ); scanPath(); + + final Extension extension = createToolsExtension(); + final File jar = getToolsJar(); + final Extension[] available = new Extension[]{extension}; + final Extension[] required = new Extension[ 0 ]; + final OptionalPackage toolsPackage = new OptionalPackage( jar, available, required ); + cacheOptionalPackage( toolsPackage ); } public void dispose() @@ -76,4 +92,39 @@ public class DefaultExtensionManager { m_logger.debug( message ); } + + private File getToolsJar() + throws Exception + { + final String javaHome = System.getProperty( "java.home" ); + String jdkHome; + if( javaHome.endsWith( "jre" ) ) + { + jdkHome = javaHome.substring( 0, javaHome.length() - 4 ); + } + else + { + jdkHome = javaHome; + } + + final File tools = new File( jdkHome + TOOLS_JAR ); + if( !tools.exists() ) + { + final String message = REZ.getString( "extension.missing-tools.error" ); + throw new Exception( message ); + } + + return tools; + } + + private Extension createToolsExtension() + { + return new Extension( "com.sun.tools", + "1.0", + "com.sun", + "1.0", + "com.sun", + "com.sun", + null ); + } }