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/08/10 12:56:08 UTC

svn commit: r802731 [2/2] - in /directory/studio/trunk: connection-core/src/main/java/org/apache/directory/studio/connection/core/ connection-core/src/main/java/org/apache/directory/studio/connection/core/io/ connection-core/src/main/java/org/apache/di...

Modified: directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/AuthenticationParameterPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/AuthenticationParameterPage.java?rev=802731&r1=802730&r2=802731&view=diff
==============================================================================
--- directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/AuthenticationParameterPage.java (original)
+++ directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/AuthenticationParameterPage.java Mon Aug 10 10:56:07 2009
@@ -25,26 +25,42 @@
 import org.apache.directory.shared.ldap.util.LdapURL;
 import org.apache.directory.shared.ldap.util.LdapURL.Extension;
 import org.apache.directory.studio.connection.core.Connection;
+import org.apache.directory.studio.connection.core.ConnectionCoreConstants;
+import org.apache.directory.studio.connection.core.ConnectionCorePlugin;
 import org.apache.directory.studio.connection.core.ConnectionParameter;
 import org.apache.directory.studio.connection.core.ConnectionParameter.AuthenticationMethod;
+import org.apache.directory.studio.connection.core.ConnectionParameter.Krb5Configuration;
+import org.apache.directory.studio.connection.core.ConnectionParameter.Krb5CredentialConfiguration;
+import org.apache.directory.studio.connection.core.ConnectionParameter.SaslQop;
+import org.apache.directory.studio.connection.core.ConnectionParameter.SaslSecurityStrength;
 import org.apache.directory.studio.connection.core.jobs.CheckBindRunnable;
 import org.apache.directory.studio.connection.ui.AbstractConnectionParameterPage;
 import org.apache.directory.studio.connection.ui.ConnectionUIConstants;
 import org.apache.directory.studio.connection.ui.RunnableContextRunner;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Preferences;
 import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.resource.JFaceResources;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.VerifyEvent;
+import org.eclipse.swt.events.VerifyListener;
 import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.events.ExpansionAdapter;
+import org.eclipse.ui.forms.events.ExpansionEvent;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
 
 
 /**
@@ -67,11 +83,30 @@
 
     private static final String X_AUTH_METHOD_CRAM_MD5 = "CRAM-MD5"; //$NON-NLS-1$
 
+    private static final String X_AUTH_METHOD_GSSAPI = "GSSAPI"; //$NON-NLS-1$
+
     private static final String X_BIND_USER = "X-BIND-USER"; //$NON-NLS-1$
 
     private static final String X_BIND_PASSWORD = "X-BIND-PASSWORD"; //$NON-NLS-1$
 
     private static final String X_SASL_REALM = "X-SASL-REALM"; //$NON-NLS-1$
+    private static final String X_SASL_QOP = "X-SASL-QOP"; //$NON-NLS-1$
+    private static final String X_SASL_QOP_AUTH_INT = "AUTH-INT"; //$NON-NLS-1$
+    private static final String X_SASL_QOP_AUTH_INT_PRIV = "AUTH-INT-PRIV"; //$NON-NLS-1$
+    private static final String X_SASL_SEC_STRENGTH = "X-SASL-SEC-STRENGTH"; //$NON-NLS-1$
+    private static final String X_SASL_SEC_STRENGTH_MEDIUM = "MEDIUM"; //$NON-NLS-1$
+    private static final String X_SASL_SEC_STRENGTH_LOW = "LOW"; //$NON-NLS-1$
+    private static final String X_SASL_NO_MUTUAL_AUTH = "X-SASL-NO-MUTUAL-AUTH"; //$NON-NLS-1$
+
+    private static final String X_KRB5_CREDENTIALS_CONF = "X-KRB5-CREDENTIALS-CONF"; //$NON-NLS-1$
+    private static final String X_KRB5_CREDENTIALS_CONF_OBTAIN_TGT = "OBTAIN-TGT"; //$NON-NLS-1$
+    private static final String X_KRB5_CONFIG = "X-KRB5-CONFIG"; //$NON-NLS-1$
+    private static final String X_KRB5_CONFIG_FILE = "FILE"; //$NON-NLS-1$
+    private static final String X_KRB5_CONFIG_FILE_FILE = "X-KRB5-CONFIG-FILE"; //$NON-NLS-1$
+    private static final String X_KRB5_CONFIG_MANUAL = "MANUAL"; //$NON-NLS-1$
+    private static final String X_KRB5_CONFIG_MANUAL_REALM = "X-KRB5-REALM"; //$NON-NLS-1$
+    private static final String X_KRB5_CONFIG_MANUAL_KDC_HOST = "X-KRB5-KDC-HOST"; //$NON-NLS-1$
+    private static final String X_KRB5_CONFIG_MANUAL_KDC_PORT = "X-KRB5-KDC-PORT"; //$NON-NLS-1$
 
     /** The combo to select the authentication method */
     private Combo authenticationMethodCombo;
@@ -82,14 +117,32 @@
     /** The text widget to input bind password */
     private Text bindPasswordText;
 
-    /** The text widget to input saslRealm */
-    private Combo saslRealmText;
-
     /** The checkbox to choose if the bind password should be saved on disk */
     private Button saveBindPasswordButton;
 
     /** The button to check the authentication parameters */
-    private Button checkPrincipalPasswordAuthButton;;
+    private Button checkPrincipalPasswordAuthButton;
+
+    // SASL stuff
+    private ExpandableComposite saslExpandableComposite;
+    private Composite saslComposite;
+    private Combo saslRealmText;
+    private Combo saslQopCombo;
+    private Combo saslSecurityStrengthCombo;
+    private Button saslMutualAuthenticationButton;
+
+    // Kerberos stuff
+    private ExpandableComposite krb5ExpandableComposite;
+    private Composite krb5Composite;
+    private Button krb5CredentialConfigurationUseNativeButton;
+    private Button krb5CredentialConfigurationObtainTgtButton;
+    private Button krb5ConfigDefaultButton;
+    private Button krb5ConfigFileButton;
+    private Text krb5ConfigFileText;
+    private Button krb5ConfigManualButton;
+    private Text krb5ConfigManualRealmText;
+    private Text krb5ConfigManualHostText;
+    private Text krb5ConfigManualPortText;
 
 
     /**
@@ -151,6 +204,75 @@
     }
 
 
+    private SaslQop getSaslQop()
+    {
+        switch ( saslQopCombo.getSelectionIndex() )
+        {
+            case 1:
+                return SaslQop.AUTH_INT;
+            case 2:
+                return SaslQop.AUTH_INT_PRIV;
+            default:
+                return SaslQop.AUTH;
+        }
+    }
+
+
+    private SaslSecurityStrength getSaslSecurityStrength()
+    {
+        switch ( saslSecurityStrengthCombo.getSelectionIndex() )
+        {
+            case 1:
+                return SaslSecurityStrength.MEDIUM;
+            case 2:
+                return SaslSecurityStrength.LOW;
+            default:
+                return SaslSecurityStrength.HIGH;
+        }
+    }
+
+
+    private Krb5CredentialConfiguration getKrb5CredentialProvider()
+    {
+        if ( krb5CredentialConfigurationUseNativeButton.getSelection() )
+        {
+            return Krb5CredentialConfiguration.USE_NATIVE;
+        }
+        else
+        {
+            return Krb5CredentialConfiguration.OBTAIN_TGT;
+        }
+    }
+
+
+    private Krb5Configuration getKrb5Configuration()
+    {
+        if ( krb5ConfigDefaultButton.getSelection() )
+        {
+            return Krb5Configuration.DEFAULT;
+        }
+        else if ( krb5ConfigFileButton.getSelection() )
+        {
+            return Krb5Configuration.FILE;
+        }
+        else
+        {
+            return Krb5Configuration.MANUAL;
+        }
+    }
+
+
+    private int getKdcPort()
+    {
+        return !"".equals( krb5ConfigManualPortText.getText() ) ? Integer.parseInt( krb5ConfigManualPortText.getText() )
+            : 0;
+    }
+
+
+    //    {
+    //        krb5
+    //    }
+
     /**
      * Returns true if the bind password should be saved on disk.
      * 
@@ -181,42 +303,153 @@
      */
     protected void createComposite( Composite parent )
     {
+        // Authentication Method
         Composite composite1 = BaseWidgetUtils.createColumnContainer( parent, 1, 1 );
 
-        Group group1 = BaseWidgetUtils.createGroup( composite1, Messages.getString("AuthenticationParameterPage.AuthenticationMethod"), 1 ); //$NON-NLS-1$
+        Group group1 = BaseWidgetUtils.createGroup( composite1, Messages
+            .getString( "AuthenticationParameterPage.AuthenticationMethod" ), 1 ); //$NON-NLS-1$
         Composite groupComposite = BaseWidgetUtils.createColumnContainer( group1, 1, 1 );
 
         String[] authMethods = new String[]
-            {
-                Messages.getString( "AuthenticationParameterPage.AnonymousAuthentication" ), Messages.getString( "AuthenticationParameterPage.SimpleAuthentication" ), Messages.getString( "AuthenticationParameterPage.DigestMD5" ), Messages.getString( "AuthenticationParameterPage.CramMD5" ) }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+            { Messages.getString( "AuthenticationParameterPage.AnonymousAuthentication" ), //$NON-NLS-1$
+                Messages.getString( "AuthenticationParameterPage.SimpleAuthentication" ), //$NON-NLS-1$
+                Messages.getString( "AuthenticationParameterPage.DigestMD5" ), //$NON-NLS-1$
+                Messages.getString( "AuthenticationParameterPage.CramMD5" ), //$NON-NLS-1$
+                Messages.getString( "AuthenticationParameterPage.GSSAPI" ) }; //$NON-NLS-1$
         authenticationMethodCombo = BaseWidgetUtils.createReadonlyCombo( groupComposite, authMethods, 1, 2 );
 
+        // Authentication Parameter
         Composite composite2 = BaseWidgetUtils.createColumnContainer( parent, 1, 1 );
 
-        Group group2 = BaseWidgetUtils.createGroup( composite2, Messages.getString("AuthenticationParameterPage.AuthenticationParameter"), 1 ); //$NON-NLS-1$
+        Group group2 = BaseWidgetUtils.createGroup( composite2, Messages
+            .getString( "AuthenticationParameterPage.AuthenticationParameter" ), 1 ); //$NON-NLS-1$
         Composite composite = BaseWidgetUtils.createColumnContainer( group2, 3, 1 );
 
-        BaseWidgetUtils.createLabel( composite, Messages.getString("AuthenticationParameterPage.BindDNOrUser"), 1 ); //$NON-NLS-1$
+        BaseWidgetUtils.createLabel( composite, Messages.getString( "AuthenticationParameterPage.BindDNOrUser" ), 1 ); //$NON-NLS-1$
         String[] dnHistory = HistoryUtils.load( ConnectionUIConstants.DIALOGSETTING_KEY_PRINCIPAL_HISTORY );
         bindPrincipalCombo = BaseWidgetUtils.createCombo( composite, dnHistory, -1, 2 );
 
-        BaseWidgetUtils.createLabel( composite, Messages.getString("AuthenticationParameterPage.BindPassword"), 1 ); //$NON-NLS-1$
+        BaseWidgetUtils.createLabel( composite, Messages.getString( "AuthenticationParameterPage.BindPassword" ), 1 ); //$NON-NLS-1$
         bindPasswordText = BaseWidgetUtils.createPasswordText( composite, "", 2 ); //$NON-NLS-1$
 
-        BaseWidgetUtils.createLabel( composite, Messages.getString("AuthenticationParameterPage.SASLRealm"), 1 ); //$NON-NLS-1$
-        String[] saslHistory = HistoryUtils.load( ConnectionUIConstants.DIALOGSETTING_KEY_REALM_HISTORY );
-        saslRealmText = BaseWidgetUtils.createCombo( composite, saslHistory, -1, 2 );
-
         BaseWidgetUtils.createSpacer( composite, 1 );
-        saveBindPasswordButton = BaseWidgetUtils.createCheckbox( composite, Messages.getString("AuthenticationParameterPage.SavePassword"), 1 ); //$NON-NLS-1$
+        saveBindPasswordButton = BaseWidgetUtils.createCheckbox( composite, Messages
+            .getString( "AuthenticationParameterPage.SavePassword" ), 1 ); //$NON-NLS-1$
         saveBindPasswordButton.setSelection( true );
 
         checkPrincipalPasswordAuthButton = new Button( composite, SWT.PUSH );
         GridData gd = new GridData( GridData.FILL_HORIZONTAL );
         gd.horizontalAlignment = SWT.RIGHT;
         checkPrincipalPasswordAuthButton.setLayoutData( gd );
-        checkPrincipalPasswordAuthButton.setText( Messages.getString("AuthenticationParameterPage.CheckAuthentication") ); //$NON-NLS-1$
+        checkPrincipalPasswordAuthButton.setText( Messages
+            .getString( "AuthenticationParameterPage.CheckAuthentication" ) ); //$NON-NLS-1$
         checkPrincipalPasswordAuthButton.setEnabled( false );
+
+        ScrolledComposite sc = new ScrolledComposite( parent, SWT.H_SCROLL | SWT.V_SCROLL );
+        sc.setLayout( new GridLayout() );
+        sc.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, true ) );
+        Composite c = BaseWidgetUtils.createColumnContainer( sc, 1, 1 );
+        sc.setContent( c );
+
+        saslExpandableComposite = createExpandableSection( c, Messages
+            .getString( "AuthenticationParameterPage.SaslOptions" ), 1 ); //$NON-NLS-1$
+        saslComposite = BaseWidgetUtils.createColumnContainer( saslExpandableComposite, 2, 1 );
+        saslExpandableComposite.setClient( saslComposite );
+        createSaslControls();
+
+        krb5ExpandableComposite = createExpandableSection( c, Messages
+            .getString( "AuthenticationParameterPage.Krb5Options" ), 1 ); //$NON-NLS-1$
+        krb5Composite = BaseWidgetUtils.createColumnContainer( krb5ExpandableComposite, 1, 1 );
+        krb5ExpandableComposite.setClient( krb5Composite );
+        createKrb5Controls();
+
+        c.setSize( c.computeSize( SWT.DEFAULT, SWT.DEFAULT ) );
+    }
+
+
+    protected ExpandableComposite createExpandableSection( Composite parent, String label, int nColumns )
+    {
+        ExpandableComposite excomposite = new ExpandableComposite( parent, SWT.NONE, ExpandableComposite.TWISTIE
+            | ExpandableComposite.CLIENT_INDENT );
+        excomposite.setText( label );
+        excomposite.setExpanded( false );
+        excomposite.setFont( JFaceResources.getFontRegistry().getBold( JFaceResources.DIALOG_FONT ) );
+        excomposite.setLayoutData( new GridData( GridData.FILL, GridData.FILL, true, false, nColumns, 1 ) );
+        excomposite.addExpansionListener( new ExpansionAdapter()
+        {
+            public void expansionStateChanged( ExpansionEvent e )
+            {
+                ExpandableComposite excomposite = ( ExpandableComposite ) e.getSource();
+                excomposite.getParent().setSize( excomposite.getParent().computeSize( SWT.DEFAULT, SWT.DEFAULT ) );
+            }
+        } );
+        return excomposite;
+    }
+
+
+    private void createSaslControls()
+    {
+        BaseWidgetUtils.createLabel( saslComposite, Messages.getString( "AuthenticationParameterPage.SaslRealm" ), 1 ); //$NON-NLS-1$
+        String[] saslHistory = HistoryUtils.load( ConnectionUIConstants.DIALOGSETTING_KEY_REALM_HISTORY );
+        saslRealmText = BaseWidgetUtils.createCombo( saslComposite, saslHistory, -1, 1 );
+
+        BaseWidgetUtils.createLabel( saslComposite, Messages.getString( "AuthenticationParameterPage.SaslQop" ), 1 ); //$NON-NLS-1$
+        String[] qops = new String[]
+            { Messages.getString( "AuthenticationParameterPage.SaslQopAuth" ), //$NON-NLS-1$
+                Messages.getString( "AuthenticationParameterPage.SaslQopAuthInt" ), //$NON-NLS-1$
+                Messages.getString( "AuthenticationParameterPage.SaslQopAuthIntPriv" ) }; //$NON-NLS-1$
+        saslQopCombo = BaseWidgetUtils.createReadonlyCombo( saslComposite, qops, 0, 1 );
+
+        BaseWidgetUtils.createLabel( saslComposite, Messages
+            .getString( "AuthenticationParameterPage.SaslSecurityStrength" ), 1 ); //$NON-NLS-1$
+        String[] securityStrengths = new String[]
+            { Messages.getString( "AuthenticationParameterPage.SaslSecurityStrengthHigh" ), //$NON-NLS-1$
+                Messages.getString( "AuthenticationParameterPage.SaslSecurityStrengthMedium" ), //$NON-NLS-1$
+                Messages.getString( "AuthenticationParameterPage.SaslSecurityStrengthLow" ) }; //$NON-NLS-1$
+        saslSecurityStrengthCombo = BaseWidgetUtils.createReadonlyCombo( saslComposite, securityStrengths, 0, 1 );
+
+        saslMutualAuthenticationButton = BaseWidgetUtils.createCheckbox( saslComposite, Messages
+            .getString( "AuthenticationParameterPage.SaslMutualAuthentication" ), 2 ); //$NON-NLS-1$
+    }
+
+
+    private void createKrb5Controls()
+    {
+        Group credentialProviderGroup = BaseWidgetUtils.createGroup( krb5Composite, Messages
+            .getString( "AuthenticationParameterPage.Krb5CredentialConf" ), 1 ); //$NON-NLS-1$
+        Composite credentialProviderComposite = BaseWidgetUtils.createColumnContainer( credentialProviderGroup, 1, 1 );
+        krb5CredentialConfigurationUseNativeButton = BaseWidgetUtils.createRadiobutton( credentialProviderComposite,
+            Messages.getString( "AuthenticationParameterPage.Krb5CredentialConfUseNative" ), 1 ); //$NON-NLS-1$
+        krb5CredentialConfigurationUseNativeButton.setToolTipText( Messages
+            .getString( "AuthenticationParameterPage.Krb5CredentialConfUseNativeTooltip" ) ); //$NON-NLS-1$
+        krb5CredentialConfigurationUseNativeButton.setSelection( true );
+        krb5CredentialConfigurationObtainTgtButton = BaseWidgetUtils.createRadiobutton( credentialProviderComposite,
+            Messages.getString( "AuthenticationParameterPage.Krb5CredentialConfObtainTgt" ), 1 ); //$NON-NLS-1$
+        krb5CredentialConfigurationObtainTgtButton.setToolTipText( Messages
+            .getString( "AuthenticationParameterPage.Krb5CredentialConfObtainTgtTooltip" ) ); //$NON-NLS-1$
+
+        Group configGroup = BaseWidgetUtils.createGroup( krb5Composite, Messages
+            .getString( "AuthenticationParameterPage.Krb5Config" ), 1 ); //$NON-NLS-1$
+        Composite configComposite = BaseWidgetUtils.createColumnContainer( configGroup, 3, 1 );
+        krb5ConfigDefaultButton = BaseWidgetUtils.createRadiobutton( configComposite, Messages
+            .getString( "AuthenticationParameterPage.Krb5ConfigDefault" ), 3 ); //$NON-NLS-1$
+        krb5ConfigDefaultButton.setSelection( true );
+        krb5ConfigFileButton = BaseWidgetUtils.createRadiobutton( configComposite, Messages
+            .getString( "AuthenticationParameterPage.Krb5ConfigFile" ), 1 ); //$NON-NLS-1$
+        krb5ConfigFileText = BaseWidgetUtils.createText( configComposite, "", 2 ); //$NON-NLS-1$
+        krb5ConfigManualButton = BaseWidgetUtils.createRadiobutton( configComposite, Messages
+            .getString( "AuthenticationParameterPage.Krb5ConfigManual" ), 1 ); //$NON-NLS-1$
+        BaseWidgetUtils.createLabel( configComposite, Messages.getString( "AuthenticationParameterPage.Krb5Realm" ), 1 ); //$NON-NLS-1$
+        krb5ConfigManualRealmText = BaseWidgetUtils.createText( configComposite, "", 1 ); //$NON-NLS-1$
+        BaseWidgetUtils.createSpacer( configComposite, 1 );
+        BaseWidgetUtils.createLabel( configComposite,
+            Messages.getString( "AuthenticationParameterPage.Krb5KdcHost" ), 1 ); //$NON-NLS-1$
+        krb5ConfigManualHostText = BaseWidgetUtils.createText( configComposite, "", 1 ); //$NON-NLS-1$
+        BaseWidgetUtils.createSpacer( configComposite, 1 );
+        BaseWidgetUtils.createLabel( configComposite,
+            Messages.getString( "AuthenticationParameterPage.Krb5KdcPort" ), 1 ); //$NON-NLS-1$
+        krb5ConfigManualPortText = BaseWidgetUtils.createText( configComposite, "88", 1 ); //$NON-NLS-1$
+        krb5ConfigManualPortText.setTextLimit( 5 );
     }
 
 
@@ -226,12 +459,43 @@
     protected void validate()
     {
         // set enabled/disabled state of fields and buttons
+        if ( saslComposite != null )
+        {
+            for ( Control c : saslComposite.getChildren() )
+            {
+                c.setEnabled( isSaslEnabled() );
+            }
+            saslRealmText.setEnabled( isSaslRealmTextEnabled() );
+        }
+
+        // TODO: get setting from global preferences.
+        Preferences preferences = ConnectionCorePlugin.getDefault().getPluginPreferences();
+        boolean useKrb5SystemProperties = preferences
+            .getBoolean( ConnectionCoreConstants.PREFERENCE_USE_KRB5_SYSTEM_PROPERTIES );
+        if ( krb5Composite != null )
+        {
+            krb5CredentialConfigurationUseNativeButton.setEnabled( isGssapiEnabled() && !useKrb5SystemProperties );
+            krb5CredentialConfigurationObtainTgtButton.setEnabled( isGssapiEnabled() && !useKrb5SystemProperties );
+
+            krb5ConfigDefaultButton.setEnabled( isGssapiEnabled() && !useKrb5SystemProperties );
+            krb5ConfigFileButton.setEnabled( isGssapiEnabled() && !useKrb5SystemProperties );
+            krb5ConfigManualButton.setEnabled( isGssapiEnabled() && !useKrb5SystemProperties );
+
+            krb5ConfigFileText.setEnabled( isGssapiEnabled() && krb5ConfigFileButton.getSelection()
+                && !useKrb5SystemProperties );
+            krb5ConfigManualRealmText.setEnabled( isGssapiEnabled() && krb5ConfigManualButton.getSelection()
+                && !useKrb5SystemProperties );
+            krb5ConfigManualHostText.setEnabled( isGssapiEnabled() && krb5ConfigManualButton.getSelection()
+                && !useKrb5SystemProperties );
+            krb5ConfigManualPortText.setEnabled( isGssapiEnabled() && krb5ConfigManualButton.getSelection()
+                && !useKrb5SystemProperties );
+        }
         bindPrincipalCombo.setEnabled( isPrincipalPasswordEnabled() );
         bindPasswordText.setEnabled( isPrincipalPasswordEnabled() && isSaveBindPassword() );
         saveBindPasswordButton.setEnabled( isPrincipalPasswordEnabled() );
-        checkPrincipalPasswordAuthButton.setEnabled( isPrincipalPasswordEnabled() && isSaveBindPassword()
-            && !bindPrincipalCombo.getText().equals( "" ) && !bindPasswordText.getText().equals( "" ) ); //$NON-NLS-1$ //$NON-NLS-2$
-        saslRealmText.setEnabled( isSaslRealmTextEnabled() );
+        checkPrincipalPasswordAuthButton
+            .setEnabled( ( isPrincipalPasswordEnabled() && isSaveBindPassword()
+                && !bindPrincipalCombo.getText().equals( "" ) && !bindPasswordText.getText().equals( "" ) ) || isGssapiEnabled() ); //$NON-NLS-1$ //$NON-NLS-2$
 
         // validate input fields
         message = null;
@@ -241,11 +505,11 @@
         {
             if ( isSaveBindPassword() && "".equals( bindPasswordText.getText() ) ) //$NON-NLS-1$
             {
-                message = Messages.getString("AuthenticationParameterPage.PleaseEnterBindPassword"); //$NON-NLS-1$
+                message = Messages.getString( "AuthenticationParameterPage.PleaseEnterBindPassword" ); //$NON-NLS-1$
             }
-            if ( "".equals( bindPrincipalCombo.getText() ) ) //$NON-NLS-1$
+            if ( "".equals( bindPrincipalCombo.getText() ) && !isGssapiEnabled() ) //$NON-NLS-1$
             {
-                message = Messages.getString("AuthenticationParameterPage.PleaseEnterBindDNOrUser"); //$NON-NLS-1$
+                message = Messages.getString( "AuthenticationParameterPage.PleaseEnterBindDNOrUser" ); //$NON-NLS-1$
             }
         }
 
@@ -253,7 +517,31 @@
         {
             if ( "".equals( saslRealmText.getText() ) ) //$NON-NLS-1$
             {
-                infoMessage = Messages.getString("AuthenticationParameterPage.PleasEnterSASL"); //$NON-NLS-1$
+                infoMessage = Messages.getString( "AuthenticationParameterPage.PleaseEnterSaslRealm" ); //$NON-NLS-1$
+            }
+        }
+
+        if ( isGssapiEnabled() && krb5ConfigFileButton.getSelection() )
+        {
+            if ( "".equals( krb5ConfigFileText.getText() ) ) //$NON-NLS-1$
+            {
+                message = Messages.getString( "AuthenticationParameterPage.PleaseEnterKrb5ConfigFile" ); //$NON-NLS-1$
+            }
+        }
+
+        if ( isGssapiEnabled() && krb5ConfigManualButton.getSelection() )
+        {
+            if ( "".equals( krb5ConfigManualPortText.getText() ) ) //$NON-NLS-1$
+            {
+                message = Messages.getString( "AuthenticationParameterPage.PleaseEnterKrb5Port" ); //$NON-NLS-1$
+            }
+            if ( "".equals( krb5ConfigManualHostText.getText() ) ) //$NON-NLS-1$
+            {
+                message = Messages.getString( "AuthenticationParameterPage.PleaseEnterKrb5Host" ); //$NON-NLS-1$
+            }
+            if ( "".equals( krb5ConfigManualRealmText.getText() ) ) //$NON-NLS-1$
+            {
+                message = Messages.getString( "AuthenticationParameterPage.PleaseEnterKrb5Realm" ); //$NON-NLS-1$
             }
         }
     }
@@ -268,7 +556,9 @@
     {
         return ( getAuthenticationMethod() == AuthenticationMethod.SIMPLE )
             || ( getAuthenticationMethod() == AuthenticationMethod.SASL_DIGEST_MD5 )
-            || ( getAuthenticationMethod() == AuthenticationMethod.SASL_CRAM_MD5 );
+            || ( getAuthenticationMethod() == AuthenticationMethod.SASL_CRAM_MD5 )
+            || ( getAuthenticationMethod() == AuthenticationMethod.SASL_GSSAPI && krb5CredentialConfigurationObtainTgtButton
+                .getSelection() );
     }
 
 
@@ -278,6 +568,14 @@
     }
 
 
+    private boolean isSaslEnabled()
+    {
+        return ( getAuthenticationMethod() == AuthenticationMethod.SASL_DIGEST_MD5 )
+            || ( getAuthenticationMethod() == AuthenticationMethod.SASL_CRAM_MD5 )
+            || ( getAuthenticationMethod() == AuthenticationMethod.SASL_GSSAPI );
+    }
+
+
     private boolean isGssapiEnabled()
     {
         return getAuthenticationMethod() == AuthenticationMethod.SASL_GSSAPI;
@@ -299,7 +597,28 @@
         bindPrincipalCombo.setText( parameter.getBindPrincipal() );
         bindPasswordText.setText( parameter.getBindPassword() != null ? parameter.getBindPassword() : "" ); //$NON-NLS-1$
         saveBindPasswordButton.setSelection( parameter.getBindPassword() != null );
+
         saslRealmText.setText( parameter.getSaslRealm() != null ? parameter.getSaslRealm() : "" ); //$NON-NLS-1$
+        int qopIndex = parameter.getSaslQop() == SaslQop.AUTH_INT ? 1
+            : parameter.getSaslQop() == SaslQop.AUTH_INT_PRIV ? 2 : 0;
+        saslQopCombo.select( qopIndex );
+        int securityStrengthIndex = parameter.getSaslSecurityStrength() == SaslSecurityStrength.MEDIUM ? 1 : parameter
+            .getSaslSecurityStrength() == SaslSecurityStrength.LOW ? 2 : 0;
+        saslSecurityStrengthCombo.select( securityStrengthIndex );
+        saslMutualAuthenticationButton.setSelection( parameter.isSaslMutualAuthentication() );
+
+        krb5CredentialConfigurationUseNativeButton
+            .setSelection( parameter.getKrb5CredentialConfiguration() == Krb5CredentialConfiguration.USE_NATIVE );
+        krb5CredentialConfigurationObtainTgtButton
+            .setSelection( parameter.getKrb5CredentialConfiguration() == Krb5CredentialConfiguration.OBTAIN_TGT );
+        krb5ConfigDefaultButton.setSelection( parameter.getKrb5Configuration() == Krb5Configuration.DEFAULT );
+        krb5ConfigFileButton.setSelection( parameter.getKrb5Configuration() == Krb5Configuration.FILE );
+        krb5ConfigManualButton.setSelection( parameter.getKrb5Configuration() == Krb5Configuration.MANUAL );
+        krb5ConfigFileText.setText( parameter.getKrb5ConfigurationFile() != null ? parameter.getKrb5ConfigurationFile()
+            : "" ); //$NON-NLS-1$
+        krb5ConfigManualRealmText.setText( parameter.getKrb5Realm() != null ? parameter.getKrb5Realm() : "" ); //$NON-NLS-1$
+        krb5ConfigManualHostText.setText( parameter.getKrb5KdcHost() != null ? parameter.getKrb5KdcHost() : "" ); //$NON-NLS-1$
+        krb5ConfigManualPortText.setText( parameter.getKrb5KdcPort() != 0 ? "" + parameter.getKrb5KdcPort() : "" ); //$NON-NLS-1$
     }
 
 
@@ -332,6 +651,30 @@
             }
         } );
 
+        saveBindPasswordButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent event )
+            {
+                connectionPageModified();
+            }
+        } );
+
+        checkPrincipalPasswordAuthButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent e )
+            {
+                Connection connection = getTestConnection();
+                CheckBindRunnable runnable = new CheckBindRunnable( connection );
+                IStatus status = RunnableContextRunner.execute( runnable, runnableContext, true );
+                if ( status.isOK() )
+                {
+                    MessageDialog.openInformation( Display.getDefault().getActiveShell(), Messages
+                        .getString( "AuthenticationParameterPage.CheckAuthentication" ), //$NON-NLS-1$
+                        Messages.getString( "AuthenticationParameterPage.AuthenticationSuccessfull" ) ); //$NON-NLS-1$
+                }
+            }
+        } );
+
         saslRealmText.addModifyListener( new ModifyListener()
         {
             public void modifyText( ModifyEvent even )
@@ -340,7 +683,7 @@
             }
         } );
 
-        saveBindPasswordButton.addSelectionListener( new SelectionAdapter()
+        saslQopCombo.addSelectionListener( new SelectionAdapter()
         {
             public void widgetSelected( SelectionEvent event )
             {
@@ -348,20 +691,104 @@
             }
         } );
 
-        checkPrincipalPasswordAuthButton.addSelectionListener( new SelectionAdapter()
+        saslSecurityStrengthCombo.addSelectionListener( new SelectionAdapter()
         {
-            public void widgetSelected( SelectionEvent e )
+            public void widgetSelected( SelectionEvent event )
             {
-                Connection connection = getTestConnection();
-                CheckBindRunnable runnable = new CheckBindRunnable( connection );
-                IStatus status = RunnableContextRunner.execute( runnable, runnableContext, true );
-                if ( status.isOK() )
+                connectionPageModified();
+            }
+        } );
+
+        saslMutualAuthenticationButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent event )
+            {
+                connectionPageModified();
+            }
+        } );
+
+        krb5CredentialConfigurationUseNativeButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent event )
+            {
+                connectionPageModified();
+            }
+        } );
+
+        krb5CredentialConfigurationObtainTgtButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent event )
+            {
+                connectionPageModified();
+            }
+        } );
+
+        krb5ConfigDefaultButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent event )
+            {
+                connectionPageModified();
+            }
+        } );
+
+        krb5ConfigFileButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent event )
+            {
+                connectionPageModified();
+            }
+        } );
+
+        krb5ConfigFileText.addModifyListener( new ModifyListener()
+        {
+            public void modifyText( ModifyEvent event )
+            {
+                connectionPageModified();
+            }
+        } );
+
+        krb5ConfigManualButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent event )
+            {
+                connectionPageModified();
+            }
+        } );
+
+        krb5ConfigManualRealmText.addModifyListener( new ModifyListener()
+        {
+            public void modifyText( ModifyEvent event )
+            {
+                connectionPageModified();
+            }
+        } );
+
+        krb5ConfigManualHostText.addModifyListener( new ModifyListener()
+        {
+            public void modifyText( ModifyEvent event )
+            {
+                connectionPageModified();
+            }
+        } );
+
+        krb5ConfigManualPortText.addVerifyListener( new VerifyListener()
+        {
+            public void verifyText( VerifyEvent event )
+            {
+                if ( !event.text.matches( "[0-9]*" ) ) //$NON-NLS-1$
                 {
-                    MessageDialog.openInformation( Display.getDefault().getActiveShell(), Messages.getString("AuthenticationParameterPage.CheckAuthentication"), //$NON-NLS-1$
-                        Messages.getString("AuthenticationParameterPage.AuthenticationSuccessfull") ); //$NON-NLS-1$
+                    event.doit = false;
                 }
             }
         } );
+
+        krb5ConfigManualPortText.addModifyListener( new ModifyListener()
+        {
+            public void modifyText( ModifyEvent event )
+            {
+                connectionPageModified();
+            }
+        } );
     }
 
 
@@ -373,7 +800,18 @@
         parameter.setAuthMethod( getAuthenticationMethod() );
         parameter.setBindPrincipal( getBindPrincipal() );
         parameter.setBindPassword( getBindPassword() );
+
         parameter.setSaslRealm( getSaslRealm() );
+        parameter.setSaslQop( getSaslQop() );
+        parameter.setSaslSecurityStrength( getSaslSecurityStrength() );
+        parameter.setSaslMutualAuthentication( saslMutualAuthenticationButton.getSelection() );
+
+        parameter.setKrb5CredentialConfiguration( getKrb5CredentialProvider() );
+        parameter.setKrb5Configuration( getKrb5Configuration() );
+        parameter.setKrb5ConfigurationFile( krb5ConfigFileText.getText() );
+        parameter.setKrb5Realm( krb5ConfigManualRealmText.getText() );
+        parameter.setKrb5KdcHost( krb5ConfigManualHostText.getText() );
+        parameter.setKrb5KdcPort( getKdcPort() );
     }
 
 
@@ -416,7 +854,16 @@
         return connectionParameter == null || connectionParameter.getAuthMethod() != getAuthenticationMethod()
             || !StringUtils.equals( connectionParameter.getBindPrincipal(), getBindPrincipal() )
             || !StringUtils.equals( connectionParameter.getBindPassword(), getBindPassword() )
-            || !StringUtils.equals( connectionParameter.getSaslRealm(), getSaslRealm() );
+            || !StringUtils.equals( connectionParameter.getSaslRealm(), getSaslRealm() )
+            || connectionParameter.getSaslQop() != getSaslQop()
+            || connectionParameter.getSaslSecurityStrength() != getSaslSecurityStrength()
+            || connectionParameter.isSaslMutualAuthentication() != saslMutualAuthenticationButton.getSelection()
+            || connectionParameter.getKrb5CredentialConfiguration() != getKrb5CredentialProvider()
+            || connectionParameter.getKrb5Configuration() != getKrb5Configuration()
+            || !StringUtils.equals( connectionParameter.getKrb5ConfigurationFile(), krb5ConfigFileText.getText() )
+            || !StringUtils.equals( connectionParameter.getKrb5Realm(), krb5ConfigManualRealmText.getText() )
+            || !StringUtils.equals( connectionParameter.getKrb5KdcHost(), krb5ConfigManualHostText.getText() )
+            || connectionParameter.getKrb5KdcPort() != getKdcPort();
     }
 
 
@@ -433,6 +880,9 @@
             case SASL_DIGEST_MD5:
                 ldapUrl.getExtensions().add( new Extension( false, X_AUTH_METHOD, X_AUTH_METHOD_DIGEST_MD5 ) );
                 break;
+            case SASL_GSSAPI:
+                ldapUrl.getExtensions().add( new Extension( false, X_AUTH_METHOD, X_AUTH_METHOD_GSSAPI ) );
+                break;
             case SIMPLE:
                 if ( StringUtils.isEmpty( parameter.getBindPrincipal() ) )
                 {
@@ -459,9 +909,84 @@
             ldapUrl.getExtensions().add( new Extension( false, X_BIND_PASSWORD, parameter.getBindPassword() ) );
         }
 
-        if ( StringUtils.isNotEmpty( parameter.getSaslRealm() ) )
+        switch ( parameter.getAuthMethod() )
+        {
+            case SASL_CRAM_MD5:
+            case SASL_DIGEST_MD5:
+            case SASL_GSSAPI:
+                if ( StringUtils.isNotEmpty( parameter.getSaslRealm() ) )
+                {
+                    ldapUrl.getExtensions().add( new Extension( false, X_SASL_REALM, parameter.getSaslRealm() ) );
+                }
+
+                switch ( parameter.getSaslQop() )
+                {
+                    case AUTH:
+                        // default
+                        break;
+                    case AUTH_INT:
+                        ldapUrl.getExtensions().add( new Extension( false, X_SASL_QOP, X_SASL_QOP_AUTH_INT ) );
+                        break;
+                    case AUTH_INT_PRIV:
+                        ldapUrl.getExtensions().add( new Extension( false, X_SASL_QOP, X_SASL_QOP_AUTH_INT_PRIV ) );
+                        break;
+                }
+
+                switch ( parameter.getSaslSecurityStrength() )
+                {
+                    case HIGH:
+                        // default
+                        break;
+                    case MEDIUM:
+                        ldapUrl.getExtensions().add(
+                            new Extension( false, X_SASL_SEC_STRENGTH, X_SASL_SEC_STRENGTH_MEDIUM ) );
+                        break;
+                    case LOW:
+                        ldapUrl.getExtensions().add(
+                            new Extension( false, X_SASL_SEC_STRENGTH, X_SASL_SEC_STRENGTH_LOW ) );
+                        break;
+                }
+
+                if ( !parameter.isSaslMutualAuthentication() )
+                {
+                    ldapUrl.getExtensions().add( new Extension( false, X_SASL_NO_MUTUAL_AUTH, null ) );
+                }
+        }
+
+        switch ( parameter.getAuthMethod() )
         {
-            ldapUrl.getExtensions().add( new Extension( false, X_SASL_REALM, parameter.getSaslRealm() ) );
+            case SASL_GSSAPI:
+                switch ( parameter.getKrb5CredentialConfiguration() )
+                {
+                    case USE_NATIVE:
+                        // default
+                        break;
+                    case OBTAIN_TGT:
+                        ldapUrl.getExtensions().add(
+                            new Extension( false, X_KRB5_CREDENTIALS_CONF, X_KRB5_CREDENTIALS_CONF_OBTAIN_TGT ) );
+                        break;
+                }
+
+                switch ( parameter.getKrb5Configuration() )
+                {
+                    case DEFAULT:
+                        // default
+                        break;
+                    case FILE:
+                        ldapUrl.getExtensions().add( new Extension( false, X_KRB5_CONFIG, X_KRB5_CONFIG_FILE ) );
+                        ldapUrl.getExtensions().add(
+                            new Extension( false, X_KRB5_CONFIG_FILE_FILE, parameter.getKrb5ConfigurationFile() ) );
+                        break;
+                    case MANUAL:
+                        ldapUrl.getExtensions().add( new Extension( false, X_KRB5_CONFIG, X_KRB5_CONFIG_MANUAL ) );
+                        ldapUrl.getExtensions().add(
+                            new Extension( false, X_KRB5_CONFIG_MANUAL_REALM, parameter.getKrb5Realm() ) );
+                        ldapUrl.getExtensions().add(
+                            new Extension( false, X_KRB5_CONFIG_MANUAL_KDC_HOST, parameter.getKrb5KdcHost() ) );
+                        ldapUrl.getExtensions().add(
+                            new Extension( false, X_KRB5_CONFIG_MANUAL_KDC_PORT, "" + parameter.getKrb5KdcPort() ) );
+                        break;
+                }
         }
     }
 
@@ -515,5 +1040,81 @@
         {
             parameter.setSaslRealm( saslRealm );
         }
+
+        // SASL QOP, default to AUTH
+        String saslQop = ldapUrl.getExtensionValue( X_SASL_QOP );
+        if ( StringUtils.isNotEmpty( saslQop ) && X_SASL_QOP_AUTH_INT.equalsIgnoreCase( saslQop ) )
+        {
+            parameter.setSaslQop( SaslQop.AUTH_INT );
+        }
+        else if ( StringUtils.isNotEmpty( saslQop ) && X_SASL_QOP_AUTH_INT_PRIV.equalsIgnoreCase( saslQop ) )
+        {
+            parameter.setSaslQop( SaslQop.AUTH_INT_PRIV );
+        }
+        else
+        {
+            parameter.setSaslQop( SaslQop.AUTH );
+        }
+
+        // SASL security strength, default to HIGH
+        String saslSecStrength = ldapUrl.getExtensionValue( X_SASL_SEC_STRENGTH );
+        if ( StringUtils.isNotEmpty( saslSecStrength ) && X_SASL_SEC_STRENGTH_MEDIUM.equalsIgnoreCase( saslSecStrength ) )
+        {
+            parameter.setSaslSecurityStrength( SaslSecurityStrength.MEDIUM );
+        }
+        else if ( StringUtils.isNotEmpty( saslSecStrength )
+            && X_SASL_SEC_STRENGTH_LOW.equalsIgnoreCase( saslSecStrength ) )
+        {
+            parameter.setSaslSecurityStrength( SaslSecurityStrength.LOW );
+        }
+        else
+        {
+            parameter.setSaslSecurityStrength( SaslSecurityStrength.HIGH );
+        }
+
+        // SASL mutual authentication, default to true
+        Extension saslNoMutualAuth = ldapUrl.getExtension( X_SASL_NO_MUTUAL_AUTH );
+        parameter.setSaslMutualAuthentication( saslNoMutualAuth == null );
+
+        // KRB5 credentials
+        String krb5CredentialsConf = ldapUrl.getExtensionValue( X_KRB5_CREDENTIALS_CONF );
+        if ( StringUtils.isNotEmpty( krb5CredentialsConf )
+            && X_KRB5_CREDENTIALS_CONF_OBTAIN_TGT.equalsIgnoreCase( krb5CredentialsConf ) )
+        {
+            parameter.setKrb5CredentialConfiguration( Krb5CredentialConfiguration.OBTAIN_TGT );
+        }
+        else
+        {
+            parameter.setKrb5CredentialConfiguration( Krb5CredentialConfiguration.USE_NATIVE );
+        }
+
+        // KRB5 configuration
+        String krb5Config = ldapUrl.getExtensionValue( X_KRB5_CONFIG );
+        if ( StringUtils.isNotEmpty( krb5Config ) && X_KRB5_CONFIG_FILE.equalsIgnoreCase( krb5Config ) )
+        {
+            parameter.setKrb5Configuration( Krb5Configuration.FILE );
+        }
+        else if ( StringUtils.isNotEmpty( krb5Config ) && X_KRB5_CONFIG_MANUAL.equalsIgnoreCase( krb5Config ) )
+        {
+            parameter.setKrb5Configuration( Krb5Configuration.MANUAL );
+        }
+        else
+        {
+            parameter.setKrb5Configuration( Krb5Configuration.DEFAULT );
+        }
+
+        parameter.setKrb5ConfigurationFile( ldapUrl.getExtensionValue( X_KRB5_CONFIG_FILE_FILE ) );
+        parameter.setKrb5Realm( ldapUrl.getExtensionValue( X_KRB5_CONFIG_MANUAL_REALM ) );
+        parameter.setKrb5KdcHost( ldapUrl.getExtensionValue( X_KRB5_CONFIG_MANUAL_KDC_HOST ) );
+
+        String kdcPort = ldapUrl.getExtensionValue( X_KRB5_CONFIG_MANUAL_KDC_PORT );
+        try
+        {
+            parameter.setKrb5KdcPort( new Integer( kdcPort ).intValue() );
+        }
+        catch ( NumberFormatException e )
+        {
+            parameter.setKrb5KdcPort( 88 );
+        }
     }
 }

Modified: directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/messages.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/messages.properties?rev=802731&r1=802730&r2=802731&view=diff
==============================================================================
--- directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/messages.properties (original)
+++ directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/messages.properties Mon Aug 10 10:56:07 2009
@@ -25,13 +25,43 @@
 AuthenticationParameterPage.CheckAuthentication       = Check Authentication
 AuthenticationParameterPage.CramMD5                   = CRAM-MD5 (SASL)
 AuthenticationParameterPage.DigestMD5                 = DIGEST-MD5 (SASL)
-AuthenticationParameterPage.PleasEnterSASL            = Please enter an SASL Realm otherwise any available SASL realm is choosen
+AuthenticationParameterPage.GSSAPI                    = GSSAPI (Kerberos)
+AuthenticationParameterPage.PleaseEnterSaslRealm      = Please enter an SASL Realm otherwise any available SASL realm is choosen
 AuthenticationParameterPage.PleaseEnterBindDNOrUser   = Please enter a bind DN or user.
 AuthenticationParameterPage.PleaseEnterBindPassword   = Please enter a bind password.
-AuthenticationParameterPage.SASLRealm                 = SASL Realm:
+AuthenticationParameterPage.SaslRealm                 = SASL Realm:
 AuthenticationParameterPage.SavePassword              = Save password
 AuthenticationParameterPage.SimpleAuthentication      = Simple Authentication
 
+AuthenticationParameterPage.SaslOptions=SASL Settings
+AuthenticationParameterPage.SaslQop=Quality of Protection:
+AuthenticationParameterPage.SaslQopAuth=Authentication only
+AuthenticationParameterPage.SaslQopAuthInt=Authentication with integrity protection
+AuthenticationParameterPage.SaslQopAuthIntPriv=Authentication with integrity and privacy protection 
+AuthenticationParameterPage.SaslSecurityStrength=Protection Strength:
+AuthenticationParameterPage.SaslSecurityStrengthLow=Low
+AuthenticationParameterPage.SaslSecurityStrengthMedium=Medium
+AuthenticationParameterPage.SaslSecurityStrengthHigh=High
+AuthenticationParameterPage.SaslMutualAuthentication=Mutual Authentication
+
+AuthenticationParameterPage.Krb5Options=Kerberos Settings
+AuthenticationParameterPage.Krb5Config=Kerberos Configuration
+AuthenticationParameterPage.Krb5ConfigDefault=Use native system configuration
+AuthenticationParameterPage.Krb5ConfigFile=Use configuration file:
+AuthenticationParameterPage.Krb5ConfigManual=Use following configuration:
+AuthenticationParameterPage.Krb5KdcHost=KDC Host:
+AuthenticationParameterPage.Krb5KdcPort=KDC Port:
+AuthenticationParameterPage.Krb5Realm=Kerberos Realm:
+AuthenticationParameterPage.Krb5CredentialConf=Kerberos Credential Configuration
+AuthenticationParameterPage.Krb5CredentialConfUseNative=Use native TGT
+AuthenticationParameterPage.Krb5CredentialConfUseNativeTooltip=The native credentials cache is used. On Windows systems a key must be added to the registry!
+AuthenticationParameterPage.Krb5CredentialConfObtainTgt=Obtain TGT from KDC (provide username and password)
+AuthenticationParameterPage.Krb5CredentialConfObtainTgtTooltip=A new TGT is obtained from KDC, therefore you need to specify your Kerberos principal and password.
+AuthenticationParameterPage.PleaseEnterKrb5ConfigFile = Please enter the path to Kerberos configuration file (krb5.conf)
+AuthenticationParameterPage.PleaseEnterKrb5Port=Please enter the KDC Port
+AuthenticationParameterPage.PleaseEnterKrb5Host=Please enter the KDC Hostname
+AuthenticationParameterPage.PleaseEnterKrb5Realm=Please enter the Kerberos Realm (Domain)
+
 CertificateInfoComposite.Certificate               = Certificate
 CertificateInfoComposite.CertificateFieldsLabel    = Certificate Fields
 CertificateInfoComposite.CertificateHierarchyLabel = Certificate Hierarchy

Modified: directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/messages_de.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/messages_de.properties?rev=802731&r1=802730&r2=802731&view=diff
==============================================================================
--- directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/messages_de.properties (original)
+++ directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/messages_de.properties Mon Aug 10 10:56:07 2009
@@ -25,12 +25,42 @@
 AuthenticationParameterPage.CheckAuthentication       = Authentifizierung \u00FCberpr\u00FCfen
 AuthenticationParameterPage.CramMD5                   = CRAM-MD5 (SASL)
 AuthenticationParameterPage.DigestMD5                 = DIGEST-MD5 (SASL)
-AuthenticationParameterPage.PleasEnterSASL            = Geben Sie bitte einen SASL Realm ein, ansonsten wird (irgend-) ein verf\u00FCgbarer SASL Realm ausgew\u00E4hlt
+AuthenticationParameterPage.PleaseEnterSaslRealm      = Geben Sie bitte einen SASL Realm ein, ansonsten wird (irgend-) ein verf\u00FCgbarer SASL Realm ausgew\u00E4hlt
 AuthenticationParameterPage.PleaseEnterBindDNOrUser   = Bitte Bind DN oder Benutzer eingeben.
 AuthenticationParameterPage.PleaseEnterBindPassword   = Bitte Bind Passwort eingeben.
 AuthenticationParameterPage.SavePassword              = Passwort speichern
 AuthenticationParameterPage.SimpleAuthentication      = Einfache Authentifizierung
 
+
+AuthenticationParameterPage.SaslOptions=SASL Einstellungen
+AuthenticationParameterPage.SaslQop=Datenschutz (Quality of Protection):
+AuthenticationParameterPage.SaslQopAuth=Nur Authentifizierung
+AuthenticationParameterPage.SaslQopAuthInt=Authentifizierung plus Integrit\u00E4tssicherung
+AuthenticationParameterPage.SaslQopAuthIntPriv=Authentifizierung plus Integrit\u00E4tssicherung und Verschl\u00FCsselung
+AuthenticationParameterPage.SaslSecurityStrength=Schutzstärke (Protection Strength):
+AuthenticationParameterPage.SaslSecurityStrengthLow=Niedrig
+AuthenticationParameterPage.SaslSecurityStrengthMedium=Mittel
+AuthenticationParameterPage.SaslSecurityStrengthHigh=Hoch
+AuthenticationParameterPage.SaslMutualAuthentication=Gegenseitige Authentifizierung
+
+AuthenticationParameterPage.Krb5Options=Kerberos Einstellungen
+AuthenticationParameterPage.Krb5Config=Kerberos Konfiguration
+AuthenticationParameterPage.Krb5ConfigDefault=Benutze native System Konfiguration
+AuthenticationParameterPage.Krb5ConfigFile=Benutze folgende Konfigurationsdatei:
+AuthenticationParameterPage.Krb5ConfigManual=Benutze folgende Einstellungen:
+AuthenticationParameterPage.Krb5KdcHost=KDC Host:
+AuthenticationParameterPage.Krb5KdcPort=KDC Port:
+AuthenticationParameterPage.Krb5Realm=Kerberos Realm:
+AuthenticationParameterPage.Krb5CredentialConf=Kerberos Ticket Einstellungen
+AuthenticationParameterPage.Krb5CredentialConfUseNative=Benutze natives TGT
+AuthenticationParameterPage.Krb5CredentialConfUseNativeTooltip=Der native Ticket Cache wird benutzt. Auf Windows System muss hierfür die Registry angepasst werden!
+AuthenticationParameterPage.Krb5CredentialConfObtainTgt=TGT vom KDC anfordern (Benutzername und Passwort eingeben)
+AuthenticationParameterPage.Krb5CredentialConfObtainTgtTooltip=Ein neues TGT wird vom KDC angefordert, hierfür muss der Kerberos Benutzer und das Passwort angegeben werden)
+AuthenticationParameterPage.PleaseEnterKrb5ConfigFile=Bitte Pfad zur Kerberos Konfigurationsdatei angeben (krb5.conf).
+AuthenticationParameterPage.PleaseEnterKrb5Port=Bitte KDC Port eingeben.
+AuthenticationParameterPage.PleaseEnterKrb5Host=Bitte KDC Hostname eingeben.
+AuthenticationParameterPage.PleaseEnterKrb5Realm=Bitte die Kerberos Realm (Dom\u00E4ne) eingeben.
+
 CertificateInfoComposite.Certificate               = Zertifikat
 CertificateInfoComposite.CertificateFieldsLabel    = Zertifikatsfelder
 CertificateInfoComposite.CertificateHierarchyLabel = Zertifikatshierarchie

Modified: directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/messages_fr.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/messages_fr.properties?rev=802731&r1=802730&r2=802731&view=diff
==============================================================================
--- directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/messages_fr.properties (original)
+++ directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/messages_fr.properties Mon Aug 10 10:56:07 2009
@@ -23,13 +23,43 @@
 AuthenticationParameterPage.BindDNOrUser              = Bind DN ou nom d'utilisateur (SASL):
 AuthenticationParameterPage.BindPassword              = Mot de passe:
 AuthenticationParameterPage.CheckAuthentication       = V\u00E9rifier l'authentification
-AuthenticationParameterPage.PleasEnterSASL            = Veuillez entrer un domaine SASL sinon un des domaines disponibles sera s\u00E9lectionn\u00E9.
+AuthenticationParameterPage.PleaseEnterSaslRealm      = Veuillez entrer un domaine SASL sinon un des domaines disponibles sera s\u00E9lectionn\u00E9.
 AuthenticationParameterPage.PleaseEnterBindDNOrUser   = Veuillez entrer un DN ou un identifiant d'utilisateur.
 AuthenticationParameterPage.PleaseEnterBindPassword   = Veuillez entrer un mot de passe
-AuthenticationParameterPage.SASLRealm                 = Realm SASL:
+AuthenticationParameterPage.SaslRealm                 = Realm SASL:
 AuthenticationParameterPage.SavePassword              = Sauvegarder le mot de passe
 AuthenticationParameterPage.SimpleAuthentication      = Authentification simple
 
+
+AuthenticationParameterPage.SaslOptions=TODO:SASL Settings
+AuthenticationParameterPage.SaslQop=TODO:Quality of Protection:
+AuthenticationParameterPage.SaslQopAuth=TODO:Authentication only
+AuthenticationParameterPage.SaslQopAuthInt=TODO:Authentication with integrity protection
+AuthenticationParameterPage.SaslQopAuthIntPriv=TODO:Authentication with integrity and privacy protection 
+AuthenticationParameterPage.SaslSecurityStrength=TODO:Security Strength:
+AuthenticationParameterPage.SaslSecurityStrengthLow=TODO:Low
+AuthenticationParameterPage.SaslSecurityStrengthMedium=TODO:Medium
+AuthenticationParameterPage.SaslSecurityStrengthHigh=TODO:High
+AuthenticationParameterPage.SaslMutualAuthentication=TODO:Mutual Authentication
+
+AuthenticationParameterPage.Krb5Options=TODO:Kerberos Settings
+AuthenticationParameterPage.Krb5Config=TODO:Kerberos Configuration
+AuthenticationParameterPage.Krb5ConfigDefault=TODO:Use native system configuration
+AuthenticationParameterPage.Krb5ConfigFile=TODO:Use configuration file:
+AuthenticationParameterPage.Krb5ConfigManual=TODO:Use following configuration:
+AuthenticationParameterPage.Krb5KdcHost=TODO:KDC Host:
+AuthenticationParameterPage.Krb5KdcPort=TODO:KDC Port:
+AuthenticationParameterPage.Krb5Realm=TODO:Kerberos Realm:
+AuthenticationParameterPage.Krb5CredentialConf=TODO:Kerberos Credential Configuration
+AuthenticationParameterPage.Krb5CredentialConfUseNative=TODO:Use native TGT
+AuthenticationParameterPage.Krb5CredentialConfUseNativeTooltip=TODO:The native credentials cache is used. On Windows systems a key must be added to the registry!
+AuthenticationParameterPage.Krb5CredentialConfObtainTgt=TODO:Obtain TGT from KDC (provide username and password)
+AuthenticationParameterPage.Krb5CredentialConfObtainTgtTooltip=TODO:A new TGT is obtained from KDC, therefore you need to specify your Kerberos principal and password.
+AuthenticationParameterPage.PleaseEnterKrb5ConfigFile=TODO:Please enter the path to Kerberos configuration file (krb5.conf)
+AuthenticationParameterPage.PleaseEnterKrb5Port=TODO:Please enter the KDC Port
+AuthenticationParameterPage.PleaseEnterKrb5Host=TODO:Please enter the KDC Hostname
+AuthenticationParameterPage.PleaseEnterKrb5Realm=TODO:Please enter the Kerberos Realm (Domain)
+
 CertificateInfoComposite.Certificate               = Certificat
 CertificateInfoComposite.CertificateFieldsLabel    = Champs du certificat
 CertificateInfoComposite.CertificateHierarchyLabel = Hi\u00E9rarchie des certificats

Modified: directory/studio/trunk/rcp/Studio-Runtime.launch
URL: http://svn.apache.org/viewvc/directory/studio/trunk/rcp/Studio-Runtime.launch?rev=802731&r1=802730&r2=802731&view=diff
==============================================================================
--- directory/studio/trunk/rcp/Studio-Runtime.launch (original)
+++ directory/studio/trunk/rcp/Studio-Runtime.launch Mon Aug 10 10:56:07 2009
@@ -14,7 +14,7 @@
 <booleanAttribute key="includeOptional" value="true"/>
 <stringAttribute key="location" value="${workspace_loc}/../runtime-studio"/>
 <booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/CDC-1.0%Foundation-1.0"/>
 <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl en"/>
 <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
 <stringAttribute key="pde.version" value="3.3"/>
@@ -39,24 +39,24 @@
 <mapEntry key="org.eclipse.wst.common.environment/trace/warning" value="true"/>
 <mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>
 <mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>
 <mapEntry key="org.eclipse.wst.sse.ui/actioncontributor/debugstatusfields" value="true"/>
+<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>
+<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/>
 <mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>
 <mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>
 <mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>
 <mapEntry key="org.eclipse.wst.sse.ui/contentOutline" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/preferences-properties" value="false"/>
 <mapEntry key="org.eclipse.wtp.common/debug/logtrace" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/preferences-properties" value="false"/>
 <mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>
 <mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>
 <mapEntry key="org.eclipse.wst.sse.core/tasks/detection" value="false"/>
 <mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>
 <mapEntry key="org.eclipse.wst.sse.ui/propertySheet" value="false"/>
+<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>
 <mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>
 <mapEntry key="org.eclipse.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>
 <mapEntry key="org.eclipse.wtp.common/debug/loglevel" value="WARNING"/>
 <mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>
 <mapEntry key="org.eclipse.jem.proxy/debug/logtrace" value="default"/>
@@ -64,14 +64,14 @@
 <mapEntry key="org.eclipse.pde.core/classpath" value="false"/>
 <mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>
 <mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.core/format" value="false"/>
 <mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/format" value="false"/>
 <mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>
 <mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>
 <mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/>
-<mapEntry key="org.eclipse.jst.jsp.core/taglib/resolve" value="false"/>
-<mapEntry key="org.eclipse.team.core/threading" value="false"/>
 <mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>
+<mapEntry key="org.eclipse.team.core/threading" value="false"/>
+<mapEntry key="org.eclipse.jst.jsp.core/taglib/resolve" value="false"/>
 <mapEntry key="org.eclipse.wst.sse.core/structureddocument" value="false"/>
 <mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>
 <mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>
@@ -86,11 +86,11 @@
 <mapEntry key="org.eclipse.debug.ui/debug" value="false"/>
 <mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>
 <mapEntry key="org.eclipse.help.base/debug/search" value="false"/>
-<mapEntry key="org.eclipse.pde.build/debug" value="false"/>
 <mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>
+<mapEntry key="org.eclipse.pde.build/debug" value="false"/>
 <mapEntry key="org.eclipse.wst.common.environment/trace/ws_ant" value="true"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>
 <mapEntry key="org.maven.ide.eclipse/launcher" value="false"/>
+<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>
 <mapEntry key="org.eclipse.wst.sse.core/tasks/overalltime" value="false"/>
 <mapEntry key="org.eclipse.wst.sse.core/structuredmodel/state" value="false"/>
 <mapEntry key="org.eclipse.wst.server.ui/extension_point" value="false"/>
@@ -98,8 +98,8 @@
 <mapEntry key="org.eclipse.jst.jsp.core/debug/jsptranslationstodisk" value="false"/>
 <mapEntry key="org.eclipse.update.core/debug/type" value="false"/>
 <mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>
 <mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>
+<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>
 <mapEntry key="org.eclipse.wst.common.project.facet.core/actionSorting" value="false"/>
 <mapEntry key="org.eclipse.jem.ui/debug/logtracefile" value="default"/>
 <mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>
@@ -114,21 +114,21 @@
 <mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>
 <mapEntry key="org.eclipse.jst.jsp.core/taglib/indextime" value="false"/>
 <mapEntry key="org.eclipse.jem.util/debug/logtrace" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>
-<mapEntry key="org.eclipse.jem.beaninfo/debug/loglevel" value="default"/>
 <mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>
+<mapEntry key="org.eclipse.jem.beaninfo/debug/loglevel" value="default"/>
+<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>
 <mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>
 <mapEntry key="org.eclipse.wst.javascript.core/debug" value="true"/>
 <mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>
 <mapEntry key="org.eclipse.wst.sse.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>
 <mapEntry key="org.eclipse.wst.common.environment/trace/info" value="true"/>
+<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>
 <mapEntry key="org.eclipse.jst.jsp.core/debug/tldcmdocument/cache" value="false"/>
 <mapEntry key="org.eclipse.jst.jsp.core/taglib/events" value="false"/>
 <mapEntry key="org.eclipse.help.base/debug" value="true"/>
 <mapEntry key="org.eclipse.wst.server.ui/performance" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.core/structuredmodel/modelmanager" value="false"/>
 <mapEntry key="org.eclipse.jem.proxy/remote/debug/debugvm" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/structuredmodel/modelmanager" value="false"/>
 <mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>
 <mapEntry key="org.eclipse.wst.css.core/debug" value="true"/>
 <mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>
@@ -141,11 +141,11 @@
 <mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>
 <mapEntry key="org.eclipse.jst.server.tomcat.core/debug" value="true"/>
 <mapEntry key="org.eclipse.wst.sse.ui/extendedconfigurationbuilder" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>
 <mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>
+<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>
 <mapEntry key="org.eclipse.wst.xml.core/debug/cmdocumentmanager" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>
 <mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>
 <mapEntry key="org.eclipse.ui.ide/debug" value="false"/>
 <mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>
 <mapEntry key="org.eclipse.pde.core/debug" value="true"/>
@@ -155,16 +155,16 @@
 <mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>
 <mapEntry key="org.eclipse.jst.jsp.core/debug/jsptranslation" value="false"/>
 <mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>
 <mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>
 <mapEntry key="org.eclipse.core.resources/strings" value="false"/>
 <mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>
 <mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>
-<mapEntry key="org.eclipse.wst.server.core/extension_point" value="false"/>
 <mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>
-<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>
+<mapEntry key="org.eclipse.wst.server.core/extension_point" value="false"/>
 <mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>
+<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>
 <mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>
 <mapEntry key="org.eclipse.jdt.apt.core/debug" value="false"/>
 <mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>
@@ -175,14 +175,14 @@
 <mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>
 <mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>
 <mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>
-<mapEntry key="org.eclipse.wst.server.ui/debug" value="true"/>
 <mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>
+<mapEntry key="org.eclipse.wst.server.ui/debug" value="true"/>
 <mapEntry key="org.eclipse.jst.jsp.core/debug/taglibvars" value="false"/>
 <mapEntry key="org.eclipse.update.core/debug" value="true"/>
-<mapEntry key="org.eclipse.wst.sse.core/tasks/preferences" value="false"/>
 <mapEntry key="org.eclipse.osgi/debug/security" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks/preferences" value="false"/>
 <mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>
+<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>
 <mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>
 <mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>
 <mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/>
@@ -191,16 +191,16 @@
 <mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>
 <mapEntry key="org.eclipse.wst.css.ui/projectionperf" value="false"/>
 <mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>
-<mapEntry key="org.eclipse.pde.core/validation" value="false"/>
 <mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>
+<mapEntry key="org.eclipse.pde.core/validation" value="false"/>
 <mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/readtime" value="false"/>
 <mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>
 <mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.core/tasks" value="false"/>
 <mapEntry key="org.eclipse.core.runtime/debug" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks" value="false"/>
 <mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>
-<mapEntry key="org.eclipse.jem.proxy/debug/logtracefile" value="default"/>
 <mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>
+<mapEntry key="org.eclipse.jem.proxy/debug/logtracefile" value="default"/>
 <mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>
 <mapEntry key="org.eclipse.wst.xml.core/debug/tracefilter" value=""/>
 <mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>
@@ -210,16 +210,16 @@
 <mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>
 <mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>
 <mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>
 <mapEntry key="org.eclipse.wst.dtd.ui/projectionperf" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>
 <mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>
 <mapEntry key="org.eclipse.core.resources/restore" value="false"/>
 <mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>
 <mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>
 <mapEntry key="org.eclipse.wst.server.core/performance" value="false"/>
 <mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>
 <mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>
 <mapEntry key="org.eclipse.osgi/resolver/grouping" value="false"/>
 <mapEntry key="org.eclipse.wst.sse.ui/debug/reconcilerjob" value="false"/>
 <mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>
@@ -235,8 +235,8 @@
 <mapEntry key="org.eclipse.wst.internet.monitor.core/debug" value="true"/>
 <mapEntry key="org.eclipse.wst.server.core/resources" value="false"/>
 <mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>
-<mapEntry key="org.eclipse.help/debug/protocols" value="false"/>
 <mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>
+<mapEntry key="org.eclipse.help/debug/protocols" value="false"/>
 <mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>
 <mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>
 <mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>
@@ -245,19 +245,19 @@
 <mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>
 <mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>
 <mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>
 <mapEntry key="org.eclipse.jem/debug/loglevel" value="default"/>
+<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>
 <mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>
 <mapEntry key="org.eclipse.jst.jsp.core/debug" value="true"/>
 <mapEntry key="org.eclipse.help/debug/context" value="false"/>
 <mapEntry key="org.eclipse.wst.sse.ui/debug/reconcilerValidators" value="false"/>
 <mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>
-<mapEntry key="org.eclipse.jem.proxy/remote/debug/ioconsole" value="false"/>
 <mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/>
+<mapEntry key="org.eclipse.jem.proxy/remote/debug/ioconsole" value="false"/>
 <mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFiles" value="false"/>
 <mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/>
-<mapEntry key="org.eclipse.jst.jsp.core/debug/tldcmdocument/manager" value="false"/>
 <mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>
+<mapEntry key="org.eclipse.jst.jsp.core/debug/tldcmdocument/manager" value="false"/>
 <mapEntry key="org.eclipse.jem.beaninfo/debug/logtracefile" value="default"/>
 <mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>
 <mapEntry key="org.eclipse.jem.proxy/debug/loglevel" value="default"/>
@@ -267,15 +267,15 @@
 <mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>
 <mapEntry key="org.eclipse.team.core/debug" value="false"/>
 <mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>
 <mapEntry key="org.maven.ide.eclipse/plugin" value="false"/>
-<mapEntry key="org.eclipse.wst.html.core/debug/tracefilter" value=""/>
+<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>
 <mapEntry key="org.eclipse.wst.xml.ui/projectionperf" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save" value="false"/>
+<mapEntry key="org.eclipse.wst.html.core/debug/tracefilter" value=""/>
 <mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>
+<mapEntry key="org.eclipse.core.resources/save" value="false"/>
 <mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>
 <mapEntry key="org.eclipse.jem.util/debug/loglevel" value="WARNING"/>
+<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>
 <mapEntry key="org.eclipse.jem/debug/logtrace" value="default"/>
 <mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>
 <mapEntry key="org.eclipse.osgi/debug/events" value="false"/>
@@ -292,8 +292,8 @@
 <mapEntry key="org.eclipse.ui.intro/debug" value="true"/>
 <mapEntry key="org.eclipse.wst.html.core/debug" value="true"/>
 <mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/>
-<mapEntry key="org.eclipse.jem.ui/debug/loglevel" value="default"/>
 <mapEntry key="org.eclipse.wst.internet.monitor.core/parsing" value="false"/>
+<mapEntry key="org.eclipse.jem.ui/debug/loglevel" value="default"/>
 <mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>
 <mapEntry key="org.eclipse.pde.core/cache" value="false"/>
 <mapEntry key="org.eclipse.wst.sse.ui/extendedconfigurationbuilder/time" value="false"/>
@@ -301,10 +301,10 @@
 <mapEntry key="org.eclipse.wst.sse.ui/filemodelprovider/lifecyclelistener" value="false"/>
 <mapEntry key="org.eclipse.debug.core/debug/events" value="false"/>
 <mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>
 <mapEntry key="org.eclipse.wst.sse.core/filebuffers/modelmanagement" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>
+<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>
 <mapEntry key="org.eclipse.wst.sse.ui/debug/tracefilter" value=""/>
+<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>
 <mapEntry key="org.eclipse.wtp.common/debug/logtracefile" value="false"/>
 <mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>
 <mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>
@@ -317,11 +317,11 @@
 <mapEntry key="org.eclipse.core.resources/natures" value="false"/>
 <mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>
 <mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>
-<mapEntry key="org.eclipse.wst.common.project.facet.core/activation" value="false"/>
 <mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>
+<mapEntry key="org.eclipse.wst.common.project.facet.core/activation" value="false"/>
 <mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>
 <mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>
 <mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>
 <mapEntry key="org.maven.ide.eclipse/actions" value="false"/>
 <mapEntry key="org.eclipse.team.core/streams" value="false"/>
@@ -358,13 +358,13 @@
 <mapEntry key="org.eclipse.wst.javascript.core/debug/tracefilter" value=""/>
 <mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>
 <mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>
 <mapEntry key="org.eclipse.wst.sse.core/dom/adapter/notification/time/criteria" value="10"/>
+<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>
 <mapEntry key="org.eclipse.wst.common.environment/trace/data" value="true"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>
 <mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>
+<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>
 <mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>
+<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>
 <mapEntry key="org.eclipse.wst.sse.core/debug" value="true"/>
 <mapEntry key="org.eclipse.jdt.apt.pluggable.core/debug" value="false"/>
 <mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>
@@ -385,14 +385,14 @@
 <mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>
 <mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>
 <mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.core/structuredmodel/locks" value="true"/>
 <mapEntry key="org.eclipse.wst.sse.core/filebuffers/lifecycle" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/structuredmodel/locks" value="true"/>
 <mapEntry key="org.eclipse.jst.jsp.core/debug/tldcmdocument/factory" value="false"/>
 <mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>
 <mapEntry key="org.eclipse.wst.common.environment/debug" value="true"/>
 <mapEntry key="org.eclipse.update.configurator/debug" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>
 <mapEntry key="org.eclipse.help.ui/debug" value="true"/>
+<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>
 <mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>
 <mapEntry key="org.eclipse.wst.sse.ui/debug/reconcilerSpelling" value="false"/>
 <mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>