You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2010/10/05 00:59:49 UTC

svn commit: r1004472 - in /directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config: ConfigPartitionReader.java beans/ beans/JournalBean.java beans/TcpTransportBean.java beans/TransportBean.java beans/UdpTransportBean.java

Author: elecharny
Date: Mon Oct  4 22:59:48 2010
New Revision: 1004472

URL: http://svn.apache.org/viewvc?rev=1004472&view=rev
Log:
o Created some beans to store the configuration read from the ldif files.
o Added methods to read the Ldif config into beans before instanciating the real objects

Added:
    directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/
    directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/JournalBean.java
    directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/TcpTransportBean.java
    directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/TransportBean.java
    directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/UdpTransportBean.java
Modified:
    directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java

Modified: directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java?rev=1004472&r1=1004471&r2=1004472&view=diff
==============================================================================
--- directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java (original)
+++ directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java Mon Oct  4 22:59:48 2010
@@ -57,6 +57,10 @@ import java.util.TreeSet;
 import javax.naming.directory.SearchControls;
 
 import org.apache.directory.server.changepw.ChangePasswordServer;
+import org.apache.directory.server.config.beans.JournalBean;
+import org.apache.directory.server.config.beans.TcpTransportBean;
+import org.apache.directory.server.config.beans.TransportBean;
+import org.apache.directory.server.config.beans.UdpTransportBean;
 import org.apache.directory.server.core.DefaultDirectoryService;
 import org.apache.directory.server.core.DirectoryService;
 import org.apache.directory.server.core.authn.AuthenticationInterceptor;
@@ -1246,58 +1250,83 @@ public class ConfigPartitionReader
         return transports.toArray( new Transport[]
             {} );
     }
-
-
-    //This will suppress PMD.AvoidUsingHardCodedIP warnings in this class
-    @SuppressWarnings("PMD.AvoidUsingHardCodedIP")
-    public Transport createTransport( Entry transportEntry ) throws Exception
+    
+    
+    public TransportBean readTransport( Entry transportEntry ) throws Exception
     {
-        Transport transport = null;
+        TransportBean transportBean = null;
 
         EntryAttribute ocAttr = transportEntry.get( OBJECT_CLASS_AT );
 
         if ( ocAttr.contains( ConfigSchemaConstants.ADS_TCP_TRANSPORT ) )
         {
-            transport = new TcpTransport();
+            transportBean = new TcpTransportBean();
         }
         else if ( ocAttr.contains( ConfigSchemaConstants.ADS_UDP_TRANSPORT ) )
         {
-            transport = new UdpTransport();
+            transportBean = new UdpTransportBean();
         }
 
-        transport.setPort( getInt( ConfigSchemaConstants.ADS_SYSTEM_PORT, transportEntry ) );
+        transportBean.setPort( getInt( ConfigSchemaConstants.ADS_SYSTEM_PORT, transportEntry ) );
         EntryAttribute addressAttr = transportEntry.get( ConfigSchemaConstants.ADS_TRANSPORT_ADDRESS );
 
         if ( addressAttr != null )
         {
-            transport.setAddress( addressAttr.getString() );
+            transportBean.setAddress( addressAttr.getString() );
         }
         else
         {
-            transport.setAddress( "0.0.0.0" );
+            transportBean.setAddress( "0.0.0.0" );
         }
 
         EntryAttribute backlogAttr = transportEntry.get( ConfigSchemaConstants.ADS_TRANSPORT_BACKLOG );
 
         if ( backlogAttr != null )
         {
-            transport.setBackLog( Integer.parseInt( backlogAttr.getString() ) );
+            transportBean.setBackLog( Integer.parseInt( backlogAttr.getString() ) );
         }
 
         EntryAttribute sslAttr = transportEntry.get( ConfigSchemaConstants.ADS_TRANSPORT_ENABLE_SSL );
 
         if ( sslAttr != null )
         {
-            transport.setEnableSSL( Boolean.parseBoolean( sslAttr.getString() ) );
+            transportBean.setEnableSSL( Boolean.parseBoolean( sslAttr.getString() ) );
         }
 
         EntryAttribute nbThreadsAttr = transportEntry.get( ConfigSchemaConstants.ADS_TRANSPORT_NBTHREADS );
 
         if ( nbThreadsAttr != null )
         {
-            transport.setNbThreads( Integer.parseInt( nbThreadsAttr.getString() ) );
+            transportBean.setNbThreads( Integer.parseInt( nbThreadsAttr.getString() ) );
+        }
+
+        return transportBean;
+    }
+
+
+    //This will suppress PMD.AvoidUsingHardCodedIP warnings in this class
+    @SuppressWarnings("PMD.AvoidUsingHardCodedIP")
+    public Transport createTransport( Entry transportEntry ) throws Exception
+    {
+        Transport transport = null;
+
+        TransportBean transportBean = readTransport( transportEntry );
+        
+        if ( transportBean instanceof TcpTransportBean )
+        {
+            transport = new TcpTransport();
+        }
+        else if ( transportBean instanceof UdpTransportBean )
+        {
+            transport = new UdpTransport();
         }
 
+        transport.setPort( transportBean.getPort() );
+        transport.setAddress( transportBean.getAddress() );
+        transport.setBackLog( transportBean.getBackLog() );
+        transport.setEnableSSL( transportBean.isSSLEnabled() );
+        transport.setNbThreads( transportBean.getNbThreads() );
+
         return transport;
     }
 
@@ -1324,40 +1353,65 @@ public class ConfigPartitionReader
 
         return cl;
     }
-
-
-    public Journal createJournal( DN journalDN ) throws Exception
+    
+    
+    /**
+     * Load the Journal configuration
+     * 
+     * @param journalDN The DN which contains the journal configuration
+     * @return A bean containing the journal configuration
+     * @throws Exception If there is somethng wrong in the configuration
+     */
+    public JournalBean readJournal( DN journalDN ) throws Exception
     {
-        long id = configPartition.getEntryId( journalDN );
-        Entry jlEntry = configPartition.lookup( id );
+        JournalBean journalBean = new JournalBean();
 
-        Journal journal = new DefaultJournal();
-        JournalStore store = new DefaultJournalStore();
-
-        store.setFileName( getString( ConfigSchemaConstants.ADS_JOURNAL_FILENAME, jlEntry ) );
+        long id = configPartition.getEntryId( journalDN );
+        Entry entry = configPartition.lookup( id );
+        
+        journalBean.setFileName( entry.get( ConfigSchemaConstants.ADS_JOURNAL_FILENAME ).getString() );
 
-        EntryAttribute jlWorkDirAttr = jlEntry.get( ConfigSchemaConstants.ADS_JOURNAL_WORKINGDIR );
+        EntryAttribute workingDirAttr = entry.get( ConfigSchemaConstants.ADS_JOURNAL_WORKINGDIR );
 
-        if ( jlWorkDirAttr != null )
+        if ( workingDirAttr != null )
         {
-            store.setWorkingDirectory( jlWorkDirAttr.getString() );
+            journalBean.setWorkingDir( workingDirAttr.getString() );
         }
+        
+        EntryAttribute rotationAttr = entry.get( ConfigSchemaConstants.ADS_JOURNAL_ROTATION );
 
-        EntryAttribute jlRotAttr = jlEntry.get( ConfigSchemaConstants.ADS_JOURNAL_ROTATION );
-
-        if ( jlRotAttr != null )
+        if ( rotationAttr != null )
         {
-            journal.setRotation( Integer.parseInt( jlRotAttr.getString() ) );
+            journalBean.setRotation( Integer.parseInt( rotationAttr.getString() ) );
         }
+        
+        EntryAttribute enabledAttr = entry.get( ConfigSchemaConstants.ADS_JOURNAL_ENABLED );
 
-        EntryAttribute jlEnabledAttr = jlEntry.get( ConfigSchemaConstants.ADS_JOURNAL_ENABLED );
-
-        if ( jlEnabledAttr != null )
+        if ( enabledAttr != null )
         {
-            journal.setEnabled( Boolean.parseBoolean( jlEnabledAttr.getString() ) );
+            journalBean.setEnabled( Boolean.parseBoolean( enabledAttr.getString() ) );
         }
+        
+        return journalBean;
+    }
+
+
+    public Journal createJournal( DN journalDN ) throws Exception
+    {
+        JournalBean journalBean = readJournal( journalDN );
+        
+        Journal journal = new DefaultJournal();
+
+        journal.setRotation( journalBean.getRotation() );
+        journal.setEnabled( journalBean.isEnabled() );
+
+        JournalStore store = new DefaultJournalStore();
+
+        store.setFileName( journalBean.getFileName() );
+        store.setWorkingDirectory( journalBean.getWorkingDir() );
 
         journal.setJournalStore( store );
+        
         return journal;
     }
 

Added: directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/JournalBean.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/JournalBean.java?rev=1004472&view=auto
==============================================================================
--- directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/JournalBean.java (added)
+++ directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/JournalBean.java Mon Oct  4 22:59:48 2010
@@ -0,0 +1,124 @@
+/*
+ *   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.server.config.beans;
+
+/**
+ * A class used to store the Journal configuration.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class JournalBean 
+{
+    /** The journal file name */
+    private String fileName;
+    
+    /** The journal working directory */
+    private String workingDir;
+    
+    /** The journal rotation */
+    private int rotation;
+    
+    /** Tells if the journal is enabled */
+    private boolean enabled;
+
+    /**
+     * Create a new JournalBean instance
+     */
+    public JournalBean()
+    {
+        // Default to infinite
+        rotation = 0;
+        
+        // Not enabled by default
+        enabled = false;
+    }
+    
+    
+    /**
+     * @return the fileName
+     */
+    public String getFileName() 
+    {
+        return fileName;
+    }
+
+    
+    /**
+     * @param fileName the fileName to set
+     */
+    public void setFileName( String fileName ) 
+    {
+        this.fileName = fileName;
+    }
+
+    
+    /**
+     * @return the workingDir
+     */
+    public String getWorkingDir() 
+    {
+        return workingDir;
+    }
+
+    
+    /**
+     * @param workingDir the workingDir to set
+     */
+    public void setWorkingDir( String workingDir ) 
+    {
+        this.workingDir = workingDir;
+    }
+
+    
+    /**
+     * @return the rotation
+     */
+    public int getRotation() 
+    {
+        return rotation;
+    }
+
+    
+    /**
+     * @param rotation the rotation to set
+     */
+    public void setRotation( int rotation ) 
+    {
+        this.rotation = rotation;
+    }
+
+    
+    /**
+     * @return the enabled
+     */
+    public boolean isEnabled() 
+    {
+        return enabled;
+    }
+
+    
+    /**
+     * @param enabled the enabled to set
+     */
+    public void setEnabled( boolean enabled ) 
+    {
+        this.enabled = enabled;
+    }
+}

Added: directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/TcpTransportBean.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/TcpTransportBean.java?rev=1004472&view=auto
==============================================================================
--- directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/TcpTransportBean.java (added)
+++ directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/TcpTransportBean.java Mon Oct  4 22:59:48 2010
@@ -0,0 +1,36 @@
+/*
+ *   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.server.config.beans;
+
+/**
+ * A class used to store the TCP Transport configuration.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class TcpTransportBean extends TransportBean
+{
+    /**
+     * Create a new TransportBean instance
+     */
+    public TcpTransportBean()
+    {
+        super();
+    }
+}

Added: directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/TransportBean.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/TransportBean.java?rev=1004472&view=auto
==============================================================================
--- directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/TransportBean.java (added)
+++ directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/TransportBean.java Mon Oct  4 22:59:48 2010
@@ -0,0 +1,146 @@
+/*
+ *   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.server.config.beans;
+
+/**
+ * A class used to store the Transport configuration.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class TransportBean 
+{
+    /** The server address */
+    private String address;
+    
+    /** The port number */
+    private int port = -1;
+
+    /** A flag set if SSL is enabled */
+    private boolean sslEnabled = false;
+    
+    /** The default backlog queue size */
+    protected static final int DEFAULT_BACKLOG_NB = 50;
+    
+    /** The default number of threads */
+    protected static final int DEFAULT_NB_THREADS = 3;
+
+    /** The number of threads to use for the IoAcceptor executor */
+    private int nbThreads = DEFAULT_NB_THREADS;
+    
+    /** The backlog for the transport services */
+    private int backlog = DEFAULT_BACKLOG_NB;
+    
+
+    /**
+     * Create a new TransportBean instance
+     */
+    public TransportBean()
+    {
+    }
+
+    
+    /**
+     * @param port the port to set
+     */
+    public void setPort( int port ) 
+    {
+        this.port = port;
+    }
+
+    
+    /**
+     * @return the port
+     */
+    public int getPort() 
+    {
+        return port;
+    }
+
+    
+    /**
+     * @param address the address to set
+     */
+    public void setAddress( String address ) {
+        this.address = address;
+    }
+
+    
+    /**
+     * @return the address
+     */
+    public String getAddress() {
+        return address;
+    }
+    
+    
+    /**
+     * @return <code>true</code> id SSL is enabled for this transport
+     */
+    public boolean isSSLEnabled()
+    {
+        return sslEnabled;
+    }
+    
+    
+    /**
+     * Enable or disable SSL
+     * @param sslEnabled if <code>true</code>, SSL is enabled.
+     */
+    public void setEnableSSL( boolean sslEnabled )
+    {
+        this.sslEnabled = sslEnabled;
+    }
+    
+    
+    /**
+     * {@inheritDoc}
+     */
+    public int getNbThreads() 
+    {
+        return nbThreads;
+    }
+    
+    
+    /**
+     * {@inheritDoc}
+     */
+    public void setNbThreads( int nbThreads )
+    {
+        this.nbThreads = nbThreads;
+    }
+    
+    
+    /**
+     * {@inheritDoc}
+     */
+    public int getBackLog()
+    {
+        return backlog;
+    }
+    
+    
+    /**
+     * {@inheritDoc}
+     */
+    public void setBackLog( int backLog )
+    {
+        this.backlog = backLog;
+    }
+}

Added: directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/UdpTransportBean.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/UdpTransportBean.java?rev=1004472&view=auto
==============================================================================
--- directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/UdpTransportBean.java (added)
+++ directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/beans/UdpTransportBean.java Mon Oct  4 22:59:48 2010
@@ -0,0 +1,36 @@
+/*
+ *   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.server.config.beans;
+
+/**
+ * A class used to store the UDP Transport configuration.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class UdpTransportBean extends TransportBean
+{
+    /**
+     * Create a new TransportBean instance
+     */
+    public UdpTransportBean()
+    {
+        super();
+    }
+}