Skip to content

Commit

Permalink
Fix copy and paste of JSON clipboard contents (#276)
Browse files Browse the repository at this point in the history
* * intermediate save

* * copy/ paste seem to work

* * small update in AsciiDoc command
   line options to show TOC

---------

Co-authored-by: Michael Hoffmeister <michael.hoffmeister@festo.com>
  • Loading branch information
MichaelHoffmeisterFesto and festo-i40 authored Mar 10, 2025
1 parent fcc66f7 commit 9638971
Show file tree
Hide file tree
Showing 3 changed files with 710 additions and 716 deletions.
60 changes: 23 additions & 37 deletions src/AasxCsharpLibrary/AdminShellPackageEnv.cs
Original file line number Diff line number Diff line change
Expand Up @@ -199,51 +199,37 @@ public static AasCore.Aas3_0.Environment DeserializeXmlFromStreamWithCompat(Stre
// nope!
return null;
}
// dead-csharp off
//public static JsonSerializer BuildDefaultAasxJsonSerializer()
//{
// var serializer = new JsonSerializer();
// serializer.Converters.Add(
// new AdminShellConverters.JsonAasxConverter(
// "modelType", "name"));
// return serializer;
//}

public static T DeserializeFromJSON<T>(string data) where T : IReferable
{
//using (var tr = new StringReader(data))
//{
//var serializer = BuildDefaultAasxJsonSerializer();
//var rf = (T)serializer.Deserialize(tr, typeof(T));

var node = System.Text.Json.Nodes.JsonNode.Parse(data);
var rf = Jsonization.Deserialize.IReferableFrom(node);

return (T)rf;
//}
}

//public static T DeserializeFromJSON<T>(JToken obj) where T : IReferable
//{
// if (obj == null)
// return default(T);
// var serializer = BuildDefaultAasxJsonSerializer();
// var rf = obj.ToObject<T>(serializer);
// return rf;
//}

///// <summary>
///// Use this, if <c>DeserializeFromJSON</c> is too tight.
///// </summary>
//public static T DeserializePureObjectFromJSON<T>(string data)
//{
// using (var tr = new StringReader(data))
// {
// //var serializer = BuildDefaultAasxJsonSerializer();
// //var rf = (T)serializer.Deserialize(tr, typeof(T));
// return null;
// }
//}
// dead-csharp on
/// <summary>
/// Use this (new!) to deserialize flexible JSON "coming from the outside"
/// </summary>
public static T DeserializeAdaptiveFromJSON<T>(string jsonInput) where T : IClass
{
try
{
using (JsonTextReader reader = new JsonTextReader(new StringReader(jsonInput)))
{
JsonSerializer serializer = new JsonSerializer();
serializer.Converters.Add(new AdminShellConverters.AdaptiveAasIClassConverter(
AdminShellConverters.AdaptiveAasIClassConverter.ConversionMode.AasCore));
var res = serializer.Deserialize<T>(reader);
return res;
}
}
catch (Exception ex)
{
LogInternally.That.CompletelyIgnoredError(ex);
}
return default(T);
}
}

/// <summary>
Expand Down
22 changes: 15 additions & 7 deletions src/AasxPackageLogic/DispEditHelperMiniModules.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ private bool PasteQualifierTextIntoExisting(
string jsonInput,
Aas.IQualifier qCurr)
{
var qIn = JsonConvert.DeserializeObject<Aas.Qualifier>(jsonInput);
var qIn = AdminShellSerializationHelper.DeserializeAdaptiveFromJSON<Aas.Qualifier>(jsonInput);
if (qCurr != null && qIn != null)
{
qCurr.Type = qIn.Type;
Expand Down Expand Up @@ -317,8 +317,12 @@ public void QualifierHelper(
}
break;
case 3:
var jsonStr = JsonConvert.SerializeObject(
qualifiers[storedI], Formatting.Indented);
var jsonStr = Aas.Jsonization.Serialize.ToJsonObject(qualifiers[storedI])
.ToJsonString(new System.Text.Json.JsonSerializerOptions()
{
WriteIndented = true
});

this.context?.ClipboardSet(new AnyUiClipboardData(jsonStr));
Log.Singleton.Info("Qualified serialized to clipboard.");
break;
Expand Down Expand Up @@ -820,7 +824,7 @@ private bool PasteExtensionTextIntoExisting(
string jsonInput,
Aas.IExtension qCurr)
{
var qIn = JsonConvert.DeserializeObject<Aas.Extension>(jsonInput);
var qIn = AdminShellSerializationHelper.DeserializeAdaptiveFromJSON<Aas.Extension>(jsonInput);
if (qCurr != null && qIn != null)
{
qCurr.Name = qIn.Name;
Expand Down Expand Up @@ -940,7 +944,7 @@ public void ExtensionHelper(
catch (Exception ex)
{
Log.Singleton.Error(
ex, $"While show Qualifier presets ({pfn})");
ex, $"While show Extension presets ({pfn})");
}
}

Expand Down Expand Up @@ -1024,8 +1028,12 @@ public void ExtensionHelper(
}
break;
case 3:
var jsonStr = JsonConvert.SerializeObject(
extensions[storedI], Formatting.Indented);
var jsonStr = Aas.Jsonization.Serialize.ToJsonObject(extensions[storedI])
.ToJsonString(new System.Text.Json.JsonSerializerOptions()
{
WriteIndented = true
});

this.context?.ClipboardSet(new AnyUiClipboardData(jsonStr));
Log.Singleton.Info("Extension serialized to clipboard.");
break;
Expand Down
Loading

0 comments on commit 9638971

Please sign in to comment.