You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by fe...@apache.org on 2007/11/26 20:44:37 UTC

svn commit: r598395 [5/7] - in /directory/sandbox/felixk: studio-aciitemeditor/src/main/java/org/apache/directory/studio/aciitemeditor/model/ studio-aciitemeditor/src/main/java/org/apache/directory/studio/aciitemeditor/valueeditors/ studio-aciitemedito...

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ExportDsmlJob.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ExportDsmlJob.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ExportDsmlJob.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ExportDsmlJob.java Mon Nov 26 11:44:28 2007
@@ -41,11 +41,17 @@
 import org.apache.directory.shared.ldap.codec.search.PresentFilter;
 import org.apache.directory.shared.ldap.codec.search.SearchRequest;
 import org.apache.directory.shared.ldap.codec.search.SubstringFilter;
+import org.apache.directory.shared.ldap.filter.AndNode;
+import org.apache.directory.shared.ldap.filter.ApproximateNode;
 import org.apache.directory.shared.ldap.filter.BranchNode;
+import org.apache.directory.shared.ldap.filter.EqualityNode;
 import org.apache.directory.shared.ldap.filter.ExprNode;
 import org.apache.directory.shared.ldap.filter.ExtensibleNode;
 import org.apache.directory.shared.ldap.filter.FilterParser;
-import org.apache.directory.shared.ldap.filter.FilterParserImpl;
+import org.apache.directory.shared.ldap.filter.GreaterEqNode;
+import org.apache.directory.shared.ldap.filter.LessEqNode;
+import org.apache.directory.shared.ldap.filter.NotNode;
+import org.apache.directory.shared.ldap.filter.OrNode;
 import org.apache.directory.shared.ldap.filter.PresenceNode;
 import org.apache.directory.shared.ldap.filter.SimpleNode;
 import org.apache.directory.shared.ldap.filter.SubstringNode;
@@ -253,10 +259,7 @@
     public static Filter convertToSharedLdapFilter( String filter ) throws IOException, ParseException,
         DecoderException
     {
-        FilterParser filterParser = new FilterParserImpl();
-
-        ExprNode exprNode = filterParser.parse( filter );
-
+        ExprNode exprNode = FilterParser.parse( filter );
         return convertToSharedLdapFilter( exprNode );
     }
 
@@ -278,36 +281,35 @@
         {
             BranchNode branchNode = ( BranchNode ) exprNode;
 
-            switch ( branchNode.getOperator() )
+            if( branchNode instanceof AndNode )
             {
-                case AND:
-                    AndFilter andFilter = new AndFilter();
-                    sharedLdapFilter = andFilter;
-
-                    List<Filter> andFilters = iterateOnFilters( branchNode.getChildren() );
-                    for ( int i = 0; i < andFilters.size(); i++ )
-                    {
-                        andFilter.addFilter( andFilters.get( i ) );
-                    }
-                    break;
-
-                case OR:
-                    OrFilter orFilter = new OrFilter();
-                    sharedLdapFilter = orFilter;
-
-                    List<Filter> orFilters = iterateOnFilters( branchNode.getChildren() );
-                    for ( int i = 0; i < orFilters.size(); i++ )
-                    {
-                        orFilter.addFilter( orFilters.get( i ) );
-                    }
-                    break;
-                case NOT:
-                    NotFilter notFilter = new NotFilter();
-                    sharedLdapFilter = notFilter;
-
-                    List<Filter> notFilters = iterateOnFilters( branchNode.getChildren() );
-                    notFilter.setNotFilter( notFilters.get( 0 ) );
-                    break;
+                AndFilter andFilter = new AndFilter();
+                sharedLdapFilter = andFilter;
+                
+                List<Filter> andFilters = iterateOnFilters( branchNode.getChildren() );
+                for ( int i = 0; i < andFilters.size(); i++ )
+                {
+                    andFilter.addFilter( andFilters.get( i ) );
+                }
+            }
+            else if( branchNode instanceof OrNode )
+            {
+                OrFilter orFilter = new OrFilter();
+                sharedLdapFilter = orFilter;
+                
+                List<Filter> orFilters = iterateOnFilters( branchNode.getChildren() );
+                for ( int i = 0; i < orFilters.size(); i++ )
+                {
+                    orFilter.addFilter( orFilters.get( i ) );
+                }
+            }
+            else if( branchNode instanceof NotNode )
+            {
+                NotFilter notFilter = new NotFilter();
+                sharedLdapFilter = notFilter;
+                
+                List<Filter> notFilters = iterateOnFilters( branchNode.getChildren() );
+                notFilter.setNotFilter( notFilters.get( 0 ) );
             }
         }
         else if ( exprNode instanceof PresenceNode )
@@ -323,31 +325,29 @@
         {
             SimpleNode simpleNode = ( SimpleNode ) exprNode;
 
-            switch ( simpleNode.getAssertionType() )
+            if ( simpleNode instanceof ApproximateNode )
             {
-                case APPROXIMATE:
-                    AttributeValueAssertionFilter approxMatchFilter = createAttributeValueAssertionFilter( simpleNode,
-                        LdapConstants.APPROX_MATCH_FILTER );
-                    sharedLdapFilter = approxMatchFilter;
-                    break;
-
-                case EQUALITY:
-                    AttributeValueAssertionFilter equalityMatchFilter = createAttributeValueAssertionFilter(
-                        simpleNode, LdapConstants.EQUALITY_MATCH_FILTER );
-                    sharedLdapFilter = equalityMatchFilter;
-                    break;
-
-                case GREATEREQ:
-                    AttributeValueAssertionFilter greaterOrEqualFilter = createAttributeValueAssertionFilter(
-                        simpleNode, LdapConstants.GREATER_OR_EQUAL_FILTER );
-                    sharedLdapFilter = greaterOrEqualFilter;
-                    break;
-
-                case LESSEQ:
-                    AttributeValueAssertionFilter lessOrEqualFilter = createAttributeValueAssertionFilter( simpleNode,
-                        LdapConstants.LESS_OR_EQUAL_FILTER );
-                    sharedLdapFilter = lessOrEqualFilter;
-                    break;
+                AttributeValueAssertionFilter approxMatchFilter = createAttributeValueAssertionFilter( simpleNode,
+                    LdapConstants.APPROX_MATCH_FILTER );
+                sharedLdapFilter = approxMatchFilter;
+            }
+            else if ( simpleNode instanceof EqualityNode )
+            {
+                AttributeValueAssertionFilter equalityMatchFilter = createAttributeValueAssertionFilter(
+                    simpleNode, LdapConstants.EQUALITY_MATCH_FILTER );
+                sharedLdapFilter = equalityMatchFilter;
+            }
+            else if ( simpleNode instanceof GreaterEqNode )
+            {
+                AttributeValueAssertionFilter greaterOrEqualFilter = createAttributeValueAssertionFilter(
+                    simpleNode, LdapConstants.GREATER_OR_EQUAL_FILTER );
+                sharedLdapFilter = greaterOrEqualFilter;
+            }
+            else if ( simpleNode instanceof LessEqNode )
+            {
+                AttributeValueAssertionFilter lessOrEqualFilter = createAttributeValueAssertionFilter( simpleNode,
+                    LdapConstants.LESS_OR_EQUAL_FILTER );
+                sharedLdapFilter = lessOrEqualFilter;
             }
         }
         else if ( exprNode instanceof ExtensibleNode )
@@ -357,7 +357,7 @@
             ExtensibleMatchFilter extensibleMatchFilter = new ExtensibleMatchFilter();
             sharedLdapFilter = extensibleMatchFilter;
 
-            extensibleMatchFilter.setDnAttributes( extensibleNode.dnAttributes() );
+            extensibleMatchFilter.setDnAttributes( extensibleNode.hasDnAttributes() );
             extensibleMatchFilter.setMatchingRule( extensibleNode.getMatchingRuleId() );
             extensibleMatchFilter.setMatchValue( extensibleNode.getValue() );
             extensibleMatchFilter.setType( extensibleNode.getAttribute() );
@@ -372,10 +372,10 @@
             substringFilter.setType( substringNode.getAttribute() );
             substringFilter.setInitialSubstrings( substringNode.getInitial() );
             substringFilter.setFinalSubstrings( substringNode.getFinal() );
-            List anys = substringNode.getAny();
+            List<String> anys = substringNode.getAny();
             for ( int i = 0; i < anys.size(); i++ )
             {
-                substringFilter.addAnySubstrings( ( String ) anys.get( i ) );
+                substringFilter.addAnySubstrings( anys.get( i ) );
             }
         }
 

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ExportLdifJob.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ExportLdifJob.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ExportLdifJob.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ExportLdifJob.java Mon Nov 26 11:44:28 2007
@@ -40,18 +40,16 @@
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
 import org.apache.directory.studio.ldapbrowser.core.model.ConnectionException;
 import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
-import org.apache.directory.studio.ldapbrowser.core.model.ISearch;
-import org.apache.directory.studio.ldapbrowser.core.model.ReferralException;
 import org.apache.directory.studio.ldapbrowser.core.model.SearchParameter;
-import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection.ReferralHandlingMethod;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.LdifEnumeration;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.container.LdifContainer;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.container.LdifContentRecord;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.lines.LdifAttrValLine;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.lines.LdifDnLine;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.lines.LdifSepLine;
 import org.apache.directory.studio.ldapbrowser.core.utils.AttributeComparator;
 import org.apache.directory.studio.ldapbrowser.core.utils.JNDIUtils;
+import org.apache.directory.studio.ldapbrowser.core.utils.Utils;
+import org.apache.directory.studio.ldifparser.model.LdifEnumeration;
+import org.apache.directory.studio.ldifparser.model.container.LdifContainer;
+import org.apache.directory.studio.ldifparser.model.container.LdifContentRecord;
+import org.apache.directory.studio.ldifparser.model.lines.LdifAttrValLine;
+import org.apache.directory.studio.ldifparser.model.lines.LdifDnLine;
+import org.apache.directory.studio.ldifparser.model.lines.LdifSepLine;
 
 
 /**
@@ -149,11 +147,11 @@
         try
         {
             AttributeComparator comparator = new AttributeComparator( browserConnection );
-            LdifEnumeration enumeration = search( browserConnection, searchParameter, monitor );
+            JndiLdifEnumeration enumeration = search( browserConnection, searchParameter, monitor );
             
-            while ( !monitor.isCanceled() && enumeration.hasNext( monitor ) )
+            while ( !monitor.isCanceled() && enumeration.hasNext() )
             {
-                LdifContainer container = enumeration.next( monitor );
+                LdifContainer container = enumeration.next();
 
                 if ( container instanceof LdifContentRecord )
                 {
@@ -170,7 +168,7 @@
                         newRecord.addAttrVal( attrValLines[i] );
                     }
                     newRecord.finish( sepLine );
-                    String s = newRecord.toFormattedString();
+                    String s = newRecord.toFormattedString( Utils.getLdifFormatParameters() );
 
                     // String s = record.toFormattedString();
                     bufferedWriter.write( s );
@@ -190,22 +188,6 @@
             {
                 // ignore
             }
-            else if ( ce instanceof ReferralException )
-            {
-                if ( searchParameter.getReferralsHandlingMethod() == ReferralHandlingMethod.FOLLOW )
-                {
-                    ReferralException re = ( ReferralException ) ce;
-                    ISearch[] referralSearches = re.getReferralSearches();
-                    for ( int i = 0; i < referralSearches.length; i++ )
-                    {
-                        ISearch referralSearch = referralSearches[i];
-
-                        // export recursive
-                        export( referralSearch.getBrowserConnection(), referralSearch.getSearchParameter(), bufferedWriter,
-                            count, monitor );
-                    }
-                }
-            }
             else
             {
                 monitor.reportError( ce );
@@ -220,7 +202,7 @@
     }
 
     
-    static LdifEnumeration search( IBrowserConnection browserConnection, SearchParameter parameter, StudioProgressMonitor monitor )
+    static JndiLdifEnumeration search( IBrowserConnection browserConnection, SearchParameter parameter, StudioProgressMonitor monitor )
         throws ConnectionException
     {
         NamingEnumeration<SearchResult> result = SearchJob.search( browserConnection, parameter, monitor );
@@ -247,7 +229,7 @@
         }
 
 
-        public boolean hasNext( StudioProgressMonitor monitor ) throws ConnectionException
+        public boolean hasNext() throws ConnectionException
         {
             try
             {
@@ -260,7 +242,7 @@
         }
 
 
-        public LdifContainer next( StudioProgressMonitor monitor ) throws ConnectionException
+        public LdifContainer next() throws ConnectionException
         {
             try
             {

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ExportXlsJob.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ExportXlsJob.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ExportXlsJob.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ExportXlsJob.java Mon Nov 26 11:44:28 2007
@@ -32,15 +32,12 @@
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreConstants;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCorePlugin;
+import org.apache.directory.studio.ldapbrowser.core.jobs.ExportLdifJob.JndiLdifEnumeration;
 import org.apache.directory.studio.ldapbrowser.core.model.ConnectionException;
 import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
-import org.apache.directory.studio.ldapbrowser.core.model.ISearch;
-import org.apache.directory.studio.ldapbrowser.core.model.ReferralException;
 import org.apache.directory.studio.ldapbrowser.core.model.SearchParameter;
-import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection.ReferralHandlingMethod;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.LdifEnumeration;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.container.LdifContainer;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.container.LdifContentRecord;
+import org.apache.directory.studio.ldifparser.model.container.LdifContainer;
+import org.apache.directory.studio.ldifparser.model.container.LdifContentRecord;
 import org.apache.poi.hssf.usermodel.HSSFCell;
 import org.apache.poi.hssf.usermodel.HSSFRow;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
@@ -223,10 +220,10 @@
     {
         try
         {
-            LdifEnumeration enumeration = ExportLdifJob.search( browserConnection, searchParameter, monitor );
-            while ( !monitor.isCanceled() && enumeration.hasNext( monitor ) )
+            JndiLdifEnumeration enumeration = ExportLdifJob.search( browserConnection, searchParameter, monitor );
+            while ( !monitor.isCanceled() && enumeration.hasNext() )
             {
-                LdifContainer container = enumeration.next( monitor );
+                LdifContainer container = enumeration.next();
 
                 if ( container instanceof LdifContentRecord )
                 {
@@ -244,24 +241,9 @@
         }
         catch ( ConnectionException ce )
         {
-
             if ( ce.getLdapStatusCode() == 3 || ce.getLdapStatusCode() == 4 || ce.getLdapStatusCode() == 11 )
             {
                 // nothing
-            }
-            else if ( ce instanceof ReferralException )
-            {
-                if ( searchParameter.getReferralsHandlingMethod() == ReferralHandlingMethod.FOLLOW )
-                {
-                    ReferralException re = ( ReferralException ) ce;
-                    ISearch[] referralSearches = re.getReferralSearches();
-                    for ( ISearch referralSearch : referralSearches )
-                    {
-                        // export recursive
-                        exportToXls( referralSearch.getBrowserConnection(), referralSearch.getSearchParameter(), sheet,
-                            headerRow, count, monitor, attributeNameMap, valueDelimiter, binaryEncoding, exportDn );
-                    }
-                }
             }
             else
             {

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ImportLdifJob.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ImportLdifJob.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ImportLdifJob.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ImportLdifJob.java Mon Nov 26 11:44:28 2007
@@ -48,30 +48,32 @@
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.studio.connection.core.Connection;
+import org.apache.directory.studio.connection.core.ConnectionCoreConstants;
+import org.apache.directory.studio.connection.core.DnUtils;
 import org.apache.directory.studio.connection.core.StudioProgressMonitor;
-import org.apache.directory.studio.ldapbrowser.core.BrowserCoreConstants;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
 import org.apache.directory.studio.ldapbrowser.core.events.BulkModificationEvent;
 import org.apache.directory.studio.ldapbrowser.core.events.EventRegistry;
 import org.apache.directory.studio.ldapbrowser.core.model.ConnectionException;
 import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
 import org.apache.directory.studio.ldapbrowser.core.model.IEntry;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.LdifEnumeration;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.container.LdifChangeAddRecord;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.container.LdifChangeDeleteRecord;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.container.LdifChangeModDnRecord;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.container.LdifChangeModifyRecord;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.container.LdifChangeRecord;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.container.LdifContainer;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.container.LdifContentRecord;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.container.LdifModSpec;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.container.LdifRecord;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.lines.LdifAttrValLine;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.lines.LdifCommentLine;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.lines.LdifControlLine;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.lines.LdifModSpecTypeLine;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.parser.LdifParser;
-import org.apache.directory.studio.ldapbrowser.core.utils.DnUtils;
+import org.apache.directory.studio.ldapbrowser.core.utils.Utils;
+import org.apache.directory.studio.ldifparser.LdifFormatParameters;
+import org.apache.directory.studio.ldifparser.model.LdifEnumeration;
+import org.apache.directory.studio.ldifparser.model.container.LdifChangeAddRecord;
+import org.apache.directory.studio.ldifparser.model.container.LdifChangeDeleteRecord;
+import org.apache.directory.studio.ldifparser.model.container.LdifChangeModDnRecord;
+import org.apache.directory.studio.ldifparser.model.container.LdifChangeModifyRecord;
+import org.apache.directory.studio.ldifparser.model.container.LdifChangeRecord;
+import org.apache.directory.studio.ldifparser.model.container.LdifContainer;
+import org.apache.directory.studio.ldifparser.model.container.LdifContentRecord;
+import org.apache.directory.studio.ldifparser.model.container.LdifModSpec;
+import org.apache.directory.studio.ldifparser.model.container.LdifRecord;
+import org.apache.directory.studio.ldifparser.model.lines.LdifAttrValLine;
+import org.apache.directory.studio.ldifparser.model.lines.LdifCommentLine;
+import org.apache.directory.studio.ldifparser.model.lines.LdifControlLine;
+import org.apache.directory.studio.ldifparser.model.lines.LdifModSpecTypeLine;
+import org.apache.directory.studio.ldifparser.parser.LdifParser;
 
 
 /**
@@ -235,9 +237,9 @@
         int errorCount = 0;
         try
         {
-            while ( !monitor.isCanceled() && enumeration.hasNext( monitor ) )
+            while ( !monitor.isCanceled() && enumeration.hasNext() )
             {
-                LdifContainer container = enumeration.next( monitor );
+                LdifContainer container = enumeration.next();
 
                 if ( container instanceof LdifRecord )
                 {
@@ -515,21 +517,24 @@
     {
         try
         {
-            DateFormat df = new SimpleDateFormat( BrowserCoreConstants.DATEFORMAT );
+            LdifFormatParameters ldifFormatParameters = Utils.getLdifFormatParameters();
+            DateFormat df = new SimpleDateFormat( ConnectionCoreConstants.DATEFORMAT );
 
             String errorComment = "#!ERROR " + exception.getMessage(); //$NON-NLS-1$
             errorComment = errorComment.replaceAll( "\r", " " ); //$NON-NLS-1$ //$NON-NLS-2$
             errorComment = errorComment.replaceAll( "\n", " " ); //$NON-NLS-1$ //$NON-NLS-2$
             LdifCommentLine errorCommentLine = LdifCommentLine.create( errorComment );
 
-            logWriter.write( LdifCommentLine.create( "#!RESULT ERROR" ).toFormattedString() ); //$NON-NLS-1$
+            logWriter.write( LdifCommentLine.create( "#!RESULT ERROR" )
+                .toFormattedString( LdifFormatParameters.DEFAULT ) ); //$NON-NL LdifFormatParameters.DEFAULTS-1$
             logWriter
                 .write( LdifCommentLine
                     .create(
-                        "#!CONNECTION ldap://" + browserConnection.getConnection().getHost() + ":" + browserConnection.getConnection().getPort() ).toFormattedString() ); //$NON-NLS-1$ //$NON-NLS-2$
-            logWriter.write( LdifCommentLine.create( "#!DATE " + df.format( new Date() ) ).toFormattedString() ); //$NON-NLS-1$
-            logWriter.write( errorCommentLine.toFormattedString() );
-            logWriter.write( record.toFormattedString() );
+                        "#!CONNECTION ldap://" + browserConnection.getConnection().getHost() + ":" + browserConnection.getConnection().getPort() ).toFormattedString( LdifFormatParameters.DEFAULT ) ); //$NON-NLS-1$ //$NON-NLS-2$
+            logWriter.write( LdifCommentLine
+                .create( "#!DATE " + df.format( new Date() ) ).toFormattedString( LdifFormatParameters.DEFAULT ) ); //$NON-NLS-1$
+            logWriter.write( errorCommentLine.toFormattedString( LdifFormatParameters.DEFAULT ) );
+            logWriter.write( record.toFormattedString( ldifFormatParameters ) );
         }
         catch ( IOException ioe )
         {
@@ -551,14 +556,16 @@
     {
         try
         {
-            DateFormat df = new SimpleDateFormat( BrowserCoreConstants.DATEFORMAT );
-            logWriter.write( LdifCommentLine.create( "#!RESULT OK" ).toFormattedString() ); //$NON-NLS-1$
+            LdifFormatParameters ldifFormatParameters = Utils.getLdifFormatParameters();
+            DateFormat df = new SimpleDateFormat( ConnectionCoreConstants.DATEFORMAT );
+            logWriter.write( LdifCommentLine.create( "#!RESULT OK" ).toFormattedString( ldifFormatParameters ) ); //$NON-NLS-1$
             logWriter
                 .write( LdifCommentLine
                     .create(
-                        "#!CONNECTION ldap://" + browserConnection.getConnection().getHost() + ":" + browserConnection.getConnection().getPort() ).toFormattedString() ); //$NON-NLS-1$ //$NON-NLS-2$
-            logWriter.write( LdifCommentLine.create( "#!DATE " + df.format( new Date() ) ).toFormattedString() ); //$NON-NLS-1$
-            logWriter.write( record.toFormattedString() );
+                        "#!CONNECTION ldap://" + browserConnection.getConnection().getHost() + ":" + browserConnection.getConnection().getPort() ).toFormattedString( ldifFormatParameters ) ); //$NON-NLS-1$ //$NON-NLS-2$
+            logWriter.write( LdifCommentLine
+                .create( "#!DATE " + df.format( new Date() ) ).toFormattedString( ldifFormatParameters ) ); //$NON-NLS-1$
+            logWriter.write( record.toFormattedString( ldifFormatParameters ) );
         }
         catch ( IOException ioe )
         {

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/InitializeAttributesJob.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/InitializeAttributesJob.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/InitializeAttributesJob.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/InitializeAttributesJob.java Mon Nov 26 11:44:28 2007
@@ -23,9 +23,11 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedHashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import javax.naming.InvalidNameException;
@@ -33,7 +35,9 @@
 import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.studio.connection.core.Connection;
 import org.apache.directory.studio.connection.core.StudioProgressMonitor;
+import org.apache.directory.studio.ldapbrowser.core.BrowserCoreConstants;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
+import org.apache.directory.studio.ldapbrowser.core.BrowserCorePlugin;
 import org.apache.directory.studio.ldapbrowser.core.events.AttributesInitializedEvent;
 import org.apache.directory.studio.ldapbrowser.core.events.EventRegistry;
 import org.apache.directory.studio.ldapbrowser.core.model.IAttribute;
@@ -212,43 +216,11 @@
             new String[]
                 { entry.getDn().getUpName() } ) );
 
-        // entry.setAttributesInitialized(false, entry.getConnection());
-
         if ( entry instanceof IRootDSE )
         {
-//            IEntry[] oldChildren = entry.getChildren();
-//            for ( int i = 0; oldChildren != null && i < oldChildren.length; i++ )
-//            {
-//                if ( oldChildren[i] != null )
-//                {
-//                    entry.deleteChild( oldChildren[i] );
-//                }
-//            }
-//            entry.setChildrenInitialized( false );
-            
             // special handling for Root DSE
             loadRootDSE( entry.getBrowserConnection(), monitor );
             
-//            if ( !monitor.errorsReported() )
-//            {
-//                try
-//                {
-//                    monitor.reportProgress( BrowserCoreMessages.model__loading_rootdse );
-//                    loadRootDSE( entry.getBrowserConnection(), monitor );
-//                    monitor.worked( 1 );
-//                }
-//                catch ( Exception e )
-//                {
-//                    monitor.reportError( BrowserCoreMessages.model__error_loading_rootdse );
-//                    rootDSE = null;
-//                }
-//
-//                if ( monitor.errorsReported() )
-//                {
-//                    close();
-//                }
-//            }
-            
         	entry.setAttributesInitialized( true );
         	entry.setChildrenInitialized( true );
         }
@@ -276,46 +248,44 @@
      */
     static void loadRootDSE( IBrowserConnection browserConnection, StudioProgressMonitor monitor )
     {
-//        if(rootDSE == null)
-//        {
-//            rootDSE = new RootDSE( this );
-//            cacheEntry( rootDSE );
-//        }
-        
         // delete old children
         IEntry[] oldChildren = browserConnection.getRootDSE().getChildren();
-        for ( int i = 0; oldChildren != null && i < oldChildren.length; i++ )
+        if(oldChildren != null)
         {
-            if ( oldChildren[i] != null )
+            for ( IEntry entry : oldChildren )
             {
-                browserConnection.getRootDSE().deleteChild( oldChildren[i] );
+                if ( entry != null )
+                {
+                    browserConnection.getRootDSE().deleteChild( entry );
+                }
             }
         }
         browserConnection.getRootDSE().setChildrenInitialized( false );
 
-        // get well-known root DSE attributes, includes + and *
+        // load well-known Root DSE attributes, includes + and *
         ISearch search = new Search( null, browserConnection, LdapDN.EMPTY_LDAPDN, ISearch.FILTER_TRUE,
             InitializeAttributesJob.ROOT_DSE_ATTRIBUTES, SearchScope.OBJECT, 0, 0,
             AliasDereferencingMethod.NEVER, ReferralHandlingMethod.IGNORE, false, false,
             null );
         SearchJob.searchAndUpdateModel( browserConnection, search, monitor );
 
-        // get base DNs
+        // the list of entries under the Root DSE
+        Map<LdapDN, IEntry> rootDseEntries = new HashMap<LdapDN, IEntry>();
+        
+        // 1st: add base DNs, either the specified or from the namingContexts attribute
         if( !browserConnection.isFetchBaseDNs() && browserConnection.getBaseDN() != null && !"".equals( browserConnection.getBaseDN().toString() ))
         {
+            // only add the specified base DN
             try
             {
-                // only add the specified base DN
                 LdapDN dn = browserConnection.getBaseDN();
-                IEntry entry = new BaseDNEntry( new LdapDN( dn ), browserConnection );
-                browserConnection.cacheEntry( entry );
-                browserConnection.getRootDSE().addChild( entry );
-                
-                // check if entry exists
-                // TODO: use browserConnection.getEntry( dn, monitor ) ??
-                search = new Search( null, browserConnection, dn, ISearch.FILTER_TRUE, ISearch.NO_ATTRIBUTES, SearchScope.OBJECT, 1, 0,
-                    AliasDereferencingMethod.NEVER, ReferralHandlingMethod.IGNORE, true, true, null );
-                SearchJob.searchAndUpdateModel( browserConnection, search, monitor );
+                IEntry entry = browserConnection.getEntryFromCache( dn );
+                if(entry == null)
+                {
+                    entry = new BaseDNEntry( new LdapDN( dn ), browserConnection );
+                    browserConnection.cacheEntry( entry );
+                }
+                rootDseEntries.put( dn, entry );
             }
             catch ( InvalidNameException e )
             {
@@ -324,7 +294,7 @@
         }
         else
         {
-            // get naming contexts 
+            // get base DNs from namingContexts attribute
             Set<String> namingContextSet = new HashSet<String>();
             IAttribute attribute = browserConnection.getRootDSE().getAttribute( IRootDSE.ROOTDSE_ATTRIBUTE_NAMINGCONTEXTS );
             if ( attribute != null )
@@ -340,9 +310,14 @@
                 if ( !"".equals( namingContext ) ) { //$NON-NLS-1$
                     try
                     {
-                        IEntry entry = new BaseDNEntry( new LdapDN( namingContext ), browserConnection );
-                        browserConnection.getRootDSE().addChild( entry );
-                        browserConnection.cacheEntry( entry );
+                        LdapDN dn = new LdapDN( namingContext );
+                        IEntry entry = browserConnection.getEntryFromCache( dn );
+                        if(entry == null)
+                        {
+                            entry = new BaseDNEntry( new LdapDN( dn ), browserConnection );
+                            browserConnection.cacheEntry( entry );
+                        }
+                        rootDseEntries.put( dn, entry );
                     }
                     catch ( InvalidNameException e )
                     {
@@ -351,42 +326,65 @@
                 }
                 else
                 {
-                    // special handling of empty namingContext: perform a one-level search and add all result DNs to the set
+                    // special handling of empty namingContext (Novell eDirectory): 
+                    // perform a one-level search and add all result DNs to the set
                     search = new Search( null, browserConnection, LdapDN.EMPTY_LDAPDN, ISearch.FILTER_TRUE, ISearch.NO_ATTRIBUTES, SearchScope.ONELEVEL, 0,
                         0, AliasDereferencingMethod.NEVER, ReferralHandlingMethod.IGNORE, false, false, null );
                     SearchJob.searchAndUpdateModel( browserConnection, search, monitor );
                     ISearchResult[] results = search.getSearchResults();
-                    for ( int k = 0; results != null && k < results.length; k++ )
+                    for ( ISearchResult searchResult : results )
                     {
-                        ISearchResult result = results[k];
-                        IEntry entry = result.getEntry();
-                        browserConnection.getRootDSE().addChild( entry );
+                        IEntry entry = searchResult.getEntry();
+                        rootDseEntries.put( entry.getDn(), entry );
                     }
                 }
             }
         }
 
-        // get schema sub-entry
-        DirectoryMetadataEntry[] schemaEntries = getDirectoryMetadataEntries( browserConnection, IRootDSE.ROOTDSE_ATTRIBUTE_SUBSCHEMASUBENTRY );
-        for ( int i = 0; i < schemaEntries.length; i++ )
+        // 2nd: add schema sub-entry
+        IEntry[] schemaEntries = getDirectoryMetadataEntries( browserConnection,
+            IRootDSE.ROOTDSE_ATTRIBUTE_SUBSCHEMASUBENTRY );
+        for ( IEntry entry : schemaEntries )
         {
-            schemaEntries[i].setSchemaEntry( true );
-            browserConnection.getRootDSE().addChild( ( IEntry ) schemaEntries[i] );
+            if ( entry instanceof DirectoryMetadataEntry )
+            {
+                ( ( DirectoryMetadataEntry ) entry ).setSchemaEntry( true );
+            }
+            rootDseEntries.put( entry.getDn(), entry );
         }
         
-        // get other metadata entries
-        String[] metadataAttributeNames = new String[]
-            { IRootDSE.ROOTDSE_ATTRIBUTE_MONITORCONTEXT, IRootDSE.ROOTDSE_ATTRIBUTE_CONFIGCONTEXT,
-                IRootDSE.ROOTDSE_ATTRIBUTE_DSANAME };
-        for ( int x = 0; x < metadataAttributeNames.length; x++ )
+        // get other meta data entries
+        IAttribute[] rootDseAttributes = browserConnection.getRootDSE().getAttributes();
+        for ( IAttribute attribute : rootDseAttributes )
         {
-            DirectoryMetadataEntry[] metadataEntries = getDirectoryMetadataEntries( browserConnection, metadataAttributeNames[x] );
-            for ( int i = 0; i < metadataEntries.length; i++ )
+            IEntry[] metadataEntries = getDirectoryMetadataEntries( browserConnection, attribute.getDescription() );
+            for ( IEntry entry : metadataEntries )
             {
-                browserConnection.getRootDSE().addChild( ( IEntry ) metadataEntries[i] );
+                rootDseEntries.put( entry.getDn(), entry );
             }
         }
         
+//        // TODO: check all attributes if they are valid DNs
+//        String[] metadataAttributeNames = new String[]
+//            { IRootDSE.ROOTDSE_ATTRIBUTE_MONITORCONTEXT, IRootDSE.ROOTDSE_ATTRIBUTE_CONFIGCONTEXT,
+//                IRootDSE.ROOTDSE_ATTRIBUTE_DSANAME };
+//        for ( int x = 0; x < metadataAttributeNames.length; x++ )
+//        {
+//            IEntry[] metadataEntries = getDirectoryMetadataEntries( browserConnection, metadataAttributeNames[x] );
+//            for ( int i = 0; i < metadataEntries.length; i++ )
+//            {
+//                rootDseEntries.add( metadataEntries[i] );
+//            }
+//        }
+        
+        // try to init entries
+        StudioProgressMonitor dummyMonitor = new StudioProgressMonitor( monitor );
+        for ( IEntry entry : rootDseEntries.values() )
+        {
+            initBaseEntry( entry.getBrowserConnection(), entry.getDn(), dummyMonitor );
+            // TODO: log if a base entry doesn't exist
+        }
+        
         // set flags
         browserConnection.getRootDSE().setHasMoreChildren( false );
         browserConnection.getRootDSE().setAttributesInitialized( true );
@@ -396,32 +394,71 @@
     }
 
 
-    private static DirectoryMetadataEntry[] getDirectoryMetadataEntries( IBrowserConnection browserConnection, String metadataAttributeName )
+    private static void initBaseEntry( IBrowserConnection browserConnection, LdapDN dn, StudioProgressMonitor monitor )
+    {
+        ISearch search;
+        IEntry entry;
+        // search the entry
+        AliasDereferencingMethod derefAliasMethod = browserConnection.getAliasesDereferencingMethod();
+        ReferralHandlingMethod handleReferralsMethod = browserConnection.getReferralsHandlingMethod();
+        if ( BrowserCorePlugin.getDefault().getPluginPreferences().getBoolean(
+            BrowserCoreConstants.PREFERENCE_SHOW_ALIAS_AND_REFERRAL_OBJECTS )
+            && browserConnection.getRootDSE().isControlSupported(
+                IBrowserConnection.CONTROL_MANAGEDSAIT ) )
+        {
+            derefAliasMethod = AliasDereferencingMethod.NEVER;
+            handleReferralsMethod = ReferralHandlingMethod.IGNORE;
+        }
+        search = new Search( null, browserConnection, dn, ISearch.FILTER_TRUE, ISearch.NO_ATTRIBUTES, SearchScope.OBJECT, 1, 0,
+            derefAliasMethod, handleReferralsMethod, true, true, null );
+        SearchJob.searchAndUpdateModel( browserConnection, search, monitor );
+        
+        // add entry to Root DSE
+        ISearchResult[] results = search.getSearchResults();
+        if(results != null && results.length == 1)
+        {
+            ISearchResult result = results[0];
+            entry = result.getEntry();
+            browserConnection.getRootDSE().addChild( entry );
+        }
+    }
+
+
+    private static IEntry[] getDirectoryMetadataEntries( IBrowserConnection browserConnection, String metadataAttributeName )
     {
-        List<LdapDN> metadataEntryList = new ArrayList<LdapDN>();
+        List<LdapDN> metadataEntryDnList = new ArrayList<LdapDN>();
         IAttribute attribute = browserConnection.getRootDSE().getAttribute( metadataAttributeName );
         if ( attribute != null )
         {
             String[] values = attribute.getStringValues();
-            for ( int i = 0; i < values.length; i++ )
+            for ( String dn : values )
             {
-                try
-                {
-                    metadataEntryList.add( new LdapDN( values[i] ) );
-                }
-                catch ( InvalidNameException e )
+                if( dn != null && !"".equals( dn ))
                 {
+                    try
+                    {
+                        metadataEntryDnList.add( new LdapDN( dn ) );
+                    }
+                    catch ( InvalidNameException e )
+                    {
+                    }
                 }
             }
         }
 
-        DirectoryMetadataEntry[] metadataEntries = new DirectoryMetadataEntry[metadataEntryList.size()];
-        for ( int i = 0; i < metadataEntryList.size(); i++ )
+        IEntry[] metadataEntries = new IEntry[metadataEntryDnList.size()];
+        for ( int i = 0; i < metadataEntryDnList.size(); i++ )
         {
-            metadataEntries[i] = new DirectoryMetadataEntry( metadataEntryList.get( i ), browserConnection );
-            metadataEntries[i].setDirectoryEntry( true );
-            browserConnection.cacheEntry( metadataEntries[i] );
+            LdapDN dn = metadataEntryDnList.get( i );
+            metadataEntries[i] = browserConnection.getEntryFromCache( dn );
+            if(metadataEntries[i] == null)
+            {
+                metadataEntries[i] = new DirectoryMetadataEntry( dn, browserConnection );
+                metadataEntries[i].setDirectoryEntry( true );
+                browserConnection.cacheEntry( metadataEntries[i] );
+            }
         }
         return metadataEntries;
     }
+
 }

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/InitializeChildrenJob.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/InitializeChildrenJob.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/InitializeChildrenJob.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/InitializeChildrenJob.java Mon Nov 26 11:44:28 2007
@@ -33,6 +33,7 @@
 import org.apache.directory.studio.ldapbrowser.core.events.ChildrenInitializedEvent;
 import org.apache.directory.studio.ldapbrowser.core.events.EventRegistry;
 import org.apache.directory.studio.ldapbrowser.core.model.Control;
+import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
 import org.apache.directory.studio.ldapbrowser.core.model.IEntry;
 import org.apache.directory.studio.ldapbrowser.core.model.IRootDSE;
 import org.apache.directory.studio.ldapbrowser.core.model.ISearch;
@@ -41,7 +42,6 @@
 import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection.ReferralHandlingMethod;
 import org.apache.directory.studio.ldapbrowser.core.model.ISearch.SearchScope;
 import org.apache.directory.studio.ldapbrowser.core.model.impl.AliasBaseEntry;
-import org.apache.directory.studio.ldapbrowser.core.model.impl.ReferralBaseEntry;
 import org.apache.directory.studio.ldapbrowser.core.model.impl.Search;
 
 
@@ -178,7 +178,9 @@
             AliasDereferencingMethod derefAliasMethod = parent.getBrowserConnection().getAliasesDereferencingMethod();
             ReferralHandlingMethod handleReferralsMethod = parent.getBrowserConnection().getReferralsHandlingMethod();
             if ( BrowserCorePlugin.getDefault().getPluginPreferences().getBoolean(
-                BrowserCoreConstants.PREFERENCE_SHOW_ALIAS_AND_REFERRAL_OBJECTS ) )
+                BrowserCoreConstants.PREFERENCE_SHOW_ALIAS_AND_REFERRAL_OBJECTS )
+                && parent.getBrowserConnection().getRootDSE().isControlSupported(
+                    IBrowserConnection.CONTROL_MANAGEDSAIT ) )
             {
                 scope = ( parent.isAlias() || parent.isReferral() ) ? SearchScope.OBJECT : SearchScope.ONELEVEL;
                 derefAliasMethod = parent.isAlias() ? AliasDereferencingMethod.FINDING
@@ -205,7 +207,7 @@
             {
 
                 /*
-                 * clearing old children before filling new subenties is
+                 * clearing old children before filling new children is
                  * necessary to handle aliases and referrals.
                  */
                 IEntry[] connChildren = parent.getChildren();
@@ -220,15 +222,7 @@
 
                 for ( int i = 0; srs != null && i < srs.length; i++ )
                 {
-                    if ( parent.isReferral() )
-                    {
-                        ReferralBaseEntry referralBaseEntry = new ReferralBaseEntry( srs[i].getEntry().getBrowserConnection(),
-                            srs[i].getEntry().getDn() );
-                        parent.addChild( referralBaseEntry );
-                        // System.out.println("Ref: " +
-                        // referralBaseEntry.getUrl());
-                    }
-                    else if ( parent.isAlias() )
+                    if ( parent.isAlias() && !( srs[i].getEntry() instanceof AliasBaseEntry ) )
                     {
                         AliasBaseEntry aliasBaseEntry = new AliasBaseEntry( srs[i].getEntry().getBrowserConnection(), srs[i]
                             .getEntry().getDn() );

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/MoveEntriesJob.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/MoveEntriesJob.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/MoveEntriesJob.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/MoveEntriesJob.java Mon Nov 26 11:44:28 2007
@@ -32,6 +32,7 @@
 
 import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.studio.connection.core.Connection;
+import org.apache.directory.studio.connection.core.DnUtils;
 import org.apache.directory.studio.connection.core.StudioProgressMonitor;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
 import org.apache.directory.studio.ldapbrowser.core.events.EntryMovedEvent;
@@ -41,7 +42,6 @@
 import org.apache.directory.studio.ldapbrowser.core.model.IEntry;
 import org.apache.directory.studio.ldapbrowser.core.model.ISearch;
 import org.apache.directory.studio.ldapbrowser.core.model.ISearchResult;
-import org.apache.directory.studio.ldapbrowser.core.utils.DnUtils;
 
 
 /**

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ReloadSchemasJob.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ReloadSchemasJob.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ReloadSchemasJob.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ReloadSchemasJob.java Mon Nov 26 11:44:28 2007
@@ -32,9 +32,9 @@
 import org.apache.directory.studio.ldapbrowser.core.model.IRootDSE;
 import org.apache.directory.studio.ldapbrowser.core.model.SearchParameter;
 import org.apache.directory.studio.ldapbrowser.core.model.ISearch.SearchScope;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.LdifEnumeration;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.container.LdifContentRecord;
 import org.apache.directory.studio.ldapbrowser.core.model.schema.Schema;
+import org.apache.directory.studio.ldifparser.model.LdifEnumeration;
+import org.apache.directory.studio.ldifparser.model.container.LdifContentRecord;
 
 
 /**
@@ -152,9 +152,9 @@
                         IAttribute.OPERATIONAL_ATTRIBUTE_MODIFY_TIMESTAMP, } );
                 
                 LdifEnumeration le = ExportLdifJob.search( browserConnection, sp, monitor );
-                if ( le.hasNext( monitor ) )
+                if ( le.hasNext() )
                 {
-                    LdifContentRecord schemaRecord = ( LdifContentRecord ) le.next( monitor );
+                    LdifContentRecord schemaRecord = ( LdifContentRecord ) le.next();
                     Schema schema = new Schema();
                     schema.loadFromRecord( schemaRecord );
                     browserConnection.setSchema( schema );

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java Mon Nov 26 11:44:28 2007
@@ -32,6 +32,7 @@
 import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.shared.ldap.name.Rdn;
 import org.apache.directory.studio.connection.core.Connection;
+import org.apache.directory.studio.connection.core.DnUtils;
 import org.apache.directory.studio.connection.core.StudioProgressMonitor;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
 import org.apache.directory.studio.ldapbrowser.core.events.EntryRenamedEvent;
@@ -41,7 +42,6 @@
 import org.apache.directory.studio.ldapbrowser.core.model.IEntry;
 import org.apache.directory.studio.ldapbrowser.core.model.ISearch;
 import org.apache.directory.studio.ldapbrowser.core.model.ISearchResult;
-import org.apache.directory.studio.ldapbrowser.core.utils.DnUtils;
 
 
 /**

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/SearchJob.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/SearchJob.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/SearchJob.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/SearchJob.java Mon Nov 26 11:44:28 2007
@@ -39,8 +39,12 @@
 
 import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.studio.connection.core.Connection;
+import org.apache.directory.studio.connection.core.DnUtils;
 import org.apache.directory.studio.connection.core.StudioProgressMonitor;
+import org.apache.directory.studio.connection.core.io.jndi.JNDIConnectionWrapper;
+import org.apache.directory.studio.connection.core.io.jndi.StudioSearchResult;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
+import org.apache.directory.studio.ldapbrowser.core.BrowserCorePlugin;
 import org.apache.directory.studio.ldapbrowser.core.events.EventRegistry;
 import org.apache.directory.studio.ldapbrowser.core.events.SearchUpdateEvent;
 import org.apache.directory.studio.ldapbrowser.core.model.AttributeHierarchy;
@@ -51,14 +55,12 @@
 import org.apache.directory.studio.ldapbrowser.core.model.IRootDSE;
 import org.apache.directory.studio.ldapbrowser.core.model.ISearch;
 import org.apache.directory.studio.ldapbrowser.core.model.ISearchResult;
-import org.apache.directory.studio.ldapbrowser.core.model.ReferralException;
 import org.apache.directory.studio.ldapbrowser.core.model.SearchParameter;
-import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection.ReferralHandlingMethod;
 import org.apache.directory.studio.ldapbrowser.core.model.impl.BaseDNEntry;
 import org.apache.directory.studio.ldapbrowser.core.model.impl.Entry;
+import org.apache.directory.studio.ldapbrowser.core.model.impl.ReferralBaseEntry;
 import org.apache.directory.studio.ldapbrowser.core.model.impl.Value;
 import org.apache.directory.studio.ldapbrowser.core.model.schema.ObjectClassDescription;
-import org.apache.directory.studio.ldapbrowser.core.utils.DnUtils;
 import org.apache.directory.studio.ldapbrowser.core.utils.JNDIUtils;
 import org.apache.directory.studio.ldapbrowser.core.utils.Utils;
 
@@ -170,6 +172,15 @@
     public static void searchAndUpdateModel( IBrowserConnection browserConnection, ISearch search,
         StudioProgressMonitor monitor )
     {
+        if ( browserConnection.getConnection() == null )
+        {
+            if ( search != null )
+            {
+                search.setSearchResults( new ISearchResult[0] );
+            }
+            return;
+        }
+        
         try
         {
             if ( !monitor.isCanceled() )
@@ -184,27 +195,47 @@
                     NamingEnumeration<SearchResult> enumeration = search( browserConnection, searchParameter, monitor );
 
                     // iterate through the search result
-                    while ( !monitor.isCanceled() && enumeration.hasMore() )
+                    while ( !monitor.isCanceled() && enumeration != null && enumeration.hasMore() )
                     {
-                        SearchResult sr = enumeration.nextElement(); // TODO: referrals exception
+                        SearchResult sr = enumeration.next();
                         LdapDN dn = JNDIUtils.getDn( sr );
+                        boolean isReferral = false;
+                        IBrowserConnection resultBrowserConnection = browserConnection;
+                        if ( sr instanceof StudioSearchResult )
+                        {
+                            StudioSearchResult ssr = ( StudioSearchResult ) sr;
+                            
+                            isReferral = ssr.isReferral();
+                            
+                            Connection connection = ssr.getConnection();
+                            IBrowserConnection bc = BrowserCorePlugin.getDefault().getConnectionManager()
+                                .getBrowserConnection( connection );
+                            if( bc != null )
+                            {
+                                resultBrowserConnection = bc;
+                            }
+                        }
 
                         // get entry from cache or create it
-                        IEntry entry = browserConnection.getEntryFromCache( dn );
+                        IEntry entry = resultBrowserConnection.getEntryFromCache( dn );
                         if ( entry == null )
                         {
-                            entry = createAndCacheEntry( browserConnection, dn );
+                            entry = createAndCacheEntry( resultBrowserConnection, dn );
                         }
-
+                        
                         // initialize special flags
                         initFlags( entry, sr, searchParameter );
 
                         // fill the attributes
                         fillAttributes( entry, sr, search.getSearchParameter() );
-
-                        searchResultList
-                            .add( new org.apache.directory.studio.ldapbrowser.core.model.impl.SearchResult( entry,
-                                search ) );
+                        
+                        if ( isReferral  )
+                        {
+                            entry = new ReferralBaseEntry( resultBrowserConnection, dn );
+                        }
+                        
+                        searchResultList.add( new org.apache.directory.studio.ldapbrowser.core.model.impl.SearchResult(
+                            entry, search ) );
 
                         monitor
                             .reportProgress( searchResultList.size() == 1 ? BrowserCoreMessages.model__retrieved_1_entry
@@ -221,28 +252,6 @@
                     {
                         search.setCountLimitExceeded( true );
                     }
-                    else if ( ce instanceof ReferralException )
-                    {
-                        if ( search.getReferralsHandlingMethod() == ReferralHandlingMethod.FOLLOW )
-                        {
-                            ReferralException re = ( ReferralException ) ce;
-                            ISearch[] referralSearches = re.getReferralSearches();
-                            for ( int i = 0; i < referralSearches.length; i++ )
-                            {
-                                ISearch referralSearch = referralSearches[i];
-
-                                searchAndUpdateModel( referralSearch.getBrowserConnection(), referralSearch, monitor );
-
-                                ISearchResult[] referralSearchResults = referralSearch.getSearchResults();
-                                for ( int j = 0; referralSearchResults != null && j < referralSearchResults.length; j++ )
-                                {
-                                    ISearchResult referralSearchResult = referralSearchResults[j];
-                                    referralSearchResult.setSearch( search );
-                                    searchResultList.add( referralSearchResult );
-                                }
-                            }
-                        }
-                    }
                     else
                     {
                         monitor.reportError( ce );
@@ -307,7 +316,7 @@
         }
 
         NamingEnumeration<SearchResult> result = browserConnection.getConnection().getJNDIConnectionWrapper().search(
-            searchBase, filter, controls, derefAliasMethod, handleReferralsMethod, ldapControls, monitor );
+            searchBase, filter, controls, derefAliasMethod, handleReferralsMethod, ldapControls, monitor, null );
         return result;
     }
 
@@ -338,16 +347,15 @@
 
     private static String getReferralsHandlingMethod( SearchParameter parameter )
     {
-        String m = "follow"; //$NON-NLS-1$
+        String m = JNDIConnectionWrapper.REFERRAL_FOLLOW; //$NON-NLS-1$
 
         switch ( parameter.getReferralsHandlingMethod() )
         {
             case IGNORE:
-                m = "ignore"; //$NON-NLS-1$
+                m = JNDIConnectionWrapper.REFERRAL_IGNORE; //$NON-NLS-1$
                 break;
             case FOLLOW:
-                // m = "follow"; //$NON-NLS-1$
-                m = "throw"; //$NON-NLS-1$
+                m = JNDIConnectionWrapper.REFERRAL_FOLLOW; //$NON-NLS-1$
                 break;
         }
 

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/AttributeDescription.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/AttributeDescription.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/AttributeDescription.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/AttributeDescription.java Mon Nov 26 11:44:28 2007
@@ -88,8 +88,9 @@
         this.parsedAttributeType = attributeDescriptionComponents[0];
         this.parsedLangList = new ArrayList<String>();
         this.parsedOptionList = new ArrayList<String>();
-        for ( String component : attributeDescriptionComponents )
+        for ( int i = 1; i < attributeDescriptionComponents.length; i++ )
         {
+            String component = attributeDescriptionComponents[i];
             if ( component.startsWith( IAttribute.OPTION_LANG_PREFIX ) )
             {
                 this.parsedLangList.add( component );

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/Control.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/Control.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/Control.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/Control.java Mon Nov 26 11:44:28 2007
@@ -23,7 +23,7 @@
 
 import java.io.Serializable;
 
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.lines.LdifControlLine;
+import org.apache.directory.studio.ldifparser.model.lines.LdifControlLine;
 
 
 /**
@@ -50,6 +50,18 @@
     public static final Control SUBENTRIES_CONTROL = new Control( "Subentries Control", "1.3.6.1.4.1.4203.1.10.1",
         false, new byte[]
             { 0x01, 0x01, ( byte ) 0xFF } );
+
+    /**
+     * The Manage DSA IT control as defined in RFC 3296.
+     */
+    public static final Control MANAGEDSAIT_CONTROL = new Control( "Manage DSA IT Control", "2.16.840.1.113730.3.4.2",
+        false, null );
+
+    /**
+     * The Tree Delete control as defined in draft-armijo-ldap-treedelete-02.
+     */
+    public static final Control TREEDELETE_CONTROL = new Control( "Tree Delete Control", "1.2.840.113556.1.4.805",
+        false, null );
 
     /** The symbolic name. */
     private String name;

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/IBrowserConnection.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/IBrowserConnection.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/IBrowserConnection.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/IBrowserConnection.java Mon Nov 26 11:44:28 2007
@@ -28,7 +28,6 @@
 import org.apache.directory.studio.connection.core.ConnectionPropertyPageProvider;
 import org.apache.directory.studio.ldapbrowser.core.BookmarkManager;
 import org.apache.directory.studio.ldapbrowser.core.SearchManager;
-import org.apache.directory.studio.ldapbrowser.core.model.impl.ModificationLogger;
 import org.apache.directory.studio.ldapbrowser.core.model.schema.Schema;
 import org.eclipse.core.runtime.IAdaptable;
 
@@ -340,14 +339,6 @@
      * @return the bookmark manager
      */
     public abstract BookmarkManager getBookmarkManager();
-
-
-    /**
-     * Gets the modification logger.
-     * 
-     * @return the modification logger
-     */
-    public abstract ModificationLogger getModificationLogger();
 
 
     /**

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/IRootDSE.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/IRootDSE.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/IRootDSE.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/IRootDSE.java Mon Nov 26 11:44:28 2007
@@ -87,4 +87,15 @@
      */
     public String[] getSupportedFeatures();
 
+
+    
+    /**
+     * Checks if control is supported.
+     * 
+     * @param oid the OID
+     * 
+     * @return true, if control is supported
+     */
+    public boolean isControlSupported( String oid );
+
 }

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/Password.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/Password.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/Password.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/Password.java Mon Nov 26 11:44:28 2007
@@ -26,8 +26,8 @@
 import java.security.SecureRandom;
 
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
-import org.apache.directory.studio.ldapbrowser.core.utils.LdifUtils;
 import org.apache.directory.studio.ldapbrowser.core.utils.UnixCrypt;
+import org.apache.directory.studio.ldifparser.LdifUtils;
 
 
 /**

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/filter/LdapAndFilterComponent.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/filter/LdapAndFilterComponent.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/filter/LdapAndFilterComponent.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/filter/LdapAndFilterComponent.java Mon Nov 26 11:44:28 2007
@@ -21,8 +21,6 @@
 package org.apache.directory.studio.ldapbrowser.core.model.filter;
 
 
-import java.util.Iterator;
-
 import org.apache.directory.studio.ldapbrowser.core.model.filter.parser.LdapFilterToken;
 
 
@@ -88,9 +86,8 @@
     public String toString()
     {
         String s = startToken != null ? "&" : "";
-        for ( Iterator it = filterList.iterator(); it.hasNext(); )
+        for ( LdapFilter filter : filterList )
         {
-            LdapFilter filter = ( LdapFilter ) it.next();
             if ( filter != null )
             {
                 s += filter.toString();

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/filter/LdapOrFilterComponent.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/filter/LdapOrFilterComponent.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/filter/LdapOrFilterComponent.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/filter/LdapOrFilterComponent.java Mon Nov 26 11:44:28 2007
@@ -21,8 +21,6 @@
 package org.apache.directory.studio.ldapbrowser.core.model.filter;
 
 
-import java.util.Iterator;
-
 import org.apache.directory.studio.ldapbrowser.core.model.filter.parser.LdapFilterToken;
 
 
@@ -88,9 +86,8 @@
     public String toString()
     {
         String s = startToken != null ? "|" : "";
-        for ( Iterator it = filterList.iterator(); it.hasNext(); )
+        for ( LdapFilter filter : filterList )
         {
-            LdapFilter filter = ( LdapFilter ) it.next();
             if ( filter != null )
             {
                 s += filter.toString();

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/filter/parser/LdapFilterToken.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/filter/parser/LdapFilterToken.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/filter/parser/LdapFilterToken.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/filter/parser/LdapFilterToken.java Mon Nov 26 11:44:28 2007
@@ -27,7 +27,7 @@
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  * @version $Rev$, $Date$
  */
-public class LdapFilterToken implements Comparable
+public class LdapFilterToken implements Comparable<LdapFilterToken>
 {
 
     /** The token identifier for a new filter */
@@ -183,7 +183,7 @@
     /**
      * @see java.lang.Comparable#compareTo(java.lang.Object)
      */
-    public int compareTo( Object o )
+    public int compareTo( LdapFilterToken o )
     {
         if ( o instanceof LdapFilterToken )
         {

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/BrowserConnection.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/BrowserConnection.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/BrowserConnection.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/BrowserConnection.java Mon Nov 26 11:44:28 2007
@@ -43,7 +43,7 @@
 import org.apache.directory.studio.ldapbrowser.core.model.IRootDSE;
 import org.apache.directory.studio.ldapbrowser.core.model.URL;
 import org.apache.directory.studio.ldapbrowser.core.model.schema.Schema;
-import org.apache.directory.studio.ldapbrowser.core.utils.DnUtils;
+import org.apache.directory.studio.ldapbrowser.core.utils.Utils;
 import org.eclipse.search.ui.ISearchPageScoreComputer;
 
 
@@ -85,9 +85,6 @@
     /** The entry to children info map. */
     private volatile Map<IEntry, ChildrenInfo> entryToChildrenInfoMap;
 
-    /** The modification logger. */
-    transient ModificationLogger modificationLogger;
-
 
     /**
      * Creates a new instance of BrowserConnection.
@@ -112,7 +109,6 @@
 
         this.searchManager = new SearchManager( this );
         this.bookmarkManager = new BookmarkManager( this );
-        this.modificationLogger = new ModificationLogger( this );
 
         this.entryToChildrenFilterMap = new HashMap<IEntry, String>();
         this.dnToEntryCache = new HashMap<String, IEntry>();
@@ -123,8 +119,6 @@
         this.rootDSE = new RootDSE( this );
         cacheEntry( this.rootDSE );
 
-        this.connection.getJNDIConnectionWrapper().setModificationLogger( this.modificationLogger );
-
         ConnectionEventRegistry.addConnectionUpdateListener( this, ConnectionCorePlugin.getDefault().getEventRunner() );
     }
 
@@ -166,7 +160,7 @@
      */
     public IEntry getEntryFromCache( LdapDN dn )
     {
-        String oidDn = DnUtils.getNormalizedOidString( dn, getSchema() );
+        String oidDn = Utils.getNormalizedOidString( dn, getSchema() );
         if ( dnToEntryCache != null && dnToEntryCache.containsKey( oidDn ) )
         {
             return dnToEntryCache.get( oidDn );
@@ -363,15 +357,6 @@
     /**
      * {@inheritDoc}
      */
-    public ModificationLogger getModificationLogger()
-    {
-        return modificationLogger;
-    }
-
-
-    /**
-     * {@inheritDoc}
-     */
     @SuppressWarnings("unchecked")
     public Object getAdapter( Class adapter )
     {
@@ -394,7 +379,7 @@
      */
     public synchronized void cacheEntry( IEntry entry )
     {
-        dnToEntryCache.put( DnUtils.getNormalizedOidString( entry.getDn(), getSchema() ), entry );
+        dnToEntryCache.put( Utils.getNormalizedOidString( entry.getDn(), getSchema() ), entry );
     }
 
 
@@ -405,7 +390,7 @@
      */
     protected synchronized void uncacheEntry( IEntry entry )
     {
-        dnToEntryCache.remove( DnUtils.getNormalizedOidString( entry.getDn(), getSchema() ) );
+        dnToEntryCache.remove( Utils.getNormalizedOidString( entry.getDn(), getSchema() ) );
     }
 
 
@@ -433,7 +418,7 @@
      */
     protected synchronized void uncacheEntry( LdapDN dn )
     {
-        dnToEntryCache.remove( DnUtils.getNormalizedOidString( dn, getSchema() ) );
+        dnToEntryCache.remove( Utils.getNormalizedOidString( dn, getSchema() ) );
     }
 
 

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/DelegateEntry.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/DelegateEntry.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/DelegateEntry.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/DelegateEntry.java Mon Nov 26 11:44:28 2007
@@ -778,4 +778,21 @@
         return null;
     }
 
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean equals( Object o )
+    {
+        // check argument
+        if ( o == null || !( o instanceof IEntry ) )
+        {
+            return false;
+        }
+        IEntry e = ( IEntry ) o;
+
+        // compare dn and connection
+        return getDn() == null ? e.getDn() == null : ( getDn().equals( e.getDn() ) && getBrowserConnection().equals(
+            e.getBrowserConnection() ) );
+    }
 }

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/DummyConnection.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/DummyConnection.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/DummyConnection.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/DummyConnection.java Mon Nov 26 11:44:28 2007
@@ -220,15 +220,6 @@
     /** 
      * {@inheritDoc}
      */
-    public ModificationLogger getModificationLogger()
-    {
-        return null;
-    }
-
-
-    /** 
-     * {@inheritDoc}
-     */
     public ReferralHandlingMethod getReferralsHandlingMethod()
     {
         return ReferralHandlingMethod.IGNORE;

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/Entry.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/Entry.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/Entry.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/Entry.java Mon Nov 26 11:44:28 2007
@@ -23,9 +23,9 @@
 
 import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.shared.ldap.name.Rdn;
+import org.apache.directory.studio.connection.core.DnUtils;
 import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
 import org.apache.directory.studio.ldapbrowser.core.model.IEntry;
-import org.apache.directory.studio.ldapbrowser.core.utils.DnUtils;
 
 
 /**

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/RootDSE.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/RootDSE.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/RootDSE.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/RootDSE.java Mon Nov 26 11:44:28 2007
@@ -124,5 +124,14 @@
     {
         return false;
     }
+    
+    /**
+     * @see org.apache.directory.studio.ldapbrowser.core.model.IRootDSE#isControlSupported(java.lang.String)
+     */
+    public boolean isControlSupported( String oid )
+    {
+        String[] supportedControls = getSupportedControls();
+        return Arrays.asList( supportedControls ).contains( oid );
+    }
 
 }

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/Value.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/Value.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/Value.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/Value.java Mon Nov 26 11:44:28 2007
@@ -30,8 +30,8 @@
 import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
 import org.apache.directory.studio.ldapbrowser.core.model.IEntry;
 import org.apache.directory.studio.ldapbrowser.core.model.IValue;
-import org.apache.directory.studio.ldapbrowser.core.utils.LdifUtils;
 import org.apache.directory.studio.ldapbrowser.core.utils.Utils;
+import org.apache.directory.studio.ldifparser.LdifUtils;
 import org.eclipse.search.ui.ISearchPageScoreComputer;
 
 

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/schema/Schema.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/schema/Schema.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/schema/Schema.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/schema/Schema.java Mon Nov 26 11:44:28 2007
@@ -40,13 +40,14 @@
 import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.studio.ldapbrowser.core.model.AttributeDescription;
 import org.apache.directory.studio.ldapbrowser.core.model.IAttribute;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.LdifEnumeration;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.container.LdifContainer;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.container.LdifContentRecord;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.lines.LdifAttrValLine;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.parser.LdifParser;
 import org.apache.directory.studio.ldapbrowser.core.model.schema.parser.SchemaLexer;
 import org.apache.directory.studio.ldapbrowser.core.model.schema.parser.SchemaParser;
+import org.apache.directory.studio.ldifparser.LdifFormatParameters;
+import org.apache.directory.studio.ldifparser.model.LdifEnumeration;
+import org.apache.directory.studio.ldifparser.model.container.LdifContainer;
+import org.apache.directory.studio.ldifparser.model.container.LdifContentRecord;
+import org.apache.directory.studio.ldifparser.model.lines.LdifAttrValLine;
+import org.apache.directory.studio.ldifparser.parser.LdifParser;
 
 
 public class Schema implements Serializable
@@ -152,9 +153,9 @@
         {
             LdifParser parser = new LdifParser();
             LdifEnumeration enumeration = parser.parse( reader );
-            if ( enumeration.hasNext( null ) )
+            if ( enumeration.hasNext() )
             {
-                LdifContainer container = enumeration.next( null );
+                LdifContainer container = enumeration.next();
                 if ( container instanceof LdifContentRecord )
                 {
                     LdifContentRecord schemaRecord = ( LdifContentRecord ) container;
@@ -191,7 +192,7 @@
     {
         try
         {
-            writer.write( this.getSchemaRecord().toFormattedString() );
+            writer.write( this.getSchemaRecord().toFormattedString( LdifFormatParameters.DEFAULT ) );
         }
         catch ( Exception e )
         {

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/schema/SchemaPart.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/schema/SchemaPart.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/schema/SchemaPart.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/schema/SchemaPart.java Mon Nov 26 11:44:28 2007
@@ -23,7 +23,7 @@
 
 import java.io.Serializable;
 
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.lines.LdifAttrValLine;
+import org.apache.directory.studio.ldifparser.model.lines.LdifAttrValLine;
 
 
 public abstract class SchemaPart implements Comparable, Serializable

Modified: directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/utils/AttributeComparator.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/utils/AttributeComparator.java?rev=598395&r1=598394&r2=598395&view=diff
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/utils/AttributeComparator.java (original)
+++ directory/sandbox/felixk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/utils/AttributeComparator.java Mon Nov 26 11:44:28 2007
@@ -30,7 +30,7 @@
 import org.apache.directory.studio.ldapbrowser.core.model.IEntry;
 import org.apache.directory.studio.ldapbrowser.core.model.IValue;
 import org.apache.directory.studio.ldapbrowser.core.model.impl.DummyEntry;
-import org.apache.directory.studio.ldapbrowser.core.model.ldif.lines.LdifAttrValLine;
+import org.apache.directory.studio.ldifparser.model.lines.LdifAttrValLine;
 
 
 public class AttributeComparator implements Comparator