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>