Author: brett
Date: Mon May 6 13:42:27 2013
New Revision: 1479568
URL: http://svn.apache.org/r1479568
Log:
[NPANDAY-254] add MSBuild when adding resources as items
Refactor out common code from the digester and reuse it from the addin
Added:
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Utils/
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Utils/LogOnlyBuildEngine.cs
- copied, changed from r1479480,
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Algorithms/DigestingBuildEngine.cs
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Utils/MSBuildUtils.cs
Removed:
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Algorithms/DigestingBuildEngine.cs
Modified:
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/NPanday.ProjectImporterEngine.csproj
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/Connect.cs
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=1479568&r1=1479567&r2=1479568&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
Mon May 6 13:42:27 2013
@@ -31,6 +31,7 @@ using NPanday.Utils;
using System.Text.RegularExpressions;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
+using NPanday.ProjectImporter.Utils;
/// Author: Leopoldo Lee Agdeppa III
@@ -454,13 +455,7 @@ namespace NPanday.ProjectImporter.Digest
embeddedResource.WithCulture =
buildItem.GetMetadata("WithCulture");
if
(string.IsNullOrEmpty(embeddedResource.WithCulture))
{
- Microsoft.Build.Tasks.AssignCulture task =
new Microsoft.Build.Tasks.AssignCulture();
- task.Files = new TaskItem[]{
- new TaskItem(buildItem.Include)
- };
- task.BuildEngine = new
DigestingBuildEngine();
- bool result = task.Execute();
- embeddedResource.WithCulture =
task.AssignedFiles[0].GetMetadata("Culture");
+ embeddedResource.WithCulture =
MSBuildUtils.DetermineResourceCulture(buildItem.Include);
}
embeddedResources.Add(embeddedResource);
Modified:
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday.ProjectImporterEngine.csproj
URL:
http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday.ProjectImporterEngine.csproj?rev=1479568&r1=1479567&r2=1479568&view=diff
==============================================================================
---
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday.ProjectImporterEngine.csproj
(original)
+++
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday.ProjectImporterEngine.csproj
Mon May 6 13:42:27 2013
@@ -64,7 +64,7 @@
<Compile
Include="Converter\Algorithms\WebWithVbOrCsProjectFilePomConverter.cs" />
<Compile Include="DependencySearchConfiguration.cs" />
<Compile Include="Digest\Algorithms\BaseProjectDigestAlgorithm.cs" />
- <Compile Include="Digest\Algorithms\DigestingBuildEngine.cs" />
+ <Compile Include="Utils\LogOnlyBuildEngine.cs" />
<Compile Include="Digest\Model\ComReference.cs" />
<Compile Include="Digest\Model\SilverlightApplicationReference.cs" />
<Compile Include="ImportProjectStructureAlgorithms\AbnormalProject.cs" />
@@ -110,6 +110,7 @@
<Compile Include="Parser\SlnParser\SemanticalData.cs" />
<Compile Include="Parser\SlnParser\Semantics.cs" />
<Compile Include="Parser\SlnParser\SolutionFactory.cs" />
+ <Compile Include="Utils\MSBuildUtils.cs" />
<Compile Include="Validator\ProjectStructureType.cs" />
<Compile Include="Validator\ProjectValidator.cs" />
<Compile Include="Verifiers\VerifyProjectImportSyncronization.cs" />
Copied:
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Utils/LogOnlyBuildEngine.cs
(from r1479480,
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Algorithms/DigestingBuildEngine.cs)
URL:
http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Utils/LogOnlyBuildEngine.cs?p2=incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Utils/LogOnlyBuildEngine.cs&p1=incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Algorithms/DigestingBuildEngine.cs&r1=1479480&r2=1479568&rev=1479568&view=diff
==============================================================================
---
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Algorithms/DigestingBuildEngine.cs
(original)
+++
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Utils/LogOnlyBuildEngine.cs
Mon May 6 13:42:27 2013
@@ -1,5 +1,4 @@
-using System;
-#region Apache License, Version 2.0
+#region Apache License, Version 2.0
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
@@ -19,17 +18,18 @@
// under the License.
//
#endregion
+using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Build.Framework;
using System.Collections;
using log4net;
-namespace NPanday.ProjectImporter.Digest.Algorithms
+namespace NPanday.ProjectImporter.Utils
{
- class DigestingBuildEngine : IBuildEngine
+ class LogOnlyBuildEngine : IBuildEngine
{
- private static readonly ILog log =
LogManager.GetLogger(typeof(NormalProjectDigestAlgorithm));
+ private static readonly ILog log =
LogManager.GetLogger(typeof(LogOnlyBuildEngine));
public int ColumnNumberOfTaskNode { get { throw new
NotImplementedException(); } }
public int LineNumberOfTaskNode { get { throw new
NotImplementedException(); } }
Added:
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Utils/MSBuildUtils.cs
URL:
http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Utils/MSBuildUtils.cs?rev=1479568&view=auto
==============================================================================
---
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Utils/MSBuildUtils.cs
(added)
+++
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Utils/MSBuildUtils.cs
Mon May 6 13:42:27 2013
@@ -0,0 +1,40 @@
+#region Apache License, Version 2.0
+//
+// 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.
+//
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Microsoft.Build.Utilities;
+
+namespace NPanday.ProjectImporter.Utils
+{
+ public class MSBuildUtils
+ {
+ public static string DetermineResourceCulture(string name)
+ {
+ Microsoft.Build.Tasks.AssignCulture task = new
Microsoft.Build.Tasks.AssignCulture();
+ task.Files = new TaskItem[] { new TaskItem(name) };
+ task.BuildEngine = new LogOnlyBuildEngine();
+ bool result = task.Execute();
+ return task.AssignedFiles[0].GetMetadata("Culture");
+ }
+ }
+}
Modified:
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/Connect.cs
URL:
http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/Connect.cs?rev=1479568&r1=1479567&r2=1479568&view=diff
==============================================================================
---
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/Connect.cs
(original)
+++
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/Connect.cs
Mon May 6 13:42:27 2013
@@ -48,6 +48,7 @@ using NPanday.VisualStudio.Addin.Command
using NPanday.VisualStudio.Addin.Helper;
using VSLangProj;
using VSLangProj80;
+using NPanday.ProjectImporter.Utils;
#endregion
@@ -130,6 +131,8 @@ namespace NPanday.VisualStudio.Addin
{
string resxName = projectItem.ContainingProject.Name + "."
+ projectItem.Name.Replace(".resx", "");
+ log.DebugFormat("Adding resource {0}", resxName);
+
//check if resx plugin already exists
if (!pomUtil.HasPlugin("org.apache.npanday.plugins",
"maven-resgen-plugin"))
{
@@ -167,6 +170,16 @@ namespace NPanday.VisualStudio.Addin
{
pomUtil.AddMavenResxPluginConfiguration("org.apache.npanday.plugins",
"maven-resgen-plugin", "embeddedResources", "embeddedResource",
projectItem.Name, resxName);
}
+
+ string culture =
MSBuildUtils.DetermineResourceCulture(projectItem.Name);
+ if (!string.IsNullOrEmpty(culture))
+ {
+ log.DebugFormat("Resource has culture {0}, adding
MSBuild plugin to POM", culture);
+ if (!pomUtil.HasPlugin("org.apache.npanday.plugins",
"NPanday.Plugin.Msbuild.JavaBinding"))
+ {
+ pomUtil.AddPlugin("org.apache.npanday.plugins",
"NPanday.Plugin.Msbuild.JavaBinding", null, false, null, "compile");
+ }
+ }
}
}
}