Return-Path: X-Original-To: apmail-jackrabbit-oak-commits-archive@minotaur.apache.org Delivered-To: apmail-jackrabbit-oak-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 441AD101D2 for ; Fri, 14 Feb 2014 11:22:02 +0000 (UTC) Received: (qmail 59210 invoked by uid 500); 14 Feb 2014 11:22:01 -0000 Delivered-To: apmail-jackrabbit-oak-commits-archive@jackrabbit.apache.org Received: (qmail 59165 invoked by uid 500); 14 Feb 2014 11:22:00 -0000 Mailing-List: contact oak-commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: oak-dev@jackrabbit.apache.org Delivered-To: mailing list oak-commits@jackrabbit.apache.org Received: (qmail 59130 invoked by uid 99); 14 Feb 2014 11:22:00 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 14 Feb 2014 11:22:00 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 14 Feb 2014 11:21:55 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 5A70823889D5; Fri, 14 Feb 2014 11:21:35 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1568240 [1/4] - in /jackrabbit/oak/trunk: oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/ ... Date: Fri, 14 Feb 2014 11:21:34 -0000 To: oak-commits@jackrabbit.apache.org From: reschke@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20140214112135.5A70823889D5@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: reschke Date: Fri Feb 14 11:21:31 2014 New Revision: 1568240 URL: http://svn.apache.org/r1568240 Log: fix svn:eol-style Modified: jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalGroup.java (props changed) jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalIdentity.java (props changed) jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalIdentityException.java (props changed) jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalIdentityProvider.java (props changed) jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalIdentityProviderManager.java (props changed) jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalIdentityRef.java (props changed) jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalUser.java (props changed) jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/SyncContext.java (props changed) jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/SyncException.java (props changed) jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/SyncHandler.java (props changed) jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/SyncManager.java (props changed) jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/DefaultSyncConfig.java (props changed) jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/DefaultSyncHandler.java (props changed) jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/ExternalIDPManagerImpl.java (props changed) jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/ExternalLoginModule.java (props changed) jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/ExternalLoginModuleFactory.java (props changed) jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/SyncManagerImpl.java (props changed) jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/package-info.java (props changed) jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalLoginModuleTest.java (props changed) jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalLoginModuleTestBase.java (props changed) jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/TestIdentityProvider.java (props changed) jackrabbit/oak/trunk/oak-auth-ldap/src/main/java/org/apache/jackrabbit/oak/security/authentication/ldap/impl/DebugTimer.java (props changed) jackrabbit/oak/trunk/oak-auth-ldap/src/main/java/org/apache/jackrabbit/oak/security/authentication/ldap/impl/LdapGroup.java (props changed) jackrabbit/oak/trunk/oak-auth-ldap/src/main/java/org/apache/jackrabbit/oak/security/authentication/ldap/impl/LdapIdentity.java (props changed) jackrabbit/oak/trunk/oak-auth-ldap/src/main/java/org/apache/jackrabbit/oak/security/authentication/ldap/impl/LdapIdentityProvider.java (props changed) jackrabbit/oak/trunk/oak-auth-ldap/src/main/java/org/apache/jackrabbit/oak/security/authentication/ldap/impl/LdapProviderConfig.java (props changed) jackrabbit/oak/trunk/oak-auth-ldap/src/main/java/org/apache/jackrabbit/oak/security/authentication/ldap/impl/LdapSettings.java (props changed) jackrabbit/oak/trunk/oak-auth-ldap/src/main/java/org/apache/jackrabbit/oak/security/authentication/ldap/impl/LdapUser.java (props changed) jackrabbit/oak/trunk/oak-auth-ldap/src/main/java/org/apache/jackrabbit/oak/security/authentication/ldap/impl/PoolableUnboundConnectionFactory.java (props changed) jackrabbit/oak/trunk/oak-auth-ldap/src/main/java/org/apache/jackrabbit/oak/security/authentication/ldap/impl/UnboundLdapConnectionPool.java (props changed) jackrabbit/oak/trunk/oak-auth-ldap/src/main/java/org/apache/jackrabbit/oak/security/authentication/ldap/package-info.java (props changed) jackrabbit/oak/trunk/oak-auth-ldap/src/test/java/org/apache/jackrabbit/oak/security/authentication/ldap/InternalLdapServer.java (props changed) jackrabbit/oak/trunk/oak-auth-ldap/src/test/java/org/apache/jackrabbit/oak/security/authentication/ldap/LdapLoginStandaloneTest.java (props changed) jackrabbit/oak/trunk/oak-auth-ldap/src/test/java/org/apache/jackrabbit/oak/security/authentication/ldap/LdapLoginTestBase.java (props changed) jackrabbit/oak/trunk/oak-auth-ldap/src/test/java/org/apache/jackrabbit/oak/security/authentication/ldap/LdapLoginWithRepoLoginTest.java (props changed) jackrabbit/oak/trunk/oak-auth-ldap/src/test/java/org/apache/jackrabbit/oak/security/authentication/ldap/LdapProviderTest.java (props changed) jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/package-info.java (props changed) jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/sort/ExternalSort.java (contents, props changed) jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/sort/StringSizeEstimator.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/RepositoryStatsMBean.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreRestore.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobGarbageCollector.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobStoreBuilder.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobStoreConfiguration.java (contents, props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobStoreHelper.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/GarbageCollectorFileState.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/MarkSweepGarbageCollector.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/cloud/CloudBlobStore.java (contents, props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/cloud/CloudBlobStoreBuilder.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java (contents, props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStoreBuilder.java (contents, props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreWrapperBackend.java (contents, props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/identifier/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/aggregate/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/nodetype/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/write/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/value/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/SelectorExecutionPlan.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/fulltext/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/user/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/callback/WhiteboardCallback.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/callback/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/restriction/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/user/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/user/util/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/CompositeRegistration.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardAware.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/xml/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/stats/RepositoryStats.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/stats/StatisticManager.java (props changed) jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/package-info.java (props changed) jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/cache/ConcurrentTest.java (props changed) jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoBlobGCTest.java (props changed) jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/cloud/CloudStoreUtils.java (contents, props changed) jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/cloud/DocumentMKCloudGetLengthTest.java (contents, props changed) jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/cloud/DocumentMKCloudReadTest.java (contents, props changed) jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/cloud/DocumentMKCloudWriteTest.java (contents, props changed) jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/cloud/MongoCloudBlobGCTest.java (props changed) jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/cloud/MongoCloudBlobStoreTest.java (contents, props changed) jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/ds/DataStoreUtils.java (contents, props changed) jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/ds/DocumentMKDataStoreGetLengthTest.java (contents, props changed) jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/ds/DocumentMKDataStoreReadTest.java (contents, props changed) jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/ds/DocumentMKDataStoreWriteTest.java (contents, props changed) jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/ds/MongoDataStoreBlobGCTest.java (props changed) jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/ds/MongoDataStoreBlobStoreTest.java (contents, props changed) jackrabbit/oak/trunk/oak-it/mk/src/test/java/org/apache/jackrabbit/mk/test/MongoCloudBlobMicroKernelFixture.java (contents, props changed) jackrabbit/oak/trunk/oak-it/mk/src/test/java/org/apache/jackrabbit/mk/test/MongoDataStoreBlobMicroKernelFixture.java (contents, props changed) jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/package-info.java (props changed) jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ConcurrentReadIT.java (props changed) jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/LargeOperationIT.java (props changed) jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ValueJcrTest.java (props changed) jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/package-info.java (props changed) jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/package-info.java (props changed) jackrabbit/oak/trunk/oak-mk-remote/src/main/java/org/apache/jackrabbit/mk/client/package-info.java (props changed) jackrabbit/oak/trunk/oak-mk-remote/src/main/java/org/apache/jackrabbit/mk/server/package-info.java (props changed) jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/blobs/GarbageCollectableBlobStore.java (props changed) jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/blobs/package-info.java (props changed) jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/core/package-info.java (props changed) jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/package-info.java (props changed) jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/package-info.java (props changed) jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/package-info.java (props changed) jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/package-info.java (props changed) jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/util/package-info.java (props changed) jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/package-info.java (props changed) jackrabbit/oak/trunk/oak-solr-remote/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/http/package-info.java (props changed) Propchange: jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalGroup.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalIdentity.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalIdentityException.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalIdentityProvider.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalIdentityProviderManager.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalIdentityRef.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalUser.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/SyncContext.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/SyncException.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/SyncHandler.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/SyncManager.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/DefaultSyncConfig.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/DefaultSyncHandler.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/ExternalIDPManagerImpl.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/ExternalLoginModule.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/ExternalLoginModuleFactory.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/SyncManagerImpl.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/package-info.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalLoginModuleTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalLoginModuleTestBase.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/TestIdentityProvider.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-ldap/src/main/java/org/apache/jackrabbit/oak/security/authentication/ldap/impl/DebugTimer.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-ldap/src/main/java/org/apache/jackrabbit/oak/security/authentication/ldap/impl/LdapGroup.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-ldap/src/main/java/org/apache/jackrabbit/oak/security/authentication/ldap/impl/LdapIdentity.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-ldap/src/main/java/org/apache/jackrabbit/oak/security/authentication/ldap/impl/LdapIdentityProvider.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-ldap/src/main/java/org/apache/jackrabbit/oak/security/authentication/ldap/impl/LdapProviderConfig.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-ldap/src/main/java/org/apache/jackrabbit/oak/security/authentication/ldap/impl/LdapSettings.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-ldap/src/main/java/org/apache/jackrabbit/oak/security/authentication/ldap/impl/LdapUser.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-ldap/src/main/java/org/apache/jackrabbit/oak/security/authentication/ldap/impl/PoolableUnboundConnectionFactory.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-ldap/src/main/java/org/apache/jackrabbit/oak/security/authentication/ldap/impl/UnboundLdapConnectionPool.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-ldap/src/main/java/org/apache/jackrabbit/oak/security/authentication/ldap/package-info.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-ldap/src/test/java/org/apache/jackrabbit/oak/security/authentication/ldap/InternalLdapServer.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-ldap/src/test/java/org/apache/jackrabbit/oak/security/authentication/ldap/LdapLoginStandaloneTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-ldap/src/test/java/org/apache/jackrabbit/oak/security/authentication/ldap/LdapLoginTestBase.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-ldap/src/test/java/org/apache/jackrabbit/oak/security/authentication/ldap/LdapLoginWithRepoLoginTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-auth-ldap/src/test/java/org/apache/jackrabbit/oak/security/authentication/ldap/LdapProviderTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/package-info.java ------------------------------------------------------------------------------ svn:eol-style = native Modified: jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/sort/ExternalSort.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/sort/ExternalSort.java?rev=1568240&r1=1568239&r2=1568240&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/sort/ExternalSort.java (original) +++ jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/sort/ExternalSort.java Fri Feb 14 11:21:31 2014 @@ -1,663 +1,663 @@ -/* - * 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.jackrabbit.oak.commons.sort; - -// filename: ExternalSort.java -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.EOFException; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.nio.charset.Charset; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.util.PriorityQueue; -import java.util.zip.Deflater; -import java.util.zip.GZIPInputStream; -import java.util.zip.GZIPOutputStream; -/** - * Source copied from a publicly available library. - * @see https://code.google.com/p/externalsortinginjava - * - * Goal: offer a generic external-memory sorting program in Java. - * - * It must be : - hackable (easy to adapt) - scalable to large files - sensibly efficient. - * - * This software is in the public domain. - * - * Usage: java org/apache/oak/commons/sort//ExternalSort somefile.txt out.txt - * - * You can change the default maximal number of temporary files with the -t flag: java - * org/apache/oak/commons/sort/ExternalSort somefile.txt out.txt -t 3 - * - * For very large files, you might want to use an appropriate flag to allocate more memory to the - * Java VM: java -Xms2G org/apache/oak/commons/sort/ExternalSort somefile.txt out.txt - * - * By (in alphabetical order) Philippe Beaudoin, Eleftherios Chetzakis, Jon Elsas, Christan Grant, - * Daniel Haran, Daniel Lemire, Sugumaran Harikrishnan, Jerry Yang, First published: April 2010 - * originally posted at http://lemire.me/blog/archives/2010/04/01/external-memory-sorting-in-java/ - */ -public class ExternalSort { - - /* - * This sorts a file (input) to an output file (output) using default parameters - * - * @param file source file - * - * @param file output file - */ - public static void sort(File input, File output) throws IOException { - ExternalSort.mergeSortedFiles(ExternalSort.sortInBatch(input), output); - } - - static int DEFAULTMAXTEMPFILES = 1024; - - // we divide the file into small blocks. If the blocks - // are too small, we shall create too many temporary files. - // If they are too big, we shall be using too much memory. - public static long estimateBestSizeOfBlocks(File filetobesorted, - int maxtmpfiles) { - long sizeoffile = filetobesorted.length() * 2; - /** - * We multiply by two because later on someone insisted on counting the memory usage as 2 - * bytes per character. By this model, loading a file with 1 character will use 2 bytes. - */ - // we don't want to open up much more than maxtmpfiles temporary - // files, better run - // out of memory first. - long blocksize = sizeoffile / maxtmpfiles - + (sizeoffile % maxtmpfiles == 0 ? 0 : 1); - - // on the other hand, we don't want to create many temporary - // files - // for naught. If blocksize is smaller than half the free - // memory, grow it. - long freemem = Runtime.getRuntime().freeMemory(); - if (blocksize < freemem / 2) { - blocksize = freemem / 2; - } - return blocksize; - } - - /** - * This will simply load the file by blocks of lines, then sort them in-memory, and write the - * result to temporary files that have to be merged later. - * - * @param file - * some flat file - * @param cmp - * string comparator - * @return a list of temporary flat files - */ - public static List sortInBatch(File file) - throws IOException { - return sortInBatch(file, defaultcomparator, DEFAULTMAXTEMPFILES, - Charset.defaultCharset(), null, false); - } - - /** - * This will simply load the file by blocks of lines, then sort them in-memory, and write the - * result to temporary files that have to be merged later. - * - * @param file - * some flat file - * @param cmp - * string comparator - * @return a list of temporary flat files - */ - public static List sortInBatch(File file, Comparator cmp) - throws IOException { - return sortInBatch(file, cmp, DEFAULTMAXTEMPFILES, - Charset.defaultCharset(), null, false); - } - - /** - * This will simply load the file by blocks of lines, then sort them in-memory, and write the - * result to temporary files that have to be merged later. - * - * @param file - * some flat file - * @param cmp - * string comparator - * @param distinct - * Pass true if duplicate lines should be discarded. - * @return a list of temporary flat files - */ - public static List sortInBatch(File file, Comparator cmp, - boolean distinct) throws IOException { - return sortInBatch(file, cmp, DEFAULTMAXTEMPFILES, - Charset.defaultCharset(), null, distinct); - } - - /** - * This will simply load the file by blocks of lines, then sort them in-memory, and write the - * result to temporary files that have to be merged later. You can specify a bound on the number - * of temporary files that will be created. - * - * @param file - * some flat file - * @param cmp - * string comparator - * @param maxtmpfiles - * maximal number of temporary files - * @param Charset - * character set to use (can use Charset.defaultCharset()) - * @param tmpdirectory - * location of the temporary files (set to null for default location) - * @param distinct - * Pass true if duplicate lines should be discarded. - * @param numHeader - * number of lines to preclude before sorting starts - * @parame usegzip use gzip compression for the temporary files - * @return a list of temporary flat files - */ - public static List sortInBatch(File file, Comparator cmp, - int maxtmpfiles, Charset cs, File tmpdirectory, - boolean distinct, int numHeader, boolean usegzip) - throws IOException { - List files = new ArrayList(); - BufferedReader fbr = new BufferedReader(new InputStreamReader( - new FileInputStream(file), cs)); - long blocksize = estimateBestSizeOfBlocks(file, maxtmpfiles);// in - // bytes - - try { - List tmplist = new ArrayList(); - String line = ""; - try { - int counter = 0; - while (line != null) { - long currentblocksize = 0;// in bytes - while ((currentblocksize < blocksize) - && ((line = fbr.readLine()) != null)) { - // as long as you have enough memory - if (counter < numHeader) { - counter++; - continue; - } - tmplist.add(line); - // ram usage estimation, not - // very accurate, still more - // realistic that the simple 2 * - // String.length - currentblocksize += StringSizeEstimator - .estimatedSizeOf(line); - } - files.add(sortAndSave(tmplist, cmp, cs, - tmpdirectory, distinct, usegzip)); - tmplist.clear(); - } - } catch (EOFException oef) { - if (tmplist.size() > 0) { - files.add(sortAndSave(tmplist, cmp, cs, - tmpdirectory, distinct, usegzip)); - tmplist.clear(); - } - } - } finally { - fbr.close(); - } - return files; - } - - /** - * This will simply load the file by blocks of lines, then sort them in-memory, and write the - * result to temporary files that have to be merged later. You can specify a bound on the number - * of temporary files that will be created. - * - * @param file - * some flat file - * @param cmp - * string comparator - * @param maxtmpfiles - * maximal number of temporary files - * @param Charset - * character set to use (can use Charset.defaultCharset()) - * @param tmpdirectory - * location of the temporary files (set to null for default location) - * @param distinct - * Pass true if duplicate lines should be discarded. - * @return a list of temporary flat files - */ - public static List sortInBatch(File file, Comparator cmp, - int maxtmpfiles, Charset cs, File tmpdirectory, boolean distinct) - throws IOException { - return sortInBatch(file, cmp, maxtmpfiles, cs, tmpdirectory, - distinct, 0, false); - } - - /** - * Sort a list and save it to a temporary file - * - * @return the file containing the sorted data - * @param tmplist - * data to be sorted - * @param cmp - * string comparator - * @param cs - * charset to use for output (can use Charset.defaultCharset()) - * @param tmpdirectory - * location of the temporary files (set to null for default location) - * @param distinct - * Pass true if duplicate lines should be discarded. - */ - public static File sortAndSave(List tmplist, - Comparator cmp, Charset cs, File tmpdirectory, - boolean distinct, boolean usegzip) throws IOException { - Collections.sort(tmplist, cmp); - File newtmpfile = File.createTempFile("sortInBatch", - "flatfile", tmpdirectory); - newtmpfile.deleteOnExit(); - OutputStream out = new FileOutputStream(newtmpfile); - int ZIPBUFFERSIZE = 2048; - if (usegzip) - out = new GZIPOutputStream(out, ZIPBUFFERSIZE) { - { - def.setLevel(Deflater.BEST_SPEED); - } - }; - BufferedWriter fbw = new BufferedWriter(new OutputStreamWriter( - out, cs)); - String lastLine = null; - try { - for (String r : tmplist) { - // Skip duplicate lines - if (!distinct || !r.equals(lastLine)) { - fbw.write(r); - fbw.newLine(); - lastLine = r; - } - } - } finally { - fbw.close(); - } - return newtmpfile; - } - - /** - * Sort a list and save it to a temporary file - * - * @return the file containing the sorted data - * @param tmplist - * data to be sorted - * @param cmp - * string comparator - * @param cs - * charset to use for output (can use Charset.defaultCharset()) - * @param tmpdirectory - * location of the temporary files (set to null for default location) - */ - public static File sortAndSave(List tmplist, - Comparator cmp, Charset cs, File tmpdirectory) - throws IOException { - return sortAndSave(tmplist, cmp, cs, tmpdirectory, false, false); - } - - /** - * This merges a bunch of temporary flat files - * - * @param files - * @param output - * file - * @return The number of lines sorted. (P. Beaudoin) - */ - public static int mergeSortedFiles(List files, File outputfile) throws IOException { - return mergeSortedFiles(files, outputfile, defaultcomparator, - Charset.defaultCharset()); - } - - /** - * This merges a bunch of temporary flat files - * - * @param files - * @param output - * file - * @return The number of lines sorted. (P. Beaudoin) - */ - public static int mergeSortedFiles(List files, File outputfile, - final Comparator cmp) throws IOException { - return mergeSortedFiles(files, outputfile, cmp, - Charset.defaultCharset()); - } - - /** - * This merges a bunch of temporary flat files - * - * @param files - * @param output - * file - * @return The number of lines sorted. (P. Beaudoin) - */ - public static int mergeSortedFiles(List files, File outputfile, - final Comparator cmp, boolean distinct) - throws IOException { - return mergeSortedFiles(files, outputfile, cmp, - Charset.defaultCharset(), distinct); - } - - /** - * This merges a bunch of temporary flat files - * - * @param files - * The {@link List} of sorted {@link File}s to be merged. - * @param Charset - * character set to use to load the strings - * @param distinct - * Pass true if duplicate lines should be discarded. (elchetz@gmail.com) - * @param outputfile - * The output {@link File} to merge the results to. - * @param cmp - * The {@link Comparator} to use to compare {@link String}s. - * @param cs - * The {@link Charset} to be used for the byte to character conversion. - * @param append - * Pass true if result should append to {@link File} instead of - * overwrite. Default to be false for overloading methods. - * @param usegzip - * assumes we used gzip compression for temporary files - * @return The number of lines sorted. (P. Beaudoin) - * @since v0.1.4 - */ - public static int mergeSortedFiles(List files, File outputfile, - final Comparator cmp, Charset cs, boolean distinct, - boolean append, boolean usegzip) throws IOException { - PriorityQueue pq = new PriorityQueue( - 11, new Comparator() { - @Override - public int compare(BinaryFileBuffer i, - BinaryFileBuffer j) { - return cmp.compare(i.peek(), j.peek()); - } - }); - ArrayList bfbs = new ArrayList(); - for (File f : files) { - final int BUFFERSIZE = 2048; - InputStream in = new FileInputStream(f); - BufferedReader br; - if (usegzip) { - br = new BufferedReader(new InputStreamReader( - new GZIPInputStream(in, BUFFERSIZE), cs)); - } else { - br = new BufferedReader(new InputStreamReader(in, - cs)); - } - - BinaryFileBuffer bfb = new BinaryFileBuffer(br); - bfbs.add(bfb); - } - BufferedWriter fbw = new BufferedWriter(new OutputStreamWriter( - new FileOutputStream(outputfile, append), cs)); - int rowcounter = merge(fbw, cmp, distinct, bfbs); - for (File f : files) - f.delete(); - return rowcounter; - } - - /** - * This merges several BinaryFileBuffer to an output writer. - * - * @param BufferedWriter - * A buffer where we write the data. - * @param cmp - * A comparator object that tells us how to sort the lines. - * @param distinct - * Pass true if duplicate lines should be discarded. (elchetz@gmail.com) - * @param buffers - * Where the data should be read. - * @return The number of lines sorted. (P. Beaudoin) - * - */ - public static int merge(BufferedWriter fbw, final Comparator cmp, boolean distinct, - List buffers) throws IOException { - PriorityQueue pq = new PriorityQueue( - 11, new Comparator() { - @Override - public int compare(BinaryFileBuffer i, - BinaryFileBuffer j) { - return cmp.compare(i.peek(), j.peek()); - } - }); - for (BinaryFileBuffer bfb : buffers) - if (!bfb.empty()) - pq.add(bfb); - int rowcounter = 0; - String lastLine = null; - try { - while (pq.size() > 0) { - BinaryFileBuffer bfb = pq.poll(); - String r = bfb.pop(); - // Skip duplicate lines - if (!distinct || !r.equals(lastLine)) { - fbw.write(r); - fbw.newLine(); - lastLine = r; - } - ++rowcounter; - if (bfb.empty()) { - bfb.fbr.close(); - } else { - pq.add(bfb); // add it back - } - } - } finally { - fbw.close(); - for (BinaryFileBuffer bfb : pq) - bfb.close(); - } - return rowcounter; - - } - - /** - * This merges a bunch of temporary flat files - * - * @param files - * The {@link List} of sorted {@link File}s to be merged. - * @param Charset - * character set to use to load the strings - * @param distinct - * Pass true if duplicate lines should be discarded. (elchetz@gmail.com) - * @param outputfile - * The output {@link File} to merge the results to. - * @param cmp - * The {@link Comparator} to use to compare {@link String}s. - * @param cs - * The {@link Charset} to be used for the byte to character conversion. - * @return The number of lines sorted. (P. Beaudoin) - * @since v0.1.2 - */ - public static int mergeSortedFiles(List files, File outputfile, - final Comparator cmp, Charset cs, boolean distinct) - throws IOException { - return mergeSortedFiles(files, outputfile, cmp, cs, distinct, - false, false); - } - - /** - * This merges a bunch of temporary flat files - * - * @param files - * @param output - * file - * @param Charset - * character set to use to load the strings - * @return The number of lines sorted. (P. Beaudoin) - */ - public static int mergeSortedFiles(List files, File outputfile, - final Comparator cmp, Charset cs) throws IOException { - return mergeSortedFiles(files, outputfile, cmp, cs, false); - } - - public static void displayUsage() { - System.out - .println("java com.google.externalsorting.ExternalSort inputfile outputfile"); - System.out.println("Flags are:"); - System.out.println("-v or --verbose: verbose output"); - System.out.println("-d or --distinct: prune duplicate lines"); - System.out - .println("-t or --maxtmpfiles (followed by an integer): specify an upper bound on the number of temporary files"); - System.out - .println("-c or --charset (followed by a charset code): specify the character set to use (for sorting)"); - System.out - .println("-z or --gzip: use compression for the temporary files"); - System.out - .println("-H or --header (followed by an integer): ignore the first few lines"); - System.out - .println("-s or --store (following by a path): where to store the temporary files"); - System.out.println("-h or --help: display this message"); - } - - public static void main(String[] args) throws IOException { - boolean verbose = false; - boolean distinct = false; - int maxtmpfiles = DEFAULTMAXTEMPFILES; - Charset cs = Charset.defaultCharset(); - String inputfile = null, outputfile = null; - File tempFileStore = null; - boolean usegzip = false; - int headersize = 0; - for (int param = 0; param < args.length; ++param) { - if (args[param].equals("-v") - || args[param].equals("--verbose")) { - verbose = true; - } else if ((args[param].equals("-h") || args[param] - .equals("--help"))) { - displayUsage(); - return; - } else if ((args[param].equals("-d") || args[param] - .equals("--distinct"))) { - distinct = true; - } else if ((args[param].equals("-t") || args[param] - .equals("--maxtmpfiles")) - && args.length > param + 1) { - param++; - maxtmpfiles = Integer.parseInt(args[param]); - if (headersize < 0) { - System.err - .println("maxtmpfiles should be positive"); - } - } else if ((args[param].equals("-c") || args[param] - .equals("--charset")) - && args.length > param + 1) { - param++; - cs = Charset.forName(args[param]); - } else if ((args[param].equals("-z") || args[param] - .equals("--gzip"))) { - usegzip = true; - } else if ((args[param].equals("-H") || args[param] - .equals("--header")) && args.length > param + 1) { - param++; - headersize = Integer.parseInt(args[param]); - if (headersize < 0) { - System.err - .println("headersize should be positive"); - } - } else if ((args[param].equals("-s") || args[param] - .equals("--store")) && args.length > param + 1) { - param++; - tempFileStore = new File(args[param]); - } else { - if (inputfile == null) - inputfile = args[param]; - else if (outputfile == null) - outputfile = args[param]; - else - System.out.println("Unparsed: " - + args[param]); - } - } - if (outputfile == null) { - System.out - .println("please provide input and output file names"); - displayUsage(); - return; - } - Comparator comparator = defaultcomparator; - List l = sortInBatch(new File(inputfile), comparator, - maxtmpfiles, cs, tempFileStore, distinct, headersize, - usegzip); - if (verbose) - System.out - .println("created " + l.size() + " tmp files"); - mergeSortedFiles(l, new File(outputfile), comparator, cs, - distinct, false, usegzip); - } - - public static Comparator defaultcomparator = new Comparator() { - @Override - public int compare(String r1, String r2) { - return r1.compareTo(r2); - } - }; - -} - -class BinaryFileBuffer { - public BufferedReader fbr; - private String cache; - private boolean empty; - - public BinaryFileBuffer(BufferedReader r) - throws IOException { - this.fbr = r; - reload(); - } - - public boolean empty() { - return this.empty; - } - - private void reload() throws IOException { - try { - if ((this.cache = this.fbr.readLine()) == null) { - this.empty = true; - this.cache = null; - } else { - this.empty = false; - } - } catch (EOFException oef) { - this.empty = true; - this.cache = null; - } - } - - public void close() throws IOException { - this.fbr.close(); - } - - public String peek() { - if (empty()) - return null; - return this.cache.toString(); - } - - public String pop() throws IOException { - String answer = peek(); - reload(); - return answer; - } - -} +/* + * 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.jackrabbit.oak.commons.sort; + +// filename: ExternalSort.java +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.EOFException; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.PriorityQueue; +import java.util.zip.Deflater; +import java.util.zip.GZIPInputStream; +import java.util.zip.GZIPOutputStream; +/** + * Source copied from a publicly available library. + * @see https://code.google.com/p/externalsortinginjava + * + * Goal: offer a generic external-memory sorting program in Java. + * + * It must be : - hackable (easy to adapt) - scalable to large files - sensibly efficient. + * + * This software is in the public domain. + * + * Usage: java org/apache/oak/commons/sort//ExternalSort somefile.txt out.txt + * + * You can change the default maximal number of temporary files with the -t flag: java + * org/apache/oak/commons/sort/ExternalSort somefile.txt out.txt -t 3 + * + * For very large files, you might want to use an appropriate flag to allocate more memory to the + * Java VM: java -Xms2G org/apache/oak/commons/sort/ExternalSort somefile.txt out.txt + * + * By (in alphabetical order) Philippe Beaudoin, Eleftherios Chetzakis, Jon Elsas, Christan Grant, + * Daniel Haran, Daniel Lemire, Sugumaran Harikrishnan, Jerry Yang, First published: April 2010 + * originally posted at http://lemire.me/blog/archives/2010/04/01/external-memory-sorting-in-java/ + */ +public class ExternalSort { + + /* + * This sorts a file (input) to an output file (output) using default parameters + * + * @param file source file + * + * @param file output file + */ + public static void sort(File input, File output) throws IOException { + ExternalSort.mergeSortedFiles(ExternalSort.sortInBatch(input), output); + } + + static int DEFAULTMAXTEMPFILES = 1024; + + // we divide the file into small blocks. If the blocks + // are too small, we shall create too many temporary files. + // If they are too big, we shall be using too much memory. + public static long estimateBestSizeOfBlocks(File filetobesorted, + int maxtmpfiles) { + long sizeoffile = filetobesorted.length() * 2; + /** + * We multiply by two because later on someone insisted on counting the memory usage as 2 + * bytes per character. By this model, loading a file with 1 character will use 2 bytes. + */ + // we don't want to open up much more than maxtmpfiles temporary + // files, better run + // out of memory first. + long blocksize = sizeoffile / maxtmpfiles + + (sizeoffile % maxtmpfiles == 0 ? 0 : 1); + + // on the other hand, we don't want to create many temporary + // files + // for naught. If blocksize is smaller than half the free + // memory, grow it. + long freemem = Runtime.getRuntime().freeMemory(); + if (blocksize < freemem / 2) { + blocksize = freemem / 2; + } + return blocksize; + } + + /** + * This will simply load the file by blocks of lines, then sort them in-memory, and write the + * result to temporary files that have to be merged later. + * + * @param file + * some flat file + * @param cmp + * string comparator + * @return a list of temporary flat files + */ + public static List sortInBatch(File file) + throws IOException { + return sortInBatch(file, defaultcomparator, DEFAULTMAXTEMPFILES, + Charset.defaultCharset(), null, false); + } + + /** + * This will simply load the file by blocks of lines, then sort them in-memory, and write the + * result to temporary files that have to be merged later. + * + * @param file + * some flat file + * @param cmp + * string comparator + * @return a list of temporary flat files + */ + public static List sortInBatch(File file, Comparator cmp) + throws IOException { + return sortInBatch(file, cmp, DEFAULTMAXTEMPFILES, + Charset.defaultCharset(), null, false); + } + + /** + * This will simply load the file by blocks of lines, then sort them in-memory, and write the + * result to temporary files that have to be merged later. + * + * @param file + * some flat file + * @param cmp + * string comparator + * @param distinct + * Pass true if duplicate lines should be discarded. + * @return a list of temporary flat files + */ + public static List sortInBatch(File file, Comparator cmp, + boolean distinct) throws IOException { + return sortInBatch(file, cmp, DEFAULTMAXTEMPFILES, + Charset.defaultCharset(), null, distinct); + } + + /** + * This will simply load the file by blocks of lines, then sort them in-memory, and write the + * result to temporary files that have to be merged later. You can specify a bound on the number + * of temporary files that will be created. + * + * @param file + * some flat file + * @param cmp + * string comparator + * @param maxtmpfiles + * maximal number of temporary files + * @param Charset + * character set to use (can use Charset.defaultCharset()) + * @param tmpdirectory + * location of the temporary files (set to null for default location) + * @param distinct + * Pass true if duplicate lines should be discarded. + * @param numHeader + * number of lines to preclude before sorting starts + * @parame usegzip use gzip compression for the temporary files + * @return a list of temporary flat files + */ + public static List sortInBatch(File file, Comparator cmp, + int maxtmpfiles, Charset cs, File tmpdirectory, + boolean distinct, int numHeader, boolean usegzip) + throws IOException { + List files = new ArrayList(); + BufferedReader fbr = new BufferedReader(new InputStreamReader( + new FileInputStream(file), cs)); + long blocksize = estimateBestSizeOfBlocks(file, maxtmpfiles);// in + // bytes + + try { + List tmplist = new ArrayList(); + String line = ""; + try { + int counter = 0; + while (line != null) { + long currentblocksize = 0;// in bytes + while ((currentblocksize < blocksize) + && ((line = fbr.readLine()) != null)) { + // as long as you have enough memory + if (counter < numHeader) { + counter++; + continue; + } + tmplist.add(line); + // ram usage estimation, not + // very accurate, still more + // realistic that the simple 2 * + // String.length + currentblocksize += StringSizeEstimator + .estimatedSizeOf(line); + } + files.add(sortAndSave(tmplist, cmp, cs, + tmpdirectory, distinct, usegzip)); + tmplist.clear(); + } + } catch (EOFException oef) { + if (tmplist.size() > 0) { + files.add(sortAndSave(tmplist, cmp, cs, + tmpdirectory, distinct, usegzip)); + tmplist.clear(); + } + } + } finally { + fbr.close(); + } + return files; + } + + /** + * This will simply load the file by blocks of lines, then sort them in-memory, and write the + * result to temporary files that have to be merged later. You can specify a bound on the number + * of temporary files that will be created. + * + * @param file + * some flat file + * @param cmp + * string comparator + * @param maxtmpfiles + * maximal number of temporary files + * @param Charset + * character set to use (can use Charset.defaultCharset()) + * @param tmpdirectory + * location of the temporary files (set to null for default location) + * @param distinct + * Pass true if duplicate lines should be discarded. + * @return a list of temporary flat files + */ + public static List sortInBatch(File file, Comparator cmp, + int maxtmpfiles, Charset cs, File tmpdirectory, boolean distinct) + throws IOException { + return sortInBatch(file, cmp, maxtmpfiles, cs, tmpdirectory, + distinct, 0, false); + } + + /** + * Sort a list and save it to a temporary file + * + * @return the file containing the sorted data + * @param tmplist + * data to be sorted + * @param cmp + * string comparator + * @param cs + * charset to use for output (can use Charset.defaultCharset()) + * @param tmpdirectory + * location of the temporary files (set to null for default location) + * @param distinct + * Pass true if duplicate lines should be discarded. + */ + public static File sortAndSave(List tmplist, + Comparator cmp, Charset cs, File tmpdirectory, + boolean distinct, boolean usegzip) throws IOException { + Collections.sort(tmplist, cmp); + File newtmpfile = File.createTempFile("sortInBatch", + "flatfile", tmpdirectory); + newtmpfile.deleteOnExit(); + OutputStream out = new FileOutputStream(newtmpfile); + int ZIPBUFFERSIZE = 2048; + if (usegzip) + out = new GZIPOutputStream(out, ZIPBUFFERSIZE) { + { + def.setLevel(Deflater.BEST_SPEED); + } + }; + BufferedWriter fbw = new BufferedWriter(new OutputStreamWriter( + out, cs)); + String lastLine = null; + try { + for (String r : tmplist) { + // Skip duplicate lines + if (!distinct || !r.equals(lastLine)) { + fbw.write(r); + fbw.newLine(); + lastLine = r; + } + } + } finally { + fbw.close(); + } + return newtmpfile; + } + + /** + * Sort a list and save it to a temporary file + * + * @return the file containing the sorted data + * @param tmplist + * data to be sorted + * @param cmp + * string comparator + * @param cs + * charset to use for output (can use Charset.defaultCharset()) + * @param tmpdirectory + * location of the temporary files (set to null for default location) + */ + public static File sortAndSave(List tmplist, + Comparator cmp, Charset cs, File tmpdirectory) + throws IOException { + return sortAndSave(tmplist, cmp, cs, tmpdirectory, false, false); + } + + /** + * This merges a bunch of temporary flat files + * + * @param files + * @param output + * file + * @return The number of lines sorted. (P. Beaudoin) + */ + public static int mergeSortedFiles(List files, File outputfile) throws IOException { + return mergeSortedFiles(files, outputfile, defaultcomparator, + Charset.defaultCharset()); + } + + /** + * This merges a bunch of temporary flat files + * + * @param files + * @param output + * file + * @return The number of lines sorted. (P. Beaudoin) + */ + public static int mergeSortedFiles(List files, File outputfile, + final Comparator cmp) throws IOException { + return mergeSortedFiles(files, outputfile, cmp, + Charset.defaultCharset()); + } + + /** + * This merges a bunch of temporary flat files + * + * @param files + * @param output + * file + * @return The number of lines sorted. (P. Beaudoin) + */ + public static int mergeSortedFiles(List files, File outputfile, + final Comparator cmp, boolean distinct) + throws IOException { + return mergeSortedFiles(files, outputfile, cmp, + Charset.defaultCharset(), distinct); + } + + /** + * This merges a bunch of temporary flat files + * + * @param files + * The {@link List} of sorted {@link File}s to be merged. + * @param Charset + * character set to use to load the strings + * @param distinct + * Pass true if duplicate lines should be discarded. (elchetz@gmail.com) + * @param outputfile + * The output {@link File} to merge the results to. + * @param cmp + * The {@link Comparator} to use to compare {@link String}s. + * @param cs + * The {@link Charset} to be used for the byte to character conversion. + * @param append + * Pass true if result should append to {@link File} instead of + * overwrite. Default to be false for overloading methods. + * @param usegzip + * assumes we used gzip compression for temporary files + * @return The number of lines sorted. (P. Beaudoin) + * @since v0.1.4 + */ + public static int mergeSortedFiles(List files, File outputfile, + final Comparator cmp, Charset cs, boolean distinct, + boolean append, boolean usegzip) throws IOException { + PriorityQueue pq = new PriorityQueue( + 11, new Comparator() { + @Override + public int compare(BinaryFileBuffer i, + BinaryFileBuffer j) { + return cmp.compare(i.peek(), j.peek()); + } + }); + ArrayList bfbs = new ArrayList(); + for (File f : files) { + final int BUFFERSIZE = 2048; + InputStream in = new FileInputStream(f); + BufferedReader br; + if (usegzip) { + br = new BufferedReader(new InputStreamReader( + new GZIPInputStream(in, BUFFERSIZE), cs)); + } else { + br = new BufferedReader(new InputStreamReader(in, + cs)); + } + + BinaryFileBuffer bfb = new BinaryFileBuffer(br); + bfbs.add(bfb); + } + BufferedWriter fbw = new BufferedWriter(new OutputStreamWriter( + new FileOutputStream(outputfile, append), cs)); + int rowcounter = merge(fbw, cmp, distinct, bfbs); + for (File f : files) + f.delete(); + return rowcounter; + } + + /** + * This merges several BinaryFileBuffer to an output writer. + * + * @param BufferedWriter + * A buffer where we write the data. + * @param cmp + * A comparator object that tells us how to sort the lines. + * @param distinct + * Pass true if duplicate lines should be discarded. (elchetz@gmail.com) + * @param buffers + * Where the data should be read. + * @return The number of lines sorted. (P. Beaudoin) + * + */ + public static int merge(BufferedWriter fbw, final Comparator cmp, boolean distinct, + List buffers) throws IOException { + PriorityQueue pq = new PriorityQueue( + 11, new Comparator() { + @Override + public int compare(BinaryFileBuffer i, + BinaryFileBuffer j) { + return cmp.compare(i.peek(), j.peek()); + } + }); + for (BinaryFileBuffer bfb : buffers) + if (!bfb.empty()) + pq.add(bfb); + int rowcounter = 0; + String lastLine = null; + try { + while (pq.size() > 0) { + BinaryFileBuffer bfb = pq.poll(); + String r = bfb.pop(); + // Skip duplicate lines + if (!distinct || !r.equals(lastLine)) { + fbw.write(r); + fbw.newLine(); + lastLine = r; + } + ++rowcounter; + if (bfb.empty()) { + bfb.fbr.close(); + } else { + pq.add(bfb); // add it back + } + } + } finally { + fbw.close(); + for (BinaryFileBuffer bfb : pq) + bfb.close(); + } + return rowcounter; + + } + + /** + * This merges a bunch of temporary flat files + * + * @param files + * The {@link List} of sorted {@link File}s to be merged. + * @param Charset + * character set to use to load the strings + * @param distinct + * Pass true if duplicate lines should be discarded. (elchetz@gmail.com) + * @param outputfile + * The output {@link File} to merge the results to. + * @param cmp + * The {@link Comparator} to use to compare {@link String}s. + * @param cs + * The {@link Charset} to be used for the byte to character conversion. + * @return The number of lines sorted. (P. Beaudoin) + * @since v0.1.2 + */ + public static int mergeSortedFiles(List files, File outputfile, + final Comparator cmp, Charset cs, boolean distinct) + throws IOException { + return mergeSortedFiles(files, outputfile, cmp, cs, distinct, + false, false); + } + + /** + * This merges a bunch of temporary flat files + * + * @param files + * @param output + * file + * @param Charset + * character set to use to load the strings + * @return The number of lines sorted. (P. Beaudoin) + */ + public static int mergeSortedFiles(List files, File outputfile, + final Comparator cmp, Charset cs) throws IOException { + return mergeSortedFiles(files, outputfile, cmp, cs, false); + } + + public static void displayUsage() { + System.out + .println("java com.google.externalsorting.ExternalSort inputfile outputfile"); + System.out.println("Flags are:"); + System.out.println("-v or --verbose: verbose output"); + System.out.println("-d or --distinct: prune duplicate lines"); + System.out + .println("-t or --maxtmpfiles (followed by an integer): specify an upper bound on the number of temporary files"); + System.out + .println("-c or --charset (followed by a charset code): specify the character set to use (for sorting)"); + System.out + .println("-z or --gzip: use compression for the temporary files"); + System.out + .println("-H or --header (followed by an integer): ignore the first few lines"); + System.out + .println("-s or --store (following by a path): where to store the temporary files"); + System.out.println("-h or --help: display this message"); + } + + public static void main(String[] args) throws IOException { + boolean verbose = false; + boolean distinct = false; + int maxtmpfiles = DEFAULTMAXTEMPFILES; + Charset cs = Charset.defaultCharset(); + String inputfile = null, outputfile = null; + File tempFileStore = null; + boolean usegzip = false; + int headersize = 0; + for (int param = 0; param < args.length; ++param) { + if (args[param].equals("-v") + || args[param].equals("--verbose")) { + verbose = true; + } else if ((args[param].equals("-h") || args[param] + .equals("--help"))) { + displayUsage(); + return; + } else if ((args[param].equals("-d") || args[param] + .equals("--distinct"))) { + distinct = true; + } else if ((args[param].equals("-t") || args[param] + .equals("--maxtmpfiles")) + && args.length > param + 1) { + param++; + maxtmpfiles = Integer.parseInt(args[param]); + if (headersize < 0) { + System.err + .println("maxtmpfiles should be positive"); + } + } else if ((args[param].equals("-c") || args[param] + .equals("--charset")) + && args.length > param + 1) { + param++; + cs = Charset.forName(args[param]); + } else if ((args[param].equals("-z") || args[param] + .equals("--gzip"))) { + usegzip = true; + } else if ((args[param].equals("-H") || args[param] + .equals("--header")) && args.length > param + 1) { + param++; + headersize = Integer.parseInt(args[param]); + if (headersize < 0) { + System.err + .println("headersize should be positive"); + } + } else if ((args[param].equals("-s") || args[param] + .equals("--store")) && args.length > param + 1) { + param++; + tempFileStore = new File(args[param]); + } else { + if (inputfile == null) + inputfile = args[param]; + else if (outputfile == null) + outputfile = args[param]; + else + System.out.println("Unparsed: " + + args[param]); + } + } + if (outputfile == null) { + System.out + .println("please provide input and output file names"); + displayUsage(); + return; + } + Comparator comparator = defaultcomparator; + List l = sortInBatch(new File(inputfile), comparator, + maxtmpfiles, cs, tempFileStore, distinct, headersize, + usegzip); + if (verbose) + System.out + .println("created " + l.size() + " tmp files"); + mergeSortedFiles(l, new File(outputfile), comparator, cs, + distinct, false, usegzip); + } + + public static Comparator defaultcomparator = new Comparator() { + @Override + public int compare(String r1, String r2) { + return r1.compareTo(r2); + } + }; + +} + +class BinaryFileBuffer { + public BufferedReader fbr; + private String cache; + private boolean empty; + + public BinaryFileBuffer(BufferedReader r) + throws IOException { + this.fbr = r; + reload(); + } + + public boolean empty() { + return this.empty; + } + + private void reload() throws IOException { + try { + if ((this.cache = this.fbr.readLine()) == null) { + this.empty = true; + this.cache = null; + } else { + this.empty = false; + } + } catch (EOFException oef) { + this.empty = true; + this.cache = null; + } + } + + public void close() throws IOException { + this.fbr.close(); + } + + public String peek() { + if (empty()) + return null; + return this.cache.toString(); + } + + public String pop() throws IOException { + String answer = peek(); + reload(); + return answer; + } + +} Propchange: jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/sort/ExternalSort.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/sort/StringSizeEstimator.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/RepositoryStatsMBean.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/jmx/package-info.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/package-info.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/package-info.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/osgi/package-info.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/package-info.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreRestore.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/package-info.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobGarbageCollector.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/BlobStoreBuilder.java ------------------------------------------------------------------------------ svn:eol-style = native