You are viewing a plain text version of this content. The canonical link for it is here.
Posted to nmaven-commits@incubator.apache.org by si...@apache.org on 2007/04/23 23:48:16 UTC

svn commit: r531660 - in /incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader: ./ NMaven.Plugin.Loader/ src/ src/main/ src/main/csharp/ src/main/csharp/NMaven/ src/main/csharp/NMaven/Plugin/ src/main/csharp/NMaven/Plugin/Loader/

Author: sisbell
Date: Mon Apr 23 16:48:15 2007
New Revision: 531660

URL: http://svn.apache.org/viewvc?view=rev&rev=531660
Log:
Initial import of the plugin loader.

Added:
    incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/
    incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/NMaven.Plugin.Loader/
    incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/NMaven.Plugin.Loader/NMaven.Plugin.Loader.sln
    incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/pom.xml   (with props)
    incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/src/
    incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/src/main/
    incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/src/main/csharp/
    incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/src/main/csharp/NMaven/
    incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/src/main/csharp/NMaven/Plugin/
    incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/src/main/csharp/NMaven/Plugin/Loader/
    incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/src/main/csharp/NMaven/Plugin/Loader/PluginLoader.cs

Added: incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/NMaven.Plugin.Loader/NMaven.Plugin.Loader.sln
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/NMaven.Plugin.Loader/NMaven.Plugin.Loader.sln?view=auto&rev=531660
==============================================================================
--- incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/NMaven.Plugin.Loader/NMaven.Plugin.Loader.sln (added)
+++ incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/NMaven.Plugin.Loader/NMaven.Plugin.Loader.sln Mon Apr 23 16:48:15 2007
@@ -0,0 +1,10 @@
+Microsoft Visual Studio Solution File, Format Version 9.00
+# SharpDevelop 2.0.0.1710
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+	EndGlobalSection
+EndGlobal

Added: incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/pom.xml
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/pom.xml?view=auto&rev=531660
==============================================================================
--- incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/pom.xml (added)
+++ incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/pom.xml Mon Apr 23 16:48:15 2007
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?><!--
+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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0">
+  <parent>
+    <groupId>NMaven</groupId>
+    <version>0.14</version>
+    <artifactId>NMaven.Assemblies</artifactId>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>NMaven.Plugin</groupId>
+  <artifactId>NMaven.Plugin.Loader</artifactId>
+  <packaging>exe</packaging>
+  <version>0.14</version>
+  <name>NMaven.Plugin.Loader</name>
+  <dependencies>
+    <dependency>
+      <groupId>NMaven.Plugin</groupId>
+      <artifactId>NMaven.Plugin</artifactId>
+      <type>library</type>
+      <version>0.14</version>
+    </dependency>
+  </dependencies>
+</project>
\ No newline at end of file

Propchange: incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/src/main/csharp/NMaven/Plugin/Loader/PluginLoader.cs
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/src/main/csharp/NMaven/Plugin/Loader/PluginLoader.cs?view=auto&rev=531660
==============================================================================
--- incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/src/main/csharp/NMaven/Plugin/Loader/PluginLoader.cs (added)
+++ incubator/nmaven/branches/SI_XPT/assemblies/NMaven.Plugin.Loader/src/main/csharp/NMaven/Plugin/Loader/PluginLoader.cs Mon Apr 23 16:48:15 2007
@@ -0,0 +1,111 @@
+using System;
+using System.IO;
+using System.Reflection;
+using System.Runtime.Remoting;
+using NMaven.Plugin;
+
+namespace NMaven.Plugin.Loader
+{
+	/// <summary>
+	/// Description of PluginLoader.
+	/// </summary>
+	public class PluginLoader
+	{
+		public PluginLoader()
+		{
+		}
+
+		public void load(FileInfo paramFile, FileInfo assemblyFile, string mojoName)
+		{
+			Console.WriteLine("Loading Loader: " + assemblyFile.DirectoryName);
+			AppDomainSetup setup = new AppDomainSetup();
+			setup.ApplicationBase = assemblyFile.DirectoryName;
+
+			AppDomain domain = AppDomain.CreateDomain("Loader", null, setup);
+			PluginDomainManager domainManager = (PluginDomainManager) domain.DomainManager;
+            domainManager.LoadPlugin(assemblyFile);
+			ObjectHandle oh = domain.CreateInstanceFrom(assemblyFile.FullName, mojoName);
+			AbstractMojo o = (AbstractMojo) oh.Unwrap();
+			o.injectFields(paramFile.FullName);
+			o.Execute();
+			//Console.WriteLine("Type = " + o.getT());
+			/*
+			foreach(MethodInfo methodInfo in o.GetType().GetMethods())
+			{
+				Console.WriteLine(methodInfo.Name);
+			}
+			MethodInfo executeMethod = o.GetType().GetMethod("Execute");
+			executeMethod.Invoke(o, null);
+*/
+			//PluginDomainManager domainManager = new PluginDomainManager();
+			//AppDomain domain = domainManager.CreateDomain("Loader", null, setup);
+			//domain.CreateInstance();
+			/*
+			PluginDomainManager domainManager = (PluginDomainManager) domain.DomainManager;
+			
+			if(domainManager == null)
+			{
+				Console.WriteLine("DM is null");
+				return;
+			}
+						
+			domainManager.Load(paramFile, assemblyFile);
+			*/
+	/*		
+			Assembly assembly = null;
+			try 
+			{
+				assembly = domain.Load(@"NMaven.Plugin.Solution");				
+			}
+			catch(FileNotFoundException e)
+			{
+				Console.WriteLine(e.Message);
+				return;
+			}
+			
+			Type plugin = assembly.GetType("NMaven.Plugin.Solution.SolutionPlugin");
+			
+			object o = Activator.CreateInstance(plugin);
+			MethodInfo executeMethod = plugin.GetMethod("Execute");
+			executeMethod.Invoke(o, null);
+			*/
+			//Read in XML file, Executable Assembly Info (Directory, ArtifactId);
+/*			
+			string[] args = new string[2];
+			args[0] = @"C:\Documents and Settings\shane\nmaven-apache\SI_XPT\integration-tests\tests\it0020\target\assembly-resources\resgen";
+			args[1] = @"C:\tmp\test.resx";
+			FileInfo fileInfo = new FileInfo(@"C:\Documents and Settings\shane\.m2\repository\NMaven\Plugin\NMaven.Plugin.Resx\0.14\NMaven.Plugin.Resx.exe");
+			
+			AppDomainSetup setup = new AppDomainSetup();
+			setup.ApplicationBase = fileInfo.DirectoryName;		
+			setup.ConfigurationFile = @"NMaven.Plugin.Resx.exe.config";
+			AppDomain domain = AppDomain.CreateDomain("Loader", null, setup);
+		    int i = domain.ExecuteAssembly(@"NMaven.Plugin.Resx.exe", null, args);
+			Console.WriteLine("INT = " + i);	
+	*/
+		}
+		
+		public static void Main(string[] args)
+		{
+			string paramFile = GetArgFor("parameterFile", args);
+			string assemblyFile = GetArgFor("assemblyFile", args);
+			string mojoName = GetArgFor("mojoName", args);
+			Console.WriteLine("ParamFile = {0}, AssemblyFile = {1}, MojoName = {2}", 
+			                  paramFile, assemblyFile, mojoName);
+			
+			PluginLoader pluginLoader = new PluginLoader();
+			pluginLoader.load(new FileInfo(paramFile), new FileInfo(assemblyFile), mojoName);
+		}
+		
+		private static string GetArgFor(string name, string[] args)
+		{
+			char[] delim = {'='};
+			foreach(string arg in args)
+			{
+                string[] tokens = arg.Split(delim);
+                if (tokens[0].Equals(name)) return tokens[1];
+			}
+            return null;
+		}		
+	}
+}