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"); + } + } } } }