<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<!--
  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.
-->
<plugin>
   <extension-point id="org.apache.directory.studio.jndilogger" name="%ExtensionPoint_JndiLogger_name" schema="src/main/resources/jndiLogger.exsd"/>
   <extension-point id="org.apache.directory.studio.connectionlistener" name="%ExtensionPoint_ConnectionListener_name" schema="src/main/resources/connectionListener.exsd"/>
   <extension-point id="org.apache.directory.studio.connectionInitializer" name="%ExtensionPoint_ConnectionInitializer_name" schema="src/main/resources/connectionInitializer.exsd"/>
   <extension
         point="org.apache.directory.studio.jndilogger">
      <jndiLogger
            class="org.apache.directory.studio.connection.core.io.jndi.LdifModificationLogger"
            description="%JndiLogger_LdifModificationLogger_description"
            id="%JndiLogger_LdifModificationLogger_id"
            name="%JndiLogger_LdifModificationLogger_name">
      </jndiLogger>
      <jndiLogger
            class="org.apache.directory.studio.connection.core.io.jndi.LdifSearchLogger"
            description="%JndiLogger_LdifSearchLogger_description"
            id="%JndiLogger_LdifSearchLogger_id"
            name="%JndiLogger_LdifSearchLogger_name">
      </jndiLogger>
   </extension>
   <extension
         point="org.eclipse.core.runtime.preferences">
      <initializer
            class="org.apache.directory.studio.connection.core.ConnectionCorePreferencesInitializer">
      </initializer>
   </extension>

</plugin>
