Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono-addins.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Ungureanu <marius.ungureanu@xamarin.com>2020-02-27 20:39:50 +0300
committerGitHub <noreply@github.com>2020-02-27 20:39:50 +0300
commitd1eb43e66b470fa6afc8823a26dbdef815f4fd2a (patch)
tree860a55f767d0206c499b21af566efb11263d34fb
parentd830c2cc53cba9c2b315f57d9696e1b81d22fed8 (diff)
parentbfd44078ecbb7dbf7a88bf3c48cce1023c1f9dfa (diff)
Merge pull request #153 from mono/loc-scanner-fixes
Fix serialization of addin localizer
-rw-r--r--Mono.Addins/Mono.Addins.Database/AddinScanner.cs4
-rw-r--r--Mono.Addins/Mono.Addins.Description/ExtensionNodeDescription.cs48
-rw-r--r--Test/UnitTests/TestAddinDescription.cs12
3 files changed, 37 insertions, 27 deletions
diff --git a/Mono.Addins/Mono.Addins.Database/AddinScanner.cs b/Mono.Addins/Mono.Addins.Database/AddinScanner.cs
index 6defcbb..dcc5f9e 100644
--- a/Mono.Addins/Mono.Addins.Database/AddinScanner.cs
+++ b/Mono.Addins/Mono.Addins.Database/AddinScanner.cs
@@ -660,7 +660,7 @@ namespace Mono.Addins.Database
AddinLocalizerGettextAttribute locat = (AddinLocalizerGettextAttribute) reflector.GetCustomAttribute (asm, typeof(AddinLocalizerGettextAttribute), false);
if (locat != null) {
- ExtensionNodeDescription node = new ExtensionNodeDescription ();
+ ExtensionNodeDescription node = new ExtensionNodeDescription ("Localizer");
node.SetAttribute ("type", "Gettext");
if (!string.IsNullOrEmpty (locat.Catalog))
node.SetAttribute ("catalog", locat.Catalog);
@@ -671,7 +671,7 @@ namespace Mono.Addins.Database
var customLocat = (AddinLocalizerAttribute) reflector.GetCustomAttribute (asm, typeof(AddinLocalizerAttribute), false);
if (customLocat != null) {
- var node = new ExtensionNodeDescription ();
+ var node = new ExtensionNodeDescription ("Localizer");
node.SetAttribute ("type", customLocat.TypeName);
config.Localizer = node;
}
diff --git a/Mono.Addins/Mono.Addins.Description/ExtensionNodeDescription.cs b/Mono.Addins/Mono.Addins.Description/ExtensionNodeDescription.cs
index 7274c58..3435635 100644
--- a/Mono.Addins/Mono.Addins.Description/ExtensionNodeDescription.cs
+++ b/Mono.Addins/Mono.Addins.Description/ExtensionNodeDescription.cs
@@ -196,15 +196,14 @@ namespace Mono.Addins.Description
internal override void SaveXml (XmlElement parent)
{
- if (Element == null) {
- Element = parent.OwnerDocument.CreateElement (nodeName);
- parent.AppendChild (Element);
- if (attributes != null) {
- for (int n=0; n<attributes.Length; n+=2)
- Element.SetAttribute (attributes[n], attributes[n+1]);
- }
- ChildNodes.SaveXml (Element);
+ CreateElement (parent, nodeName);
+
+ if (attributes != null) {
+ for (int n = 0; n < attributes.Length; n += 2)
+ Element.SetAttribute (attributes [n], attributes [n + 1]);
}
+
+ ChildNodes.SaveXml (Element);
}
/// <summary>
@@ -304,15 +303,14 @@ namespace Mono.Addins.Description
/// </value>
public NodeAttribute[] Attributes {
get {
- if (Element != null)
- SaveXmlAttributes ();
- if (attributes == null)
+ string [] result = SaveXmlAttributes ();
+ if (result == null || result.Length == 0)
return new NodeAttribute [0];
- NodeAttribute[] ats = new NodeAttribute [attributes.Length / 2];
+ NodeAttribute[] ats = new NodeAttribute [result.Length / 2];
for (int n=0; n<ats.Length; n++) {
NodeAttribute at = new NodeAttribute ();
- at.name = attributes [n*2];
- at.value = attributes [n*2 + 1];
+ at.name = result [n*2];
+ at.value = result [n*2 + 1];
ats [n] = at;
}
return ats;
@@ -344,23 +342,25 @@ namespace Mono.Addins.Description
get { return ChildNodes; }
}
- void SaveXmlAttributes ()
+ string[] SaveXmlAttributes ()
{
- attributes = new string [Element.Attributes.Count * 2];
- for (int n=0; n<attributes.Length; n+=2) {
- XmlAttribute at = Element.Attributes [n/2];
- attributes [n] = at.LocalName;
- attributes [n+1] = at.Value;
+ if (Element != null) {
+ var result = new string [Element.Attributes.Count * 2];
+ for (int n = 0; n < result.Length; n += 2) {
+ XmlAttribute at = Element.Attributes [n / 2];
+ result [n] = at.LocalName;
+ result [n + 1] = at.Value;
+ }
+ return result;
}
+
+ return attributes;
}
internal override void Write (BinaryXmlWriter writer)
{
- if (Element != null)
- SaveXmlAttributes ();
-
writer.WriteValue ("nodeName", nodeName);
- writer.WriteValue ("attributes", attributes);
+ writer.WriteValue ("attributes", SaveXmlAttributes ());
writer.WriteValue ("ChildNodes", ChildNodes);
}
diff --git a/Test/UnitTests/TestAddinDescription.cs b/Test/UnitTests/TestAddinDescription.cs
index 4da2fa9..02a0bc4 100644
--- a/Test/UnitTests/TestAddinDescription.cs
+++ b/Test/UnitTests/TestAddinDescription.cs
@@ -124,7 +124,17 @@ namespace UnitTests
System.Threading.Thread.CurrentThread.CurrentCulture = oldc;
}
-
+
+ [TestCase ("SimpleApp.SystemInfoExtension", "StringResource", "")]
+ public void LocalizerProperties (string addinId, string expectedType, string expectedAssembly)
+ {
+ Addin ad = AddinManager.Registry.GetAddin (addinId);
+ ExtensionNodeDescription localizer = ad.Description.Localizer;
+
+ Assert.AreEqual (expectedType, localizer.GetAttribute ("type"));
+ Assert.AreEqual (expectedAssembly, localizer.GetAttribute ("assembly"));
+ }
+
AddinDescription DescFromResource (string res)
{
using (Stream s = GetType().Assembly.GetManifestResourceStream (res)) {