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/02/19 21:10:31 UTC

svn commit: r509334 [1/3] - in /incubator/nmaven/branches/SI_IDE/assemblies: ./ NMaven.Core/ NMaven.Core/src/ NMaven.Core/src/main/ NMaven.Core/src/main/csharp/ NMaven.Core/src/main/csharp/Core/ NMaven.Core/src/main/csharp/Core/Impl/ NMaven.Core/src/te...

Author: sisbell
Date: Mon Feb 19 13:10:29 2007
New Revision: 509334

URL: http://svn.apache.org/viewvc?view=rev&rev=509334
Log:
First Version of the IDE: pom.xml to csproj converter. Does the basics such as setting up the folders, pom dependencies, etc. Still has some hard-coded values and needs a lot more work. Did this in .NET since the MS Project structure already has object bindings and .NET has good support for binding the Maven pom.

Added:
    incubator/nmaven/branches/SI_IDE/assemblies/
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/pom.xml   (with props)
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/Impl/
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/Impl/NMavenContextImpl.cs
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/NMavenContext.cs
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/test/
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/test/csharp/
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/test/csharp/NMaven/
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/test/csharp/NMaven/Core/
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/test/csharp/NMaven/Core/NMavenContextImplTest.cs
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Model/
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Model/Pom/
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Model/Pom/Pom.xsd   (with props)
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Model/Pom/pom.xml   (with props)
    incubator/nmaven/branches/SI_IDE/assemblies/pom.xml   (with props)

Added: incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/pom.xml
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/pom.xml?view=auto&rev=509334
==============================================================================
--- incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/pom.xml (added)
+++ incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/pom.xml Mon Feb 19 13:10:29 2007
@@ -0,0 +1,40 @@
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>NMaven.Core</groupId>
+  <artifactId>NMaven.Core</artifactId>
+  <packaging>library</packaging>
+  <version>0.14</version>
+  <name>NMaven.Core</name>
+  <dependencies>
+    <dependency>
+      <groupId>NMaven.Model</groupId>
+      <artifactId>NMaven.Model.Pom</artifactId>
+      <type>library</type>
+      <version>0.14</version>
+    </dependency>
+    <dependency>
+      <groupId>Microsoft.Build.Engine</groupId>
+      <artifactId>Microsoft.Build.Engine</artifactId>
+      <type>gac</type>
+      <version>2.0.0.0__b03f5f7f11d50a3a</version>
+    </dependency>
+    <dependency>
+      <groupId>org.nunit</groupId>
+      <artifactId>nunit.framework</artifactId>
+      <version>2.2.8.0</version>
+      <type>library</type>
+    </dependency>
+  </dependencies>
+  <build>
+    <sourceDirectory>src/main/csharp</sourceDirectory>
+    <testSourceDirectory>src/test/csharp</testSourceDirectory>
+
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.dotnet.plugins</groupId>
+        <artifactId>maven-compile-plugin</artifactId>
+        <extensions>true</extensions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
\ No newline at end of file

Propchange: incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/Impl/NMavenContextImpl.cs
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/Impl/NMavenContextImpl.cs?view=auto&rev=509334
==============================================================================
--- incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/Impl/NMavenContextImpl.cs (added)
+++ incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/Impl/NMavenContextImpl.cs Mon Feb 19 13:10:29 2007
@@ -0,0 +1,124 @@
+using System;
+using System.IO;
+using System.Xml.Serialization;
+using NMaven.Model;
+using NMaven.Core;
+using Microsoft.Build.BuildEngine;
+
+namespace NMaven.Core.Impl {
+
+	public class NMavenContextImpl : NMavenContext
+	{
+		private string localRepository;
+		
+		private string basedir;
+		
+		public NMaven.Model.Model createPomModelFor(string fileName)
+		{
+			TextReader reader = new StreamReader(fileName);
+		    XmlSerializer serializer = new XmlSerializer(typeof(NMaven.Model.Model));
+			return (NMaven.Model.Model) serializer.Deserialize(reader);	
+		}
+		
+		public Project createProjectFor(string fileName) 
+		{
+            Engine engine = new Engine(@"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727");
+            Project project = new Project(engine);
+            project.Load(@fileName);
+            return project;
+		}
+		
+		private void addFoldersToProject(Project project, BuildItemGroup folderGroup, DirectoryInfo rootDirectoryInfo) 
+		{
+			DirectoryInfo sourcedir = new DirectoryInfo(basedir + @"src\main\csharp");
+            DirectoryInfo[] directoryInfos = rootDirectoryInfo.GetDirectories();
+            if(directoryInfos != null && directoryInfos.Length > 0)
+            {
+            	if(folderGroup == null) folderGroup = project.AddNewItemGroup();
+            	
+            	foreach(DirectoryInfo di in directoryInfos) 
+            	{
+            		folderGroup.AddNewItem("Folder", di.FullName.Substring(sourcedir.FullName.Length + 1));
+                	addFoldersToProject(project, folderGroup, di);
+            	}           	
+            }			
+		}
+		
+		private void addClassFilesToProject(Project project, BuildItemGroup compileGroup, DirectoryInfo rootDirectoryInfo) 
+		{
+			DirectoryInfo sourcedir = new DirectoryInfo(basedir + @"src\main\csharp");
+            DirectoryInfo[] directoryInfos = rootDirectoryInfo.GetDirectories();
+            if(directoryInfos != null && directoryInfos.Length > 0)
+            {
+            	if(compileGroup == null) compileGroup = project.AddNewItemGroup();
+            	
+            	foreach(DirectoryInfo di in directoryInfos) 
+            	{  
+	            	foreach(FileInfo fileInfo in di.GetFiles()) 
+	            	{
+	            		BuildItem buildItem = 
+	            			compileGroup.AddNewItem("Compile", 
+	            			                        fileInfo.FullName.Substring(sourcedir.FullName.Length + 1));
+	            		buildItem.SetMetadata("Link", fileInfo.FullName.Substring(sourcedir.FullName.Length + 1));
+	            	}            		
+                	addClassFilesToProject(project, compileGroup, di);
+            	}           	
+            }				
+		}
+		
+		private string getOutputType(String type)
+		{
+			if (type.Equals("library")) return "Library";
+			else if (type.Equals("exe")) return "Exe";
+			else if (type.Equals("winexe")) return "WinExe";
+			return null;
+		}
+		
+		public Project getProjectFromPomModel(NMaven.Model.Model model)
+		{
+            Engine engine = new Engine(@"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727");
+            Project project = new Project(engine);
+            
+            //Main Properties
+            BuildPropertyGroup groupProject = project.AddNewPropertyGroup(false);
+            BuildProperty buildProperty = groupProject.AddNewProperty("Configuration", "Debug");
+            buildProperty.Condition = " '$(Configuration)' == '' ";
+            groupProject.AddNewProperty("RootNameSpace", model.groupId);
+            groupProject.AddNewProperty("AssemblyName", model.artifactId);
+            groupProject.AddNewProperty("OutputType", getOutputType(model.packaging));
+            
+            //Debug Properties
+            groupProject = project.AddNewPropertyGroup(false);
+            buildProperty.Condition = " '$(Configuration)' == '' ";
+            groupProject.AddNewProperty( "OutputPath", @"..\..\..\target\main\bin\Debug\", false);
+            
+            project.AddNewImport(@"$(MSBuildBinPath)\Microsoft.CSharp.Targets", null);
+
+            DirectoryInfo rootDirectoryInfo = new DirectoryInfo(basedir + @"src\main\csharp");            
+            addFoldersToProject(project, null, rootDirectoryInfo);
+            addClassFilesToProject(project, null, rootDirectoryInfo);
+            
+			BuildItemGroup group = project.AddNewItemGroup();
+			foreach(Dependency dependency in model.dependencies) {
+				String repoPath = @localRepository + dependency.groupId.Replace(".", "\\")
+					+ "\\" + dependency.artifactId + "\\" + dependency.version + "\\" + dependency.artifactId + ".dll";
+				BuildItem buildItem = group.AddNewItem("Reference", dependency.artifactId);
+				if(!dependency.GetType().Equals("gac")) buildItem.SetMetadata("HintPath", repoPath, true);
+			}
+			
+			return project;
+			
+		}
+		
+		public void init(string localRepository) 
+		{
+			this.localRepository = localRepository;	
+			this.basedir =  new DirectoryInfo(Environment.CurrentDirectory).Parent.Parent.Parent.Parent.FullName + @"\";
+		}
+		
+		private class ClassParser {
+			
+		
+		}
+	}
+}

Added: incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/NMavenContext.cs
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/NMavenContext.cs?view=auto&rev=509334
==============================================================================
--- incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/NMavenContext.cs (added)
+++ incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/NMavenContext.cs Mon Feb 19 13:10:29 2007
@@ -0,0 +1,18 @@
+using System;
+using System.IO;
+using NMaven.Model;
+using Microsoft.Build.BuildEngine;
+
+namespace NMaven.Core {
+
+	public interface NMavenContext
+	{
+		NMaven.Model.Model createPomModelFor(string fileName);
+		
+		Project createProjectFor(string fileName);		
+		
+		Project getProjectFromPomModel(NMaven.Model.Model model);
+		
+		void init(string localRepository);
+	}
+}

Added: incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/test/csharp/NMaven/Core/NMavenContextImplTest.cs
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/test/csharp/NMaven/Core/NMavenContextImplTest.cs?view=auto&rev=509334
==============================================================================
--- incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/test/csharp/NMaven/Core/NMavenContextImplTest.cs (added)
+++ incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/test/csharp/NMaven/Core/NMavenContextImplTest.cs Mon Feb 19 13:10:29 2007
@@ -0,0 +1,34 @@
+/*
+ * Created by SharpDevelop.
+ * User: shane
+ * Date: 2/17/2007
+ * Time: 11:41 PM
+ * 
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+
+using NUnit.Framework;
+using System;
+using NMaven.Core.Impl;
+using NMaven.Model;
+using Microsoft.Build.BuildEngine;
+
+namespace NMaven.Core
+{
+	[TestFixture]
+	public class TestNMavenContextImplTest
+	{
+		[Test]
+		public void TestMethod()
+		{
+		/*
+			NMavenContext nmavenContext = new NMavenContextImpl();
+			nmavenContext.init(@"C:\Documents and Settings\shane\.m2\repository\");
+
+			NMaven.Model.Model model = nmavenContext.createPomModelFor(@"..\..\..\..\pom.xml");
+			Project project = nmavenContext.getProjectFromPomModel(model);
+			project.Save(@"C:\Documents and Settings\shane\nmaven-apache\SI_IDE\assemblies\NMaven.Core\src\main\csharp\sample3.csproj");
+						*/
+		}
+	}
+}