You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2021/05/20 04:36:57 UTC

[syncope] branch 2_1_X updated: Supporting YAML in BinaryTextPreviewer

This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch 2_1_X
in repository https://gitbox.apache.org/repos/asf/syncope.git


The following commit(s) were added to refs/heads/2_1_X by this push:
     new d051420  Supporting YAML in BinaryTextPreviewer
d051420 is described below

commit d0514202ed96d1970aee2b107f0d3087b7758026
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Thu May 20 06:32:30 2021 +0200

    Supporting YAML in BinaryTextPreviewer
---
 .../html/form/preview/BinaryTextPreviewer.java     | 28 +++++++++++++++-------
 client/console/src/main/resources/MIMETypes.json   |  3 +++
 .../html/form/preview/BinaryTextPreviewer.html     |  5 ++--
 3 files changed, 25 insertions(+), 11 deletions(-)

diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/preview/BinaryTextPreviewer.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/preview/BinaryTextPreviewer.java
index 33558d1..b37bd59 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/preview/BinaryTextPreviewer.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/preview/BinaryTextPreviewer.java
@@ -23,6 +23,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import javax.ws.rs.core.MediaType;
 import org.apache.syncope.client.console.annotations.BinaryPreview;
+import org.apache.syncope.common.rest.api.RESTHeaders;
 import org.apache.wicket.Component;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.OnLoadHeaderItem;
@@ -32,12 +33,13 @@ import org.apache.wicket.markup.html.panel.Fragment;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.util.io.IOUtils;
 
-@BinaryPreview(mimeTypes = { "application/json", "application/xml" })
+@BinaryPreview(mimeTypes = { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML,
+    RESTHeaders.APPLICATION_YAML, "application/x-yaml", "text/x-yaml", "text/yaml" })
 public class BinaryTextPreviewer extends AbstractBinaryPreviewer {
 
     private static final long serialVersionUID = 3808379310090668773L;
 
-    private String jsonEditorInfoId;
+    private String previewerId;
 
     public BinaryTextPreviewer(final String id, final String mimeType) {
         super(id, mimeType);
@@ -51,11 +53,10 @@ public class BinaryTextPreviewer extends AbstractBinaryPreviewer {
             try {
                 fragment = new Fragment("preview", "previewFragment", this);
                 InputStream stream = new ByteArrayInputStream(uploadedBytes);
-                TextArea<String> jsonEditor =
-                        new TextArea<>("jsonEditorInfo", new Model<>(IOUtils.toString(stream)));
-                jsonEditor.setOutputMarkupPlaceholderTag(true);
-                jsonEditorInfoId = jsonEditor.getMarkupId();
-                fragment.add(jsonEditor);
+                TextArea<String> previewer = new TextArea<>("previewer", Model.of(IOUtils.toString(stream)));
+                previewer.setOutputMarkupPlaceholderTag(true);
+                previewerId = previewer.getMarkupId();
+                fragment.add(previewer);
             } catch (IOException e) {
                 LOG.error("Error evaluating text file", e);
             }
@@ -76,21 +77,30 @@ public class BinaryTextPreviewer extends AbstractBinaryPreviewer {
             case MediaType.APPLICATION_JSON:
                 options = "matchBrackets: true, autoCloseBrackets: true,";
                 break;
+
             case MediaType.APPLICATION_XML:
                 options = "autoCloseTags: true, mode: 'text/html',";
                 break;
+
+            case RESTHeaders.APPLICATION_YAML:
+            case "application/x-yaml":
+            case "text/x-yaml":
+            case "text/yaml":
+                options = "mode: 'yaml',";
+                break;
+
             default:
                 options = "mode: 'text/html',";
         }
 
         response.render(OnLoadHeaderItem.forScript(
-                "var editor = CodeMirror.fromTextArea(document.getElementById('" + jsonEditorInfoId + "'), {"
+                "var editor = CodeMirror.fromTextArea(document.getElementById('" + previewerId + "'), {"
                 + "  readOnly: true, "
                 + "  lineNumbers: true, "
                 + "  lineWrapping: false, "
                 + options
                 + "  autoRefresh: true"
                 + "});"
-                + "editor.setSize('500', 100)"));
+                + "editor.setSize('900', 250)"));
     }
 }
diff --git a/client/console/src/main/resources/MIMETypes.json b/client/console/src/main/resources/MIMETypes.json
index b49ceca..f49a5a1 100644
--- a/client/console/src/main/resources/MIMETypes.json
+++ b/client/console/src/main/resources/MIMETypes.json
@@ -691,6 +691,9 @@
     "name": "application/x-zip-compressed"
   },
   {
+    "name": "application/yaml"
+  },
+  {
     "name": "application/zip"
   },
   {
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/preview/BinaryTextPreviewer.html b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/preview/BinaryTextPreviewer.html
index aa730cf..0a75022 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/preview/BinaryTextPreviewer.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/preview/BinaryTextPreviewer.html
@@ -21,6 +21,7 @@ under the License.
     <link rel="stylesheet" type="text/css" href="webjars/codemirror/${codemirror.version}/lib/codemirror.css"/>
     <script type="text/javascript" src="webjars/codemirror/${codemirror.version}/lib/codemirror.js"></script>
     <script type="text/javascript" src="webjars/codemirror/${codemirror.version}/mode/javascript/javascript.js"></script>
+    <script type="text/javascript" src="webjars/codemirror/${codemirror.version}/mode/yaml/yaml.js"></script>
     <script type="text/javascript" src="webjars/codemirror/${codemirror.version}/addon/display/autorefresh.js"></script>
     <script type="text/javascript" src="webjars/codemirror/${codemirror.version}/addon/search/search.js"></script>
     <script type="text/javascript" src="webjars/codemirror/${codemirror.version}/addon/search/searchcursor.js"></script>
@@ -41,8 +42,8 @@ under the License.
       <span wicket:id="preview"/>
     </div>
     <wicket:fragment wicket:id="previewFragment">
-      <div style="w_content_3">
-        <textarea wicket:id="jsonEditorInfo" name="jsonEditorInfo" ></textarea>
+      <div class="w_content_3">
+        <textarea wicket:id="previewer" name="previewer"></textarea>
       </div>
     </wicket:fragment>
     <wicket:fragment wicket:id="noPreviewFragment">