Author: apadilla
Date: Thu Jan 6 09:54:01 2011
New Revision: 1055807
URL: http://svn.apache.org/viewvc?rev=1055807&view=rev
Log:
[NPANDAY-239]
- revised writing of remote repository to settings.xml
- adding a maven repository will not strip off comments in settings.xml
Modified:
incubator/npanday/trunk/dotnet/assemblies/NPanday.Model.Settings/src/main/csharp/SettingsUtil.cs
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/AddArtifactsForm.cs
Modified:
incubator/npanday/trunk/dotnet/assemblies/NPanday.Model.Settings/src/main/csharp/SettingsUtil.cs
URL:
http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.Model.Settings/src/main/csharp/SettingsUtil.cs?rev=1055807&r1=1055806&r2=1055807&view=diff
==============================================================================
---
incubator/npanday/trunk/dotnet/assemblies/NPanday.Model.Settings/src/main/csharp/SettingsUtil.cs
(original)
+++
incubator/npanday/trunk/dotnet/assemblies/NPanday.Model.Settings/src/main/csharp/SettingsUtil.cs
Thu Jan 6 09:54:01 2011
@@ -49,6 +49,8 @@ namespace NPanday.Model.Setting
public static class SettingsUtil
{
+ public static string defaultProfileID = "NPanday.id";
+
#region GetDefaultSettingsPath()
/// <summary>
/// Gets the default settings path.
@@ -229,13 +231,92 @@ namespace NPanday.Model.Setting
/// <param name="path">The settings path</param>
public static void WriteSettings(Settings settings, string path)
{
- XmlSerializer serializer = new XmlSerializer(typeof(Settings));
- TextWriter writer = new StreamWriter(path);
- serializer.Serialize(writer, settings);
- writer.Close();
+ // read original settings.xml
+ XmlDocument settingsXmlDoc = new XmlDocument();
+ settingsXmlDoc.Load(path);
+
+ Profile profile = GetProfile(settings, defaultProfileID);
+ //convert NPanday Profile to XmlNode
+ XmlNode newProfileNode = new XmlDocument();
+ ((XmlDocument)
newProfileNode).LoadXml(SerializeProfileToXml(profile));
+
+ newProfileNode = newProfileNode.SelectSingleNode("//profile[id='"
+ defaultProfileID + "']");
+ XmlNode importedNewProfileNode =
settingsXmlDoc.ImportNode(newProfileNode, true);
+
+ // search for npanday profile in settings.xml
+ XmlNode oldProfileNode =
settingsXmlDoc.SelectSingleNode("//profiles/profile[id='" + defaultProfileID +
"']");
+ if (oldProfileNode != null)
+ {
+ oldProfileNode.ParentNode.ReplaceChild(importedNewProfileNode,
oldProfileNode);
+ }
+ else
+ {
+ XmlNode profilesNode =
settingsXmlDoc.SelectSingleNode("//profiles");
+ if (profilesNode == null)
+ {
+ // create profiles
+ profilesNode = settingsXmlDoc.CreateElement("",
"profiles", "");
+ settingsXmlDoc.DocumentElement.AppendChild(profilesNode);
+ }
+
+ profilesNode.AppendChild(importedNewProfileNode);
+ }
+
+ bool createActiveProfile = false;
+ XmlNode activeProfileNode;
+
+ // search for activeProfiles in settings.xml
+ XmlNode activeProfilesNode =
settingsXmlDoc.SelectSingleNode("//activeProfiles");
+ if (activeProfilesNode == null)
+ {
+ activeProfilesNode = settingsXmlDoc.CreateElement("",
"activeProfiles", "");
+ settingsXmlDoc.DocumentElement.AppendChild(activeProfilesNode);
+ createActiveProfile = true;
+ }
+ else
+ {
+ activeProfileNode =
settingsXmlDoc.SelectSingleNode("//activeProfiles/activeProfile[.='" +
defaultProfileID + "']");
+ if (activeProfileNode == null)
+ {
+ createActiveProfile = true;
+ }
+ }
+
+ // add NPanday.id to <activeProfiles>
+ if (createActiveProfile)
+ {
+ activeProfileNode = settingsXmlDoc.CreateElement("",
"activeProfile", "");
+ activeProfileNode.InnerText = defaultProfileID;
+ activeProfilesNode.AppendChild(activeProfileNode);
+ }
+
+ settingsXmlDoc.Save(path);
}
#endregion
+
+ private static string SerializeProfileToXml(Profile profile)
+ {
+ XmlRootAttribute profileRoot = new XmlRootAttribute("profile");
+
+ XmlAttributes attributes = new XmlAttributes();
+ attributes.XmlRoot = profileRoot;
+
+ XmlAttributeOverrides overrides = new XmlAttributeOverrides();
+ overrides.Add(profile.GetType(), attributes);
+
+ XmlSerializerNamespaces xmlnsEmpty = new XmlSerializerNamespaces();
+ xmlnsEmpty.Add("", "");
+
+ XmlSerializer xs = new XmlSerializer(profile.GetType(), overrides);
+ StringWriter xout = new StringWriter();
+ xs.Serialize(xout, profile, xmlnsEmpty);
+ String SerializedProfile = xout.ToString();
+ xout.Close();
+
+ return SerializedProfile;
+ }
+
#region AddActiveProfile(Settings, string)
/// <summary>
/// Add a profile as active
@@ -487,4 +568,3 @@ namespace NPanday.Model.Setting
#endregion
}
-
Modified:
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/AddArtifactsForm.cs
URL:
http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/AddArtifactsForm.cs?rev=1055807&r1=1055806&r2=1055807&view=diff
==============================================================================
---
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/AddArtifactsForm.cs
(original)
+++
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/AddArtifactsForm.cs
Thu Jan 6 09:54:01 2011
@@ -59,7 +59,6 @@ namespace NPanday.VisualStudio.Addin
private string settingsPath;
private Settings settings;
- private string defaultProfileID = "NPanday.id";
private NPanday.Model.Setting.Profile defaultProfile;
private NPanday.Model.Setting.Repository selectedRepo;
private string prevSelectedRepoUrl = string.Empty;
@@ -612,14 +611,14 @@ namespace NPanday.VisualStudio.Addin
if (defaultProfile == null)
{
defaultProfile = new NPanday.Model.Setting.Profile();
- defaultProfile.id = defaultProfileID;
+ defaultProfile.id = SettingsUtil.defaultProfileID; ;
}
// add repository to profile
selectedRepo =
SettingsUtil.AddRepositoryToProfile(defaultProfile, selectedUrl,
checkBoxRelease.Checked, checkBoxSnapshot.Checked, settings);
// make NPanday.id profile active
- SettingsUtil.AddActiveProfile(settings, defaultProfileID);
+ SettingsUtil.AddActiveProfile(settings,
SettingsUtil.defaultProfileID);
// write to Settings.xml
SettingsUtil.WriteSettings(settings, settingsPath);
@@ -928,7 +927,7 @@ namespace NPanday.VisualStudio.Addin
loadSettings();
}
- return SettingsUtil.GetProfile(settings, defaultProfileID);
+ return SettingsUtil.GetProfile(settings,
SettingsUtil.defaultProfileID);
}
private NPanday.Model.Setting.Repository getRepository(string url)