You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by se...@apache.org on 2016/09/23 21:27:34 UTC
svn commit: r1762095 - in /directory/studio/trunk:
plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/
plugins/ldapbrowser.common/src/test/java/org/apache/directory/studio/valueeditors/
plugins/valueeditors/ plugins/value...
Author: seelmann
Date: Fri Sep 23 21:27:33 2016
New Revision: 1762095
URL: http://svn.apache.org/viewvc?rev=1762095&view=rev
Log:
DIRSTUDIO-1115: Make value editor behaviour more consistent. Add checks if value can be handled by an value editor. Add tests.
Added:
directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/StringValueEditorUtils.java (with props)
directory/studio/trunk/plugins/ldapbrowser.common/src/test/java/org/apache/directory/studio/valueeditors/
directory/studio/trunk/plugins/ldapbrowser.common/src/test/java/org/apache/directory/studio/valueeditors/ValueEditorUtilsTest.java (with props)
directory/studio/trunk/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ValueEditorTest.java (with props)
Modified:
directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/AbstractDialogBinaryValueEditor.java
directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/AbstractDialogStringValueEditor.java
directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/AbstractInPlaceStringValueEditor.java
directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/IValueEditor.java
directory/studio/trunk/plugins/valueeditors/pom-first.xml
directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/bool/InPlaceBooleanValueEditor.java
directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/image/ImageDialog.java
directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/image/ImageValueEditor.java
directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/objectclass/ObjectClassValueEditor.java
directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/oid/InPlaceOidValueEditor.java
Modified: directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/AbstractDialogBinaryValueEditor.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/AbstractDialogBinaryValueEditor.java?rev=1762095&r1=1762094&r2=1762095&view=diff
==============================================================================
--- directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/AbstractDialogBinaryValueEditor.java (original)
+++ directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/AbstractDialogBinaryValueEditor.java Fri Sep 23 21:27:33 2016
@@ -27,7 +27,6 @@ import org.eclipse.osgi.util.NLS;
/**
- *
* Abstract base class for value editors that handle binary values
* in a dialog.
*
@@ -58,14 +57,17 @@ public abstract class AbstractDialogBina
}
else
{
- if ( value == null )
+ Object rawValue = getRawValue( value );
+
+ if ( rawValue == null )
{
- return NULL; //$NON-NLS-1$
+ return NULL;
}
- else if ( value.isBinary() )
+ else if ( rawValue instanceof byte[] )
{
- byte[] data = value.getBinaryValue();
- return NLS.bind( Messages.getString( "AbstractDialogBinaryValueEditor.BinaryDateNBytes" ), data.length ); //$NON-NLS-1$
+ byte[] data = ( byte[] ) rawValue;
+ return NLS.bind( Messages.getString( "AbstractDialogBinaryValueEditor.BinaryDateNBytes" ), //$NON-NLS-1$
+ data.length );
}
else
{
Modified: directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/AbstractDialogStringValueEditor.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/AbstractDialogStringValueEditor.java?rev=1762095&r1=1762094&r2=1762095&view=diff
==============================================================================
--- directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/AbstractDialogStringValueEditor.java (original)
+++ directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/AbstractDialogStringValueEditor.java Fri Sep 23 21:27:33 2016
@@ -26,7 +26,6 @@ import org.apache.directory.studio.ldapb
/**
- *
* Abstract base class for value editors that handle string values
* in a dialog.
*
@@ -51,15 +50,7 @@ public abstract class AbstractDialogStri
public String getDisplayValue( IValue value )
{
Object obj = getRawValue( value );
-
- if ( obj == null )
- {
- return NULL;
- }
- else
- {
- return obj.toString();
- }
+ return StringValueEditorUtils.getDisplayValue( obj );
}
@@ -90,44 +81,7 @@ public abstract class AbstractDialogStri
*/
public Object getRawValue( IValue value )
{
- if ( value == null )
- {
- return null;
- }
- else if ( value.isString() )
- {
- return value.getStringValue();
- }
- else if ( value.isBinary() && isEditable( value.getBinaryValue() ) )
- {
- return value.getStringValue();
- }
- else
- {
- return null;
- }
- }
-
-
- /**
- * Small helper.
- */
- private boolean isEditable( byte[] b )
- {
- if ( b == null )
- {
- return false;
- }
-
- for ( int i = 0; i < b.length; i++ )
- {
- if ( ( b[i] > '\u007F' ) || ( ( b[i] < '\u0020' ) && ( b[i] != '\n' ) && ( b[i] != '\r' ) ) )
- {
- return false;
- }
- }
-
- return true;
+ return StringValueEditorUtils.getRawValue( value );
}
@@ -139,13 +93,6 @@ public abstract class AbstractDialogStri
*/
public Object getStringOrBinaryValue( Object rawValue )
{
- if ( rawValue instanceof String )
- {
- return rawValue;
- }
- else
- {
- return null;
- }
+ return StringValueEditorUtils.getStringOrBinaryValue( rawValue );
}
}
Modified: directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/AbstractInPlaceStringValueEditor.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/AbstractInPlaceStringValueEditor.java?rev=1762095&r1=1762094&r2=1762095&view=diff
==============================================================================
--- directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/AbstractInPlaceStringValueEditor.java (original)
+++ directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/AbstractInPlaceStringValueEditor.java Fri Sep 23 21:27:33 2016
@@ -84,7 +84,7 @@ public abstract class AbstractInPlaceStr
{
if ( attributeHierarchy == null )
{
- return "NULL"; //$NON-NLS-1$
+ return NULL;
}
List<IValue> valueList = new ArrayList<IValue>();
@@ -123,15 +123,7 @@ public abstract class AbstractInPlaceStr
public String getDisplayValue( IValue value )
{
Object obj = getRawValue( value );
-
- if ( obj == null )
- {
- return "NULL";
- }
- else
- {
- return obj.toString();
- }
+ return StringValueEditorUtils.getDisplayValue( obj );
}
@@ -184,41 +176,7 @@ public abstract class AbstractInPlaceStr
*/
public Object getRawValue( IValue value )
{
- if ( value != null )
- {
- if ( value.isString() )
- {
- return value.getStringValue();
- }
- else if ( value.isBinary() && isEditable( value.getBinaryValue() ) )
- {
- return value.getStringValue();
- }
- }
-
- return null;
- }
-
-
- /**
- * Small helper.
- */
- private boolean isEditable( byte[] b )
- {
- if ( b == null )
- {
- return false;
- }
-
- for ( int i = 0; i < b.length; i++ )
- {
- if ( ( b[i] > '\u007F') || ( ( b[i] < '\u0020' ) && ( b[i] != '\n' ) && ( b[i] != '\r' ) ) )
- {
- return false;
- }
- }
-
- return true;
+ return StringValueEditorUtils.getRawValue( value );
}
@@ -230,14 +188,7 @@ public abstract class AbstractInPlaceStr
*/
public Object getStringOrBinaryValue( Object rawValue )
{
- if ( rawValue instanceof String )
- {
- return rawValue;
- }
- else
- {
- return null;
- }
+ return StringValueEditorUtils.getStringOrBinaryValue( rawValue );
}
Modified: directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/IValueEditor.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/IValueEditor.java?rev=1762095&r1=1762094&r2=1762095&view=diff
==============================================================================
--- directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/IValueEditor.java (original)
+++ directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/IValueEditor.java Fri Sep 23 21:27:33 2016
@@ -198,5 +198,5 @@ public interface IValueEditor
// A constant for the emtpy string and null string.
String EMPTY = ""; //$NON-NLS-1$
- String NULL = "NULL"; //$NON-NLS-1$
+ String NULL = ">>> Error, the configured value editor can not handle this value! <<<"; //$NON-NLS-1$
}
Added: directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/StringValueEditorUtils.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/StringValueEditorUtils.java?rev=1762095&view=auto
==============================================================================
--- directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/StringValueEditorUtils.java (added)
+++ directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/StringValueEditorUtils.java Fri Sep 23 21:27:33 2016
@@ -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.directory.studio.valueeditors;
+
+
+import java.nio.charset.StandardCharsets;
+
+import org.apache.directory.studio.ldapbrowser.core.model.IValue;
+
+
+/**
+ * Common code used by {@link AbstractInPlaceStringValueEditor} and
+ * {@link AbstractDialogStringValueEditor}.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class StringValueEditorUtils
+{
+
+ static String getDisplayValue( Object rawValue )
+ {
+ if ( rawValue == null )
+ {
+ return IValueEditor.NULL;
+ }
+ else
+ {
+ return rawValue.toString();
+ }
+ }
+
+
+ static Object getRawValue( IValue value )
+ {
+ if ( value == null )
+ {
+ return null;
+ }
+ else if ( value.isString() )
+ {
+ return value.getStringValue();
+ }
+ else if ( value.isBinary() && StringValueEditorUtils.isEditable( value.getBinaryValue() ) )
+ {
+ return value.getStringValue();
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+
+ static Object getStringOrBinaryValue( Object rawValue )
+ {
+ if ( rawValue instanceof String )
+ {
+ return rawValue;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+
+ static boolean isEditable( byte[] b )
+ {
+ if ( b == null )
+ {
+ return false;
+ }
+
+ return !( new String( b, StandardCharsets.UTF_8 ).contains( "\uFFFD" ) );
+ }
+
+}
Propchange: directory/studio/trunk/plugins/ldapbrowser.common/src/main/java/org/apache/directory/studio/valueeditors/StringValueEditorUtils.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/studio/trunk/plugins/ldapbrowser.common/src/test/java/org/apache/directory/studio/valueeditors/ValueEditorUtilsTest.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/ldapbrowser.common/src/test/java/org/apache/directory/studio/valueeditors/ValueEditorUtilsTest.java?rev=1762095&view=auto
==============================================================================
--- directory/studio/trunk/plugins/ldapbrowser.common/src/test/java/org/apache/directory/studio/valueeditors/ValueEditorUtilsTest.java (added)
+++ directory/studio/trunk/plugins/ldapbrowser.common/src/test/java/org/apache/directory/studio/valueeditors/ValueEditorUtilsTest.java Fri Sep 23 21:27:33 2016
@@ -0,0 +1,52 @@
+
+package org.apache.directory.studio.valueeditors;
+
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.nio.charset.StandardCharsets;
+
+import org.junit.Test;
+
+
+public class ValueEditorUtilsTest
+{
+
+ @Test
+ public void testEmptyStringIsEditable()
+ {
+ assertTrue( StringValueEditorUtils.isEditable( "".getBytes() ) );
+ }
+
+
+ @Test
+ public void testAsciiIsEditable()
+ {
+ assertTrue( StringValueEditorUtils.isEditable( "abc\n123".getBytes( StandardCharsets.US_ASCII ) ) );
+ }
+
+
+ @Test
+ public void testUft8IsEditable()
+ {
+ assertTrue( StringValueEditorUtils.isEditable( "a\nb\r\u00e4\t\u5047".getBytes( StandardCharsets.UTF_8 ) ) );
+ }
+
+
+ @Test
+ public void testIso88591IsNotEditable()
+ {
+ assertFalse(
+ StringValueEditorUtils.isEditable( "\u00e4\u00f6\u00fc".getBytes( StandardCharsets.ISO_8859_1 ) ) );
+ }
+
+
+ @Test
+ public void testPngIsNotEditable()
+ {
+ assertFalse( StringValueEditorUtils.isEditable( new byte[]
+ { ( byte ) 0x89, 0x50, 0x4E, 0x47 } ) );
+ }
+
+}
Propchange: directory/studio/trunk/plugins/ldapbrowser.common/src/test/java/org/apache/directory/studio/valueeditors/ValueEditorUtilsTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: directory/studio/trunk/plugins/valueeditors/pom-first.xml
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/valueeditors/pom-first.xml?rev=1762095&r1=1762094&r2=1762095&view=diff
==============================================================================
--- directory/studio/trunk/plugins/valueeditors/pom-first.xml (original)
+++ directory/studio/trunk/plugins/valueeditors/pom-first.xml Fri Sep 23 21:27:33 2016
@@ -48,10 +48,20 @@
<Bundle-Activator>org.apache.directory.studio.valueeditors.ValueEditorsActivator</Bundle-Activator>
<Export-Package>org.apache.directory.studio.valueeditors,
+ org.apache.directory.studio.valueeditors.address,
+ org.apache.directory.studio.valueeditors.administrativerole,
+ org.apache.directory.studio.valueeditors.adtime,
+ org.apache.directory.studio.valueeditors.bool,
+ org.apache.directory.studio.valueeditors.certificate,
org.apache.directory.studio.valueeditors.dn,
- org.apache.directory.studio.valueeditors.time,
+ org.apache.directory.studio.valueeditors.image,
+ org.apache.directory.studio.valueeditors.integer,
+ org.apache.directory.studio.valueeditors.msad,
+ org.apache.directory.studio.valueeditors.objectclass,
+ org.apache.directory.studio.valueeditors.oid,
org.apache.directory.studio.valueeditors.password,
- org.apache.directory.studio.valueeditors.integer</Export-Package>
+ org.apache.directory.studio.valueeditors.time,
+ org.apache.directory.studio.valueeditors.uuid</Export-Package>
<Import-Package>
org.apache.commons.lang,
Modified: directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/bool/InPlaceBooleanValueEditor.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/bool/InPlaceBooleanValueEditor.java?rev=1762095&r1=1762094&r2=1762095&view=diff
==============================================================================
--- directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/bool/InPlaceBooleanValueEditor.java (original)
+++ directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/bool/InPlaceBooleanValueEditor.java Fri Sep 23 21:27:33 2016
@@ -21,6 +21,8 @@
package org.apache.directory.studio.valueeditors.bool;
+import org.apache.directory.api.ldap.model.schema.syntaxCheckers.BooleanSyntaxChecker;
+import org.apache.directory.studio.ldapbrowser.core.model.IValue;
import org.apache.directory.studio.valueeditors.AbstractInPlaceStringValueEditor;
@@ -54,18 +56,14 @@ public class InPlaceBooleanValueEditor e
{
return null;
}
- else if ( "TRUE".equalsIgnoreCase( stringValue )
- || "T".equalsIgnoreCase( stringValue )
- || "YES".equalsIgnoreCase( stringValue )
- || "Y".equalsIgnoreCase( stringValue )
+ else if ( "TRUE".equalsIgnoreCase( stringValue ) || "T".equalsIgnoreCase( stringValue )
+ || "YES".equalsIgnoreCase( stringValue ) || "Y".equalsIgnoreCase( stringValue )
|| "1".equalsIgnoreCase( stringValue ) )
{
return TRUE;
}
- else if ( "FALSE".equalsIgnoreCase( stringValue )
- || "F".equalsIgnoreCase( stringValue )
- || "NO".equalsIgnoreCase( stringValue )
- || "N".equalsIgnoreCase( stringValue )
+ else if ( "FALSE".equalsIgnoreCase( stringValue ) || "F".equalsIgnoreCase( stringValue )
+ || "NO".equalsIgnoreCase( stringValue ) || "N".equalsIgnoreCase( stringValue )
|| "0".equalsIgnoreCase( stringValue ) )
{
return FALSE;
@@ -74,4 +72,21 @@ public class InPlaceBooleanValueEditor e
return value;
}
+
+
+ @Override
+ public Object getRawValue( IValue value )
+ {
+ Object rawValue = super.getRawValue( value );
+
+ if ( rawValue instanceof String && new BooleanSyntaxChecker().isValidSyntax( rawValue ) )
+ {
+ return rawValue;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
}
Modified: directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/image/ImageDialog.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/image/ImageDialog.java?rev=1762095&r1=1762094&r2=1762095&view=diff
==============================================================================
--- directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/image/ImageDialog.java (original)
+++ directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/image/ImageDialog.java Fri Sep 23 21:27:33 2016
@@ -32,6 +32,7 @@ import java.io.IOException;
import org.apache.directory.api.util.Strings;
import org.apache.directory.studio.common.ui.widgets.BaseWidgetUtils;
import org.apache.directory.studio.connection.ui.ConnectionUIPlugin;
+import org.apache.directory.studio.valueeditors.IValueEditor;
import org.apache.directory.studio.valueeditors.ValueEditorsActivator;
import org.apache.directory.studio.valueeditors.ValueEditorsConstants;
import org.eclipse.core.runtime.IStatus;
@@ -782,7 +783,7 @@ public class ImageDialog extends Dialog
{
if ( imageRawData == null )
{
- return "NULL"; //$NON-NLS-1$
+ return IValueEditor.NULL;
}
String text;
Modified: directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/image/ImageValueEditor.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/image/ImageValueEditor.java?rev=1762095&r1=1762094&r2=1762095&view=diff
==============================================================================
--- directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/image/ImageValueEditor.java (original)
+++ directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/image/ImageValueEditor.java Fri Sep 23 21:27:33 2016
@@ -79,7 +79,7 @@ public class ImageValueEditor extends Ab
{
if ( value == null )
{
- return NULL; //$NON-NLS-1$
+ return NULL;
}
else if ( value.isBinary() )
{
Modified: directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/objectclass/ObjectClassValueEditor.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/objectclass/ObjectClassValueEditor.java?rev=1762095&r1=1762094&r2=1762095&view=diff
==============================================================================
--- directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/objectclass/ObjectClassValueEditor.java (original)
+++ directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/objectclass/ObjectClassValueEditor.java Fri Sep 23 21:27:33 2016
@@ -71,7 +71,7 @@ public class ObjectClassValueEditor exte
{
if ( getRawValue( value ) == null )
{
- return "NULL"; //$NON-NLS-1$
+ return NULL;
}
String displayValue = value.getStringValue();
Modified: directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/oid/InPlaceOidValueEditor.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/oid/InPlaceOidValueEditor.java?rev=1762095&r1=1762094&r2=1762095&view=diff
==============================================================================
--- directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/oid/InPlaceOidValueEditor.java (original)
+++ directory/studio/trunk/plugins/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/oid/InPlaceOidValueEditor.java Fri Sep 23 21:27:33 2016
@@ -21,6 +21,7 @@
package org.apache.directory.studio.valueeditors.oid;
+import org.apache.directory.api.ldap.model.schema.syntaxCheckers.NumericOidSyntaxChecker;
import org.apache.directory.studio.connection.core.Utils;
import org.apache.directory.studio.ldapbrowser.core.model.IValue;
import org.apache.directory.studio.valueeditors.AbstractInPlaceStringValueEditor;
@@ -47,7 +48,7 @@ public class InPlaceOidValueEditor exten
if ( !showRawValues() )
{
String description = Utils.getOidDescription( displayValue );
-
+
if ( description != null )
{
displayValue = displayValue + " (" + description + ")"; //$NON-NLS-1$ //$NON-NLS-2$
@@ -56,4 +57,20 @@ public class InPlaceOidValueEditor exten
return displayValue;
}
+
+
+ @Override
+ public Object getRawValue( IValue value )
+ {
+ Object rawValue = super.getRawValue( value );
+
+ if ( rawValue instanceof String && new NumericOidSyntaxChecker().isValidSyntax( rawValue ) )
+ {
+ return rawValue;
+ }
+ else
+ {
+ return null;
+ }
+ }
}
Added: directory/studio/trunk/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ValueEditorTest.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ValueEditorTest.java?rev=1762095&view=auto
==============================================================================
--- directory/studio/trunk/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ValueEditorTest.java (added)
+++ directory/studio/trunk/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ValueEditorTest.java Fri Sep 23 21:27:33 2016
@@ -0,0 +1,403 @@
+/*
+ * 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.directory.studio.test.integration.ui;
+
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+
+import java.nio.charset.StandardCharsets;
+
+import org.apache.directory.api.ldap.model.name.Dn;
+import org.apache.directory.studio.ldapbrowser.core.model.IAttribute;
+import org.apache.directory.studio.ldapbrowser.core.model.IEntry;
+import org.apache.directory.studio.ldapbrowser.core.model.IValue;
+import org.apache.directory.studio.ldapbrowser.core.model.impl.Attribute;
+import org.apache.directory.studio.ldapbrowser.core.model.impl.DummyConnection;
+import org.apache.directory.studio.ldapbrowser.core.model.impl.DummyEntry;
+import org.apache.directory.studio.ldapbrowser.core.model.impl.Value;
+import org.apache.directory.studio.ldapbrowser.core.model.schema.Schema;
+import org.apache.directory.studio.valueeditors.HexValueEditor;
+import org.apache.directory.studio.valueeditors.IValueEditor;
+import org.apache.directory.studio.valueeditors.InPlaceTextValueEditor;
+import org.apache.directory.studio.valueeditors.TextValueEditor;
+import org.apache.directory.studio.valueeditors.bool.InPlaceBooleanValueEditor;
+import org.apache.directory.studio.valueeditors.oid.InPlaceOidValueEditor;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
+
+
+/**
+ * Tests the value editors.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+@RunWith(Parameterized.class)
+public class ValueEditorTest
+{
+
+ @Parameters(name = "{0}")
+ public static Object[] data()
+ {
+ return new Object[][]
+ {
+ // InPlaceTextValueEditor
+
+ { "InPlaceTextValueEditor - empty value",
+ Data.data().valueEditorClass( InPlaceTextValueEditor.class ).attribute( "cn" )
+ .rawValue( IValue.EMPTY_STRING_VALUE ).expectedRawValue( "" ).expectedDisplayValue( "" )
+ .expectedHasValue( true ).expectedStringOrBinaryValue( "" ) },
+
+ { "InPlaceTextValueEditor - empty string",
+ Data.data().valueEditorClass( InPlaceTextValueEditor.class ).attribute( "cn" ).rawValue( "" )
+ .expectedRawValue( "" ).expectedDisplayValue( "" ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( "" ) },
+
+ { "InPlaceTextValueEditor - ascii",
+ Data.data().valueEditorClass( InPlaceTextValueEditor.class ).attribute( "cn" )
+ .rawValue( "a-zA+Z0.9" ).expectedRawValue( "a-zA+Z0.9" ).expectedDisplayValue( "a-zA+Z0.9" )
+ .expectedHasValue( true ).expectedStringOrBinaryValue( "a-zA+Z0.9" ) },
+
+ { "InPlaceTextValueEditor - ascii with newline",
+ Data.data().valueEditorClass( InPlaceTextValueEditor.class ).attribute( "cn" ).rawValue( "a\nb\rc" )
+ .expectedRawValue( "a\nb\rc" ).expectedDisplayValue( "a\nb\rc" ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( "a\nb\rc" ) },
+
+ { "InPlaceTextValueEditor - unicode",
+ Data.data().valueEditorClass( InPlaceTextValueEditor.class ).attribute( "cn" )
+ .rawValue( "\u00e4\u2000\n\u5047" ).expectedRawValue( "\u00e4\u2000\n\u5047" )
+ .expectedDisplayValue( "\u00e4\u2000\n\u5047" ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( "\u00e4\u2000\n\u5047" ) },
+
+ { "InPlaceTextValueEditor - bytearray UTF8",
+ Data.data().valueEditorClass( InPlaceTextValueEditor.class ).attribute( "userPassword" )
+ .rawValue( "a\nb\r\u00e4\t\u5047".getBytes( UTF_8 ) ).expectedRawValue( "a\nb\r\u00e4\t\u5047" )
+ .expectedDisplayValue( "a\nb\r\u00e4\t\u5047" ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( "a\nb\r\u00e4\t\u5047" ) },
+
+ { "InPlaceTextValueEditor - bytearray binary", Data.data()
+ .valueEditorClass( InPlaceTextValueEditor.class ).attribute( "userPassword" ).rawValue( new byte[]
+ { ( byte ) 0x89, 0x50, 0x4E, 0x47 } )
+ .expectedRawValue( null ).expectedDisplayValue( IValueEditor.NULL ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( null ) },
+
+ // InPlaceBooleanValueEditor
+
+ { "InPlaceBooleanValueEditor - TRUE",
+ Data.data().valueEditorClass( InPlaceBooleanValueEditor.class ).attribute( "cn" ).rawValue( "TRUE" )
+ .expectedRawValue( "TRUE" ).expectedDisplayValue( "TRUE" ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( "TRUE" ) },
+
+ { "InPlaceBooleanValueEditor - FALSE",
+ Data.data().valueEditorClass( InPlaceBooleanValueEditor.class ).attribute( "cn" )
+ .rawValue( "FALSE" ).expectedRawValue( "FALSE" ).expectedDisplayValue( "FALSE" )
+ .expectedHasValue( true ).expectedStringOrBinaryValue( "FALSE" ) },
+
+ { "InPlaceBooleanValueEditor - INVALID",
+ Data.data().valueEditorClass( InPlaceBooleanValueEditor.class ).attribute( "cn" )
+ .rawValue( "invalid" ).expectedRawValue( null ).expectedDisplayValue( IValueEditor.NULL )
+ .expectedHasValue( true ).expectedStringOrBinaryValue( null ) },
+
+ { "InPlaceBooleanValueEditor - bytearray TRUE",
+ Data.data().valueEditorClass( InPlaceBooleanValueEditor.class ).attribute( "userPassword" )
+ .rawValue( "TRUE".getBytes( UTF_8 ) ).expectedRawValue( "TRUE" ).expectedDisplayValue( "TRUE" )
+ .expectedHasValue( true ).expectedStringOrBinaryValue( "TRUE" ) },
+
+ { "InPlaceBooleanValueEditor - bytearray FALSE",
+ Data.data().valueEditorClass( InPlaceBooleanValueEditor.class ).attribute( "userPassword" )
+ .rawValue( "FALSE".getBytes( UTF_8 ) ).expectedRawValue( "FALSE" )
+ .expectedDisplayValue( "FALSE" ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( "FALSE" ) },
+
+ { "InPlaceBooleanValueEditor - bytearray INVALID",
+ Data.data().valueEditorClass( InPlaceBooleanValueEditor.class ).attribute( "userPassword" )
+ .rawValue( "invalid".getBytes( UTF_8 ) ).expectedRawValue( null )
+ .expectedDisplayValue( IValueEditor.NULL ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( null ) },
+
+ // InPlaceOidValueEditor
+
+ { "InPlaceOidValueEditor - 1.3.6.1.4.1.1466.20037",
+ Data.data().valueEditorClass( InPlaceOidValueEditor.class ).attribute( "cn" )
+ .rawValue( "1.3.6.1.4.1.1466.20037" ).expectedRawValue( "1.3.6.1.4.1.1466.20037" )
+ .expectedDisplayValue( "1.3.6.1.4.1.1466.20037 (Start TLS)" ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( "1.3.6.1.4.1.1466.20037" ) },
+
+ { "InPlaceOidValueEditor - INVALID",
+ Data.data().valueEditorClass( InPlaceOidValueEditor.class ).attribute( "cn" ).rawValue( "invalid" )
+ .expectedRawValue( null ).expectedDisplayValue( IValueEditor.NULL ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( null ) },
+
+ { "InPlaceOidValueEditor - bytearray 1.3.6.1.4.1.1466.20037",
+ Data.data().valueEditorClass( InPlaceOidValueEditor.class ).attribute( "userPassword" )
+ .rawValue( "1.3.6.1.4.1.1466.20037".getBytes( UTF_8 ) )
+ .expectedRawValue( "1.3.6.1.4.1.1466.20037" )
+ .expectedDisplayValue( "1.3.6.1.4.1.1466.20037 (Start TLS)" ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( "1.3.6.1.4.1.1466.20037" ) },
+
+ { "InPlaceOidValueEditor - bytearray INVALID",
+ Data.data().valueEditorClass( InPlaceOidValueEditor.class ).attribute( "userPassword" )
+ .rawValue( "invalid".getBytes( UTF_8 ) ).expectedRawValue( null )
+ .expectedDisplayValue( IValueEditor.NULL ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( null ) },
+
+ // TextValueEditor
+
+ { "TextValueEditor - empty string value",
+ Data.data().valueEditorClass( TextValueEditor.class ).attribute( "cn" )
+ .rawValue( IValue.EMPTY_STRING_VALUE ).expectedRawValue( "" ).expectedDisplayValue( "" )
+ .expectedHasValue( true ).expectedStringOrBinaryValue( "" ) },
+
+ { "TextValueEditor - empty string",
+ Data.data().valueEditorClass( TextValueEditor.class ).attribute( "cn" ).rawValue( "" )
+ .expectedRawValue( "" ).expectedDisplayValue( "" ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( "" ) },
+
+ { "TextValueEditor - ascii",
+ Data.data().valueEditorClass( TextValueEditor.class ).attribute( "cn" ).rawValue( "a-zA+Z0.9" )
+ .expectedRawValue( "a-zA+Z0.9" ).expectedDisplayValue( "a-zA+Z0.9" ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( "a-zA+Z0.9" ) },
+
+ { "TextValueEditor - ascii with newline",
+ Data.data().valueEditorClass( TextValueEditor.class ).attribute( "cn" ).rawValue( "a\nb\rc" )
+ .expectedRawValue( "a\nb\rc" ).expectedDisplayValue( "a\nb\rc" ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( "a\nb\rc" ) },
+
+ { "TextValueEditor - unicode",
+ Data.data().valueEditorClass( TextValueEditor.class ).attribute( "cn" )
+ .rawValue( "\u00e4\u2000\n\u5047" ).expectedRawValue( "\u00e4\u2000\n\u5047" )
+ .expectedDisplayValue( "\u00e4\u2000\n\u5047" ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( "\u00e4\u2000\n\u5047" ) },
+
+ { "TextValueEditor - empty binary value",
+ Data.data().valueEditorClass( TextValueEditor.class ).attribute( "userPassword" )
+ .rawValue( IValue.EMPTY_BINARY_VALUE ).expectedRawValue( "" ).expectedDisplayValue( "" )
+ .expectedHasValue( true ).expectedStringOrBinaryValue( "" ) },
+
+ { "TextValueEditor - empty bytearray",
+ Data.data().valueEditorClass( TextValueEditor.class ).attribute( "userPassword" )
+ .rawValue( new byte[0] ).expectedRawValue( "" ).expectedDisplayValue( "" )
+ .expectedHasValue( true ).expectedStringOrBinaryValue( "" ) },
+
+ { "TextValueEditor - bytearray UTF8",
+ Data.data().valueEditorClass( TextValueEditor.class ).attribute( "userPassword" )
+ .rawValue( "a\nb\r\u00e4\t\u5047".getBytes( UTF_8 ) ).expectedRawValue( "a\nb\r\u00e4\t\u5047" )
+ .expectedDisplayValue( "a\nb\r\u00e4\t\u5047" ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( "a\nb\r\u00e4\t\u5047" ) },
+
+ { "TextValueEditor - bytearray binary", Data.data().valueEditorClass( InPlaceTextValueEditor.class )
+ .attribute( "userPassword" ).rawValue( new byte[]
+ { ( byte ) 0x89, 0x50, 0x4E, 0x47 } )
+ .expectedRawValue( null ).expectedDisplayValue( IValueEditor.NULL ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( null ) },
+
+ // HexValueEditor
+
+ { "HexValueEditor - empty string value",
+ Data.data().valueEditorClass( HexValueEditor.class ).attribute( "cn" )
+ .rawValue( IValue.EMPTY_STRING_VALUE ).expectedRawValue( new byte[0] )
+ .expectedDisplayValue( "Binary Data (0 Bytes)" ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( new byte[0] ) },
+
+ { "HexValueEditor - empty string",
+ Data.data().valueEditorClass( HexValueEditor.class ).attribute( "cn" ).rawValue( "" )
+ .expectedRawValue( new byte[0] ).expectedDisplayValue( "Binary Data (0 Bytes)" )
+ .expectedHasValue( true ).expectedStringOrBinaryValue( new byte[0] ) },
+
+ { "HexValueEditor - ascii",
+ Data.data().valueEditorClass( HexValueEditor.class ).attribute( "cn" ).rawValue( "a-zA+Z0.9" )
+ .expectedRawValue( "a-zA+Z0.9".getBytes( StandardCharsets.US_ASCII ) )
+ .expectedDisplayValue( "Binary Data (9 Bytes)" ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( "a-zA+Z0.9".getBytes( StandardCharsets.US_ASCII ) ) },
+
+ { "HexValueEditor - empty binary value",
+ Data.data().valueEditorClass( HexValueEditor.class ).attribute( "userPassword" )
+ .rawValue( IValue.EMPTY_BINARY_VALUE ).expectedRawValue( new byte[0] )
+ .expectedDisplayValue( "Binary Data (0 Bytes)" ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( new byte[0] ) },
+
+ { "HexValueEditor - empty bytearray",
+ Data.data().valueEditorClass( HexValueEditor.class ).attribute( "userPassword" )
+ .rawValue( new byte[0] ).expectedRawValue( new byte[0] )
+ .expectedDisplayValue( "Binary Data (0 Bytes)" ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( new byte[0] ) },
+
+ { "HexValueEditor - bytearray UTF8",
+ Data.data().valueEditorClass( HexValueEditor.class ).attribute( "userPassword" )
+ .rawValue( "a\nb\r\u00e4\t\u5047".getBytes( UTF_8 ) )
+ .expectedRawValue( "a\nb\r\u00e4\t\u5047".getBytes( UTF_8 ) )
+ .expectedDisplayValue( "Binary Data (10 Bytes)" ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( "a\nb\r\u00e4\t\u5047".getBytes( UTF_8 ) ) },
+
+ { "HexValueEditor - bytearray binary", Data.data().valueEditorClass( HexValueEditor.class )
+ .attribute( "userPassword" ).rawValue( new byte[]
+ { ( byte ) 0x89, 0x50, 0x4E, 0x47 } )
+ .expectedRawValue( new byte[]
+ { ( byte ) 0x89, 0x50, 0x4E, 0x47 } )
+ .expectedDisplayValue( "Binary Data (4 Bytes)" ).expectedHasValue( true )
+ .expectedStringOrBinaryValue( new byte[]
+ { ( byte ) 0x89, 0x50, 0x4E, 0x47 } ) },
+
+ };
+ }
+
+ @Parameter(value = 0)
+ public String name;
+
+ @Parameter(value = 1)
+ public Data data;
+
+ private IValue value;
+
+ private IValueEditor editor;
+
+
+ @Before
+ public void setup() throws Exception
+ {
+ IEntry entry = new DummyEntry( new Dn(), new DummyConnection( Schema.DEFAULT_SCHEMA ) );
+ IAttribute attribute = new Attribute( entry, data.attribute );
+ value = new Value( attribute, data.rawValue );
+ editor = data.valueEditorClass.newInstance();
+ }
+
+
+ @Test
+ public void testGetRawValue()
+ {
+ if ( data.expectedRawValue instanceof byte[] )
+ {
+ assertArrayEquals( ( byte[] ) data.expectedRawValue, ( byte[] ) editor.getRawValue( value ) );
+ }
+ else
+ {
+ assertEquals( data.expectedRawValue, editor.getRawValue( value ) );
+ }
+ }
+
+
+ @Test
+ public void testGetDisplayValue()
+ {
+ assertEquals( data.expectedDisplayValue, editor.getDisplayValue( value ) );
+ }
+
+
+ @Test
+ public void testHasValue()
+ {
+ assertEquals( data.expectedHasValue, editor.hasValue( value ) );
+ }
+
+
+ @Test
+ public void testGetStringOrBinaryValue()
+ {
+ if ( data.expectedStringOrBinaryValue instanceof byte[] )
+ {
+ assertArrayEquals( ( byte[] ) data.expectedStringOrBinaryValue,
+ ( byte[] ) editor.getStringOrBinaryValue( editor.getRawValue( value ) ) );
+ }
+ else
+ {
+ assertEquals( data.expectedStringOrBinaryValue,
+ editor.getStringOrBinaryValue( editor.getRawValue( value ) ) );
+ }
+ }
+
+ static class Data
+ {
+ public Class<? extends IValueEditor> valueEditorClass;
+
+ public String attribute;
+
+ public Object rawValue;
+
+ public Object expectedRawValue;
+
+ public String expectedDisplayValue;
+
+ public boolean expectedHasValue;
+
+ public Object expectedStringOrBinaryValue;
+
+
+ public static Data data()
+ {
+ return new Data();
+ }
+
+
+ public Data valueEditorClass( Class<? extends IValueEditor> valueEditorClass )
+ {
+ this.valueEditorClass = valueEditorClass;
+ return this;
+ }
+
+
+ public Data attribute( String attribute )
+ {
+ this.attribute = attribute;
+ return this;
+ }
+
+
+ public Data rawValue( Object rawValue )
+ {
+ this.rawValue = rawValue;
+ return this;
+ }
+
+
+ public Data expectedRawValue( Object expectedRawValue )
+ {
+ this.expectedRawValue = expectedRawValue;
+ return this;
+ }
+
+
+ public Data expectedDisplayValue( String expectedDisplayValue )
+ {
+ this.expectedDisplayValue = expectedDisplayValue;
+ return this;
+ }
+
+
+ public Data expectedHasValue( boolean expectedHasValue )
+ {
+ this.expectedHasValue = expectedHasValue;
+ return this;
+ }
+
+
+ public Data expectedStringOrBinaryValue( Object expectedStringOrBinaryValue )
+ {
+ this.expectedStringOrBinaryValue = expectedStringOrBinaryValue;
+ return this;
+ }
+
+ }
+}
Propchange: directory/studio/trunk/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ValueEditorTest.java
------------------------------------------------------------------------------
svn:eol-style = native