You are viewing a plain text version of this content. The canonical link for it is here.
Posted to npanday-commits@incubator.apache.org by br...@apache.org on 2013/03/02 01:15:42 UTC

svn commit: r1451806 - in /incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src: main/csharp/Converter/Algorithms/ main/csharp/Digest/Algorithms/ main/csharp/Digest/Model/ test/resource/SilverlightApplication1/SilverlightApplica...

Author: brett
Date: Sat Mar  2 01:15:42 2013
New Revision: 1451806

URL: http://svn.apache.org/r1451806
Log:
[NPANDAY-578] add support for Silverlight reference assemblies

Modified:
    incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/AbstractPomConverter.cs
    incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/SilverlightPomConverter.cs
    incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Algorithms/NormalProjectDigestAlgorithm.cs
    incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Model/ProjectDigest.cs
    incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/SilverlightApplication1/SilverlightApplication1/pom.test
    incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/SilverlightApplication1/SilverlightApplication2/pom.test
    incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/SilverlightApplication1/SilverlightClassLibrary1/pom.test
    incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/SilverlightApplication5/SilverlightApplication5/pom.test

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/AbstractPomConverter.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/AbstractPomConverter.cs?rev=1451806&r1=1451805&r2=1451806&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/AbstractPomConverter.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/AbstractPomConverter.cs Sat Mar  2 01:15:42 2013
@@ -80,7 +80,10 @@ namespace NPanday.ProjectImporter.Conver
         
         protected NPanday.Model.Pom.Model model;
         private static List<Artifact.Artifact> testingArtifacts;
-        private Dictionary<string, string> TargetFrameworkDirectories;
+
+        // TODO: this might be more effective if it was cached across instances, 
+        // but would need to be mapped by TargetFrameworkIdentifier and TargetFrameworkVersion
+        protected Dictionary<string, string> TargetFrameworkDirectories;
 
         public NPanday.Model.Pom.Model Model
         {
@@ -845,11 +848,10 @@ namespace NPanday.ProjectImporter.Conver
             model.properties.Any = elems.ToArray();
         }
 
-        protected Dictionary<string, string> GetTargetFrameworkDirectories()
+        protected virtual Dictionary<string, string> GetTargetFrameworkDirectories()
         {
             if (TargetFrameworkDirectories == null)
             {
-                // TODO: add support for Silverlight
                 // TODO: add support for WinFX, which adds: $(CLR_REF_PATH) and $(WinFXAssemblyDirectory) (constructed by an MSBuild task)
                 // TODO: add support for CompactFramework, which overwrites with the output of the GetDeviceFrameworkPath MSBuild task
 

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/SilverlightPomConverter.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/SilverlightPomConverter.cs?rev=1451806&r1=1451805&r2=1451806&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/SilverlightPomConverter.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/SilverlightPomConverter.cs Sat Mar  2 01:15:42 2013
@@ -23,13 +23,19 @@ using NPanday.Model.Pom;
 using NPanday.ProjectImporter.Digest.Model;
 using NPanday.Utils;
 using System.Collections.Generic;
+using log4net;
+using Microsoft.Win32;
+using System;
+using System.Text.RegularExpressions;
 
 namespace NPanday.ProjectImporter.Converter.Algorithms
 {
     public class SilverlightPomConverter : NormalPomConverter
     {
-        public SilverlightPomConverter(ProjectDigest projectDigest, string mainPomFile, NPanday.Model.Pom.Model parent, string groupId) 
-            : base(projectDigest,mainPomFile,parent, groupId)
+        private static readonly ILog log = LogManager.GetLogger(typeof(SilverlightPomConverter));
+
+        public SilverlightPomConverter(ProjectDigest projectDigest, string mainPomFile, NPanday.Model.Pom.Model parent, string groupId)
+            : base(projectDigest, mainPomFile, parent, groupId)
         {
         }
 
@@ -91,17 +97,6 @@ namespace NPanday.ProjectImporter.Conver
             // Add Project Inter-dependencies
             AddInterProjectDependenciesToList();
 
-            // filter the rsp and SDK included assemblies
-            //  This includes just a subset of the provided libraries that are automatically available to a Silverlight application.
-            //  Setting them to 'provided' scope may be more accurate, if NPanday core were to support it. The motivation is to avoid
-            //  Adding incorrect dependencies referring to the GAC which are likely to be inconsistent across generations (including
-            //  making the unit tests for this class fail).
-            List<string> sdkReferences = new List<string>();
-            sdkReferences.Add("System.Windows");
-            sdkReferences.Add("System.Windows.Browser");
-            sdkReferences.Add("System.Net");
-            FilterSdkReferences(sdkReferences);
-
             // Add Project Reference Dependencies
             AddProjectReferenceDependenciesToList();
 
@@ -110,5 +105,43 @@ namespace NPanday.ProjectImporter.Conver
                 PomHelperUtility.WriteModelToPom(new FileInfo(Path.GetDirectoryName(projectDigest.FullFileName) + @"\pom.xml"), Model);
             }
         }
+        
+        protected override Dictionary<string, string> GetTargetFrameworkDirectories()
+        {
+            if (TargetFrameworkDirectories == null)
+            {
+                Dictionary<string, string> targetFrameworkDirectories = new Dictionary<string, string>();
+
+                try
+                {
+                    RegistryKey root = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SDKs\Silverlight\v" + projectDigest.TargetFramework);
+                    RegistryKey referenceAssemblies = root.OpenSubKey("ReferenceAssemblies");
+                    string value = (string)referenceAssemblies.GetValue("SLRuntimeInstallPath");
+                    if (value != null)
+                        targetFrameworkDirectories.Add("SilverlightFramework" + projectDigest.TargetFramework.Replace(".", ""), value);
+                    else
+                        log.Warn("Unable to find Silverlight framework in registry");
+
+                    RegistryKey assemblyFolderEx = root.OpenSubKey("AssemblyFoldersEx");
+                    foreach (string key in assemblyFolderEx.GetSubKeyNames())
+                    {
+                        string v = (string)assemblyFolderEx.OpenSubKey(key).GetValue(null);
+                        if (v != null)
+                        {
+                            // strip non-alphanumeric characters to make a property
+                            targetFrameworkDirectories.Add(new Regex("[^A-Za-z0-9]").Replace(key, ""), v);
+                        }
+                    }
+                }
+                catch (Exception e)
+                {
+                    log.Error("Unable to find Silverlight framework in the registry due to an exception: " + e.Message);
+                }
+
+                log.InfoFormat("Target framework directories: {0}", string.Join(",", new List<string>(targetFrameworkDirectories.Values).ToArray()));
+                TargetFrameworkDirectories = targetFrameworkDirectories;
+            }
+            return TargetFrameworkDirectories;
+        }
     }
 }

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Algorithms/NormalProjectDigestAlgorithm.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Algorithms/NormalProjectDigestAlgorithm.cs?rev=1451806&r1=1451805&r2=1451806&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Algorithms/NormalProjectDigestAlgorithm.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Algorithms/NormalProjectDigestAlgorithm.cs Sat Mar  2 01:15:42 2013
@@ -580,6 +580,10 @@ namespace NPanday.ProjectImporter.Digest
             {
                 projectDigest.OutputType = buildProperty.Value;
             }
+            else if ("SilverlightVersion".Equals(buildProperty.Name, StringComparison.OrdinalIgnoreCase))
+            {
+                projectDigest.SilverlightVersion = buildProperty.Value.Replace("$(TargetFrameworkVersion)", projectDigest.TargetFramework);
+            }
             else if ("SilverlightApplication".Equals(buildProperty.Name, StringComparison.OrdinalIgnoreCase))
             {
                 projectDigest.SilverlightApplication = bool.Parse(buildProperty.Value);
@@ -660,7 +664,7 @@ namespace NPanday.ProjectImporter.Digest
             {
                 projectDigest.TargetFrameworkIdentifier = buildProperty.Value;
             }
-            else if ("TargetFrameworkVersion".Equals(buildProperty.Name, StringComparison.OrdinalIgnoreCase))
+            else if ("TargetFrameworkVersion".Equals(buildProperty.Name, StringComparison.OrdinalIgnoreCase) && projectDigest.TargetFramework == null)
             {
                 // changed the version to the more specific version
                 string frameworkVersion = buildProperty.Value.Substring(1);

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Model/ProjectDigest.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Model/ProjectDigest.cs?rev=1451806&r1=1451805&r2=1451806&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Model/ProjectDigest.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Model/ProjectDigest.cs Sat Mar  2 01:15:42 2013
@@ -587,5 +587,13 @@ namespace NPanday.ProjectImporter.Digest
             get { return targetFrameworkIdentifier; }
             set { targetFrameworkIdentifier = value; } 
         }
+
+        private string silverlightVersion;
+        public string SilverlightVersion
+        {
+            get { return silverlightVersion; }
+            set { silverlightVersion = value; }
+        }
+
     }
 }

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/SilverlightApplication1/SilverlightApplication1/pom.test
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/SilverlightApplication1/SilverlightApplication1/pom.test?rev=1451806&r1=1451805&r2=1451806&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/SilverlightApplication1/SilverlightApplication1/pom.test (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/SilverlightApplication1/SilverlightApplication1/pom.test Sat Mar  2 01:15:42 2013
@@ -15,13 +15,6 @@
     <plugins>
       <plugin>
         <groupId>org.apache.npanday.plugins</groupId>
-        <artifactId>NPanday.Plugin.Msbuild.JavaBinding</artifactId>
-        <configuration>
-          <frameworkVersion>3.5</frameworkVersion>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.npanday.plugins</groupId>
         <artifactId>maven-compile-plugin</artifactId>
         <extensions>true</extensions>
       </plugin>
@@ -34,5 +27,24 @@
       <version>1.2.3-SNAPSHOT</version>
       <type>library</type>
     </dependency>
+    <dependency>
+      <groupId>System.Windows</groupId>
+      <artifactId>System.Windows</artifactId>
+      <version>4.0.0.0</version>
+      <type>dotnet-library</type>
+      <scope>system</scope>
+      <systemPath>${npanday.SilverlightFramework30}/System.Windows.dll</systemPath>
+    </dependency>
+    <dependency>
+      <groupId>System.Net</groupId>
+      <artifactId>System.Net</artifactId>
+      <version>3.5.0.0</version>
+      <type>dotnet-library</type>
+      <scope>system</scope>
+      <systemPath>${npanday.SilverlightFramework30}/System.Net.dll</systemPath>
+    </dependency>
   </dependencies>
+  <properties>
+    <npanday.SilverlightFramework30>C:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v3.0\</npanday.SilverlightFramework30>
+  </properties>
 </project>

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/SilverlightApplication1/SilverlightApplication2/pom.test
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/SilverlightApplication1/SilverlightApplication2/pom.test?rev=1451806&r1=1451805&r2=1451806&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/SilverlightApplication1/SilverlightApplication2/pom.test (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/SilverlightApplication1/SilverlightApplication2/pom.test Sat Mar  2 01:15:42 2013
@@ -15,16 +15,30 @@
     <plugins>
       <plugin>
         <groupId>org.apache.npanday.plugins</groupId>
-        <artifactId>NPanday.Plugin.Msbuild.JavaBinding</artifactId>
-        <configuration>
-          <frameworkVersion>3.5</frameworkVersion>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.npanday.plugins</groupId>
         <artifactId>maven-compile-plugin</artifactId>
         <extensions>true</extensions>
       </plugin>
     </plugins>
   </build>
+  <dependencies>
+    <dependency>
+      <groupId>System.Windows</groupId>
+      <artifactId>System.Windows</artifactId>
+      <version>4.0.0.0</version>
+      <type>dotnet-library</type>
+      <scope>system</scope>
+      <systemPath>${npanday.SilverlightFramework30}/System.Windows.dll</systemPath>
+    </dependency>
+    <dependency>
+      <groupId>System.Net</groupId>
+      <artifactId>System.Net</artifactId>
+      <version>3.5.0.0</version>
+      <type>dotnet-library</type>
+      <scope>system</scope>
+      <systemPath>${npanday.SilverlightFramework30}/System.Net.dll</systemPath>
+    </dependency>
+  </dependencies>
+  <properties>
+    <npanday.SilverlightFramework30>C:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v3.0\</npanday.SilverlightFramework30>
+  </properties>
 </project>

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/SilverlightApplication1/SilverlightClassLibrary1/pom.test
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/SilverlightApplication1/SilverlightClassLibrary1/pom.test?rev=1451806&r1=1451805&r2=1451806&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/SilverlightApplication1/SilverlightClassLibrary1/pom.test (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/SilverlightApplication1/SilverlightClassLibrary1/pom.test Sat Mar  2 01:15:42 2013
@@ -15,16 +15,30 @@
     <plugins>
       <plugin>
         <groupId>org.apache.npanday.plugins</groupId>
-        <artifactId>NPanday.Plugin.Msbuild.JavaBinding</artifactId>
-        <configuration>
-          <frameworkVersion>3.5</frameworkVersion>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.npanday.plugins</groupId>
         <artifactId>maven-compile-plugin</artifactId>
         <extensions>true</extensions>
       </plugin>
     </plugins>
   </build>
+  <dependencies>
+    <dependency>
+      <groupId>System.Windows</groupId>
+      <artifactId>System.Windows</artifactId>
+      <version>4.0.0.0</version>
+      <type>dotnet-library</type>
+      <scope>system</scope>
+      <systemPath>${npanday.SilverlightFramework30}/System.Windows.dll</systemPath>
+    </dependency>
+    <dependency>
+      <groupId>System.Net</groupId>
+      <artifactId>System.Net</artifactId>
+      <version>3.5.0.0</version>
+      <type>dotnet-library</type>
+      <scope>system</scope>
+      <systemPath>${npanday.SilverlightFramework30}/System.Net.dll</systemPath>
+    </dependency>
+  </dependencies>
+  <properties>
+    <npanday.SilverlightFramework30>C:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v3.0\</npanday.SilverlightFramework30>
+  </properties>
 </project>

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/SilverlightApplication5/SilverlightApplication5/pom.test
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/SilverlightApplication5/SilverlightApplication5/pom.test?rev=1451806&r1=1451805&r2=1451806&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/SilverlightApplication5/SilverlightApplication5/pom.test (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/SilverlightApplication5/SilverlightApplication5/pom.test Sat Mar  2 01:15:42 2013
@@ -15,16 +15,38 @@
     <plugins>
       <plugin>
         <groupId>org.apache.npanday.plugins</groupId>
-        <artifactId>NPanday.Plugin.Msbuild.JavaBinding</artifactId>
-        <configuration>
-          <frameworkVersion>3.5</frameworkVersion>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.npanday.plugins</groupId>
         <artifactId>maven-compile-plugin</artifactId>
         <extensions>true</extensions>
       </plugin>
     </plugins>
   </build>
+  <dependencies>
+    <dependency>
+      <groupId>mscorlib</groupId>
+      <artifactId>mscorlib</artifactId>
+      <version>2.0.0.0</version>
+      <type>dotnet-library</type>
+      <scope>system</scope>
+      <systemPath>${npanday.SilverlightFramework50}/mscorlib.dll</systemPath>
+    </dependency>
+    <dependency>
+      <groupId>System.Windows</groupId>
+      <artifactId>System.Windows</artifactId>
+      <version>4.0.0.0</version>
+      <type>dotnet-library</type>
+      <scope>system</scope>
+      <systemPath>${npanday.SilverlightFramework50}/System.Windows.dll</systemPath>
+    </dependency>
+    <dependency>
+      <groupId>System.Net</groupId>
+      <artifactId>System.Net</artifactId>
+      <version>4.0.0.0</version>
+      <type>dotnet-library</type>
+      <scope>system</scope>
+      <systemPath>${npanday.SilverlightFramework50}/System.Net.dll</systemPath>
+    </dependency>
+  </dependencies>
+  <properties>
+    <npanday.SilverlightFramework50>C:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v5.0\</npanday.SilverlightFramework50>
+  </properties>
 </project>