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 2008/08/18 14:46:46 UTC
svn commit: r686742 - in /directory/studio/trunk/connection-core: plugin.xml
src/main/java/org/apache/directory/studio/connection/core/ConnectionManager.java
src/main/resources/connectionInitializer.exsd
Author: seelmann
Date: Mon Aug 18 05:46:45 2008
New Revision: 686742
URL: http://svn.apache.org/viewvc?rev=686742&view=rev
Log:
Fix for DIRSTUDIO-358: Applied patch from Prakash G.R.. It adds an extension point to the connection plugin that makes it possible to define initial connections for Studio.
Added:
directory/studio/trunk/connection-core/src/main/resources/connectionInitializer.exsd
Modified:
directory/studio/trunk/connection-core/plugin.xml
directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionManager.java
Modified: directory/studio/trunk/connection-core/plugin.xml
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-core/plugin.xml?rev=686742&r1=686741&r2=686742&view=diff
==============================================================================
--- directory/studio/trunk/connection-core/plugin.xml (original)
+++ directory/studio/trunk/connection-core/plugin.xml Mon Aug 18 05:46:45 2008
@@ -21,6 +21,7 @@
<plugin>
<extension-point id="org.apache.directory.studio.jndilogger" name="JNDI Logger" schema="src/main/resources/jndiLogger.exsd"/>
<extension-point id="org.apache.directory.studio.connectionlistener" name="Connection Listener" schema="src/main/resources/connectionListener.exsd"/>
+ <extension-point id="org.apache.directory.studio.connectionInitializer" name="Connection Initializer" schema="src/main/resources/connectionInitializer.exsd"/>
<extension
point="org.apache.directory.studio.jndilogger">
<jndiLogger
Modified: directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionManager.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionManager.java?rev=686742&r1=686741&r2=686742&view=diff
==============================================================================
--- directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionManager.java (original)
+++ directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionManager.java Mon Aug 18 05:46:45 2008
@@ -34,7 +34,13 @@
import org.apache.directory.studio.connection.core.event.ConnectionUpdateListener;
import org.apache.directory.studio.connection.core.io.ConnectionIO;
import org.apache.directory.studio.connection.core.io.ConnectionIOException;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
/**
@@ -56,12 +62,62 @@
public ConnectionManager()
{
this.connectionList = new HashSet<Connection>();
+ loadInitializers();
loadConnections();
ConnectionEventRegistry.addConnectionUpdateListener( this, ConnectionCorePlugin.getDefault().getEventRunner() );
}
/**
+ * Loads the Connection Initializers. This happens only for the first time,
+ * which is determined by whether or not the connectionStore file is present.
+ */
+ private void loadInitializers()
+ {
+ File connectionStore = new File( getConnectionStoreFileName() );
+ if ( connectionStore.exists() )
+ {
+ return; // connections are stored from a previous sessions - don't call initializers
+ }
+
+ IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(
+ "org.apache.directory.studio.connectionInitializer" );
+
+ IConfigurationElement[] configurationElements = extensionPoint.getConfigurationElements();
+ for ( IConfigurationElement configurationElement : configurationElements )
+ {
+ if ( "connection".equals( configurationElement.getName() ) )
+ {
+ addInitialConnection( configurationElement );
+ }
+ }
+ }
+
+
+ /**
+ * Creates the ConnectionParameter from the configElement and creates the connection.
+ *
+ * @param configurationElement The configuration element
+ */
+ private void addInitialConnection( IConfigurationElement configurationElement )
+ {
+ try
+ {
+ ConnectionParameter connectionParameter = ( ConnectionParameter ) configurationElement
+ .createExecutableExtension( "class" );
+ Connection conn = new Connection( connectionParameter );
+ connectionList.add( conn );
+ }
+ catch ( CoreException e )
+ {
+ Status status = new Status( IStatus.ERROR, ConnectionCorePlugin.PLUGIN_ID,
+ "Exception occured while executing connection initializer: " + e.getMessage(), e );
+ ConnectionCorePlugin.getDefault().getLog().log( status );
+ }
+ }
+
+
+ /**
* Gets the Modification Log filename for the corresponding connection.
*
* @param connection
@@ -98,8 +154,7 @@
{
file.mkdir();
}
- return p
- .append( "search-" + Utils.getFilenameString( connection.getId() ) + "-%u-%g.ldiflog" ).toOSString(); //$NON-NLS-1$ //$NON-NLS-2$
+ return p.append( "search-" + Utils.getFilenameString( connection.getId() ) + "-%u-%g.ldiflog" ).toOSString(); //$NON-NLS-1$ //$NON-NLS-2$
}
@@ -151,7 +206,7 @@
*/
public Connection getConnectionById( String id )
{
- for ( Connection conn:connectionList )
+ for ( Connection conn : connectionList )
{
if ( conn.getConnectionParameter().getId().equals( id ) )
{
@@ -172,7 +227,7 @@
*/
public Connection getConnectionByName( String name )
{
- for ( Connection conn:connectionList )
+ for ( Connection conn : connectionList )
{
if ( conn.getConnectionParameter().getName().equals( name ) )
{
Added: directory/studio/trunk/connection-core/src/main/resources/connectionInitializer.exsd
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-core/src/main/resources/connectionInitializer.exsd?rev=686742&view=auto
==============================================================================
--- directory/studio/trunk/connection-core/src/main/resources/connectionInitializer.exsd (added)
+++ directory/studio/trunk/connection-core/src/main/resources/connectionInitializer.exsd Mon Aug 18 05:46:45 2008
@@ -0,0 +1,132 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.apache.directory.studio.connection.core" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.apache.directory.studio.connection.core" id="connectionInitializer" name="Connection Initializer"/>
+ </appinfo>
+ <documentation>
+ A Connection Initializer that creates the default connections in the Connections View.
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="connection" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="connection">
+ <complexType>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn="org.apache.directory.studio.connection.core.ConnectionParameter:"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ 1.5.0
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="implementation"/>
+ </appinfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="copyright"/>
+ </appinfo>
+ <documentation>
+ 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.
+ </documentation>
+ </annotation>
+
+</schema>