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 2009/10/12 16:15:02 UTC
svn commit: r824349 -
/directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/EntryEditorManager.java
Author: seelmann
Date: Mon Oct 12 14:15:01 2009
New Revision: 824349
URL: http://svn.apache.org/viewvc?rev=824349&view=rev
Log:
Added consistency check, don't save modifications if an empty value exists
Modified:
directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/EntryEditorManager.java
Modified: directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/EntryEditorManager.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/EntryEditorManager.java?rev=824349&r1=824348&r2=824349&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/EntryEditorManager.java (original)
+++ directory/studio/trunk/ldapbrowser-ui/src/main/java/org/apache/directory/studio/entryeditors/EntryEditorManager.java Mon Oct 12 14:15:01 2009
@@ -43,10 +43,12 @@
import org.apache.directory.studio.ldapbrowser.core.events.EntryUpdateListener;
import org.apache.directory.studio.ldapbrowser.core.events.EventRegistry;
import org.apache.directory.studio.ldapbrowser.core.jobs.UpdateEntryRunnable;
+import org.apache.directory.studio.ldapbrowser.core.model.IAttribute;
import org.apache.directory.studio.ldapbrowser.core.model.IBookmark;
import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
import org.apache.directory.studio.ldapbrowser.core.model.IEntry;
import org.apache.directory.studio.ldapbrowser.core.model.ISearchResult;
+import org.apache.directory.studio.ldapbrowser.core.model.IValue;
import org.apache.directory.studio.ldapbrowser.core.utils.CompoundModification;
import org.apache.directory.studio.ldapbrowser.core.utils.Utils;
import org.apache.directory.studio.ldapbrowser.ui.BrowserUIConstants;
@@ -63,6 +65,7 @@
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.osgi.util.NLS;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IEditorReference;
@@ -376,6 +379,19 @@
// auto-save working copy has been modified: save and inform all auto-save editors
IEntry autoSaveSharedReferenceCopy = autoSaveSharedReferenceCopies.get( originalEntry );
IEntry autoSaveSharedWorkingCopy = autoSaveSharedWorkingCopies.get( originalEntry );
+
+ // consistency check: don't save if there is an empty value, silently return in that case
+ for ( IAttribute attribute : autoSaveSharedWorkingCopy.getAttributes() )
+ {
+ for ( IValue value : attribute.getValues() )
+ {
+ if ( value.isEmpty() )
+ {
+ return;
+ }
+ }
+ }
+
LdifFile diff = Utils.computeDiff( autoSaveSharedReferenceCopy, autoSaveSharedWorkingCopy );
if ( diff != null )
{
@@ -388,6 +404,7 @@
// put entry back to map
autoSaveSharedReferenceCopies.put( originalEntry, autoSaveSharedReferenceCopy );
autoSaveSharedWorkingCopies.put( originalEntry, autoSaveSharedWorkingCopy );
+
// don't care if status is ok or not: always update
updateAutoSaveSharedReferenceCopy( originalEntry );
updateAutoSaveSharedWorkingCopy( originalEntry );
@@ -937,6 +954,19 @@
IEntry workingCopy = oscSharedWorkingCopies.get( originalEntry );
if ( referenceCopy != null && workingCopy != null )
{
+ // consistency check: don't save if there is an empty value, throw an exception as the user pressed 'save'
+ for ( IAttribute attribute : workingCopy.getAttributes() )
+ {
+ for ( IValue value : attribute.getValues() )
+ {
+ if ( value.isEmpty() )
+ {
+ throw new RuntimeException( NLS.bind( Messages
+ .getString( "EntryEditorManager.EmptyValueInAttribute" ), attribute.getDescription() ) ); //$NON-NLS-1$
+ }
+ }
+ }
+
LdifFile diff = Utils.computeDiff( referenceCopy, workingCopy );
if ( diff != null )
{
@@ -1014,7 +1044,7 @@
if ( editor != null )
{
EntryEditorInput input = editor.getEntryEditorInput();
- if ( input != null && input.getResolvedEntry() != null )
+ if ( input != null && input.getResolvedEntry() != null )
{
IEntry entry = input.getResolvedEntry();
if ( editor.isAutoSave() )