You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by md...@apache.org on 2017/05/24 13:11:58 UTC
syncope git commit: [SYNCOPE-1095] Provide preview for json and xml
binary field
Repository: syncope
Updated Branches:
refs/heads/2_0_X 8d6dc235c -> 632c5c606
[SYNCOPE-1095] Provide preview for json and xml binary field
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/632c5c60
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/632c5c60
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/632c5c60
Branch: refs/heads/2_0_X
Commit: 632c5c60652dd954ee3beb7d3e64b4f8f53d05e2
Parents: 8d6dc23
Author: Marco Di Sabatino Di Diodoro <ma...@tirasa.net>
Authored: Wed May 24 15:11:36 2017 +0200
Committer: Marco Di Sabatino Di Diodoro <ma...@tirasa.net>
Committed: Wed May 24 15:11:36 2017 +0200
----------------------------------------------------------------------
.../markup/html/form/BinaryFieldPanel.java | 8 +-
.../html/form/preview/BinaryTextPreviewer.java | 95 ++++++++++++++++++++
.../html/form/preview/BinaryTextPreviewer.html | 52 +++++++++++
3 files changed, 151 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/632c5c60/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java
index cc34be5..c5504f5 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java
@@ -61,6 +61,8 @@ import org.apache.wicket.util.lang.Bytes;
public class BinaryFieldPanel extends FieldPanel<String> {
private static final long serialVersionUID = 6264462604183088931L;
+
+ private static final PreviewUtils PREVIEW_UTILS = PreviewUtils.getInstance();
private final String mimeType;
@@ -74,15 +76,13 @@ public class BinaryFieldPanel extends FieldPanel<String> {
private final BootstrapFileInputField fileUpload;
- private final transient PreviewUtils previewUtils = PreviewUtils.getInstance();
-
private final AbstractBinaryPreviewer previewer;
public BinaryFieldPanel(final String id, final String name, final IModel<String> model, final String mimeType) {
super(id, name, model);
this.mimeType = mimeType;
- previewer = previewUtils.getPreviewer(mimeType);
+ previewer = PREVIEW_UTILS.getPreviewer(mimeType);
uploadForm = new StatelessForm<>("uploadForm");
uploadForm.setMultiPart(true);
@@ -227,7 +227,7 @@ public class BinaryFieldPanel extends FieldPanel<String> {
if (StringUtils.isNotBlank(model.getObject())) {
final Component panelPreview;
if (previewer == null) {
- panelPreview = previewUtils.getDefaultPreviewer(mimeType);
+ panelPreview = PREVIEW_UTILS.getDefaultPreviewer(mimeType);
} else {
panelPreview = previewer.preview(model.getObject());
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/632c5c60/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/preview/BinaryTextPreviewer.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..c3685d1
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/preview/BinaryTextPreviewer.java
@@ -0,0 +1,95 @@
+/*
+ * 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.
+ */
+package org.apache.syncope.client.console.wicket.markup.html.form.preview;
+
+import static org.apache.syncope.client.console.wicket.markup.html.form.preview.AbstractBinaryPreviewer.LOG;
+
+import java.io.ByteArrayInputStream;
+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.wicket.Component;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.OnLoadHeaderItem;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.TextArea;
+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" })
+public class BinaryTextPreviewer extends AbstractBinaryPreviewer {
+
+ private static final long serialVersionUID = 3808379310090668773L;
+
+ public BinaryTextPreviewer(final String id, final String mimeType) {
+ super(id, mimeType);
+ }
+
+ @Override
+ public Component preview(final byte[] uploadedBytes) {
+
+ Fragment fragment = new Fragment("preview", "noPreviewFragment", this);
+ if (uploadedBytes.length > 0) {
+ try {
+ fragment = new Fragment("preview", "previewFragment", this);
+ InputStream stream = new ByteArrayInputStream(uploadedBytes);
+ TextArea<String> jsonEditor =
+ new TextArea<>("jsonEditorInfo", new Model<>(IOUtils.toString(stream)));
+ jsonEditor.setMarkupId("jsonEditorInfo").setOutputMarkupPlaceholderTag(true);
+ fragment.add(jsonEditor);
+ } catch (IOException e) {
+ LOG.error("Error evaluating text file", e);
+ }
+ }
+
+ WebMarkupContainer previewContainer = new WebMarkupContainer("previewContainer");
+ previewContainer.setOutputMarkupId(true);
+ previewContainer.add(fragment);
+
+ return this.addOrReplace(previewContainer);
+ }
+
+ @Override
+ public void renderHead(final IHeaderResponse response) {
+ super.renderHead(response);
+ String options;
+ switch (mimeType) {
+ case MediaType.APPLICATION_JSON:
+ options = "matchBrackets: true, autoCloseBrackets: true,";
+ break;
+ case MediaType.APPLICATION_XML:
+ options = "autoCloseTags: true, mode: 'text/html',";
+ break;
+ default:
+ options = "mode: 'text/html',";
+ }
+
+ response.render(OnLoadHeaderItem.forScript(
+ "var editor = CodeMirror.fromTextArea(document.getElementById('jsonEditorInfo'), {"
+ + " readOnly: true, "
+ + " lineNumbers: true, "
+ + " lineWrapping: true, "
+ + options
+ + " autoRefresh: true"
+ + "});"
+ + "editor.setSize('100%', 100)"));
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/632c5c60/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/preview/BinaryTextPreviewer.html
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..63e71c7
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/preview/BinaryTextPreviewer.html
@@ -0,0 +1,52 @@
+<!--
+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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <wicket:head>
+ <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}/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>
+ <script type="text/javascript" src="webjars/codemirror/${codemirror.version}/addon/edit/matchbrackets.js"></script>
+ <script type="text/javascript" src="webjars/codemirror/${codemirror.version}/addon/edit/closebrackets.js"></script>
+ <style>
+ .w_content_3 {
+ padding: 0;
+ color: #333333;
+ font-family: Verdana,Tahoma,sans-serif;
+ font-size: 100%;
+ border: 1px solid #BBBBBB;
+ padding: 1%;
+ }
+ </style>
+ </wicket:head>
+ <wicket:extend>
+ <div wicket:id="previewContainer">
+ <span wicket:id="preview"/>
+ </div>
+ <wicket:fragment wicket:id="previewFragment">
+ <div>
+ <textarea wicket:id="jsonEditorInfo" id="consoleLayoutInfo" name="jsonEditorInfo" style="width: 100%; height: 100px;"></textarea>
+ </div>
+ </wicket:fragment>
+ <wicket:fragment wicket:id="noPreviewFragment">
+ </wicket:fragment>
+ </wicket:extend>
+</html>