You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by pa...@apache.org on 2010/08/18 15:25:08 UTC

svn commit: r986663 - in /directory/studio/trunk/plugins/ldapservers.apacheds.v153: ./ resources/icons/ src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/

Author: pamarcelot
Date: Wed Aug 18 13:25:07 2010
New Revision: 986663

URL: http://svn.apache.org/viewvc?rev=986663&view=rev
Log:
Added an action which create a connection in the LDAP Browser perspective from the selected LDAP Server in the Servers view.

Added:
    directory/studio/trunk/plugins/ldapservers.apacheds.v153/resources/icons/
    directory/studio/trunk/plugins/ldapservers.apacheds.v153/resources/icons/connection_new.gif   (with props)
    directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/CreateConnectionAction.java
Modified:
    directory/studio/trunk/plugins/ldapservers.apacheds.v153/plugin.xml
    directory/studio/trunk/plugins/ldapservers.apacheds.v153/pom.xml
    directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/ApacheDS153LdapServerAdapter.java
    directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/messages.properties
    directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/messages_de.properties
    directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/messages_fr.properties

Modified: directory/studio/trunk/plugins/ldapservers.apacheds.v153/plugin.xml
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/ldapservers.apacheds.v153/plugin.xml?rev=986663&r1=986662&r2=986663&view=diff
==============================================================================
--- directory/studio/trunk/plugins/ldapservers.apacheds.v153/plugin.xml (original)
+++ directory/studio/trunk/plugins/ldapservers.apacheds.v153/plugin.xml Wed Aug 18 13:25:07 2010
@@ -11,4 +11,25 @@
             version="1.5.3">
       </ldapServerAdapter>
    </extension>
+   
+   <extension
+         point="org.eclipse.ui.popupMenus">
+      <objectContribution
+            objectClass="org.apache.directory.studio.ldapservers.model.LdapServer"
+            id="org.apache.directory.studio.ldapservers.model.LdapServer">
+         <action
+               class="org.apache.directory.studio.ldapservers.apacheds.v153.CreateConnectionAction"
+               enablesFor="1"
+               id="org.apache.directory.studio.ldapservers.apacheds.v153.CreateConnectionAction"
+               label="Create a Connection"
+               icon="resources/icons/connection_new.gif">
+         </action>
+         <visibility>
+               <objectState
+                     name="extensionId"
+                     value="org.apache.directory.server.1.5.3">
+               </objectState>
+         </visibility>
+      </objectContribution>
+   </extension>
 </plugin>

Modified: directory/studio/trunk/plugins/ldapservers.apacheds.v153/pom.xml
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/ldapservers.apacheds.v153/pom.xml?rev=986663&r1=986662&r2=986663&view=diff
==============================================================================
--- directory/studio/trunk/plugins/ldapservers.apacheds.v153/pom.xml (original)
+++ directory/studio/trunk/plugins/ldapservers.apacheds.v153/pom.xml Wed Aug 18 13:25:07 2010
@@ -118,6 +118,7 @@
  org.apache.directory.studio.apacheds.configuration,
  org.apache.directory.studio.common.core,
  org.apache.directory.studio.common.ui,
+ org.apache.directory.studio.connection.core,
  org.apache.directory.studio.ldapservers,
  org.dom4j.dom4j;bundle-version="${org.dom4j.version}",
  org.eclipse.core.runtime,
@@ -426,6 +427,11 @@
     </dependency>
     <dependency>
       <groupId>org.apache.directory.studio</groupId>
+      <artifactId>connection.core</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.directory.studio</groupId>
       <artifactId>ldapservers</artifactId>
       <scope>provided</scope>
     </dependency>

Added: directory/studio/trunk/plugins/ldapservers.apacheds.v153/resources/icons/connection_new.gif
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/ldapservers.apacheds.v153/resources/icons/connection_new.gif?rev=986663&view=auto
==============================================================================
Binary file - no diff available.

Propchange: directory/studio/trunk/plugins/ldapservers.apacheds.v153/resources/icons/connection_new.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/ApacheDS153LdapServerAdapter.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/ApacheDS153LdapServerAdapter.java?rev=986663&r1=986662&r2=986663&view=diff
==============================================================================
--- directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/ApacheDS153LdapServerAdapter.java (original)
+++ directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/ApacheDS153LdapServerAdapter.java Wed Aug 18 13:25:07 2010
@@ -28,7 +28,6 @@ import java.io.IOException;
 import java.io.InputStream;
 
 import org.apache.directory.studio.apacheds.configuration.editor.ServerConfigurationEditor;
-import org.apache.directory.studio.apacheds.configuration.model.ServerConfiguration;
 import org.apache.directory.studio.apacheds.configuration.model.ServerXmlIOException;
 import org.apache.directory.studio.apacheds.configuration.model.v153.ServerConfigurationV153;
 import org.apache.directory.studio.apacheds.configuration.model.v153.ServerXmlIOV153;
@@ -209,14 +208,14 @@ public class ApacheDS153LdapServerAdapte
     * @throws ServerXmlIOException 
     * @throws FileNotFoundException 
     */
-    private ServerConfiguration getServerConfiguration( LdapServer server ) throws ServerXmlIOException,
+    public static ServerConfigurationV153 getServerConfiguration( LdapServer server ) throws ServerXmlIOException,
         FileNotFoundException
     {
         InputStream fis = new FileInputStream( LdapServersManager.getServerFolder( server ).append( "conf" )
             .append( "server.xml" ).toFile() );
 
         ServerXmlIOV153 serverXmlIOV153 = new ServerXmlIOV153();
-        return serverXmlIOV153.parse( fis );
+        return ( ServerConfigurationV153 ) serverXmlIOV153.parse( fis );
     }
 
 
@@ -232,7 +231,7 @@ public class ApacheDS153LdapServerAdapte
      */
     private int getTestingPort( LdapServer server ) throws ServerXmlIOException, IOException
     {
-        ServerConfigurationV153 configuration = ( ServerConfigurationV153 ) getServerConfiguration( server );
+        ServerConfigurationV153 configuration = getServerConfiguration( server );
 
         // LDAP
         if ( configuration.isEnableLdap() )

Added: directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/CreateConnectionAction.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/CreateConnectionAction.java?rev=986663&view=auto
==============================================================================
--- directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/CreateConnectionAction.java (added)
+++ directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/CreateConnectionAction.java Wed Aug 18 13:25:07 2010
@@ -0,0 +1,204 @@
+/*
+ *  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.ldapservers.apacheds.v153;
+
+
+import org.apache.directory.studio.apacheds.configuration.model.v153.ServerConfigurationV153;
+import org.apache.directory.studio.connection.core.Connection;
+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.EncryptionMethod;
+import org.apache.directory.studio.ldapservers.actions.CreateConnectionActionHelper;
+import org.apache.directory.studio.ldapservers.model.LdapServer;
+import org.apache.directory.studio.ldapservers.views.ServersView;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+
+
+/**
+ * This class implements the create connection action for an ApacheDS 1.5.3 server.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class CreateConnectionAction implements IObjectActionDelegate
+{
+    private static final String EXTENSION_ID = "org.apache.directory.server.1.5.3";
+
+    /** The {@link ServersView} */
+    private ServersView view;
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void run( IAction action )
+    {
+        if ( view != null )
+        {
+            // Getting the selection
+            StructuredSelection selection = ( StructuredSelection ) view.getViewer().getSelection();
+            if ( ( !selection.isEmpty() ) && ( selection.size() == 1 ) )
+            {
+                // Getting the server
+                LdapServer server = ( LdapServer ) selection.getFirstElement();
+
+                // Checking that the server is really an ApacheDS 1.5.3 server
+                // TODO
+                if ( !EXTENSION_ID.equalsIgnoreCase( server.getLdapServerAdapterExtension().getId() ) )
+                {
+                    String message = Messages.getString( "CreateConnectionAction.UnableReadServerConfiguration" ) //$NON-NLS-1$
+                        + "\n\n" // TODO
+                        + Messages.getString( "CreateConnectionAction.NotA153Server" ); //$NON-NLS-1$
+
+                    reportErrorReadingServerConfiguration( view, message );
+                    return;
+                }
+
+                // Parsing the 'server.xml' file
+                ServerConfigurationV153 serverConfiguration = null;
+                try
+                {
+                    serverConfiguration = ApacheDS153LdapServerAdapter.getServerConfiguration( server );
+                }
+                catch ( Exception e )
+                {
+                    String message = Messages.getString( "CreateConnectionAction.UnableReadServerConfiguration" ) //$NON-NLS-1$
+                        + "\n\n" // TODO
+                        + Messages.getString( "CreateConnectionAction.FollowingErrorOccurred" ) + e.getMessage(); //$NON-NLS-1$
+
+                    reportErrorReadingServerConfiguration( view, message );
+                    return;
+                }
+
+                // Checking if we could read the 'server.xml' file
+                if ( serverConfiguration == null )
+                {
+                    reportErrorReadingServerConfiguration( view,
+                        Messages.getString( "CreateConnectionAction.UnableReadServerConfiguration" ) ); //$NON-NLS-1$
+                    return;
+                }
+
+                // Checking is LDAP and/or LDAPS is/are enabled
+                if ( ( serverConfiguration.isEnableLdap() ) || ( serverConfiguration.isEnableLdaps() ) )
+                {
+                    // Creating the connection using the helper class
+                    createConnection( server, serverConfiguration );
+                }
+                else
+                {
+                    // LDAP and LDAPS protocols are disabled, we report this error to the user
+                    MessageDialog dialog = new MessageDialog( view.getSite().getShell(),
+                        Messages.getString( "CreateConnectionAction.UnableCreateConnection" ), null, //$NON-NLS-1$
+                        Messages.getString( "CreateConnectionAction.LDAPAndLDAPSDisabled" ), MessageDialog.ERROR, //$NON-NLS-1$
+                        new String[]
+                            { IDialogConstants.OK_LABEL }, MessageDialog.OK );
+                    dialog.open();
+                    // TODO use common methods in Common UI plugin
+                }
+            }
+        }
+    }
+
+
+    /**
+     * Reports to the user an error message indicating the server 
+     * configuration could not be read correctly.
+     *
+     * @param message
+     *      the message
+     */
+    private void reportErrorReadingServerConfiguration( ServersView view, String message )
+    {
+        MessageDialog dialog = new MessageDialog( view.getSite().getShell(),
+            Messages.getString( "CreateConnectionAction.UnableReadServerConfiguration" ), //$NON-NLS-1$
+            null, message, MessageDialog.ERROR, new String[]
+                { IDialogConstants.OK_LABEL }, MessageDialog.OK );
+        dialog.open();
+        // TODO use common methods in Common UI plugin
+    }
+
+
+    /**
+     * Creates the connection
+     */
+    private void createConnection( LdapServer server, ServerConfigurationV153 configuration )
+    {
+        // Creating the connection parameter object
+        ConnectionParameter connectionParameter = new ConnectionParameter();
+
+        // Authentication method
+        connectionParameter.setAuthMethod( AuthenticationMethod.SIMPLE );
+
+        // LDAP or LDAPS?
+        if ( configuration.isEnableLdap() )
+        {
+            connectionParameter.setEncryptionMethod( EncryptionMethod.NONE );
+            connectionParameter.setPort( configuration.getLdapPort() );
+        }
+        else if ( configuration.isEnableLdaps() )
+        {
+            connectionParameter.setEncryptionMethod( EncryptionMethod.LDAPS );
+            connectionParameter.setPort( configuration.getLdapsPort() );
+        }
+
+        // Bind password
+        connectionParameter.setBindPassword( "secret" ); //$NON-NLS-1$
+
+        // Bind principal
+        connectionParameter.setBindPrincipal( "uid=admin,ou=system" ); //$NON-NLS-1$
+
+        // Host
+        connectionParameter.setHost( "localhost" ); //$NON-NLS-1$
+
+        // Name
+        connectionParameter.setName( server.getName() );
+
+        // Creating the connection
+        CreateConnectionActionHelper.createLdapBrowserConnection( server, new Connection( connectionParameter ) );
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void selectionChanged( IAction action, ISelection selection )
+    {
+        // Nothing to do
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void setActivePart( IAction action, IWorkbenchPart targetPart )
+    {
+        // Storing the Servers view
+        if ( targetPart instanceof ServersView )
+        {
+            view = ( ServersView ) targetPart;
+        }
+    }
+}

Modified: directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/messages.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/messages.properties?rev=986663&r1=986662&r2=986663&view=diff
==============================================================================
--- directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/messages.properties (original)
+++ directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/messages.properties Wed Aug 18 13:25:07 2010
@@ -16,3 +16,9 @@
 # under the License.
 
 ApacheDS153Plugin.UnableGetPluginProperties=Unable to get the plugin properties.
+
+CreateConnectionAction.FollowingErrorOccurred=The following error occurred\: 
+CreateConnectionAction.LDAPAndLDAPSDisabled=LDAP and LDAPS protocols are disabled. A connection cannot be created.
+CreateConnectionAction.NotA153Server=This server is not an ApacheDS 1.5.3 server.
+CreateConnectionAction.UnableCreateConnection=Unable to create a connection
+CreateConnectionAction.UnableReadServerConfiguration=Unable to read the server configuration.

Modified: directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/messages_de.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/messages_de.properties?rev=986663&r1=986662&r2=986663&view=diff
==============================================================================
--- directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/messages_de.properties (original)
+++ directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/messages_de.properties Wed Aug 18 13:25:07 2010
@@ -16,3 +16,9 @@
 # under the License.
 
 ApacheDS153Plugin.UnableGetPluginProperties=Die Plugin Eigenschaften k\u00F6nnen nicht geladen werden.
+
+CreateConnectionAction.FollowingErrorOccurred=Es ist folgender Fehler aufgetreten\: 
+CreateConnectionAction.LDAPAndLDAPSDisabled=Die Protokolle LDAP und LDAPS sind gesperrt. Es kann keine Verbindung erstellt werden.
+CreateConnectionAction.NotA153Server=TODO:This server is not an ApacheDS 1.5.3 server.
+CreateConnectionAction.UnableCreateConnection=Unf\u00E4hig eine Verbindung zu erstellen
+CreateConnectionAction.UnableReadServerConfiguration=Unf\u00E4hig die Server Konfiguration zu lesen.

Modified: directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/messages_fr.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/messages_fr.properties?rev=986663&r1=986662&r2=986663&view=diff
==============================================================================
--- directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/messages_fr.properties (original)
+++ directory/studio/trunk/plugins/ldapservers.apacheds.v153/src/main/java/org/apache/directory/studio/ldapservers/apacheds/v153/messages_fr.properties Wed Aug 18 13:25:07 2010
@@ -16,3 +16,9 @@
 # under the License.
 
 ApacheDS153Plugin.UnableGetPluginProperties=Impossible de r\u00E9cup\u00E9rer les propri\u00E9t\u00E9s de ce plugin
+
+CreateConnectionAction.FollowingErrorOccurred= L'erreur suivante est survenue \:
+CreateConnectionAction.LDAPAndLDAPSDisabled=Les protocoles LDAP et LDAPS sont d\u00E9sactiv\u00E9s. Il n'est pas possible de cr\u00E9er une connexion. 
+CreateConnectionAction.NotA153Server=Ce serveur n'est pas un serveur ApacheDS 1.5.3.
+CreateConnectionAction.UnableCreateConnection=Impossible de cr\u00E9er une connexion.
+CreateConnectionAction.UnableReadServerConfiguration=Impossible de lire la configuration du serveur.