From 1e66ccf45c723c6e076285f030202f320c2dfd90 Mon Sep 17 00:00:00 2001
From: Ludovic Poitou <ludovic.poitou@forgerock.com>
Date: Thu, 12 Jan 2012 14:06:50 +0000
Subject: [PATCH] Fix OPENDJ-400.
---
opends/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java | 66 +++++++++++++++++++++++++--------
opends/src/guitools/org/opends/guitools/controlpanel/ui/LDIFViewEntryPanel.java | 31 +++++++++++++--
2 files changed, 77 insertions(+), 20 deletions(-)
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/LDIFViewEntryPanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/LDIFViewEntryPanel.java
index 0867c5f..30812b0 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/LDIFViewEntryPanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/LDIFViewEntryPanel.java
@@ -23,6 +23,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
+ * Portions Copyright 2012 ForgeRock AS
*/
package org.opends.guitools.controlpanel.ui;
@@ -52,6 +53,7 @@
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.OpenDsException;
import org.opends.server.util.Base64;
+import org.opends.server.util.StaticUtils;
import org.opends.server.util.LDIFReader;
/**
@@ -80,6 +82,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public Component getPreferredFocusComponent()
{
return editableAttributes;
@@ -107,16 +110,19 @@
editableAttributes = Utilities.createTextArea(Message.EMPTY, 20, 30);
editableAttributes.getDocument().addDocumentListener(new DocumentListener()
{
+ @Override
public void insertUpdate(DocumentEvent ev)
{
notifyListeners();
}
+ @Override
public void changedUpdate(DocumentEvent ev)
{
notifyListeners();
}
+ @Override
public void removeUpdate(DocumentEvent ev)
{
notifyListeners();
@@ -149,6 +155,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public void update(CustomSearchResult sr, boolean isReadOnly, TreePath path)
{
boolean sameEntry = false;
@@ -167,7 +174,7 @@
StringBuilder sb = new StringBuilder();
- sb.append("dn: "+sr.getDN());
+ sb.append("dn: ").append(sr.getDN());
if (isReadOnly)
{
@@ -177,7 +184,7 @@
List<Object> values = sr.getAttributeValues(attrName);
for (Object o : values)
{
- sb.append("\n"+ getLDIFLine(attrName, o));
+ sb.append("\n").append(getLDIFLine(attrName, o));
}
}
final Point p1 = sameEntry ?
@@ -188,6 +195,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public void run()
{
if ((p1 != null) && (readOnlyScroll.getViewport().contains(p1)))
@@ -208,7 +216,7 @@
List<Object> values = sr.getAttributeValues(attrName);
for (Object o : values)
{
- sb.append("\n"+ getLDIFLine(attrName, o));
+ sb.append("\n").append(getLDIFLine(attrName, o));
}
}
}
@@ -223,6 +231,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public void run()
{
if ((p1 != null) && (editableScroll.getViewport().contains(p1)))
@@ -255,6 +264,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public void run()
{
if ((p2 != null) && (readOnlyScroll.getViewport().contains(p2)))
@@ -269,6 +279,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public GenericDialog.ButtonType getButtonType()
{
return GenericDialog.ButtonType.NO_BUTTON;
@@ -278,6 +289,7 @@
/**
* {@inheritDoc}
*/
+ @Override
protected String getDisplayedDN()
{
String dn = null;
@@ -298,6 +310,7 @@
/**
* {@inheritDoc}
*/
+ @Override
protected List<Object> getValues(String attrName)
{
throw new IllegalStateException("This method should not be called.");
@@ -306,6 +319,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public Entry getEntry() throws OpenDsException
{
Entry entry = null;
@@ -358,7 +372,16 @@
String attrValue;
if (o instanceof String)
{
- attrValue = (String)o;
+ //
+ if (Utilities.hasControlCharaters((String)o))
+ {
+ attrValue = Base64.encode(StaticUtils.getBytes((String)o));
+ attrName = attrName+":";
+ }
+ else
+ {
+ attrValue = (String)o;
+ }
}
else if (o instanceof byte[])
{
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java b/opends/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java
index c22850d..484d3c6 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java
@@ -23,7 +23,7 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011 ForgeRock AS
+ * Portions Copyright 2011-2012 ForgeRock AS
*/
package org.opends.guitools.controlpanel.util;
@@ -52,6 +52,8 @@
import java.util.Date;
import java.util.Iterator;
import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import javax.naming.CompositeName;
import javax.naming.InvalidNameException;
@@ -391,8 +393,8 @@
{
StringBuilder buf = new StringBuilder();
- buf.append("font-family:" + font.getName()).append(
- ";font-size:" + font.getSize() + "pt");
+ buf.append("font-family:").append(font.getName())
+ .append(";font-size:").append(font.getSize()).append("pt");
if (font.isItalic())
{
@@ -1562,6 +1564,37 @@
}
/**
+ * Strings any potential "separator" from a given string.
+ * @param s string to strip
+ * @param separator the separator string to remove
+ * @return resulting string
+ */
+ public static String stripStringToSingleLine(String s, String separator)
+ {
+ String o = null;
+ if (s != null)
+ {
+ o = s.replaceAll(separator, "");
+ }
+ return o;
+ }
+
+ /* The pattern for control characters */
+ private static Pattern cntrl_pattern =
+ Pattern.compile("\\p{Cntrl}", Pattern.MULTILINE);
+
+ /**
+ * Checks if a string contains control characters.
+ * @param s : the string to check
+ * @return true if s contains control characters, false otherwise
+ */
+ public static Boolean hasControlCharaters(String s)
+ {
+ Matcher m = cntrl_pattern.matcher(s);
+ return m.find();
+ }
+
+ /**
* This is a helper method that gets a String representation of the elements
* in the Collection. The String will display the different elements separated
* by the separator String.
@@ -1583,7 +1616,7 @@
{
msg.append(separator);
}
- msg.append(m);
+ msg.append(stripStringToSingleLine(m, separator));
}
return msg.toString();
}
@@ -1663,9 +1696,9 @@
Message details, Font detailsFont)
{
StringBuilder buf = new StringBuilder();
- String space = " ";
- buf.append(UIFactory.getIconHtml(UIFactory.IconType.ERROR_LARGE) + space
- + space + applyFont(title.toString(), titleFont));
+ buf.append(UIFactory.getIconHtml(UIFactory.IconType.ERROR_LARGE))
+ .append(HTML_SPACE).append(HTML_SPACE)
+ .append(applyFont(title.toString(), titleFont));
if (details != null)
{
buf.append("<br><br>")
@@ -1687,9 +1720,9 @@
Message details, Font detailsFont)
{
StringBuilder buf = new StringBuilder();
- String space = " ";
- buf.append(UIFactory.getIconHtml(UIFactory.IconType.INFORMATION_LARGE) +
- space + space + applyFont(title.toString(), titleFont));
+ buf.append(UIFactory.getIconHtml(UIFactory.IconType.INFORMATION_LARGE))
+ .append(HTML_SPACE).append(HTML_SPACE)
+ .append(applyFont(title.toString(), titleFont));
if (details != null)
{
buf.append("<br><br>")
@@ -1711,9 +1744,9 @@
Message details, Font detailsFont)
{
StringBuilder buf = new StringBuilder();
- String space = " ";
- buf.append(UIFactory.getIconHtml(UIFactory.IconType.WARNING_LARGE) + space
- + space + applyFont(title.toString(), titleFont));
+ buf.append(UIFactory.getIconHtml(UIFactory.IconType.WARNING_LARGE))
+ .append(HTML_SPACE).append(HTML_SPACE)
+ .append(applyFont(title.toString(), titleFont));
if (details != null)
{
buf.append("<br><br>")
@@ -1735,9 +1768,9 @@
Message details, Font detailsFont)
{
StringBuilder buf = new StringBuilder();
- String space = " ";
- buf.append(UIFactory.getIconHtml(UIFactory.IconType.WARNING_LARGE) +
- space + space + applyFont(title.toString(), titleFont));
+ buf.append(UIFactory.getIconHtml(UIFactory.IconType.WARNING_LARGE))
+ .append(HTML_SPACE).append(HTML_SPACE)
+ .append(applyFont(title.toString(), titleFont));
if (details != null)
{
buf.append("<br><br>")
@@ -2547,6 +2580,7 @@
{
SwingUtilities.invokeLater(new Runnable()
{
+ @Override
public void run()
{
for (int i=0; i<pos.size(); i++)
--
Gitblit v1.10.0