From ed8c0b043cfc67529a74bbfcd454ece9fd0b945d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Romain=20D=C3=A9nari=C3=A9?= Date: Wed, 22 May 2024 13:52:27 +0200 Subject: [PATCH] fix: Update to JDK21 - EXO-71474 - Meeds-io/MIPs#91 (#324) Remove usage of SecurityManager as it is deprecated for removal in jdk21 Remove also usage of classes - SecurityHelper - PrivilegedSystemHelper - PrivilegedFileHelper - SecureList - SecureSet - SecureCollections These classes are here only to use securityManager, and as it is removed, it is no more necessary --- exo.jcr.component.core/pom.xml | 8 +- .../services/document/diff/DiffService.java | 4 +- .../document/impl/MSWordDocumentReader.java | 10 +- .../document/impl/MSXExcelDocumentReader.java | 96 ++- .../document/impl/MSXWordDocumentReader.java | 38 +- .../document/impl/PDFDocumentReader.java | 529 ++++++++--------- .../document/impl/POIPropertiesReader.java | 11 +- .../document/impl/diff/ToStringImpl.java | 3 +- .../impl/tika/TikaDocumentReader.java | 360 ++++-------- .../tika/TikaDocumentReaderServiceImpl.java | 13 +- .../services/jcr/config/PropertiesParser.java | 13 +- .../RepositoryServiceConfiguration.java | 32 +- ...stemParametersPersistenceConfigurator.java | 118 ++-- .../jcr/core/WorkspaceContainerFacade.java | 58 +- .../services/jcr/dataflow/ItemState.java | 3 - .../serialization/SerializationConstants.java | 3 +- .../jcr/impl/AbstractRepositorySuspender.java | 6 - .../jcr/impl/RepositoryContainer.java | 498 ++++++---------- .../jcr/impl/RepositoryServiceImpl.java | 90 +-- .../services/jcr/impl/WorkspaceContainer.java | 12 +- .../services/jcr/impl/backup/JCRRestore.java | 10 +- .../jcr/impl/backup/rdbms/DBBackup.java | 13 +- .../jcr/impl/backup/rdbms/DBRestore.java | 30 +- .../impl/backup/rdbms/DirectoryRestore.java | 106 ++-- .../TableTransformationRuleGenerator.java | 6 +- .../jcr/impl/checker/InspectionReport.java | 15 +- .../checker/RepositoryCheckController.java | 10 +- .../jcr/impl/clean/rdbms/DBCleanService.java | 19 +- .../jcr/impl/clean/rdbms/DBCleanerTool.java | 15 +- .../config/JDBCConfigurationPersister.java | 20 +- .../RepositoryServiceConfigurationImpl.java | 43 +- .../impl/core/BackupWorkspaceInitializer.java | 3 +- .../jcr/impl/core/RepositoryImpl.java | 115 +--- .../jcr/impl/core/SessionDataManager.java | 10 - .../jcr/impl/core/SessionFactory.java | 26 +- .../core/SysViewWorkspaceInitializer.java | 10 +- .../core/lock/AbstractLockTableHandler.java | 10 +- .../AbstractCacheableLockManager.java | 23 +- .../ISPNCacheableLockManagerImpl.java | 6 +- .../nodetype/NodeTypeDataManagerImpl.java | 12 +- .../XmlNodeTypeDataPersister.java | 32 +- .../jcr/impl/core/query/ErrorLog.java | 45 +- .../impl/core/query/IndexRecoveryImpl.java | 31 +- .../jcr/impl/core/query/SearchManager.java | 133 ++--- .../lucene/FileBasedNamespaceMappings.java | 9 +- .../impl/core/query/lucene/IndexInfos.java | 117 ++-- .../core/query/lucene/JcrIndexSearcher.java | 38 +- .../query/lucene/JcrStandartAnalyzer.java | 9 +- .../impl/core/query/lucene/MultiIndex.java | 512 ++++++++-------- .../impl/core/query/lucene/SearchIndex.java | 165 +++--- .../lucene/directory/FSDirectoryManager.java | 181 +++--- .../lucene/spell/LuceneSpellChecker.java | 99 +--- .../dataflow/StreamNewEditableValueData.java | 9 +- .../jcr/impl/dataflow/StreamValueData.java | 18 +- .../jcr/impl/dataflow/ValueDataUtil.java | 4 +- .../CacheableWorkspaceDataManager.java | 441 +++++--------- .../persistent/FilePersistedValueData.java | 10 +- .../persistent/StreamPersistedValueData.java | 24 +- .../ISPNCacheWorkspaceStorageCache.java | 116 ++-- .../serialization/FileObjectReaderImpl.java | 4 +- .../PersistedValueDataReader.java | 5 +- .../PersistedValueDataWriter.java | 4 +- .../serialization/SerializationSpoolFile.java | 11 +- .../TransactionableResourceManager.java | 20 +- .../jcr/impl/proccess/WorkerService.java | 3 +- .../jcr/impl/quota/WorkspaceQuotaManager.java | 62 +- .../jcr/impl/quota/WorkspaceQuotaRestore.java | 43 +- .../quota/infinispan/ISPNQuotaPersister.java | 66 +-- .../jdbc/JDBCWorkspaceDataContainer.java | 140 ++--- .../JDBCWorkspaceDataContainerChecker.java | 8 - .../storage/jdbc/init/DB2DBInitializer.java | 12 +- .../storage/jdbc/init/H2DBInitializer.java | 3 +- .../storage/jdbc/init/HSQLDBInitializer.java | 12 +- .../storage/jdbc/init/MSSQLDBInitializer.java | 10 +- .../jdbc/init/OracleDBInitializer.java | 1 - .../storage/jdbc/init/PgSQLDBInitializer.java | 10 +- .../jdbc/init/StorageDBInitializer.java | 10 +- .../jdbc/init/SybaseDBInitializer.java | 10 +- .../JDBCValueContentAddressStorageImpl.java | 11 +- .../jcr/impl/util/io/FileCleaner.java | 49 +- .../services/jcr/impl/util/io/SpoolFile.java | 24 +- .../services/jcr/impl/util/io/SwapFile.java | 46 +- .../jcr/impl/util/jdbc/DBInitializer.java | 23 +- .../impl/util/jdbc/DBInitializerHelper.java | 3 +- .../jcr/impl/xml/BufferedDecoder.java | 19 +- .../jcr/infinispan/ISPNCacheFactory.java | 45 +- .../infinispan/PrivilegedISPNCacheHelper.java | 49 +- .../jcr/statistics/JCRStatisticsManager.java | 10 +- .../jcr/storage/WorkspaceDataContainer.java | 4 +- .../impl/core/TestRepositoryManagement.java | 14 +- .../impl/core/security/BaseSecurityTest.java | 173 ------ .../TestSecurityRepositoryManagment.java | 547 ------------------ .../value/fs/TestRemoveFromValueStorage.java | 5 +- .../src/test/resources/test.policy | 21 - exo.jcr.component.ext/pom.xml | 7 - .../jcr/ext/backup/BackupChainLog.java | 147 +---- .../ext/backup/RepositoryBackupChainLog.java | 157 ++--- .../ext/backup/impl/BackupManagerImpl.java | 44 +- .../jcr/ext/backup/impl/FileNameProducer.java | 19 +- .../jcr/ext/backup/impl/IndexCleanHelper.java | 17 +- ...obExistingRepositorySameConfigRestore.java | 11 +- .../ext/backup/impl/PendingChangesLog.java | 14 +- .../impl/RepositoryBackupChainImpl.java | 3 +- .../jcr/ext/backup/impl/fs/FullBackupJob.java | 7 +- .../backup/impl/fs/IncrementalBackupJob.java | 13 +- .../ext/backup/impl/rdbms/FullBackupJob.java | 7 +- .../ext/backup/server/HTTPBackupAgent.java | 23 +- .../backup/server/bean/BackupConfigBean.java | 5 +- .../jcr/ext/registry/RESTRegistryService.java | 10 +- .../jcr/ext/registry/RegistryEntry.java | 85 +-- .../jcr/ext/registry/RegistryService.java | 60 +- .../RepositoryCreationServiceImpl.java | 9 +- .../ext/resource/UnifiedNodeReference.java | 3 +- .../jcr/ext/resource/jcr/Handler.java | 7 +- .../groovy/GroovyScript2RestLoader.java | 19 +- .../groovy/GroovyScriptAddRepoPlugin.java | 18 +- .../groovy/JcrGroovyClassLoaderProvider.java | 18 +- .../ext/script/groovy/JcrGroovyCompiler.java | 29 +- .../ext/backup/TestJcrRestoreWiFilter.java | 14 +- .../src/test/resources/test.policy | 26 - exo.jcr.component.ftp/pom.xml | 6 - .../services/ftp/FtpServerImpl.java | 27 +- .../ftp/data/FtpDataTransiverImpl.java | 10 +- .../src/test/resources/test.policy | 24 - exo.jcr.component.webdav/pom.xml | 1 - .../src/test/resources/test.policy | 24 - .../impl/adapter/ManagedSessionFactory.java | 26 +- exo.jcr.ext.services/pom.xml | 3 +- .../src/test/resources/test.policy | 26 - exo.jcr.framework.command/pom.xml | 6 - .../src/test/resources/test.policy | 24 - exo.jcr.framework.ftpclient/pom.xml | 40 +- .../src/test/resources/test.policy | 13 - 133 files changed, 1912 insertions(+), 4967 deletions(-) delete mode 100644 exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/security/BaseSecurityTest.java delete mode 100644 exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/security/TestSecurityRepositoryManagment.java delete mode 100644 exo.jcr.component.core/src/test/resources/test.policy delete mode 100644 exo.jcr.component.ext/src/test/resources/test.policy delete mode 100644 exo.jcr.component.ftp/src/test/resources/test.policy delete mode 100644 exo.jcr.component.webdav/src/test/resources/test.policy delete mode 100644 exo.jcr.ext.services/src/test/resources/test.policy delete mode 100644 exo.jcr.framework.command/src/test/resources/test.policy delete mode 100644 exo.jcr.framework.ftpclient/src/test/resources/test.policy diff --git a/exo.jcr.component.core/pom.xml b/exo.jcr.component.core/pom.xml index 1be113a9b2..32eb322a25 100644 --- a/exo.jcr.component.core/pom.xml +++ b/exo.jcr.component.core/pom.xml @@ -388,7 +388,7 @@ org.apache.maven.plugins maven-surefire-plugin - @{argLine} ${env.MAVEN_OPTS} --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED -Djava.net.preferIPv4Stack=true -Djava.security.manager=org.exoplatform.commons.test.TestSecurityManager -Djava.security.policy=${project.build.directory}/test-classes/test.policy ${debug.opts} + @{surefire.argLine} -Djava.net.preferIPv4Stack=true jcr.test.configuration.file @@ -1346,11 +1346,5 @@ - - debug - - -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y - - diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/diff/DiffService.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/diff/DiffService.java index 484c0dbd3e..077b07ab15 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/diff/DiffService.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/diff/DiffService.java @@ -16,8 +16,6 @@ */ package org.exoplatform.services.document.diff; -import org.exoplatform.commons.utils.PrivilegedSystemHelper; - /** * Implements a differencing engine that works on arrays of {@link Object * Object}. @@ -41,7 +39,7 @@ public interface DiffService extends ToString { /** The standard line separator. */ - public static final String NL = PrivilegedSystemHelper.getProperty("line.separator"); + public static final String NL = System.getProperty("line.separator"); /** The line separator to use in RCS format output. */ public static final String RCS_EOL = "\n"; diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/MSWordDocumentReader.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/MSWordDocumentReader.java index 4da4d8ce71..961279ed52 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/MSWordDocumentReader.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/MSWordDocumentReader.java @@ -18,13 +18,11 @@ import java.io.IOException; import java.io.InputStream; -import java.security.PrivilegedExceptionAction; import java.util.Properties; import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.usermodel.Range; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.document.DocumentReadException; import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; @@ -74,13 +72,7 @@ public String getContentAsText(final InputStream is) throws IOException, Documen HWPFDocument doc; try { - doc = SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() - { - public HWPFDocument run() throws Exception - { - return new HWPFDocument(is); - } - }); + doc = new HWPFDocument(is); } catch (IOException e) { diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/MSXExcelDocumentReader.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/MSXExcelDocumentReader.java index b907a46b8d..185bea4a44 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/MSXExcelDocumentReader.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/MSXExcelDocumentReader.java @@ -18,8 +18,6 @@ import java.io.IOException; import java.io.InputStream; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; import java.util.Properties; import javax.xml.parsers.ParserConfigurationException; @@ -38,7 +36,6 @@ import org.xml.sax.SAXException; import org.xml.sax.XMLReader; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.document.DocumentReadException; import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; @@ -130,73 +127,57 @@ public String getContentAsText(final InputStream is) throws IOException, Documen { return ""; } - SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() + try { - - public Void run() throws Exception + OPCPackage container = OPCPackage.open(is); + ReadOnlySharedStringsTable strings = new ReadOnlySharedStringsTable(container); + XSSFReader xssfReader = new XSSFReader(container); + XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) xssfReader.getSheetsData(); + MSXExcelSheetXMLHandler.SheetContentsHandler sheetExtractor = new SheetTextExtractor(builder); + int parsedTabs = 0; + while (iter.hasNext() && parsedTabs < MAX_TABS) { + InputStream stream = null; + parsedTabs++; try { - OPCPackage container = OPCPackage.open(is); - ReadOnlySharedStringsTable strings = new ReadOnlySharedStringsTable(container); - XSSFReader xssfReader = new XSSFReader(container); - XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) xssfReader.getSheetsData(); - MSXExcelSheetXMLHandler.SheetContentsHandler sheetExtractor = new SheetTextExtractor(builder); - int parsedTabs = 0; - while (iter.hasNext() && parsedTabs < MAX_TABS) + stream = iter.next(); + builder.append('\n'); + builder.append(iter.getSheetName()); + builder.append('\n'); + processSheet(sheetExtractor, strings, stream); + } + finally + { + if (stream != null) { - InputStream stream = null; - parsedTabs++; try { - stream = iter.next(); - builder.append('\n'); - builder.append(iter.getSheetName()); - builder.append('\n'); - processSheet(sheetExtractor, strings, stream); + stream.close(); } - finally + catch (IOException e) { - if (stream != null) + if (LOG.isTraceEnabled()) { - try - { - stream.close(); - } - catch (IOException e) - { - if (LOG.isTraceEnabled()) - { - LOG.trace("An exception occurred: " + e.getMessage()); - } - } + LOG.trace("An exception occurred: " + e.getMessage()); } } } } - catch (InvalidFormatException e) - { - throw new DocumentReadException("The format of the document to read is invalid.", e); - } - catch (SAXException e) - { - throw new DocumentReadException("Problem during the document parsing.", e); - } - catch (OpenXML4JException e) - { - throw new DocumentReadException("Problem during the document parsing.", e); - } - return null; } - }); - } - catch (PrivilegedActionException e) - { - if (e.getCause() instanceof DocumentReadException) + } + catch (InvalidFormatException e) { - throw (DocumentReadException)e.getCause(); + throw new DocumentReadException("The format of the document to read is invalid.", e); + } + catch (SAXException e) + { + throw new DocumentReadException("Problem during the document parsing.", e); + } + catch (OpenXML4JException e) + { + throw new DocumentReadException("Problem during the document parsing.", e); } - throw new DocumentReadException("Problem during the document parsing.", e.getCause()); } finally { @@ -280,14 +261,7 @@ public Properties getProperties(final InputStream is) throws IOException, Docume { try { - OPCPackage container = - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() - { - public OPCPackage run() throws Exception - { - return OPCPackage.open(is); - } - }); + OPCPackage container = OPCPackage.open(is); POIXMLProperties xmlProperties = new POIXMLProperties(container); POIPropertiesReader reader = new POIPropertiesReader(); reader.readDCProperties(xmlProperties); diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/MSXWordDocumentReader.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/MSXWordDocumentReader.java index 9afb3f6688..b07755b5da 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/MSXWordDocumentReader.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/MSXWordDocumentReader.java @@ -18,9 +18,6 @@ import java.io.IOException; import java.io.InputStream; -import java.security.PrivilegedAction; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; import java.util.Properties; import org.apache.poi.ooxml.POIXMLProperties; @@ -31,7 +28,6 @@ import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.xmlbeans.XmlException; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.document.DocumentReadException; import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; @@ -83,38 +79,17 @@ public String getContentAsText(final InputStream is) throws IOException, Documen XWPFDocument doc; try { - doc = SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public XWPFDocument run() throws Exception - { - return new XWPFDocument(is); - } - }); + doc = new XWPFDocument(is); } catch (RuntimeException cause) { throw new DocumentReadException("Can not get the content: " + cause.getMessage(), cause); } - catch (PrivilegedActionException pae) - { - Throwable cause = pae.getCause(); - if (cause instanceof IOException) - { - throw (IOException)cause; - } - throw new DocumentReadException("Can not get the content: " + cause.getMessage(), cause); - } final XWPFWordExtractor extractor = new XWPFWordExtractor(doc); try { - text = SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public String run() - { - return extractor.getText(); - } - }); + text = extractor.getText(); } catch (Exception cause) { @@ -161,14 +136,7 @@ public Properties getProperties(final InputStream is) throws IOException, Docume { try { - OPCPackage container = - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() - { - public OPCPackage run() throws Exception - { - return OPCPackage.open(is); - } - }); + OPCPackage container = OPCPackage.open(is); POIXMLProperties xmlProperties = new POIXMLProperties(container); POIPropertiesReader reader = new POIPropertiesReader(); reader.readDCProperties(xmlProperties); diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/PDFDocumentReader.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/PDFDocumentReader.java index 04149cf012..56b30bdebe 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/PDFDocumentReader.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/PDFDocumentReader.java @@ -20,8 +20,6 @@ import java.io.InputStream; import java.io.StringWriter; import java.io.UnsupportedEncodingException; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; import java.util.Calendar; import java.util.Properties; @@ -36,7 +34,6 @@ import org.apache.pdfbox.text.PDFTextStripper; import org.apache.pdfbox.util.XMLUtil; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.document.DCMetaData; import org.exoplatform.services.document.DocumentReadException; import org.exoplatform.services.log.ExoLogger; @@ -73,85 +70,59 @@ public String[] getMimeTypes() public String getContentAsText(final InputStream is) throws IOException, DocumentReadException { + if (is == null) + { + throw new IllegalArgumentException("InputStream is null."); + } + PDDocument pdDocument = null; + StringWriter sw = new StringWriter(); try { - return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() + if (is.available() == 0) + return ""; + + try + { + pdDocument = PDDocument.load(is); + } + catch (IOException e) { - public String run() throws Exception + throw new DocumentReadException("Can not load PDF document.", e); + } + + PDFTextStripper stripper = new PDFTextStripper(); + stripper.setStartPage(1); + stripper.setEndPage(Integer.MAX_VALUE); + stripper.writeText(pdDocument, sw); + } + finally + { + if (pdDocument != null) + try + { + pdDocument.close(); + } + catch (IOException e) { - if (is == null) + if (LOG.isTraceEnabled()) { - throw new IllegalArgumentException("InputStream is null."); + LOG.trace("An exception occurred: " + e.getMessage()); } - PDDocument pdDocument = null; - StringWriter sw = new StringWriter(); - try + } + if (is != null) + try + { + is.close(); + } + catch (IOException e) + { + if (LOG.isTraceEnabled()) { - if (is.available() == 0) - return ""; - - try - { - pdDocument = PDDocument.load(is); - } - catch (IOException e) - { - throw new DocumentReadException("Can not load PDF document.", e); - } - - PDFTextStripper stripper = new PDFTextStripper(); - stripper.setStartPage(1); - stripper.setEndPage(Integer.MAX_VALUE); - stripper.writeText(pdDocument, sw); + LOG.trace("An exception occurred: " + e.getMessage()); } - finally - { - if (pdDocument != null) - try - { - pdDocument.close(); - } - catch (IOException e) - { - if (LOG.isTraceEnabled()) - { - LOG.trace("An exception occurred: " + e.getMessage()); - } - } - if (is != null) - try - { - is.close(); - } - catch (IOException e) - { - if (LOG.isTraceEnabled()) - { - LOG.trace("An exception occurred: " + e.getMessage()); - } - } - } - return sw.toString(); } - }); - - } - catch (PrivilegedActionException pae) - { - Throwable cause = pae.getCause(); - if (cause instanceof IOException) - { - throw (IOException)cause; - } - else if (cause instanceof RuntimeException) - { - throw (RuntimeException)cause; - } - else - { - throw new RuntimeException(cause); - } } + return sw.toString(); } @@ -169,259 +140,233 @@ public String getContentAsText(InputStream is, String encoding) throws IOExcepti */ public Properties getProperties(final InputStream is) throws IOException, DocumentReadException { + if (is == null) + { + throw new IllegalArgumentException("InputStream is null."); + } + + PDDocument pdDocument = PDDocument.load(is); + Properties props = new Properties(); try { - return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() + + PDDocumentCatalog catalog = pdDocument.getDocumentCatalog(); + PDMetadata meta = catalog.getMetadata(); + if (meta != null) { - public Properties run() throws Exception + XMPMetadata metadata = new XMPMetadata(XMLUtil.parse(meta.createInputStream())); + XMPSchemaDublinCore dc = metadata.getDublinCoreSchema(); + if (dc != null) { - if (is == null) + try + { + if (dc.getTitle() != null) + props.put(DCMetaData.TITLE, fixEncoding(dc.getTitle())); + } + catch (Exception e) { - throw new IllegalArgumentException("InputStream is null."); + LOG.warn("getTitle failed: " + e.getMessage()); + } + try + { + if (dc.getDescription() != null) + props.put(DCMetaData.DESCRIPTION, fixEncoding(dc.getDescription())); + } + catch (Exception e) + { + LOG.warn("getSubject failed: " + e.getMessage()); } - PDDocument pdDocument = PDDocument.load(is); - Properties props = new Properties(); try { - - PDDocumentCatalog catalog = pdDocument.getDocumentCatalog(); - PDMetadata meta = catalog.getMetadata(); - if (meta != null) + if (dc.getCreators() != null) { - XMPMetadata metadata = new XMPMetadata(XMLUtil.parse(meta.createInputStream())); - XMPSchemaDublinCore dc = metadata.getDublinCoreSchema(); - if (dc != null) + for (String creator : dc.getCreators()) { - try - { - if (dc.getTitle() != null) - props.put(DCMetaData.TITLE, fixEncoding(dc.getTitle())); - } - catch (Exception e) - { - LOG.warn("getTitle failed: " + e.getMessage()); - } - try - { - if (dc.getDescription() != null) - props.put(DCMetaData.DESCRIPTION, fixEncoding(dc.getDescription())); - } - catch (Exception e) - { - LOG.warn("getSubject failed: " + e.getMessage()); - } - - try - { - if (dc.getCreators() != null) - { - for (String creator : dc.getCreators()) - { - props.put(DCMetaData.CREATOR, fixEncoding(creator)); - } - } - } - catch (Exception e) - { - LOG.warn("getCreator failed: " + e.getMessage()); - } - - try - { - if (dc.getDates() != null) - { - for (Calendar date : dc.getDates()) - { - props.put(DCMetaData.DATE, date); - } - } - } - catch (Exception e) - { - LOG.warn("getDate failed: " + e.getMessage()); - } + props.put(DCMetaData.CREATOR, fixEncoding(creator)); } + } + } + catch (Exception e) + { + LOG.warn("getCreator failed: " + e.getMessage()); + } - XMPSchemaPDF pdf = metadata.getPDFSchema(); - if (pdf != null) + try + { + if (dc.getDates() != null) + { + for (Calendar date : dc.getDates()) { - try - { - if (pdf.getKeywords() != null) - props.put(DCMetaData.SUBJECT, fixEncoding(pdf.getKeywords())); - } - catch (Exception e) - { - LOG.warn("getKeywords failed: " + e.getMessage()); - } - - try - { - if (pdf.getProducer() != null) - props.put(DCMetaData.PUBLISHER, fixEncoding(pdf.getProducer())); - } - catch (Exception e) - { - LOG.warn("getProducer failed: " + e.getMessage()); - } + props.put(DCMetaData.DATE, date); } + } + } + catch (Exception e) + { + LOG.warn("getDate failed: " + e.getMessage()); + } + } - XMPSchemaBasic basic = metadata.getBasicSchema(); - if (basic != null) - { - try - { - if (basic.getCreateDate() != null) - props.put(DCMetaData.DATE, basic.getCreateDate()); - } - catch (Exception e) - { - LOG.warn("getCreationDate failed: " + e.getMessage()); - } - try - { - if (basic.getModifyDate() != null) - props.put(DCMetaData.DATE, basic.getModifyDate()); - } - catch (Exception e) - { - LOG.warn("getModificationDate failed: " + e.getMessage()); - } + XMPSchemaPDF pdf = metadata.getPDFSchema(); + if (pdf != null) + { + try + { + if (pdf.getKeywords() != null) + props.put(DCMetaData.SUBJECT, fixEncoding(pdf.getKeywords())); + } + catch (Exception e) + { + LOG.warn("getKeywords failed: " + e.getMessage()); + } - // DCMetaData.PUBLISHER - basic.getCreatorTool() - } - } + try + { + if (pdf.getProducer() != null) + props.put(DCMetaData.PUBLISHER, fixEncoding(pdf.getProducer())); + } + catch (Exception e) + { + LOG.warn("getProducer failed: " + e.getMessage()); + } + } - if (props.isEmpty()) - { - // The pdf doesn't contain any metadata, try to use the document - // information instead - PDDocumentInformation docInfo = pdDocument.getDocumentInformation(); + XMPSchemaBasic basic = metadata.getBasicSchema(); + if (basic != null) + { + try + { + if (basic.getCreateDate() != null) + props.put(DCMetaData.DATE, basic.getCreateDate()); + } + catch (Exception e) + { + LOG.warn("getCreationDate failed: " + e.getMessage()); + } + try + { + if (basic.getModifyDate() != null) + props.put(DCMetaData.DATE, basic.getModifyDate()); + } + catch (Exception e) + { + LOG.warn("getModificationDate failed: " + e.getMessage()); + } - if (docInfo != null) - { - try - { - if (docInfo.getAuthor() != null) - props.put(DCMetaData.CONTRIBUTOR, docInfo.getAuthor()); - } - catch (Exception e) - { - LOG.warn("getAuthor failed: " + e.getMessage()); - } - try - { - if (docInfo.getCreationDate() != null) - props.put(DCMetaData.DATE, docInfo.getCreationDate()); - } - catch (Exception e) - { - LOG.warn("getCreationDate failed: " + e.getMessage()); - } - try - { - if (docInfo.getCreator() != null) - props.put(DCMetaData.CREATOR, docInfo.getCreator()); - } - catch (Exception e) - { - LOG.warn("getCreator failed: " + e.getMessage()); - } - try - { + // DCMetaData.PUBLISHER - basic.getCreatorTool() + } + } - if (docInfo.getKeywords() != null) - props.put(DCMetaData.SUBJECT, docInfo.getKeywords()); - } - catch (Exception e) - { - LOG.warn("getKeywords failed: " + e.getMessage()); - } - try - { - if (docInfo.getModificationDate() != null) - props.put(DCMetaData.DATE, docInfo.getModificationDate()); - } - catch (Exception e) - { - LOG.warn("getModificationDate failed: " + e.getMessage()); - } - try - { - if (docInfo.getProducer() != null) - props.put(DCMetaData.PUBLISHER, docInfo.getProducer()); - } - catch (Exception e) - { - LOG.warn("getProducer failed: " + e.getMessage()); - } - try - { - if (docInfo.getSubject() != null) - props.put(DCMetaData.DESCRIPTION, docInfo.getSubject()); - } - catch (Exception e) - { - LOG.warn("getSubject failed: " + e.getMessage()); - } - try - { - if (docInfo.getTitle() != null) - props.put(DCMetaData.TITLE, docInfo.getTitle()); - } - catch (Exception e) - { - LOG.warn("getTitle failed: " + e.getMessage()); - } + if (props.isEmpty()) + { + // The pdf doesn't contain any metadata, try to use the document + // information instead + PDDocumentInformation docInfo = pdDocument.getDocumentInformation(); - // docInfo.getTrapped(); - } - } + if (docInfo != null) + { + try + { + if (docInfo.getAuthor() != null) + props.put(DCMetaData.CONTRIBUTOR, docInfo.getAuthor()); } - finally + catch (Exception e) + { + LOG.warn("getAuthor failed: " + e.getMessage()); + } + try + { + if (docInfo.getCreationDate() != null) + props.put(DCMetaData.DATE, docInfo.getCreationDate()); + } + catch (Exception e) + { + LOG.warn("getCreationDate failed: " + e.getMessage()); + } + try + { + if (docInfo.getCreator() != null) + props.put(DCMetaData.CREATOR, docInfo.getCreator()); + } + catch (Exception e) + { + LOG.warn("getCreator failed: " + e.getMessage()); + } + try { - if (pdDocument != null) - { - pdDocument.close(); - } - if (is != null) - { - try - { - is.close(); - } - catch (IOException e) - { - if (LOG.isTraceEnabled()) - { - LOG.trace("An exception occurred: " + e.getMessage()); - } - } - } + if (docInfo.getKeywords() != null) + props.put(DCMetaData.SUBJECT, docInfo.getKeywords()); + } + catch (Exception e) + { + LOG.warn("getKeywords failed: " + e.getMessage()); + } + try + { + if (docInfo.getModificationDate() != null) + props.put(DCMetaData.DATE, docInfo.getModificationDate()); + } + catch (Exception e) + { + LOG.warn("getModificationDate failed: " + e.getMessage()); + } + try + { + if (docInfo.getProducer() != null) + props.put(DCMetaData.PUBLISHER, docInfo.getProducer()); + } + catch (Exception e) + { + LOG.warn("getProducer failed: " + e.getMessage()); + } + try + { + if (docInfo.getSubject() != null) + props.put(DCMetaData.DESCRIPTION, docInfo.getSubject()); + } + catch (Exception e) + { + LOG.warn("getSubject failed: " + e.getMessage()); + } + try + { + if (docInfo.getTitle() != null) + props.put(DCMetaData.TITLE, docInfo.getTitle()); + } + catch (Exception e) + { + LOG.warn("getTitle failed: " + e.getMessage()); } - return props; - } - }); + // docInfo.getTrapped(); + } + } } - catch (PrivilegedActionException pae) + finally { - Throwable cause = pae.getCause(); - if (cause instanceof IOException) + if (pdDocument != null) { - throw (IOException)cause; + pdDocument.close(); } - else if (cause instanceof RuntimeException) - { - throw (RuntimeException)cause; - } - else + + if (is != null) { - throw new RuntimeException(cause); + try + { + is.close(); + } + catch (IOException e) + { + if (LOG.isTraceEnabled()) + { + LOG.trace("An exception occurred: " + e.getMessage()); + } + } } } + return props; } private String fixEncoding(String str) diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/POIPropertiesReader.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/POIPropertiesReader.java index bb4448f495..2de99377d0 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/POIPropertiesReader.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/POIPropertiesReader.java @@ -19,7 +19,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; -import java.security.PrivilegedExceptionAction; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; @@ -37,7 +36,6 @@ import org.apache.poi.poifs.eventfilesystem.POIFSReaderEvent; import org.apache.poi.poifs.eventfilesystem.POIFSReaderListener; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.document.DCMetaData; import org.exoplatform.services.document.DocumentReadException; import org.exoplatform.services.log.ExoLogger; @@ -162,14 +160,7 @@ public void processPOIFSReaderEvent(final POIFSReaderEvent event) { final POIFSReader poiFSReader = new POIFSReader(); poiFSReader.registerListener(readerListener, SummaryInformation.DEFAULT_STREAM_NAME); - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() - { - public Void run() throws Exception - { - poiFSReader.read(is); - return null; - } - }); + poiFSReader.read(is); } catch (POIRuntimeException e) { diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/diff/ToStringImpl.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/diff/ToStringImpl.java index b27a720667..d04f756312 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/diff/ToStringImpl.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/diff/ToStringImpl.java @@ -21,7 +21,6 @@ import java.util.LinkedList; import java.util.List; -import org.exoplatform.commons.utils.PrivilegedSystemHelper; import org.exoplatform.services.document.diff.ToString; import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; @@ -99,7 +98,7 @@ public String[] stringToArray(String value) */ public String arrayToString(Object[] o) { - return arrayToString(o, PrivilegedSystemHelper.getProperty("line.separator")); + return arrayToString(o, System.getProperty("line.separator")); } /** diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/tika/TikaDocumentReader.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/tika/TikaDocumentReader.java index 25154fae33..9e7deebf9c 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/tika/TikaDocumentReader.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/tika/TikaDocumentReader.java @@ -19,8 +19,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.Reader; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; import java.util.Properties; import java.util.concurrent.Executor; @@ -40,7 +38,6 @@ import org.xml.sax.helpers.DefaultHandler; import org.exoplatform.commons.utils.QName; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.document.AdvancedDocumentReader; import org.exoplatform.services.document.DCMetaData; import org.exoplatform.services.document.DocumentReadException; @@ -76,73 +73,21 @@ public TikaDocumentReader(Parser tikaParser, String mimeType, Executor executor) public Reader getContentAsReader(final InputStream is, final String encoding) throws IOException, DocumentReadException { - try - { - return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - - public Reader run() throws Exception - { - Metadata metadata = new Metadata(); - metadata.set(Metadata.CONTENT_TYPE, mimeType); - metadata.set(Metadata.CONTENT_ENCODING, encoding); - ParseContext context = new ParseContext(); - context.set(Parser.class, parser); - return new ParsingReader(parser, is, metadata, context, executor); - } - }); - } - catch (PrivilegedActionException pae) - { - Throwable cause = pae.getCause(); - if (cause instanceof IOException) - { - throw (IOException)cause; - } - else if (cause instanceof RuntimeException) - { - throw (RuntimeException)cause; - } - else - { - throw new RuntimeException(cause); - } - } + Metadata metadata = new Metadata(); + metadata.set(Metadata.CONTENT_TYPE, mimeType); + metadata.set(Metadata.CONTENT_ENCODING, encoding); + ParseContext context = new ParseContext(); + context.set(Parser.class, parser); + return new ParsingReader(parser, is, metadata, context, executor); } public Reader getContentAsReader(final InputStream is) throws IOException, DocumentReadException { - try - { - return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - - public Reader run() throws Exception - { - Metadata metadata = new Metadata(); - metadata.set(Metadata.CONTENT_TYPE, mimeType); - ParseContext context = new ParseContext(); - context.set(Parser.class, parser); - return new ParsingReader(parser, is, metadata, context, executor); - } - }); - } - catch (PrivilegedActionException pae) - { - Throwable cause = pae.getCause(); - if (cause instanceof IOException) - { - throw (IOException)cause; - } - else if (cause instanceof RuntimeException) - { - throw (RuntimeException)cause; - } - else - { - throw new RuntimeException(cause); - } - } + Metadata metadata = new Metadata(); + metadata.set(Metadata.CONTENT_TYPE, mimeType); + ParseContext context = new ParseContext(); + context.set(Parser.class, parser); + return new ParsingReader(parser, is, metadata, context, executor); } @@ -154,62 +99,43 @@ public String getContentAsText(final InputStream is) throws IOException, Documen } try { - return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { + Metadata metadata = new Metadata(); + metadata.set(Metadata.CONTENT_TYPE, mimeType); - public String run() throws Exception - { - try - { - Metadata metadata = new Metadata(); - metadata.set(Metadata.CONTENT_TYPE, mimeType); - - ContentHandler handler = new BodyContentHandler(); - ParseContext context = new ParseContext(); - context.set(Parser.class, parser); - // Workaround for XMLBEANS-512 - ensure that when we parse - // the file, we start with a fresh XML Parser each time, - // and avoid the risk of getting a SaxHandler that's in error - SystemCache.get().setSaxLoader(null); - try - { - parser.parse(is, handler, metadata, context); - return handler.toString(); - } - catch (SAXException e) - { - throw new DocumentReadException(e.getMessage(), e); - } - catch (TikaException e) - { - throw new DocumentReadException(e.getMessage(), e); - } - } - finally - { - try - { - is.close(); - } - catch (IOException e) - { - if (LOG.isTraceEnabled()) - { - LOG.trace("An exception occurred: " + e.getMessage()); - } - } - } - } - }); + ContentHandler handler = new BodyContentHandler(); + ParseContext context = new ParseContext(); + context.set(Parser.class, parser); + // Workaround for XMLBEANS-512 - ensure that when we parse + // the file, we start with a fresh XML Parser each time, + // and avoid the risk of getting a SaxHandler that's in error + SystemCache.get().setSaxLoader(null); + try + { + parser.parse(is, handler, metadata, context); + return handler.toString(); + } + catch (SAXException e) + { + throw new DocumentReadException(e.getMessage(), e); + } + catch (TikaException e) + { + throw new DocumentReadException(e.getMessage(), e); + } } - catch (PrivilegedActionException pae) + finally { - Throwable cause = pae.getCause(); - if (cause instanceof IOException) + try { - throw (IOException)cause; + is.close(); + } + catch (IOException e) + { + if (LOG.isTraceEnabled()) + { + LOG.trace("An exception occurred: " + e.getMessage()); + } } - throw new DocumentReadException("Can not get the content: " + cause.getMessage(), cause); } } @@ -222,58 +148,40 @@ public String getContentAsText(final InputStream is, final String encoding) thro } try { - return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public String run() throws Exception - { - try - { - Metadata metadata = new Metadata(); - metadata.set(Metadata.CONTENT_TYPE, mimeType); - metadata.set(Metadata.CONTENT_ENCODING, encoding); + Metadata metadata = new Metadata(); + metadata.set(Metadata.CONTENT_TYPE, mimeType); + metadata.set(Metadata.CONTENT_ENCODING, encoding); - ContentHandler handler = new BodyContentHandler(); - ParseContext context = new ParseContext(); - context.set(Parser.class, parser); - try - { - parser.parse(is, handler, metadata, context); - return handler.toString(); - } - catch (SAXException e) - { - throw new DocumentReadException(e.getMessage(), e); - } - catch (TikaException e) - { - throw new DocumentReadException(e.getMessage(), e); - } - } - finally - { - try - { - is.close(); - } - catch (IOException e) - { - if (LOG.isTraceEnabled()) - { - LOG.trace("An exception occurred: " + e.getMessage()); - } - } - } - } - }); + ContentHandler handler = new BodyContentHandler(); + ParseContext context = new ParseContext(); + context.set(Parser.class, parser); + try + { + parser.parse(is, handler, metadata, context); + return handler.toString(); + } + catch (SAXException e) + { + throw new DocumentReadException(e.getMessage(), e); + } + catch (TikaException e) + { + throw new DocumentReadException(e.getMessage(), e); + } } - catch (PrivilegedActionException pae) + finally { - Throwable cause = pae.getCause(); - if (cause instanceof IOException) + try { - throw (IOException)cause; + is.close(); + } + catch (IOException e) + { + if (LOG.isTraceEnabled()) + { + LOG.trace("An exception occurred: " + e.getMessage()); + } } - throw new DocumentReadException("Can not get the content: " + cause.getMessage(), cause); } } @@ -290,85 +198,65 @@ public Properties getProperties(final InputStream is) throws IOException, Docume } try { - return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { + Metadata metadata = new Metadata(); + metadata.set(Metadata.CONTENT_TYPE, mimeType); - @SuppressWarnings("deprecation") - public Properties run() throws Exception - { - try - { - Metadata metadata = new Metadata(); - metadata.set(Metadata.CONTENT_TYPE, mimeType); - - ContentHandler handler = new DefaultHandler(); - ParseContext context = new ParseContext(); - context.set(Parser.class, parser); - try - { - parser.parse(is, handler, metadata, context); - } - catch (SAXException e) - { - throw new DocumentReadException(e.getMessage(), e); - } - catch (TikaException e) - { - throw new DocumentReadException(e.getMessage(), e); - } + ContentHandler handler = new DefaultHandler(); + ParseContext context = new ParseContext(); + context.set(Parser.class, parser); + try + { + parser.parse(is, handler, metadata, context); + } + catch (SAXException e) + { + throw new DocumentReadException(e.getMessage(), e); + } + catch (TikaException e) + { + throw new DocumentReadException(e.getMessage(), e); + } - // construct Properties set - Properties props = new Properties(); - convertProperty(metadata, props, DCMetaData.CONTRIBUTOR, new String[]{DublinCore.CONTRIBUTOR.getName(), - MSOffice.LAST_AUTHOR}); - convertProperty(metadata, props, DCMetaData.COVERAGE, DublinCore.COVERAGE); - convertProperty(metadata, props, DCMetaData.CREATOR, - new String[]{MSOffice.AUTHOR, DublinCore.CREATOR.getName()}); - // different parsers return date in different formats, so keep it as String - convertProperty(metadata, props, DCMetaData.DATE, new Property[]{DublinCore.DATE, - MSOffice.LAST_SAVED, MSOffice.CREATION_DATE}); - convertProperty(metadata, props, DCMetaData.DESCRIPTION, new String[]{DublinCore.DESCRIPTION.getName(), - MSOffice.COMMENTS}); - convertProperty(metadata, props, DCMetaData.FORMAT, DublinCore.FORMAT); - convertProperty(metadata, props, DCMetaData.IDENTIFIER, DublinCore.IDENTIFIER); - convertProperty(metadata, props, DCMetaData.LANGUAGE, DublinCore.LANGUAGE); - //convertProperty(metadata, props, DCMetaData.?, DublinCore.MODIFIED); - convertProperty(metadata, props, DCMetaData.PUBLISHER, DublinCore.PUBLISHER); - convertProperty(metadata, props, DCMetaData.RELATION, DublinCore.RELATION); - convertProperty(metadata, props, DCMetaData.RESOURCE, DublinCore.SOURCE); - convertProperty(metadata, props, DCMetaData.RIGHTS, DublinCore.RIGHTS); - convertProperty(metadata, props, DCMetaData.SUBJECT, new String[]{Metadata.SUBJECT, - OfficeOpenXMLCore.SUBJECT.getName(), DublinCore.SUBJECT.getName(), MSOffice.KEYWORDS}); - convertProperty(metadata, props, DCMetaData.TITLE, DublinCore.TITLE); - convertProperty(metadata, props, DCMetaData.TYPE, DublinCore.TYPE); + // construct Properties set + Properties props = new Properties(); + convertProperty(metadata, props, DCMetaData.CONTRIBUTOR, new String[]{DublinCore.CONTRIBUTOR.getName(), + MSOffice.LAST_AUTHOR}); + convertProperty(metadata, props, DCMetaData.COVERAGE, DublinCore.COVERAGE); + convertProperty(metadata, props, DCMetaData.CREATOR, + new String[]{MSOffice.AUTHOR, DublinCore.CREATOR.getName()}); + // different parsers return date in different formats, so keep it as String + convertProperty(metadata, props, DCMetaData.DATE, new Property[]{DublinCore.DATE, + MSOffice.LAST_SAVED, MSOffice.CREATION_DATE}); + convertProperty(metadata, props, DCMetaData.DESCRIPTION, new String[]{DublinCore.DESCRIPTION.getName(), + MSOffice.COMMENTS}); + convertProperty(metadata, props, DCMetaData.FORMAT, DublinCore.FORMAT); + convertProperty(metadata, props, DCMetaData.IDENTIFIER, DublinCore.IDENTIFIER); + convertProperty(metadata, props, DCMetaData.LANGUAGE, DublinCore.LANGUAGE); + //convertProperty(metadata, props, DCMetaData.?, DublinCore.MODIFIED); + convertProperty(metadata, props, DCMetaData.PUBLISHER, DublinCore.PUBLISHER); + convertProperty(metadata, props, DCMetaData.RELATION, DublinCore.RELATION); + convertProperty(metadata, props, DCMetaData.RESOURCE, DublinCore.SOURCE); + convertProperty(metadata, props, DCMetaData.RIGHTS, DublinCore.RIGHTS); + convertProperty(metadata, props, DCMetaData.SUBJECT, new String[]{Metadata.SUBJECT, + OfficeOpenXMLCore.SUBJECT.getName(), DublinCore.SUBJECT.getName(), MSOffice.KEYWORDS}); + convertProperty(metadata, props, DCMetaData.TITLE, DublinCore.TITLE); + convertProperty(metadata, props, DCMetaData.TYPE, DublinCore.TYPE); - return props; - } - finally - { - try - { - is.close(); - } - catch (IOException e) - { - if (LOG.isTraceEnabled()) - { - LOG.trace("An exception occurred: " + e.getMessage()); - } - } - } - } - }); + return props; } - catch (PrivilegedActionException pae) + finally { - Throwable cause = pae.getCause(); - if (cause instanceof IOException) + try { - throw (IOException)cause; + is.close(); + } + catch (IOException e) + { + if (LOG.isTraceEnabled()) + { + LOG.trace("An exception occurred: " + e.getMessage()); + } } - throw new DocumentReadException("Can not get properties: " + cause.getMessage(), cause); } } diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/tika/TikaDocumentReaderServiceImpl.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/tika/TikaDocumentReaderServiceImpl.java index a96bb8d615..4bb3f12be8 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/tika/TikaDocumentReaderServiceImpl.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/document/impl/tika/TikaDocumentReaderServiceImpl.java @@ -18,7 +18,6 @@ import java.io.InputStream; import java.io.Reader; -import java.security.PrivilegedExceptionAction; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutorService; @@ -30,7 +29,6 @@ import org.apache.tika.parser.Parser; import org.picocontainer.Startable; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.container.configuration.ConfigurationManager; import org.exoplatform.container.xml.InitParams; import org.exoplatform.services.document.DocumentReader; @@ -76,13 +74,7 @@ public TikaDocumentReaderServiceImpl(ConfigurationManager configManager, InitPar if (params != null && params.getValueParam(TIKA_CONFIG_PATH) != null) { final InputStream is = configManager.getInputStream(params.getValueParam(TIKA_CONFIG_PATH).getValue()); - conf = SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public TikaConfig run() throws Exception - { - return new TikaConfig(is); - } - }); + conf = new TikaConfig(is); } else { @@ -165,8 +157,7 @@ private static class TikaDocumentReaderThreadFactory implements ThreadFactory TikaDocumentReaderThreadFactory() { - SecurityManager s = System.getSecurityManager(); - group = (s != null) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup(); + group = Thread.currentThread().getThreadGroup(); namePrefix = "content-extractor-" + poolNumber.getAndIncrement() + "-thread-"; } diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/config/PropertiesParser.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/config/PropertiesParser.java index 9ff2acb6b1..cfbd53131a 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/config/PropertiesParser.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/config/PropertiesParser.java @@ -18,9 +18,6 @@ */ package org.exoplatform.services.jcr.config; -import org.exoplatform.commons.utils.SecurityHelper; - -import java.security.PrivilegedAction; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -219,13 +216,7 @@ private int propertyNameMatchIndex(String propertyFullName) static public Properties getSystemProperties() { - return SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Properties run() - { - return System.getProperties(); - } - }); + return System.getProperties(); } private String generateRepositoryName() @@ -235,4 +226,4 @@ private String generateRepositoryName() return workspaceUniqueName.substring(0, workspaceNameIndex - 1); } -} \ No newline at end of file +} diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/config/RepositoryServiceConfiguration.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/config/RepositoryServiceConfiguration.java index fff92250b9..7fbb786724 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/config/RepositoryServiceConfiguration.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/config/RepositoryServiceConfiguration.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.config; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.management.annotations.Managed; import org.exoplatform.management.annotations.ManagedDescription; import org.exoplatform.management.jmx.annotations.NameTemplate; @@ -34,8 +33,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.StringWriter; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -105,33 +102,8 @@ protected final void merge(InputStream is) throws RepositoryConfigurationExcepti { try { - IBindingFactory factory; - try - { - factory = SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public IBindingFactory run() throws Exception - { - return BindingDirectory.getFactory(RepositoryServiceConfiguration.class); - } - }); - } - catch (PrivilegedActionException pae) - { - Throwable cause = pae.getCause(); - if (cause instanceof JiBXException) - { - throw (JiBXException)cause; - } - else if (cause instanceof RuntimeException) - { - throw (RuntimeException)cause; - } - else - { - throw new RuntimeException(cause); - } - } + IBindingFactory factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class); + IUnmarshallingContext uctx = factory.createUnmarshallingContext(); RepositoryServiceConfiguration conf = (RepositoryServiceConfiguration)uctx.unmarshalDocument(is, null); diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/config/SystemParametersPersistenceConfigurator.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/config/SystemParametersPersistenceConfigurator.java index 4ebc996698..e06105f0c7 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/config/SystemParametersPersistenceConfigurator.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/config/SystemParametersPersistenceConfigurator.java @@ -19,7 +19,6 @@ package org.exoplatform.services.jcr.config; import org.exoplatform.commons.utils.PropertyManager; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.container.xml.InitParams; import org.exoplatform.container.xml.ValueParam; import org.exoplatform.container.xml.ValuesParam; @@ -30,8 +29,6 @@ import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; -import java.security.PrivilegedAction; -import java.security.PrivilegedExceptionAction; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -116,37 +113,31 @@ private Map readFile() { try { - return SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction>() + Map parameters = new HashMap(); + File file = new File(filePath); + + if (file.exists() && file.length() > 0) { - public Map run() throws IOException + BufferedReader reader = null; + String st = ""; + try { - Map parameters = new HashMap(); - File file = new File(filePath); - - if (file.exists() && file.length() > 0) + reader = new BufferedReader(new FileReader(file)); + while ((st = reader.readLine()) != null) { - BufferedReader reader = null; - String st = ""; - try - { - reader = new BufferedReader(new FileReader(file)); - while ((st = reader.readLine()) != null) - { - String sa[] = st.split(SEPARATOR); - parameters.put(sa[0], sa[1]); - } - } - finally - { - if (reader != null) - { - reader.close(); - } - } + String sa[] = st.split(SEPARATOR); + parameters.put(sa[0], sa[1]); } - return parameters; } - }); + finally + { + if (reader != null) + { + reader.close(); + } + } + } + return parameters; } catch (IOException e) { @@ -198,46 +189,37 @@ private void writePropertiesToFile(final Map properties) { try { - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() + BufferedWriter bufferedWriter = null; + + try { - public Void run() throws IOException + File file = new File(filePath); + + if (!file.getParentFile().exists()) { - BufferedWriter bufferedWriter = null; + file.getParentFile().mkdirs(); + } - try - { - File file = new File(filePath); - - if (!file.getParentFile().exists()) - { - file.getParentFile().mkdirs(); - } - - if (properties.isEmpty()) - { - file.delete(); - return null; - } - - bufferedWriter = new BufferedWriter(new FileWriter(file)); - - for (Map.Entry entry : properties.entrySet()) - { - bufferedWriter.write(entry.getKey() + SEPARATOR + entry.getValue()); - bufferedWriter.newLine(); - } - } - finally - { - if (bufferedWriter != null) - { - bufferedWriter.close(); - } - } + if (properties.isEmpty()) + { + file.delete(); + } + + bufferedWriter = new BufferedWriter(new FileWriter(file)); - return null; + for (Map.Entry entry : properties.entrySet()) + { + bufferedWriter.write(entry.getKey() + SEPARATOR + entry.getValue()); + bufferedWriter.newLine(); } - }); + } + finally + { + if (bufferedWriter != null) + { + bufferedWriter.close(); + } + } } catch (IOException e) { @@ -266,12 +248,6 @@ private Map fetchSystemProperties() private Set getSystemPropertiesNames() { - return SecurityHelper.doPrivilegedAction(new PrivilegedAction>() - { - public Set run() - { - return System.getProperties().stringPropertyNames(); - } - }); + return System.getProperties().stringPropertyNames(); } } diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/core/WorkspaceContainerFacade.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/core/WorkspaceContainerFacade.java index 066abfed21..9523de3ea8 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/core/WorkspaceContainerFacade.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/core/WorkspaceContainerFacade.java @@ -18,16 +18,12 @@ */ package org.exoplatform.services.jcr.core; -import org.exoplatform.commons.utils.SecurityHelper; -import org.exoplatform.services.jcr.core.security.JCRRuntimePermissions; import org.exoplatform.services.jcr.impl.WorkspaceContainer; import org.exoplatform.services.jcr.impl.WorkspaceResumer; import org.exoplatform.services.jcr.impl.backup.ResumeException; import org.exoplatform.services.jcr.impl.backup.SuspendException; import org.exoplatform.services.jcr.impl.backup.Suspendable; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -163,48 +159,18 @@ else if (!hasSuspendedComponents) */ public void setState(final int state) throws RepositoryException { - // Need privileges to manage repository. - SecurityManager security = System.getSecurityManager(); - if (security != null) - { - security.checkPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); - } - - try - { - SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public Void run() throws RepositoryException - { - switch (state) - { - case ManageableRepository.ONLINE : - resume(); - break; - case ManageableRepository.OFFLINE : - suspend(); - break; - case ManageableRepository.SUSPENDED : - suspend(); - break; - default : - return null; - } - return null; - } - }); - } - catch (PrivilegedActionException e) - { - Throwable cause = e.getCause(); - if (cause instanceof RepositoryException) - { - throw new RepositoryException(cause); - } - else - { - throw new RuntimeException(cause); - } + switch (state) { + case ManageableRepository.ONLINE: + resume(); + break; + case ManageableRepository.OFFLINE: + suspend(); + break; + case ManageableRepository.SUSPENDED: + suspend(); + break; + default: + break; } } diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/ItemState.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/ItemState.java index 45f1c9d2d5..18368e1e0c 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/ItemState.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/ItemState.java @@ -18,8 +18,6 @@ */ package org.exoplatform.services.jcr.dataflow; -import org.exoplatform.commons.utils.SecurityHelper; -import org.exoplatform.services.jcr.core.security.JCRRuntimePermissions; import org.exoplatform.services.jcr.dataflow.serialization.SerializationConstants; import org.exoplatform.services.jcr.datamodel.IllegalPathException; import org.exoplatform.services.jcr.datamodel.ItemData; @@ -146,7 +144,6 @@ public ItemState(ItemData data, int state, boolean eventFire, QPath ancestorToSa public ItemState(ItemData data, int state, boolean eventFire, QPath ancestorToSave, boolean isInternalCreated, boolean isPersisted) { - SecurityHelper.validateSecurityPermission(JCRRuntimePermissions.INVOKE_INTERNAL_API_PERMISSION); this.data = data; this.state = state; diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/serialization/SerializationConstants.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/serialization/SerializationConstants.java index 0165899965..10b94b76f6 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/serialization/SerializationConstants.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/serialization/SerializationConstants.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.dataflow.serialization; -import org.exoplatform.commons.utils.PrivilegedSystemHelper; import java.io.File; @@ -36,7 +35,7 @@ public class SerializationConstants * Serialization temp dir. */ public static final String TEMP_DIR = - PrivilegedSystemHelper.getProperty("java.io.tmpdir") + File.separator + "_jcrser.tmp"; + System.getProperty("java.io.tmpdir") + File.separator + "_jcrser.tmp"; /** * TransientValueData class. diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/AbstractRepositorySuspender.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/AbstractRepositorySuspender.java index c91a923edb..b7277a267b 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/AbstractRepositorySuspender.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/AbstractRepositorySuspender.java @@ -18,9 +18,7 @@ */ package org.exoplatform.services.jcr.impl; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.jcr.core.ManageableRepository; -import org.exoplatform.services.jcr.core.security.JCRRuntimePermissions; import javax.jcr.RepositoryException; @@ -50,8 +48,6 @@ public AbstractRepositorySuspender(ManageableRepository repository) */ protected void suspendRepository() throws RepositoryException { - SecurityHelper.validateSecurityPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); - repository.setState(ManageableRepository.SUSPENDED); } @@ -61,8 +57,6 @@ protected void suspendRepository() throws RepositoryException protected void resumeRepository() throws RepositoryException { // Need privileges to manage repository. - SecurityHelper.validateSecurityPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); - repository.setState(ManageableRepository.ONLINE); } diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java index 078c60e151..a3510bb03b 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java @@ -19,7 +19,6 @@ package org.exoplatform.services.jcr.impl; import org.exoplatform.commons.utils.ClassLoading; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.container.ExoContainer; import org.exoplatform.container.component.ComponentPlugin; import org.exoplatform.management.annotations.Managed; @@ -158,41 +157,19 @@ public RepositoryContainer(final ExoContainer parent, RepositoryEntry config, Li this.addNamespacePlugins = addNamespacePlugins; this.name = config.getName(); + context.setName(parent.getContext().getName() + "-" + name); try { - SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public Void run() throws RepositoryConfigurationException - { - context.setName(parent.getContext().getName() + "-" + name); - try - { - parent.registerComponentInstance(name, RepositoryContainer.this); - initAllWorkspaceComponentEntries(parent); - registerComponents(); - } - catch (Throwable t) // NOSONAR - { - unregisterAllComponents(); - parent.unregisterComponent(name); - throw new RepositoryConfigurationException("Can not register repository container " + name - + " in parent container.", t); - } - return null; - } - }); + parent.registerComponentInstance(name, RepositoryContainer.this); + initAllWorkspaceComponentEntries(parent); + registerComponents(); } - catch (PrivilegedActionException e) + catch (Throwable t) // NOSONAR { - Throwable ex = e.getCause(); - if (ex instanceof RepositoryConfigurationException) - { - throw (RepositoryConfigurationException)ex; - } - else - { - throw new RepositoryConfigurationException(ex.getMessage(), ex); - } + unregisterAllComponents(); + parent.unregisterComponent(name); + throw new RepositoryConfigurationException("Can not register repository container " + name + + " in parent container.", t); } } @@ -349,214 +326,156 @@ public WorkspaceEntry getWorkspaceEntry(String wsName) public void registerWorkspace(final WorkspaceEntry wsConfig) throws RepositoryException, RepositoryConfigurationException { - // Need privileges to manage repository. - SecurityManager security = System.getSecurityManager(); - if (security != null) + final boolean isSystem = config.getSystemWorkspaceName().equals(wsConfig.getName()); + + if (getWorkspaceContainer(wsConfig.getName()) != null) + throw new RepositoryException("Workspace " + wsConfig.getName() + " already registered"); + + final WorkspaceContainer workspaceContainer = new WorkspaceContainer(RepositoryContainer.this, wsConfig); + registerComponentInstance(wsConfig.getName(), workspaceContainer); + + workspaceContainer.registerComponentInstance(wsConfig); + + workspaceContainer.registerComponentImplementation(StandaloneStoragePluginProvider.class); + try + { + final Class containerType = + ClassLoading.forName(wsConfig.getContainer().getType(), RepositoryContainer.class); + workspaceContainer.registerComponentImplementation(containerType); + if (isSystem) + { + registerComponentInstance(new SystemDataContainerHolder((WorkspaceDataContainer)workspaceContainer + .getComponentInstanceOfType(WorkspaceDataContainer.class))); + } + } + catch (ClassNotFoundException e) { - security.checkPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); + throw new RepositoryConfigurationException("Class not found for workspace data container " + + wsConfig.getUniqueName() + " : " + e, e); } + // cache type try { - SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() + String className = wsConfig.getCache().getType(); + if (className != null && className.length() > 0) { - public Void run() throws RepositoryException, RepositoryConfigurationException - { - final boolean isSystem = config.getSystemWorkspaceName().equals(wsConfig.getName()); - - if (getWorkspaceContainer(wsConfig.getName()) != null) - throw new RepositoryException("Workspace " + wsConfig.getName() + " already registered"); - - final WorkspaceContainer workspaceContainer = new WorkspaceContainer(RepositoryContainer.this, wsConfig); - registerComponentInstance(wsConfig.getName(), workspaceContainer); - - workspaceContainer.registerComponentInstance(wsConfig); - - workspaceContainer.registerComponentImplementation(StandaloneStoragePluginProvider.class); - try - { - final Class containerType = - ClassLoading.forName(wsConfig.getContainer().getType(), RepositoryContainer.class); - workspaceContainer.registerComponentImplementation(containerType); - if (isSystem) - { - registerComponentInstance(new SystemDataContainerHolder((WorkspaceDataContainer)workspaceContainer - .getComponentInstanceOfType(WorkspaceDataContainer.class))); - } - } - catch (ClassNotFoundException e) - { - throw new RepositoryConfigurationException("Class not found for workspace data container " - + wsConfig.getUniqueName() + " : " + e, e); - } - - // cache type - try - { - String className = wsConfig.getCache().getType(); - if (className != null && className.length() > 0) - { - workspaceContainer.registerComponentImplementation(ClassLoading.forName(className, - RepositoryContainer.class)); - } - else - workspaceContainer.registerComponentImplementation(LinkedWorkspaceStorageCacheImpl.class); - } - catch (ClassNotFoundException e) - { - log.warn("Workspace cache class not found " + wsConfig.getCache().getType() - + ", will use default. Error : " + e.getMessage()); - workspaceContainer.registerComponentImplementation(LinkedWorkspaceStorageCacheImpl.class); - } - - if (workspaceContainer.getComponentInstanceOfType(RPCService.class) != null) - { - workspaceContainer.registerComponentImplementation(WorkspaceResumer.class); - } - - if (workspaceContainer.getComponentInstanceOfType(QuotaManager.class) != null) - { - workspaceContainer.registerComponentImplementation(WorkspaceQuotaManager.class); - } - - workspaceContainer.registerComponentImplementation(CacheableWorkspaceDataManager.class); - workspaceContainer.registerComponentImplementation(LocalWorkspaceDataManagerStub.class); - workspaceContainer.registerComponentImplementation(ObservationManagerRegistry.class); - - if (wsConfig.getLockManager() != null && wsConfig.getLockManager().getType() != null) - { - try - { - final Class lockManagerType = - ClassLoading.forName(wsConfig.getLockManager().getType(), RepositoryContainer.class); - workspaceContainer.registerComponentImplementation(lockManagerType); - } - catch (ClassNotFoundException e) - { - throw new RepositoryConfigurationException("Class not found for workspace lock manager " - + wsConfig.getLockManager().getType() + ", container " + wsConfig.getUniqueName() + " : " + e, - e); - } - } - else - { - throw new RepositoryConfigurationException( - "The configuration of lock manager is expected in container " + wsConfig.getUniqueName()); - } - - // Query handler - if (wsConfig.getQueryHandler() != null) - { - workspaceContainer.registerComponentImplementation(SearchManager.class); - workspaceContainer.registerComponentImplementation(QueryManager.class); - workspaceContainer.registerComponentImplementation(QueryManagerFactory.class); - workspaceContainer.registerComponentInstance(wsConfig.getQueryHandler()); - if (isSystem) - { - workspaceContainer.registerComponentImplementation(SystemSearchManager.class); - } - } - - // access manager - if (wsConfig.getAccessManager() != null && wsConfig.getAccessManager().getType() != null) - { - try - { - final Class am = ClassLoading.forName(wsConfig.getAccessManager().getType(), RepositoryContainer.class); - workspaceContainer.registerComponentImplementation(am); - } - catch (ClassNotFoundException e) - { - throw new RepositoryConfigurationException( - "Class not found for workspace access manager " + wsConfig.getAccessManager().getType() - + ", container " + wsConfig.getUniqueName() + " : " + e, e); - } - } - - // initializer - final Class initilizerType; - if (wsConfig.getInitializer() != null && wsConfig.getInitializer().getType() != null) - { - // use user defined - try - { - initilizerType = ClassLoading.forName(wsConfig.getInitializer().getType(), RepositoryContainer.class); - } - catch (ClassNotFoundException e) - { - throw new RepositoryConfigurationException("Class not found for workspace initializer " - + wsConfig.getInitializer().getType() + ", container " + wsConfig.getUniqueName() + " : " + e, - e); - } - } - else - { - // use default - initilizerType = ScratchWorkspaceInitializer.class; - } - workspaceContainer.registerComponentImplementation(initilizerType); - workspaceContainer.registerComponentImplementation(TransactionableResourceManager.class); - workspaceContainer.registerComponentImplementation(SessionFactory.class); - final LocalWorkspaceDataManagerStub wsDataManager = - (LocalWorkspaceDataManagerStub)workspaceContainer - .getComponentInstanceOfType(LocalWorkspaceDataManagerStub.class); - - if (isSystem) - { - // system workspace - systemDataManager = wsDataManager; - registerComponentInstance(systemDataManager); - } - - wsDataManager.setSystemDataManager(systemDataManager); - - if (!config.getWorkspaceEntries().contains(wsConfig)) - config.getWorkspaceEntries().add(wsConfig); - return null; - } - }); + workspaceContainer.registerComponentImplementation(ClassLoading.forName(className, + RepositoryContainer.class)); + } + else + workspaceContainer.registerComponentImplementation(LinkedWorkspaceStorageCacheImpl.class); + } + catch (ClassNotFoundException e) + { + log.warn("Workspace cache class not found " + wsConfig.getCache().getType() + + ", will use default. Error : " + e.getMessage()); + workspaceContainer.registerComponentImplementation(LinkedWorkspaceStorageCacheImpl.class); + } + if (workspaceContainer.getComponentInstanceOfType(RPCService.class) != null) + { + workspaceContainer.registerComponentImplementation(WorkspaceResumer.class); } - catch (PrivilegedActionException pae) + + if (workspaceContainer.getComponentInstanceOfType(QuotaManager.class) != null) { - Throwable cause = pae.getCause(); - if (cause instanceof RepositoryConfigurationException) + workspaceContainer.registerComponentImplementation(WorkspaceQuotaManager.class); + } + + workspaceContainer.registerComponentImplementation(CacheableWorkspaceDataManager.class); + workspaceContainer.registerComponentImplementation(LocalWorkspaceDataManagerStub.class); + workspaceContainer.registerComponentImplementation(ObservationManagerRegistry.class); + + if (wsConfig.getLockManager() != null && wsConfig.getLockManager().getType() != null) + { + try { - throw (RepositoryConfigurationException)cause; + final Class lockManagerType = + ClassLoading.forName(wsConfig.getLockManager().getType(), RepositoryContainer.class); + workspaceContainer.registerComponentImplementation(lockManagerType); } - else if (cause instanceof RepositoryException) + catch (ClassNotFoundException e) { - throw (RepositoryException)cause; + throw new RepositoryConfigurationException("Class not found for workspace lock manager " + + wsConfig.getLockManager().getType() + ", container " + wsConfig.getUniqueName() + " : " + e, + e); } - else if (cause instanceof RuntimeException) + } + else + { + throw new RepositoryConfigurationException( + "The configuration of lock manager is expected in container " + wsConfig.getUniqueName()); + } + + // Query handler + if (wsConfig.getQueryHandler() != null) + { + workspaceContainer.registerComponentImplementation(SearchManager.class); + workspaceContainer.registerComponentImplementation(QueryManager.class); + workspaceContainer.registerComponentImplementation(QueryManagerFactory.class); + workspaceContainer.registerComponentInstance(wsConfig.getQueryHandler()); + if (isSystem) { - RuntimeException e = (RuntimeException)cause; - int depth = 0; - Throwable retval = e; - while (retval.getCause() != null && depth < 100) - { - retval = retval.getCause(); - if (retval instanceof RepositoryException) - { - throw new RepositoryException(retval.getMessage(), e); - } - else if (retval instanceof RepositoryConfigurationException) - { - throw new RepositoryConfigurationException(retval.getMessage(), e); - } - else if (retval instanceof NameNotFoundException) - { - throw new RepositoryException(retval.getMessage(), e); - } - depth++; - } - throw e; + workspaceContainer.registerComponentImplementation(SystemSearchManager.class); } - else + } + + // access manager + if (wsConfig.getAccessManager() != null && wsConfig.getAccessManager().getType() != null) + { + try + { + final Class am = ClassLoading.forName(wsConfig.getAccessManager().getType(), RepositoryContainer.class); + workspaceContainer.registerComponentImplementation(am); + } + catch (ClassNotFoundException e) { - throw new RepositoryException(cause); + throw new RepositoryConfigurationException( + "Class not found for workspace access manager " + wsConfig.getAccessManager().getType() + + ", container " + wsConfig.getUniqueName() + " : " + e, e); } - } + } + + // initializer + final Class initilizerType; + if (wsConfig.getInitializer() != null && wsConfig.getInitializer().getType() != null) + { + // use user defined + try + { + initilizerType = ClassLoading.forName(wsConfig.getInitializer().getType(), RepositoryContainer.class); + } + catch (ClassNotFoundException e) + { + throw new RepositoryConfigurationException("Class not found for workspace initializer " + + wsConfig.getInitializer().getType() + ", container " + wsConfig.getUniqueName() + " : " + e, + e); + } + } + else + { + // use default + initilizerType = ScratchWorkspaceInitializer.class; + } + workspaceContainer.registerComponentImplementation(initilizerType); + workspaceContainer.registerComponentImplementation(TransactionableResourceManager.class); + workspaceContainer.registerComponentImplementation(SessionFactory.class); + final LocalWorkspaceDataManagerStub wsDataManager = + (LocalWorkspaceDataManagerStub)workspaceContainer + .getComponentInstanceOfType(LocalWorkspaceDataManagerStub.class); + + if (isSystem) + { + // system workspace + systemDataManager = wsDataManager; + registerComponentInstance(systemDataManager); + } + + wsDataManager.setSystemDataManager(systemDataManager); + + if (!config.getWorkspaceEntries().contains(wsConfig)) + config.getWorkspaceEntries().add(wsConfig); } // Components access methods ------- @@ -718,100 +637,67 @@ private void validateOverriddenParametersOfWorkspaceComponents(WorkspaceEntry wo private void registerComponents() throws RepositoryConfigurationException, RepositoryException { - SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Void run() - { - registerComponentInstance(config); - registerComponentImplementation(FileCleanerHolder.class); - registerComponentImplementation(LockRemoverHolder.class); - return null; - } - }); + registerComponentInstance(config); + registerComponentImplementation(FileCleanerHolder.class); + registerComponentImplementation(LockRemoverHolder.class); registerWorkspacesComponents(); registerRepositoryComponents(); } private void registerRepositoryComponents() throws RepositoryConfigurationException, RepositoryException { + if (getComponentInstanceOfType(QuotaManager.class) != null) + { + registerComponentImplementation(RepositoryQuotaManager.class); + } + + registerComponentImplementation(RepositorySuspendController.class); + registerComponentImplementation(RepositoryCheckController.class); + registerComponentImplementation(IdGenerator.class); + + registerComponentImplementation(RepositoryIndexSearcherHolder.class); + + registerComponentImplementation(LocationFactory.class); + registerComponentImplementation(ValueFactoryImpl.class); + + registerComponentInstance(new AddNamespacePluginHolder(addNamespacePlugins)); + + registerComponentImplementation(JCRNodeTypeDataPersister.class); + registerComponentImplementation(NamespaceDataPersister.class); + registerComponentImplementation(NamespaceRegistryImpl.class); + + registerComponentImplementation(NodeTypeManagerImpl.class); + registerComponentImplementation(NodeTypeDataManagerImpl.class); + + registerComponentImplementation(DefaultAccessManagerImpl.class); + + registerComponentImplementation(SessionRegistry.class); + + String systemWsname = config.getSystemWorkspaceName(); + WorkspaceEntry systemWsEntry = getWorkspaceEntry(systemWsname); + + if (systemWsEntry != null && systemWsEntry.getQueryHandler() != null) + { + SystemSearchManager systemSearchManager = + (SystemSearchManager)getWorkspaceContainer(systemWsname).getComponentInstanceOfType( + SystemSearchManager.class); + registerComponentInstance(new SystemSearchManagerHolder(systemSearchManager)); + } try { - SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public Void run() throws RepositoryConfigurationException, RepositoryException - { - if (getComponentInstanceOfType(QuotaManager.class) != null) - { - registerComponentImplementation(RepositoryQuotaManager.class); - } - - registerComponentImplementation(RepositorySuspendController.class); - registerComponentImplementation(RepositoryCheckController.class); - registerComponentImplementation(IdGenerator.class); - - registerComponentImplementation(RepositoryIndexSearcherHolder.class); - - registerComponentImplementation(LocationFactory.class); - registerComponentImplementation(ValueFactoryImpl.class); - - registerComponentInstance(new AddNamespacePluginHolder(addNamespacePlugins)); - - registerComponentImplementation(JCRNodeTypeDataPersister.class); - registerComponentImplementation(NamespaceDataPersister.class); - registerComponentImplementation(NamespaceRegistryImpl.class); - - registerComponentImplementation(NodeTypeManagerImpl.class); - registerComponentImplementation(NodeTypeDataManagerImpl.class); - - registerComponentImplementation(DefaultAccessManagerImpl.class); - - registerComponentImplementation(SessionRegistry.class); - - String systemWsname = config.getSystemWorkspaceName(); - WorkspaceEntry systemWsEntry = getWorkspaceEntry(systemWsname); - - if (systemWsEntry != null && systemWsEntry.getQueryHandler() != null) - { - SystemSearchManager systemSearchManager = - (SystemSearchManager)getWorkspaceContainer(systemWsname).getComponentInstanceOfType( - SystemSearchManager.class); - registerComponentInstance(new SystemSearchManagerHolder(systemSearchManager)); - } - try - { - final Class authenticationPolicyClass = - ClassLoading.forName(config.getAuthenticationPolicy(), RepositoryContainer.class); - registerComponentImplementation(authenticationPolicyClass); - } - catch (ClassNotFoundException e) - { - throw new RepositoryConfigurationException("Class not found for repository authentication policy: " - + e, e); - } - - // Repository - final RepositoryImpl repository = new RepositoryImpl(RepositoryContainer.this); - registerComponentInstance(repository); - return null; - } - }); + final Class authenticationPolicyClass = + ClassLoading.forName(config.getAuthenticationPolicy(), RepositoryContainer.class); + registerComponentImplementation(authenticationPolicyClass); } - catch (PrivilegedActionException pae) + catch (ClassNotFoundException e) { - Throwable cause = pae.getCause(); - if (cause instanceof RepositoryConfigurationException) - { - throw (RepositoryConfigurationException)cause; - } - else if (cause instanceof RepositoryException) - { - throw (RepositoryException)cause; - } - else - { - throw new RepositoryException(cause); - } + throw new RepositoryConfigurationException("Class not found for repository authentication policy: " + + e, e); } + + // Repository + final RepositoryImpl repository = new RepositoryImpl(RepositoryContainer.this); + registerComponentInstance(repository); } private void registerWorkspacesComponents() throws RepositoryException, RepositoryConfigurationException diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryServiceImpl.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryServiceImpl.java index b045d0c7d3..5ce0df7ced 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryServiceImpl.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryServiceImpl.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.impl; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.container.ExoContainer; import org.exoplatform.container.ExoContainerContext; import org.exoplatform.container.PortalContainer; @@ -42,9 +41,6 @@ import org.picocontainer.Startable; import java.io.InputStream; -import java.security.PrivilegedAction; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; import java.util.ArrayList; import java.util.List; import java.util.Map.Entry; @@ -125,13 +121,6 @@ else if (plugin instanceof AddNamespacesPlugin) */ public void createRepository(RepositoryEntry rEntry) throws RepositoryConfigurationException, RepositoryException { - // Need privileges to manage repository. - SecurityManager security = System.getSecurityManager(); - if (security != null) - { - security.checkPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); - } - if (repositoryContainers.containsKey(rEntry.getName())) { throw new RepositoryConfigurationException("Repository container " + rEntry.getName() + " already started"); @@ -146,14 +135,7 @@ public void createRepository(RepositoryEntry rEntry) throws RepositoryConfigurat { if (repositoryContainers.putIfAbsent(rEntry.getName(), repositoryContainer) == null) { - SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Void run() - { - repositoryContainer.start(); - return null; - } - }); + repositoryContainer.start(); } else { @@ -182,13 +164,6 @@ public Void run() public RepositoryServiceConfiguration getConfig() { - // Need privileges to manage repository. - SecurityManager security = System.getSecurityManager(); - if (security != null) - { - security.checkPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); - } - return config; } @@ -243,13 +218,6 @@ public RepositoryContainer getRepositoryContainer(String name) public void setCurrentRepositoryName(String repositoryName) throws RepositoryConfigurationException { - // Need privileges to manage repository. - SecurityManager security = System.getSecurityManager(); - if (security != null) - { - security.checkPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); - } - if (!repositoryContainers.containsKey(repositoryName)) { throw new RepositoryConfigurationException("Repository is not configured. Name " + repositoryName); @@ -259,13 +227,6 @@ public void setCurrentRepositoryName(String repositoryName) throws RepositoryCon public void start() { - // Need privileges to manage repository. - SecurityManager security = System.getSecurityManager(); - if (security != null) - { - security.checkPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); - } - try { ExoContainer container = null; @@ -298,13 +259,6 @@ public void start() public void stop() { - // Need privileges to manage repository. - SecurityManager security = System.getSecurityManager(); - if (security != null) - { - security.checkPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); - } - for (Entry entry : repositoryContainers.entrySet()) { entry.getValue().stop(); @@ -401,13 +355,6 @@ public void removeRepository(String name) throws RepositoryException */ public void removeRepository(final String name, boolean forceRemove) throws RepositoryException { - // Need privileges to manage repository. - SecurityManager security = System.getSecurityManager(); - if (security != null) - { - security.checkPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); - } - if (!forceRemove && !canRemoveRepository(name)) { throw new RepositoryException("Repository " + name + " in use. If you want to " @@ -419,35 +366,16 @@ public void removeRepository(final String name, boolean forceRemove) throws Repo final RepositoryEntry repconfig = config.getRepositoryConfiguration(name); final RepositoryImpl repo = (RepositoryImpl)getRepository(name); repo.setState(ManageableRepository.OFFLINE); - SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public Void run() throws RepositoryException - { - List workspaces = new ArrayList(repconfig.getWorkspaceEntries()); - for (WorkspaceEntry entry : workspaces) - { - repo.internalRemoveWorkspace(entry.getName()); - } - RepositoryContainer repositoryContainer = repositoryContainers.get(name); - repositoryContainer.stop(); - repositoryContainers.remove(name); - config.getRepositoryConfigurations().remove(repconfig); - parentContainer.unregisterComponent(repositoryContainer.getName()); - return null; - } - }); - } - catch (PrivilegedActionException e) - { - Throwable cause = e.getCause(); - if (cause instanceof RepositoryException) + List workspaces = new ArrayList(repconfig.getWorkspaceEntries()); + for (WorkspaceEntry entry : workspaces) { - throw (RepositoryException)cause; - } - else - { - throw new RepositoryException(cause); + repo.internalRemoveWorkspace(entry.getName()); } + RepositoryContainer repositoryContainer = repositoryContainers.get(name); + repositoryContainer.stop(); + repositoryContainers.remove(name); + config.getRepositoryConfigurations().remove(repconfig); + parentContainer.unregisterComponent(repositoryContainer.getName()); } catch (RepositoryConfigurationException e) { diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/WorkspaceContainer.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/WorkspaceContainer.java index dea230a2e0..b1e237b40a 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/WorkspaceContainer.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/WorkspaceContainer.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.impl; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.container.ExoContainer; import org.exoplatform.management.annotations.Managed; import org.exoplatform.management.annotations.ManagedDescription; @@ -32,8 +31,6 @@ import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; -import java.security.PrivilegedAction; - import javax.jcr.RepositoryException; /** @@ -68,14 +65,7 @@ public WorkspaceContainer(RepositoryContainer parent, WorkspaceEntry config) thr repositoryContainer = parent; this.name = config.getName(); - SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Void run() - { - context.setName(repositoryContainer.getContext().getName() + "-" + name); - return null; - } - }); + context.setName(repositoryContainer.getContext().getName() + "-" + name); } // Components access methods ------- diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/JCRRestore.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/JCRRestore.java index e21d7e837f..91ceb2c1aa 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/JCRRestore.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/JCRRestore.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.impl.backup; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.services.jcr.dataflow.ChangesLogIterator; import org.exoplatform.services.jcr.dataflow.DataManager; import org.exoplatform.services.jcr.dataflow.ItemState; @@ -43,6 +42,7 @@ import java.io.Externalizable; import java.io.File; import java.io.FileFilter; +import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; @@ -95,7 +95,7 @@ public static File getFullBackupFile(File restoreDir) { Pattern p = Pattern.compile(".+\\.0"); - for (File f : PrivilegedFileHelper.listFiles(restoreDir, new FileFilter() + for (File f : restoreDir.listFiles(new FileFilter() { public boolean accept(File pathname) { @@ -127,7 +127,7 @@ public static List getIncrementalFiles(File restoreDir) Pattern fullBackupPattern = Pattern.compile(".+\\.0"); - for (File f : PrivilegedFileHelper.listFiles(restoreDir, new FileFilter() + for (File f : restoreDir.listFiles(new FileFilter() { public boolean accept(File pathname) { @@ -162,7 +162,7 @@ public void incrementalRestore(File incrementalBackupFile) throws FileNotFoundEx ObjectInputStream ois = null; try { - ois = new ObjectInputStream(PrivilegedFileHelper.fileInputStream(incrementalBackupFile)); + ois = new ObjectInputStream(new FileInputStream(incrementalBackupFile)); while (true) { @@ -340,7 +340,7 @@ private SpoolFile getAsFile(ObjectInputStream ois, long fileSize) throws IOExcep SpoolFile tempFile = SpoolFile.createTempFile("vdincb" + System.currentTimeMillis(), ".stmp", spoolConfig.tempDirectory); - FileOutputStream fos = PrivilegedFileHelper.fileOutputStream(tempFile); + FileOutputStream fos = new FileOutputStream(tempFile); long readBytes = fileSize; while (readBytes > 0) diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DBBackup.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DBBackup.java index 60ac33d524..4d2889e46b 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DBBackup.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DBBackup.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.impl.backup.rdbms; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.commons.utils.PropertyManager; import org.exoplatform.services.database.utils.JDBCUtils; import org.exoplatform.services.jcr.core.security.JCRRuntimePermissions; @@ -30,6 +29,7 @@ import java.io.ByteArrayInputStream; import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; @@ -41,6 +41,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; /** * @author Anatoliy Bazko @@ -123,10 +124,10 @@ public static void backup(File storageDir, Connection jdbcConn, Map entry : scripts.entrySet()) { @@ -201,12 +202,6 @@ public static void backup(File storageDir, Connection jdbcConn, Map maxBufferSize && fileCleaner != null) { - sf = PrivilegedFileHelper.createTempFile("jcrvd", null, tempDir); - sfout = PrivilegedFileHelper.fileOutputStream(sf); + sf = File.createTempFile("jcrvd", null, tempDir); + sfout = new FileOutputStream(sf); sfout.write(buffer); sfout.write(tmpBuff); @@ -689,7 +685,7 @@ else if (readLen + needToRead > maxBufferSize && fileCleaner != null) } else { - return PrivilegedFileHelper.fileInputStream(sf); + return new FileInputStream(sf); } } finally diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DirectoryRestore.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DirectoryRestore.java index c48bc673f3..1866122901 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DirectoryRestore.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DirectoryRestore.java @@ -16,8 +16,6 @@ */ package org.exoplatform.services.jcr.impl.backup.rdbms; -import org.exoplatform.commons.utils.PrivilegedSystemHelper; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.jcr.impl.backup.BackupException; import org.exoplatform.services.jcr.impl.backup.DataRestore; import org.exoplatform.services.jcr.impl.util.io.DirectoryHelper; @@ -27,7 +25,6 @@ import java.io.File; import java.io.IOException; -import java.security.PrivilegedExceptionAction; import java.util.ArrayList; import java.util.List; @@ -61,7 +58,7 @@ public class DirectoryRestore implements DataRestore /** * Java temporary directory. */ - protected final File tempDir = new File(PrivilegedSystemHelper.getProperty("java.io.tmpdir")); + protected final File tempDir = new File(System.getProperty("java.io.tmpdir")); /** * The prefix for temporary directories. @@ -100,28 +97,20 @@ public void clean() throws BackupException LOG.info("Start to clean old data from the storage"); try { - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() + for (int i = 0; i < dataDirs.size(); i++) { - public Void run() throws IOException + File dataDir = dataDirs.get(i); + + File tmpDir = new File(tempDir, PREFIX + IdGenerator.generate()); + tmpDir.mkdirs(); + tmpDirs.add(tmpDir); + + if (dataDir.exists()) { - for (int i = 0; i < dataDirs.size(); i++) - { - File dataDir = dataDirs.get(i); - - File tmpDir = new File(tempDir, PREFIX + IdGenerator.generate()); - tmpDir.mkdirs(); - tmpDirs.add(tmpDir); - - if (dataDir.exists()) - { - DirectoryHelper.copyDirectory(dataDir, tmpDir); - DirectoryHelper.removeDirectory(dataDir); - } - } - - return null; + DirectoryHelper.copyDirectory(dataDir, tmpDir); + DirectoryHelper.removeDirectory(dataDir); } - }); + } } catch (IOException e) { @@ -136,29 +125,20 @@ public void restore() throws BackupException { try { - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() + for (int i = 0; i < zipFiles.size(); i++) { - public Void run() throws IOException - { + File zipFile = zipFiles.get(i); + File dataDir = dataDirs.get(i); - for (int i = 0; i < zipFiles.size(); i++) - { - File zipFile = zipFiles.get(i); - File dataDir = dataDirs.get(i); - - if (zipFile.isDirectory()) - { - DirectoryHelper.uncompressEveryFileFromDirectory(zipFile, dataDir); - } - else - { - DirectoryHelper.uncompressDirectory(zipFile, dataDir); - } - } - - return null; + if (zipFile.isDirectory()) + { + DirectoryHelper.uncompressEveryFileFromDirectory(zipFile, dataDir); } - }); + else + { + DirectoryHelper.uncompressDirectory(zipFile, dataDir); + } + } } catch (IOException e) @@ -181,26 +161,18 @@ public void rollback() throws BackupException { try { - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() + for (int i = 0; i < tmpDirs.size(); i++) { - public Void run() throws IOException - { - for (int i = 0; i < tmpDirs.size(); i++) - { - File tmpDir = tmpDirs.get(i); - File dataDir = dataDirs.get(i); + File tmpDir = tmpDirs.get(i); + File dataDir = dataDirs.get(i); - if (dataDir.exists()) - { - DirectoryHelper.removeDirectory(dataDir); - } - - DirectoryHelper.copyDirectory(tmpDir, dataDir); - } - - return null; + if (dataDir.exists()) + { + DirectoryHelper.removeDirectory(dataDir); } - }); + + DirectoryHelper.copyDirectory(tmpDir, dataDir); + } } catch (IOException e) { @@ -215,18 +187,10 @@ public void close() throws BackupException { try { - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() + for (File tmpDir : tmpDirs) { - public Void run() throws IOException - { - for (File tmpDir : tmpDirs) - { - DirectoryHelper.removeDirectory(tmpDir); - } - - return null; - } - }); + DirectoryHelper.removeDirectory(tmpDir); + } } catch (IOException e) { diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/TableTransformationRuleGenerator.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/TableTransformationRuleGenerator.java index 80d916b4d3..d7222da7ac 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/TableTransformationRuleGenerator.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/TableTransformationRuleGenerator.java @@ -19,7 +19,6 @@ package org.exoplatform.services.jcr.impl.backup.rdbms; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.services.jcr.dataflow.serialization.ObjectReader; import org.exoplatform.services.jcr.impl.dataflow.serialization.ObjectReaderImpl; import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCDataContainerConfig; @@ -28,6 +27,7 @@ import org.exoplatform.services.log.Log; import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.sql.Types; import java.util.HashSet; @@ -69,8 +69,8 @@ public TableTransformationRuleGenerator(JDBCDataContainerConfig containerConfig, this.dstContainerName = containerConfig.containerName; backupInfoReader = - new ObjectReaderImpl(PrivilegedFileHelper.fileInputStream(new File(storageDir, - "JDBCWorkspaceDataContainer.info")));; + new ObjectReaderImpl(new FileInputStream(new File(storageDir, + "JDBCWorkspaceDataContainer.info")));; this.srcContainerName = backupInfoReader.readString(); this.srcDbType = DatabaseStructureType.valueOf(backupInfoReader.readString()); diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/checker/InspectionReport.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/checker/InspectionReport.java index 43754a2546..7b20e57d0a 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/checker/InspectionReport.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/checker/InspectionReport.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.impl.checker; -import org.exoplatform.commons.utils.SecurityHelper; import java.io.BufferedWriter; import java.io.File; @@ -26,7 +25,6 @@ import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; -import java.security.PrivilegedExceptionAction; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; @@ -62,16 +60,9 @@ public InspectionReport(String forRepository) throws IOException final File reportFile = new File("report-" + forRepository + "-" + new SimpleDateFormat("dd-MMM-yy-HH-mm").format(new Date()) + ".txt"); - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() - { - public Void run() throws IOException - { - reportPath = reportFile.getAbsolutePath(); - writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(reportPath))); - - return null; - } - }); + reportPath = reportFile.getAbsolutePath(); + writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(reportPath))); + } diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/checker/RepositoryCheckController.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/checker/RepositoryCheckController.java index ea2168aeab..561d721d82 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/checker/RepositoryCheckController.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/checker/RepositoryCheckController.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.impl.checker; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.management.annotations.Managed; import org.exoplatform.management.annotations.ManagedDescription; import org.exoplatform.management.annotations.ManagedName; @@ -38,7 +37,6 @@ import org.picocontainer.Startable; import java.io.IOException; -import java.security.PrivilegedAction; import java.util.Queue; import java.util.concurrent.Callable; import java.util.concurrent.CountDownLatch; @@ -219,13 +217,7 @@ public String repairDataBase(@ManagedName("confirmation") String confirmation, @ public String checkAndRepair(final DataStorage[] storages, final boolean autoRepair, final int nThreads) { - return SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public String run() - { - return checkAndRepairAction(storages, autoRepair, nThreads); - } - }); + return checkAndRepairAction(storages, autoRepair, nThreads); } /** diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java index 4fe443933e..a219caa86b 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java @@ -16,13 +16,11 @@ */ package org.exoplatform.services.jcr.impl.clean.rdbms; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.database.utils.DialectConstants; import org.exoplatform.services.database.utils.DialectDetecter; import org.exoplatform.services.jcr.config.RepositoryConfigurationException; import org.exoplatform.services.jcr.config.RepositoryEntry; import org.exoplatform.services.jcr.config.WorkspaceEntry; -import org.exoplatform.services.jcr.core.security.JCRRuntimePermissions; import org.exoplatform.services.jcr.impl.clean.rdbms.scripts.DBCleaningScripts; import org.exoplatform.services.jcr.impl.clean.rdbms.scripts.DBCleaningScriptsFactory; import org.exoplatform.services.jcr.impl.storage.jdbc.DBConstants; @@ -31,7 +29,6 @@ import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; -import java.security.PrivilegedExceptionAction; import java.sql.Connection; import java.sql.SQLException; @@ -63,8 +60,6 @@ public class DBCleanService */ public static void cleanWorkspaceData(WorkspaceEntry wsEntry) throws DBCleanException { - SecurityHelper.validateSecurityPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); - Connection jdbcConn = getConnection(wsEntry); String dialect = resolveDialect(jdbcConn, wsEntry); boolean autoCommit = dialect.startsWith(DialectConstants.DB_DIALECT_SYBASE); @@ -102,8 +97,6 @@ public static void cleanWorkspaceData(WorkspaceEntry wsEntry) throws DBCleanExce */ public static void cleanRepositoryData(RepositoryEntry rEntry) throws DBCleanException { - SecurityHelper.validateSecurityPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); - WorkspaceEntry wsEntry = rEntry.getWorkspaceEntries().get(0); boolean multiDB = getMultiDbParameter(wsEntry); @@ -158,8 +151,6 @@ public static void cleanRepositoryData(RepositoryEntry rEntry) throws DBCleanExc public static DBCleanerTool getRepositoryDBCleaner(Connection jdbcConn, RepositoryEntry rEntry) throws DBCleanException { - SecurityHelper.validateSecurityPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); - WorkspaceEntry wsEntry = rEntry.getWorkspaceEntries().get(0); boolean multiDb = getMultiDbParameter(wsEntry); @@ -190,8 +181,6 @@ public static DBCleanerTool getRepositoryDBCleaner(Connection jdbcConn, Reposito */ public static DBCleanerTool getWorkspaceDBCleaner(Connection jdbcConn, WorkspaceEntry wsEntry) throws DBCleanException { - SecurityHelper.validateSecurityPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); - String dialect = resolveDialect(jdbcConn, wsEntry); boolean autoCommit = dialect.startsWith(DialectConstants.DB_DIALECT_SYBASE); @@ -253,13 +242,7 @@ private static Connection getConnection(WorkspaceEntry wsEntry) throws DBCleanEx Connection jdbcConn; try { - jdbcConn = SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction() - { - public Connection run() throws Exception - { - return dsF.getConnection(); - } - }); + jdbcConn = dsF.getConnection(); } catch (SQLException e) { diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanerTool.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanerTool.java index e7b0506832..6d36c907aa 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanerTool.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanerTool.java @@ -16,13 +16,10 @@ */ package org.exoplatform.services.jcr.impl.clean.rdbms; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.database.utils.JDBCUtils; -import org.exoplatform.services.jcr.core.security.JCRRuntimePermissions; import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; -import java.security.PrivilegedExceptionAction; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; @@ -158,8 +155,6 @@ public Connection getConnection() */ protected void execute(List scripts) throws SQLException { - SecurityHelper.validateSecurityPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); - // set needed auto commit mode boolean autoCommit = connection.getAutoCommit(); if (autoCommit != this.autoCommit) @@ -213,14 +208,8 @@ protected void executeQuery(final Statement statement, final String sql) throws start = System.currentTimeMillis(); LOG.debug("Execute script: \n[" + sql + "]"); } - SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - statement.executeUpdate(sql); - return null; - } - }); + statement.executeUpdate(sql); + if (LOG.isDebugEnabled()) { LOG.debug("Script "+sql+" executed in " + ((System.currentTimeMillis() - start) / 1000d) + " sec"); diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/config/JDBCConfigurationPersister.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/config/JDBCConfigurationPersister.java index 030bcf0386..5c8697d3c8 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/config/JDBCConfigurationPersister.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/config/JDBCConfigurationPersister.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.impl.config; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.container.xml.PropertiesParam; import org.exoplatform.services.database.utils.DialectDetecter; import org.exoplatform.services.database.utils.JDBCUtils; @@ -32,8 +31,6 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; -import java.security.PrivilegedAction; -import java.security.PrivilegedExceptionAction; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -207,13 +204,7 @@ protected void checkInitialized() throws RepositoryConfigurationException protected Connection openConnection() throws NamingException, SQLException { final DataSource ds = (DataSource)new InitialContext().lookup(sourceName); - return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction() - { - public Connection run() throws Exception - { - return ds.getConnection(); - } - }); + return ds.getConnection(); } /** @@ -223,14 +214,7 @@ public Connection run() throws Exception */ protected boolean isDbInitialized(final Connection con) { - return SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - - public Boolean run() - { - return JDBCUtils.tableExists(configTableName, con); - } - }); + return JDBCUtils.tableExists(configTableName, con); } public boolean hasConfig() throws RepositoryConfigurationException diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/config/RepositoryServiceConfigurationImpl.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/config/RepositoryServiceConfigurationImpl.java index 46ad815a30..086c5ce0b2 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/config/RepositoryServiceConfigurationImpl.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/config/RepositoryServiceConfigurationImpl.java @@ -19,8 +19,6 @@ package org.exoplatform.services.jcr.impl.config; import org.exoplatform.commons.utils.ClassLoading; -import org.exoplatform.commons.utils.PrivilegedFileHelper; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.container.configuration.ConfigurationManager; import org.exoplatform.container.xml.InitParams; import org.exoplatform.container.xml.ValueParam; @@ -39,6 +37,7 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.URL; @@ -193,51 +192,19 @@ public synchronized void retain() throws RepositoryException try { - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() - { - public Void run() throws IOException - { - DirectoryHelper.deleteDstAndRename(sourceConfig, backUp); - return null; - } - }); + DirectoryHelper.deleteDstAndRename(sourceConfig, backUp); } catch (IOException ioe) { throw new RepositoryException("Can't back up configuration on path " - + PrivilegedFileHelper.getAbsolutePath(sourceConfig), ioe); + + sourceConfig.getAbsolutePath(), ioe); } - saveStream = PrivilegedFileHelper.fileOutputStream(sourceConfig); + saveStream = new FileOutputStream(sourceConfig); } IBindingFactory bfact; - try - { - bfact = SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public IBindingFactory run() throws Exception - { - return BindingDirectory.getFactory(RepositoryServiceConfiguration.class); - } - }); - } - catch (PrivilegedActionException pae) - { - Throwable cause = pae.getCause(); - if (cause instanceof JiBXException) - { - throw (JiBXException)cause; - } - else if (cause instanceof RuntimeException) - { - throw (RuntimeException)cause; - } - else - { - throw new RuntimeException(cause); - } - } + bfact = BindingDirectory.getFactory(RepositoryServiceConfiguration.class); IMarshallingContext mctx = bfact.createMarshallingContext(); diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/BackupWorkspaceInitializer.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/BackupWorkspaceInitializer.java index 08eb9ce4e4..487cea4396 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/BackupWorkspaceInitializer.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/BackupWorkspaceInitializer.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.impl.core; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.services.jcr.access.AccessManager; import org.exoplatform.services.jcr.config.RepositoryConfigurationException; import org.exoplatform.services.jcr.config.RepositoryEntry; @@ -54,7 +53,7 @@ public BackupWorkspaceInitializer(WorkspaceEntry config, RepositoryEntry repConf restoreDir = restorePath; - String fullBackupPath = PrivilegedFileHelper.getAbsolutePath(JCRRestore.getFullBackupFile(new File(restoreDir))); + String fullBackupPath = JCRRestore.getFullBackupFile(new File(restoreDir)).getAbsolutePath(); if (fullBackupPath == null) { diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java index 86d47c6ee4..cbae102413 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.impl.core; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.container.spi.ComponentAdapter; import org.exoplatform.services.jcr.access.AuthenticationPolicy; import org.exoplatform.services.jcr.access.DynamicIdentity; @@ -30,7 +29,6 @@ import org.exoplatform.services.jcr.core.ManageableRepository; import org.exoplatform.services.jcr.core.WorkspaceContainerFacade; import org.exoplatform.services.jcr.core.nodetype.ExtendedNodeTypeManager; -import org.exoplatform.services.jcr.core.security.JCRRuntimePermissions; import org.exoplatform.services.jcr.dataflow.PersistentDataManager; import org.exoplatform.services.jcr.dataflow.PlainChangesLogImpl; import org.exoplatform.services.jcr.dataflow.persistent.ItemsPersistenceListener; @@ -52,9 +50,6 @@ import java.io.IOException; import java.io.InputStream; -import java.security.PrivilegedAction; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -175,8 +170,6 @@ public RepositoryImpl(RepositoryContainer container) throws RepositoryException, */ public void addItemPersistenceListener(String workspaceName, ItemsPersistenceListener listener) { - SecurityHelper.validateSecurityPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); - PersistentDataManager pmanager = (PersistentDataManager)repositoryContainer.getWorkspaceContainer(workspaceName).getComponentInstanceOfType( PersistentDataManager.class); @@ -211,8 +204,6 @@ public boolean canRemoveWorkspace(String workspaceName) throws NoSuchWorkspaceEx public void configWorkspace(final WorkspaceEntry wsConfig) throws RepositoryConfigurationException, RepositoryException { - SecurityHelper.validateSecurityPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); - if (isWorkspaceInitialized(wsConfig.getName())) { throw new RepositoryConfigurationException("Workspace '" + wsConfig.getName() @@ -229,27 +220,13 @@ public void configWorkspace(final WorkspaceEntry wsConfig) throws RepositoryConf catch (RepositoryConfigurationException e) { final WorkspaceContainer workspaceContainer = repositoryContainer.getWorkspaceContainer(wsConfig.getName()); - SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Void run() - { - repositoryContainer.unregisterComponent(wsConfig.getName()); - return null; - } - }); + repositoryContainer.unregisterComponent(wsConfig.getName()); throw new RepositoryConfigurationException(e); } catch (RepositoryException e) { final WorkspaceContainer workspaceContainer = repositoryContainer.getWorkspaceContainer(wsConfig.getName()); - SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Void run() - { - repositoryContainer.unregisterComponent(wsConfig.getName()); - return null; - } - }); + repositoryContainer.unregisterComponent(wsConfig.getName()); throw new RepositoryException(e); } } @@ -272,8 +249,6 @@ public Void run() public synchronized void createWorkspace(String workspaceName) throws RepositoryException { - SecurityHelper.validateSecurityPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); - final WorkspaceContainer wsContainer = repositoryContainer.getWorkspaceContainer(workspaceName); if (wsContainer == null) @@ -302,34 +277,8 @@ public synchronized void createWorkspace(String workspaceName) throws Repository return; } - try - { - SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public Void run() throws Exception - { - workspaceInitializer.initWorkspace(); - wsContainer.start(); - return null; - } - }); - } - catch (PrivilegedActionException pae) - { - Throwable cause = pae.getCause(); - if (cause instanceof RepositoryException) - { - throw (RepositoryException)cause; - } - else if (cause instanceof RuntimeException) - { - throw (RuntimeException)cause; - } - else - { - throw new RuntimeException(cause); - } - } + workspaceInitializer.initWorkspace(); + wsContainer.start(); LOG.info("Workspace " + workspaceName + "@" + this.name + " is initialized"); } @@ -338,8 +287,6 @@ else if (cause instanceof RuntimeException) */ public RepositoryEntry getConfiguration() { - SecurityHelper.validateSecurityPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); - return config; } @@ -542,32 +489,16 @@ private void cleanWorkspace(TransactionableDataManager dataManager) */ public void internalRemoveWorkspace(final String workspaceName) throws RepositoryException { - SecurityHelper.validateSecurityPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); - final WorkspaceContainer workspaceContainer = repositoryContainer.getWorkspaceContainer(workspaceName); try { - SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Void run() - { - workspaceContainer.stop(); - return null; - } - }); + workspaceContainer.stop(); } catch (Exception e) { throw new RepositoryException(e); } - SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Void run() - { - repositoryContainer.unregisterComponent(workspaceName); - return null; - } - }); + repositoryContainer.unregisterComponent(workspaceName); config.getWorkspaceEntries().remove(repositoryContainer.getWorkspaceEntry(workspaceName)); @@ -633,39 +564,13 @@ public Session login(final Credentials credentials, String workspaceName) throws ConversationState state; - PrivilegedExceptionAction action = new PrivilegedExceptionAction() - { - public ConversationState run() throws Exception - { - if (credentials != null) - { - return authenticationPolicy.authenticate(credentials); - } - else - { - return authenticationPolicy.authenticate(); - } - } - }; - try + if (credentials != null) { - state = SecurityHelper.doPrivilegedExceptionAction(action); + state= authenticationPolicy.authenticate(credentials); } - catch (PrivilegedActionException pae) + else { - Throwable cause = pae.getCause(); - if (cause instanceof LoginException) - { - throw (LoginException)cause; - } - else if (cause instanceof RuntimeException) - { - throw (RuntimeException)cause; - } - else - { - throw new RuntimeException(cause); - } + state= authenticationPolicy.authenticate(); } return internalLogin(state, workspaceName); diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java index bd28ca012d..9daaaacef5 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java @@ -594,16 +594,6 @@ protected ItemImpl readItem(ItemData itemData, boolean pool) throws RepositoryEx protected ItemImpl readItem(ItemData itemData, NodeData parent, boolean pool, boolean apiRead) throws RepositoryException { - if (!apiRead) - { - // Need privileges - SecurityManager security = System.getSecurityManager(); - if (security != null) - { - security.checkPermission(JCRRuntimePermissions.INVOKE_INTERNAL_API_PERMISSION); - } - } - if (itemData != null) { ItemImpl item; diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionFactory.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionFactory.java index e1483aebe5..b23dd8e96b 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionFactory.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionFactory.java @@ -18,17 +18,13 @@ */ package org.exoplatform.services.jcr.impl.core; -import org.exoplatform.commons.utils.PrivilegedSystemHelper; import org.exoplatform.container.ExoContainer; import org.exoplatform.container.ExoContainerContext; -import org.exoplatform.services.jcr.access.DynamicIdentity; import org.exoplatform.services.jcr.config.WorkspaceEntry; -import org.exoplatform.services.jcr.core.security.JCRRuntimePermissions; import org.exoplatform.services.jcr.storage.WorkspaceDataContainer; import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; import org.exoplatform.services.security.ConversationState; -import org.exoplatform.services.security.IdentityConstants; import javax.jcr.LoginException; import javax.jcr.RepositoryException; @@ -61,13 +57,13 @@ public SessionFactory(WorkspaceEntry config, ExoContainerContext containerContex this.workspaceName = config.getName(); boolean tracking = - "true".equalsIgnoreCase(PrivilegedSystemHelper.getProperty("exo.jcr.session.tracking.active", "false")); + "true".equalsIgnoreCase(System.getProperty("exo.jcr.session.tracking.active", "false")); if (tracking) { long maxAgeMillis = 0; - String maxagevalue = PrivilegedSystemHelper.getProperty("exo.jcr.session.tracking.maxage"); + String maxagevalue = System.getProperty("exo.jcr.session.tracking.maxage"); if (maxagevalue != null) { try @@ -118,24 +114,6 @@ public SessionFactory(WorkspaceEntry config, ExoContainerContext containerContex */ SessionImpl createSession(ConversationState user) throws RepositoryException, LoginException { - if (IdentityConstants.SYSTEM.equals(user.getIdentity().getUserId())) - { - // Need privileges to get system session. - SecurityManager security = System.getSecurityManager(); - if (security != null) - { - security.checkPermission(JCRRuntimePermissions.CREATE_SYSTEM_SESSION_PERMISSION); - } - } - else if (DynamicIdentity.DYNAMIC.equals(user.getIdentity().getUserId())) - { - // Need privileges to get Dynamic session. - SecurityManager security = System.getSecurityManager(); - if (security != null) - { - security.checkPermission(JCRRuntimePermissions.CREATE_DYNAMIC_SESSION_PERMISSION); - } - } if (SessionReference.isStarted()) { return new TrackedSession(workspaceName, user, container); diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SysViewWorkspaceInitializer.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SysViewWorkspaceInitializer.java index 2b88cee585..bb0ee88d25 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SysViewWorkspaceInitializer.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SysViewWorkspaceInitializer.java @@ -19,7 +19,6 @@ package org.exoplatform.services.jcr.impl.core; import org.apache.ws.commons.util.Base64; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.services.jcr.access.AccessControlList; import org.exoplatform.services.jcr.access.AccessManager; import org.exoplatform.services.jcr.config.RepositoryConfigurationException; @@ -53,6 +52,7 @@ import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; @@ -269,7 +269,7 @@ protected void writeBuffer(byte[] buffer, int offset, int len) throws IOExceptio if (buffer.length >= spoolConfig.maxBufferSize) { buff = - PrivilegedFileHelper.fileOutputStream(tmpFile = + new FileOutputStream(tmpFile = SpoolFile.createTempFile("jcrrestorewi", ".tmp", spoolConfig.tempDirectory)); } else @@ -281,7 +281,7 @@ else if (tmpFile == null && (((TempOutputStream)buff).getSize() + buffer.length) { // spool to file FileOutputStream fout = - PrivilegedFileHelper.fileOutputStream(tmpFile = + new FileOutputStream(tmpFile = SpoolFile.createTempFile("jcrrestorewi", ".tmp", spoolConfig.tempDirectory)); fout.write(((TempOutputStream)buff).getBuffer()); buff.close(); @@ -559,7 +559,7 @@ protected PlainChangesLog read() throws XMLStreamException, FactoryConfiguration NamespaceException, RepositoryException, IllegalNameException { - InputStream input = PrivilegedFileHelper.fileInputStream(restorePath); + InputStream input = new FileInputStream(restorePath); try { XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(input); @@ -846,7 +846,7 @@ else if (propertyType == PropertyType.BINARY) { vdata = new TransientValueData(currentProperty.getValues().size(), null, new SpoolFile( - PrivilegedFileHelper.getAbsolutePath(pfile)), spoolConfig); + pfile.getAbsolutePath()), spoolConfig); } else { diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/AbstractLockTableHandler.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/AbstractLockTableHandler.java index e3350374f0..0622663e0a 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/AbstractLockTableHandler.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/AbstractLockTableHandler.java @@ -18,13 +18,11 @@ */ package org.exoplatform.services.jcr.impl.core.lock; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.database.utils.JDBCUtils; import org.exoplatform.services.jcr.config.LockManagerEntry; import org.exoplatform.services.jcr.config.WorkspaceEntry; import org.exoplatform.services.jcr.impl.checker.InspectionQuery; -import java.security.PrivilegedExceptionAction; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -121,13 +119,7 @@ public void removeLockedNode(String nodeId) throws SQLException */ protected Connection openConnection() throws SQLException { - return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction() - { - public Connection run() throws SQLException - { - return ds.getConnection(); - } - }); + return ds.getConnection(); } /** diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cacheable/AbstractCacheableLockManager.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cacheable/AbstractCacheableLockManager.java index 6fa8c0a1df..2bfb53cf65 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cacheable/AbstractCacheableLockManager.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cacheable/AbstractCacheableLockManager.java @@ -16,9 +16,6 @@ */ package org.exoplatform.services.jcr.impl.core.lock.cacheable; -import org.exoplatform.commons.utils.PrivilegedFileHelper; -import org.exoplatform.commons.utils.PrivilegedSystemHelper; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.management.annotations.Managed; import org.exoplatform.management.annotations.ManagedDescription; import org.exoplatform.services.jcr.config.RepositoryConfigurationException; @@ -62,7 +59,9 @@ import java.io.BufferedOutputStream; import java.io.File; +import java.io.FileInputStream; import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; @@ -551,7 +550,7 @@ public void start() lockRemover.start(); // Remove all locks records directly from DB. - boolean deleteLocks = "true".equalsIgnoreCase(PrivilegedSystemHelper.getProperty(LOCKS_FORCE_REMOVE, "false")); + boolean deleteLocks = "true".equalsIgnoreCase(System.getProperty(LOCKS_FORCE_REMOVE, "false")); if (deleteLocks) { @@ -839,7 +838,7 @@ public void backup(File storageDir) throws BackupException try { File contentFile = new File(storageDir, "CacheLocks" + DBBackup.CONTENT_FILE_SUFFIX); - out = new ObjectOutputStream(new BufferedOutputStream(PrivilegedFileHelper.fileOutputStream(contentFile))); + out = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(contentFile))); List locks = getLockList(); @@ -888,12 +887,12 @@ public DataRestore getDataRestorer(DataRestoreContext context) throws BackupExce "CacheLocks" + DBBackup.CONTENT_FILE_SUFFIX); // it is possible that backup was created on configuration without Backupable WorkspaceLockManager class - if (!PrivilegedFileHelper.exists(contentFile)) + if (!contentFile.exists()) { return new DummyDataRestore(); } - in = new ObjectInputStream(PrivilegedFileHelper.fileInputStream(contentFile)); + in = new ObjectInputStream(new FileInputStream(contentFile)); int count = in.readInt(); for (int i = 0; i < count; i++) @@ -955,15 +954,7 @@ protected class CacheLocksRestore implements DataRestore public void clean() throws BackupException { LOG.info("Start to clean lock Data"); - SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Void run() - { - actualLocks.addAll(getLockList()); - return null; - } - }); - + actualLocks.addAll(getLockList()); doClean(); } diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/infinispan/ISPNCacheableLockManagerImpl.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/infinispan/ISPNCacheableLockManagerImpl.java index fb6f810cf0..4ebe5da859 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/infinispan/ISPNCacheableLockManagerImpl.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/infinispan/ISPNCacheableLockManagerImpl.java @@ -17,12 +17,10 @@ */ package org.exoplatform.services.jcr.impl.core.lock.infinispan; -import org.exoplatform.commons.utils.PrivilegedSystemHelper; import org.exoplatform.container.configuration.ConfigurationManager; import org.exoplatform.management.annotations.Managed; import org.exoplatform.management.jmx.annotations.NameTemplate; import org.exoplatform.management.jmx.annotations.Property; -import org.exoplatform.services.database.utils.JDBCUtils; import org.exoplatform.services.jcr.config.RepositoryConfigurationException; import org.exoplatform.services.jcr.config.WorkspaceEntry; import org.exoplatform.services.jcr.impl.core.lock.LockRemoverHolder; @@ -41,9 +39,7 @@ import org.infinispan.notifications.Listener; import org.infinispan.notifications.cachelistener.annotation.CacheEntryCreated; import org.infinispan.notifications.cachelistener.annotation.CacheEntryRemoved; -import org.infinispan.notifications.cachelistener.event.CacheEntryCreatedEvent; import org.infinispan.notifications.cachelistener.event.CacheEntryEvent; -import org.infinispan.notifications.cachelistener.event.CacheEntryRemovedEvent; import java.io.Serializable; import java.sql.SQLException; @@ -129,7 +125,7 @@ public ISPNCacheableLockManagerImpl(WorkspacePersistentDataManager dataManager, //force clean lock cache entry store boolean deleteLocks = - "true".equalsIgnoreCase(PrivilegedSystemHelper.getProperty(AbstractCacheableLockManager.LOCKS_FORCE_REMOVE, + "true".equalsIgnoreCase(System.getProperty(AbstractCacheableLockManager.LOCKS_FORCE_REMOVE, "false")); if(deleteLocks){ ISPNLockTableHandler lockTableHandler = (ISPNLockTableHandler) getLockTableHandler(); diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/NodeTypeDataManagerImpl.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/NodeTypeDataManagerImpl.java index 5e9da7f0cf..8648876432 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/NodeTypeDataManagerImpl.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/NodeTypeDataManagerImpl.java @@ -17,8 +17,6 @@ * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.exoplatform.services.jcr.impl.core.nodetype; - -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.container.ExoContainerContext; import org.exoplatform.services.jcr.RepositoryService; import org.exoplatform.services.jcr.config.RepositoryEntry; @@ -65,7 +63,6 @@ import java.io.InputStream; import java.io.Serializable; -import java.security.PrivilegedAction; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -988,14 +985,7 @@ public void start() // check if default node type saved if (!nodeTypeRepository.isStorageFilled()) { - final InputStream xml = SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public InputStream run() - { - return NodeTypeManagerImpl.class.getResourceAsStream(NODETYPES_FILE); - } - }); - + final InputStream xml = NodeTypeManagerImpl.class.getResourceAsStream(NODETYPES_FILE); if (xml != null) { List registerNodeTypes = diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/XmlNodeTypeDataPersister.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/XmlNodeTypeDataPersister.java index 4c819d9d1c..50ca4b655c 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/XmlNodeTypeDataPersister.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/XmlNodeTypeDataPersister.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.impl.core.nodetype.registration; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.jcr.core.nodetype.NodeTypeData; import org.exoplatform.services.jcr.core.nodetype.NodeTypeValuesList; import org.exoplatform.services.jcr.datamodel.InternalQName; @@ -31,8 +30,6 @@ import java.io.InputStream; import java.io.OutputStream; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; import java.util.List; import javax.jcr.RepositoryException; @@ -138,34 +135,7 @@ public List getAllNodeTypes() throws RepositoryException { try { - IBindingFactory factory = null; - PrivilegedExceptionAction action = new PrivilegedExceptionAction() - { - public IBindingFactory run() throws Exception - { - return BindingDirectory.getFactory(NodeTypeValuesList.class); - } - }; - try - { - factory = SecurityHelper.doPrivilegedExceptionAction(action); - } - catch (PrivilegedActionException pae) - { - Throwable cause = pae.getCause(); - if (cause instanceof JiBXException) - { - throw (JiBXException)cause; - } - else if (cause instanceof RuntimeException) - { - throw (RuntimeException)cause; - } - else - { - throw new RuntimeException(cause); - } - } + IBindingFactory factory = BindingDirectory.getFactory(NodeTypeValuesList.class); IUnmarshallingContext uctx = factory.createUnmarshallingContext(); NodeTypeValuesList nodeTypeValuesList = (NodeTypeValuesList)uctx.unmarshalDocument(is, null); diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/ErrorLog.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/ErrorLog.java index 11e7e81ffd..95a6b4fd6e 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/ErrorLog.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/ErrorLog.java @@ -17,13 +17,12 @@ package org.exoplatform.services.jcr.impl.core.query; -import org.exoplatform.commons.utils.PrivilegedFileHelper; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; import java.io.BufferedReader; import java.io.File; +import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; @@ -99,29 +98,21 @@ public ErrorLog(File file, int errorLogSize) throws IOException */ private void openFile(final File log) throws IOException { - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() + // set file size; + if (!log.exists()) { - @SuppressWarnings("resource") - public Void run() throws Exception - { - // set file size; - if (!log.exists()) - { - log.getParentFile().mkdirs(); - log.createNewFile(); - out = new FileOutputStream(log).getChannel(); - out.position(1024 * fileSize - 1); - out.write(ByteBuffer.wrap(new byte[]{0})); - out.position(0); - out.force(false); - } - else - { - out = new FileOutputStream(log, true).getChannel(); - } - return null; - } - }); + log.getParentFile().mkdirs(); + log.createNewFile(); + out = new FileOutputStream(log).getChannel(); + out.position(1024 * fileSize - 1); + out.write(ByteBuffer.wrap(new byte[]{0})); + out.position(0); + out.force(false); + } + else + { + out = new FileOutputStream(log, true).getChannel(); + } } /** @@ -164,7 +155,7 @@ public void clear() throws IOException { out.truncate(0); out.close(); - out = PrivilegedFileHelper.fileOutputStream(logFile).getChannel(); + out = new FileOutputStream(logFile).getChannel(); out.position(1024 * fileSize - 1); out.write(ByteBuffer.wrap(new byte[]{0})); out.position(0); @@ -182,7 +173,7 @@ private void initOut() throws IOException { if (out == null) { - FileOutputStream os = PrivilegedFileHelper.fileOutputStream(logFile, false); + FileOutputStream os = new FileOutputStream(logFile, false); out = os.getChannel(); } } @@ -195,7 +186,7 @@ private void initOut() throws IOException */ public List readList() throws IOException { - InputStream in = PrivilegedFileHelper.fileInputStream(logFile); + InputStream in = new FileInputStream(logFile); try { List list = new ArrayList(); diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/IndexRecoveryImpl.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/IndexRecoveryImpl.java index e56649cdb5..923df3bf38 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/IndexRecoveryImpl.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/IndexRecoveryImpl.java @@ -16,7 +16,6 @@ */ package org.exoplatform.services.jcr.impl.core.query; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.jcr.config.RepositoryConfigurationException; import org.exoplatform.services.jcr.impl.core.query.lucene.OfflinePersistentIndex; import org.exoplatform.services.jcr.impl.util.io.DirectoryHelper; @@ -31,14 +30,12 @@ import org.apache.commons.lang3.StringUtils; import org.jboss.util.file.Files; -import org.jgroups.Address; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.RandomAccessFile; import java.io.Serializable; -import java.security.PrivilegedExceptionAction; import java.util.*; import javax.jcr.RepositoryException; @@ -171,27 +168,21 @@ public String getId() public Serializable execute(Serializable[] args) throws Throwable { - return SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction>() + int indexDirLen = indexDirectory.getAbsolutePath().length(); + + ArrayList result = new ArrayList(); + for (File file : DirectoryHelper.listFiles(indexDirectory)) { - public ArrayList run() throws IOException + if (!file.isDirectory()) { - int indexDirLen = indexDirectory.getAbsolutePath().length(); - - ArrayList result = new ArrayList(); - for (File file : DirectoryHelper.listFiles(indexDirectory)) + // if parent directory is not "offline" then add this file. Otherwise skip it. + if (!file.getParent().endsWith(OfflinePersistentIndex.NAME)) { - if (!file.isDirectory()) - { - // if parent directory is not "offline" then add this file. Otherwise skip it. - if (!file.getParent().endsWith(OfflinePersistentIndex.NAME)) - { - result.add(file.getAbsolutePath().substring(indexDirLen)); - } - } + result.add(file.getAbsolutePath().substring(indexDirLen)); } - return result; } - }); + } + return result; } }); @@ -353,7 +344,7 @@ public String getId() public Serializable execute(Serializable[] args) throws Throwable { // if index is currently online, then it can be retrieved - return new Boolean(searchManager.isOnline()); + return searchManager.isOnline(); } }); diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java index e61885dc57..f500a37917 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java @@ -22,9 +22,7 @@ import org.apache.lucene.search.WildcardQuery; import org.apache.lucene.util.ReaderUtil; import org.exoplatform.commons.utils.ClassLoading; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.commons.utils.PropertyManager; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.container.ExoContainerContext; import org.exoplatform.container.configuration.ConfigurationManager; import org.exoplatform.management.annotations.Managed; @@ -77,8 +75,6 @@ import java.io.Serializable; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; @@ -416,61 +412,35 @@ public void checkIndex(final InspectionReport report, final boolean isSystem) th { try { - SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() + if (isSystem && parentSearchManager != null && parentSearchManager.isSuspended.get()) { - public Object run() throws RepositoryException, IOException - { - // try resuming the workspace - try - { - if (isSystem && parentSearchManager != null && parentSearchManager.isSuspended.get()) - { - parentSearchManager.resume(); - } - resume(); + parentSearchManager.resume(); + } + resume(); - handler.checkIndex(itemMgr, isSystem, report); - return null; - } - catch (ResumeException e) - { - throw new RepositoryException("Can not resume SearchManager for inspection purposes.", e); - } - finally - { - // safely return the state of the workspace - try - { - suspend(); - if (isSystem && parentSearchManager != null && !parentSearchManager.isSuspended.get()) - { - parentSearchManager.suspend(); - } - } - catch (SuspendException e) - { - LOG.error(e.getMessage(), e); - } - } - } - }); + handler.checkIndex(itemMgr, isSystem, report); } - catch (PrivilegedActionException e) + catch (ResumeException e) { - Throwable ex = e.getCause(); - if (ex instanceof RepositoryException) - { - throw (RepositoryException)ex; - } - else if (ex instanceof IOException) + throw new RepositoryException("Can not resume SearchManager for inspection purposes.", e); + } + finally + { + // safely return the state of the workspace + try { - throw (IOException)ex; + suspend(); + if (isSystem && parentSearchManager != null && !parentSearchManager.isSuspended.get()) + { + parentSearchManager.suspend(); + } } - else + catch (SuspendException e) { - throw new RepositoryException(ex.getMessage(), ex); + LOG.error(e.getMessage(), e); } } + } else { @@ -818,7 +788,7 @@ protected QueryHandlerContext createQueryHandlerContext(QueryHandler parentHandl } return new QueryHandlerContext(container, itemMgr, indexingTree, nodeTypeDataManager, nsReg, parentHandler, - PrivilegedFileHelper.getAbsolutePath(getIndexDirectory()), extractor, true, recoveryFilterUsed, enableRemoteCalls, + getIndexDirectory().getAbsolutePath(), extractor, true, recoveryFilterUsed, enableRemoteCalls, virtualTableResolver, indexRecovery, rpcService, repositoryName, wsId, cleanerHolder); } @@ -1461,12 +1431,10 @@ protected boolean doReindexing(boolean dropExisting, int nThreads) { //try rename new index folder .new LOG.info("try to rename new lucene indexes of the workspace '" + workspaceName + "'"); - SecurityHelper.doPrivilegedIOExceptionAction((PrivilegedExceptionAction) () -> { - DirectoryHelper.renameFile(newIndexDir, indexDir); - return null; - }); + DirectoryHelper.renameFile(newIndexDir, indexDir); - // Resume all the working threads that have been previously suspended. + + // Resume all the working threads that have been previously suspended. resume(); } @@ -1726,15 +1694,8 @@ public void clean() throws BackupException { final File indexDir = getIndexDirectory(); - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() - { - public Void run() throws IOException - { - DirectoryHelper.removeDirectory(indexDir); + DirectoryHelper.removeDirectory(indexDir); - return null; - } - }); } catch (IOException e) { @@ -1755,25 +1716,16 @@ public void backup(final File storageDir) throws BackupException try { final File indexDir = getIndexDirectory(); - - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() + if (!indexDir.exists()) { - public Void run() throws IOException - { - if (!indexDir.exists()) - { - throw new IOException("Can't backup index. Directory " + indexDir.getCanonicalPath() - + " doesn't exists"); - } - else - { - File destZip = new File(storageDir, getStorageName() + ".zip"); - DirectoryHelper.compressDirectory(indexDir, destZip); - } - - return null; - } - }); + throw new IOException("Can't backup index. Directory " + indexDir.getCanonicalPath() + + " doesn't exists"); + } + else + { + File destZip = new File(storageDir, getStorageName() + ".zip"); + DirectoryHelper.compressDirectory(indexDir, destZip); + } } catch (RepositoryConfigurationException e) { @@ -1819,7 +1771,7 @@ public DataRestore getDataRestorer(DataRestoreContext context) throws BackupExce { File zipFile = new File((File)context.getObject(DataRestoreContext.STORAGE_DIR), getStorageName() + ".zip"); - if (PrivilegedFileHelper.exists(zipFile)) + if (zipFile.exists()) { return new DirectoryRestore(getIndexDirectory(), zipFile); } @@ -1827,7 +1779,7 @@ public DataRestore getDataRestorer(DataRestoreContext context) throws BackupExce { // try to check if we have deal with old backup format zipFile = new File((File)context.getObject(DataRestoreContext.STORAGE_DIR), getStorageName()); - if (PrivilegedFileHelper.exists(zipFile)) + if (zipFile.exists()) { return new DirectoryRestore(getIndexDirectory(), zipFile); } @@ -1858,13 +1810,10 @@ public int getPriority() */ private void cleanIndexDirectory(String path) throws IOException { - SecurityHelper.doPrivilegedIOExceptionAction((PrivilegedExceptionAction) () -> { - File newIndexFolder = new File(path); - if(newIndexFolder.exists()) - { - DirectoryHelper.removeDirectory(newIndexFolder); - } - return null; - }); + File newIndexFolder = new File(path); + if(newIndexFolder.exists()) + { + DirectoryHelper.removeDirectory(newIndexFolder); + } } } diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/FileBasedNamespaceMappings.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/FileBasedNamespaceMappings.java index be7297a8d7..57b43877cb 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/FileBasedNamespaceMappings.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/FileBasedNamespaceMappings.java @@ -16,12 +16,13 @@ */ package org.exoplatform.services.jcr.impl.core.query.lucene; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; import java.io.BufferedOutputStream; import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -147,9 +148,9 @@ public synchronized String getNamespacePrefixByURI(String uri) throws NamespaceE */ private void load() throws IOException { - if (PrivilegedFileHelper.exists(storage)) + if (storage.exists()) { - InputStream in = PrivilegedFileHelper.fileInputStream(storage); + InputStream in = new FileInputStream(storage); try { Properties props = new Properties(); @@ -194,7 +195,7 @@ private void store() throws IOException props.setProperty(prefix, uri); } - OutputStream out = PrivilegedFileHelper.fileOutputStream(storage); + OutputStream out = new FileOutputStream(storage); try { out = new BufferedOutputStream(out); diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/IndexInfos.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/IndexInfos.java index 543c250967..ad6c737970 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/IndexInfos.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/IndexInfos.java @@ -17,7 +17,6 @@ package org.exoplatform.services.jcr.impl.core.query.lucene; import org.apache.lucene.store.Directory; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.jcr.impl.core.query.lucene.directory.IndexInputStream; import org.exoplatform.services.jcr.impl.core.query.lucene.directory.IndexOutputStream; import org.exoplatform.services.jcr.impl.util.io.DirectoryHelper; @@ -29,7 +28,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.security.PrivilegedExceptionAction; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -117,41 +115,33 @@ public String getFileName() */ public void read() throws IOException { - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() + dir.listAll(); + + names.clear(); + indexes.clear(); + if (dir.fileExists(name)) { - public Object run() throws Exception + // clear current lists + InputStream in = new IndexInputStream(dir.openInput(name)); + DataInputStream di = null; + try { - // Known issue for NFS bases on ext3. Need to refresh directory to read actual data. - dir.listAll(); - - names.clear(); - indexes.clear(); - if (dir.fileExists(name)) + di = new DataInputStream(in); + counter = di.readInt(); + for (int i = di.readInt(); i > 0; i--) { - // clear current lists - InputStream in = new IndexInputStream(dir.openInput(name)); - DataInputStream di = null; - try - { - di = new DataInputStream(in); - counter = di.readInt(); - for (int i = di.readInt(); i > 0; i--) - { - String indexName = di.readUTF(); - indexes.add(indexName); - names.add(indexName); - } - } - finally - { - if (di != null) - di.close(); - in.close(); - } + String indexName = di.readUTF(); + indexes.add(indexName); + names.add(indexName); } - return null; } - }); + finally + { + if (di != null) + di.close(); + in.close(); + } + } } /** @@ -161,44 +151,37 @@ public Object run() throws Exception */ public void write() throws IOException { - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() + // do not write if not dirty + if (!dirty) { - public Object run() throws Exception - { - // do not write if not dirty - if (!dirty) - { - return null; - } + return; + } - OutputStream out = new IndexOutputStream(dir.createOutput(name + ".new")); - DataOutputStream dataOut = null; - try - { - dataOut = new DataOutputStream(out); - dataOut.writeInt(counter); - dataOut.writeInt(indexes.size()); - for (int i = 0; i < indexes.size(); i++) - { - dataOut.writeUTF(getName(i)); - } - } - finally - { - if (dataOut != null) - dataOut.close(); - out.close(); - } - // delete old - if (dir.fileExists(name)) - { - dir.deleteFile(name); - } - rename(name + ".new", name); - dirty = false; - return null; + OutputStream out = new IndexOutputStream(dir.createOutput(name + ".new")); + DataOutputStream dataOut = null; + try + { + dataOut = new DataOutputStream(out); + dataOut.writeInt(counter); + dataOut.writeInt(indexes.size()); + for (int i = 0; i < indexes.size(); i++) + { + dataOut.writeUTF(getName(i)); } - }); + } + finally + { + if (dataOut != null) + dataOut.close(); + out.close(); + } + // delete old + if (dir.fileExists(name)) + { + dir.deleteFile(name); + } + rename(name + ".new", name); + dirty = false; } /** diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/JcrIndexSearcher.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/JcrIndexSearcher.java index 3cb5f075df..efed63089f 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/JcrIndexSearcher.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/JcrIndexSearcher.java @@ -20,14 +20,12 @@ import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; import org.apache.lucene.search.Sort; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.jcr.dataflow.ItemDataConsumer; import org.exoplatform.services.jcr.datamodel.InternalQName; import org.exoplatform.services.jcr.impl.core.SessionImpl; import org.exoplatform.services.jcr.impl.core.query.lucene.constraint.EvaluationContext; import java.io.IOException; -import java.security.PrivilegedExceptionAction; /** * JackrabbitIndexSearcher implements an index searcher with @@ -93,30 +91,24 @@ public MultiColumnQueryHits execute(Query query, Sort sort, long resultFetchHint */ public QueryHits evaluate(final Query query, final Sort sort, final long resultFetchHint) throws IOException { - return SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() + Query localQuery = query.rewrite(reader); + QueryHits hits = null; + if (localQuery instanceof JcrQuery) { - public QueryHits run() throws Exception + hits = ((JcrQuery)localQuery).execute(JcrIndexSearcher.this, session, sort); + } + if (hits == null) + { + if (sort == null || sort.getSort().length == 0) + { + hits = new LuceneQueryHits(reader, JcrIndexSearcher.this, query); + } + else { - Query localQuery = query.rewrite(reader); - QueryHits hits = null; - if (localQuery instanceof JcrQuery) - { - hits = ((JcrQuery)localQuery).execute(JcrIndexSearcher.this, session, sort); - } - if (hits == null) - { - if (sort == null || sort.getSort().length == 0) - { - hits = new LuceneQueryHits(reader, JcrIndexSearcher.this, query); - } - else - { - hits = new SortedLuceneQueryHits(reader, JcrIndexSearcher.this, localQuery, sort, resultFetchHint); - } - } - return hits; + hits = new SortedLuceneQueryHits(reader, JcrIndexSearcher.this, localQuery, sort, resultFetchHint); } - }); + } + return hits; } //------------------------< EvaluationContext >----------------------------- diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/JcrStandartAnalyzer.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/JcrStandartAnalyzer.java index 357cfdc1ab..59b0bc8e23 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/JcrStandartAnalyzer.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/JcrStandartAnalyzer.java @@ -20,7 +20,6 @@ import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.util.Version; -import org.exoplatform.commons.utils.SecurityHelper; import java.io.Reader; import java.security.PrivilegedAction; @@ -43,13 +42,7 @@ public final class JcrStandartAnalyzer extends Analyzer * The default Jackrabbit analyzer if none is configured in * configuration. */ - private Analyzer defaultAnalyzer = SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Analyzer run() - { - return new StandardAnalyzer(Version.LUCENE_30, (Set)null); - } - }); + private Analyzer defaultAnalyzer = new StandardAnalyzer(Version.LUCENE_30, (Set)null); /** * The indexing configuration. diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java index 36dac74a39..ec027cd18c 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java @@ -26,8 +26,6 @@ import org.apache.lucene.store.Directory; import org.jboss.util.file.Files; -import org.exoplatform.commons.utils.PrivilegedFileHelper; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.jcr.config.RepositoryConfigurationException; import org.exoplatform.services.jcr.dataflow.ItemDataConsumer; import org.exoplatform.services.jcr.datamodel.ItemData; @@ -43,6 +41,7 @@ import java.io.File; import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -401,27 +400,20 @@ private void init() throws IOException this.indexNames.setMultiIndex(this); // Add a hook that will stop the threads if they are still running - SecurityHelper.doPrivilegedAction(new PrivilegedAction() + try + { + Runtime.getRuntime().addShutdownHook(hook); + } + catch (IllegalStateException e) { - public Void run() + // can't register shutdown hook because + // jvm shutdown sequence has already begun, + // silently ignore... + if (LOG.isTraceEnabled()) { - try - { - Runtime.getRuntime().addShutdownHook(hook); - } - catch (IllegalStateException e) - { - // can't register shutdown hook because - // jvm shutdown sequence has already begun, - // silently ignore... - if (LOG.isTraceEnabled()) - { - LOG.trace("An exception occurred: " + e.getMessage()); - } - } - return null; + LOG.trace("An exception occurred: " + e.getMessage()); } - }); + } } /** @@ -622,7 +614,7 @@ void createInitialIndex(ItemDataConsumer stateMgr, boolean doForceReindexing) th } executeAndLog(new Commit(getTransactionId())); - LOG.info("Initial index for {} nodes created ({}).", new Long(count), handler.getContext() + LOG.info("Initial index for {} nodes created ({}).", count, handler.getContext() .getWorkspacePath(true)); releaseMultiReader(); scheduleFlushTask(); @@ -701,7 +693,7 @@ public void reindex(ItemDataConsumer stateMgr) throws IOException, RepositoryExc } executeAndLog(new Commit(getTransactionId())); - LOG.info("Created initial index for {} nodes", new Long(count)); + LOG.info("Created initial index for {} nodes", count); releaseMultiReader(); } @@ -746,163 +738,155 @@ else if (modeHandler.getMode() == IndexerIoMode.READ_WRITE && redoLog != null) */ private void doUpdateRO(final Collection remove, final Collection add) throws IOException { - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() + // make sure a reader is available during long updates + if (add.size() > handler.getBufferSize()) { - @SuppressWarnings("resource") - public Object run() throws Exception + try { - // make sure a reader is available during long updates - if (add.size() > handler.getBufferSize()) + releaseMultiReader(); + } + catch (IOException e) + { + // do not fail if an exception is thrown here + LOG.warn("unable to prepare index reader " + "for queries during update", e); + } + } + synchronized (updateMonitor) + { + ReadOnlyIndexReader[] readers = null; + try + { + for (Iterator it = remove.iterator(); it.hasNext(); ) { - try + Term idTerm = new Term(FieldNames.UUID, it.next()); + int num = volatileIndex.removeDocument(idTerm); + if (num == 0) { - releaseMultiReader(); + for (int i = indexes.size() - 1; i >= 0; i--) + { + // only look in registered indexes + PersistentIndex idx = indexes.get(i); + if (indexNames.contains(idx.getName())) + { + num = idx.removeDocument(idTerm); + if (num > 0) + { + if (LOG.isDebugEnabled()) + LOG.debug(idTerm.text() + " has been found in the persisted index " + i); + break; + } + } + } } - catch (IOException e) + else if (LOG.isDebugEnabled()) { - // do not fail if an exception is thrown here - LOG.warn("unable to prepare index reader " + "for queries during update", e); + LOG.debug(idTerm.text() + " has been found in the volatile index"); } } - synchronized (updateMonitor) + // try to avoid getting index reader for each doc + IndexReader indexReader = null; + + for (Iterator it = add.iterator(); it.hasNext(); ) { - ReadOnlyIndexReader[] readers = null; - try - { - for (Iterator it = remove.iterator(); it.hasNext(); ) + Document doc = it.next(); + if (doc != null) + { + // check if this item should be placed in own volatile index + // usually it must be indexed, but exception if it exists in persisted index + boolean addDoc = true; + + // make this check safe if something goes wrong + String uuid = doc.get(FieldNames.UUID); + // if remove contains uuid, node should be re-indexed + // if not, than should be checked if node present in the last persisted index + if (!remove.contains(uuid)) + { + // if index list changed, get the reader on the latest index + // or if index reader is not current + if (indexReader == null) { - Term idTerm = new Term(FieldNames.UUID, it.next()); - int num = volatileIndex.removeDocument(idTerm); - if (num == 0) - { - for (int i = indexes.size() - 1; i >= 0; i--) - { - // only look in registered indexes - PersistentIndex idx = indexes.get(i); - if (indexNames.contains(idx.getName())) - { - num = idx.removeDocument(idTerm); - if (num > 0) - { - if (LOG.isDebugEnabled()) - LOG.debug(idTerm.text() + " has been found in the persisted index " + i); - break; - } - } - } - } - else if (LOG.isDebugEnabled()) - { - LOG.debug(idTerm.text() + " has been found in the volatile index"); - } + try + { + readers = getReadOnlyIndexReaders(false, false); + indexReader = new MultiReader(readers); + } + catch (Throwable e)//NOSONAR + { + // this is safe index reader retrieval. The last index already closed, possibly merged or + // any other exception that occurs here + LOG.warn("Could not create the MultiReader :" + e.getLocalizedMessage()); + LOG.debug("Could not create the MultiReader", e); + } } - // try to avoid getting index reader for each doc - IndexReader indexReader = null; - - for (Iterator it = add.iterator(); it.hasNext(); ) + if ((indexReader != null && !indexReader.isCurrent())) { - Document doc = it.next(); - if (doc != null) - { - // check if this item should be placed in own volatile index - // usually it must be indexed, but exception if it exists in persisted index - boolean addDoc = true; - - // make this check safe if something goes wrong - String uuid = doc.get(FieldNames.UUID); - // if remove contains uuid, node should be re-indexed - // if not, than should be checked if node present in the last persisted index - if (!remove.contains(uuid)) - { - // if index list changed, get the reader on the latest index - // or if index reader is not current - if (indexReader == null) - { - try - { - readers = getReadOnlyIndexReaders(false, false); - indexReader = new MultiReader(readers); - } - catch (Throwable e)//NOSONAR - { - // this is safe index reader retrieval. The last index already closed, possibly merged or - // any other exception that occurs here - LOG.warn("Could not create the MultiReader :" + e.getLocalizedMessage()); - LOG.debug("Could not create the MultiReader", e); - } - } - if ((indexReader != null && !indexReader.isCurrent())) - { - // safe release reader - if (indexReader != null) - { - for (ReadOnlyIndexReader reader : readers) - { - reader.release(); - } - } - try - { - readers = getReadOnlyIndexReaders(false, false); - indexReader = new MultiReader(readers); - } - catch (Throwable e)//NOSONAR - { - // this is safe index reader retrieval. The last index already closed, possibly merged or - // any other exception that occurs here - LOG.warn("Could not create the MultiReader :" + e.getLocalizedMessage()); - LOG.debug("Could not create the MultiReader", e); - } - } - // if indexReader exists (it is possible that no persisted indexes exists on start) - if (indexReader != null) - { - TermDocs termDocs = null; - try - { - // reader from resisted index should be - termDocs = indexReader.termDocs(new Term(FieldNames.UUID, uuid)); - // node should be indexed if not found in persistent index - addDoc = !termDocs.next(); - } - catch (Exception e) - { - LOG.debug("Some exception occured, during index check"); - } - finally - { - if (termDocs != null) - termDocs.close(); - } - } - } - if (addDoc) - { - volatileIndex.addDocuments(new Document[]{doc}); - } - else if (LOG.isDebugEnabled()) - { - LOG.debug("Could find the document {} in the last persisted index", uuid); - } - } + // safe release reader + if (indexReader != null) + { + for (ReadOnlyIndexReader reader : readers) + { + reader.release(); + } + } + try + { + readers = getReadOnlyIndexReaders(false, false); + indexReader = new MultiReader(readers); + } + catch (Throwable e)//NOSONAR + { + // this is safe index reader retrieval. The last index already closed, possibly merged or + // any other exception that occurs here + LOG.warn("Could not create the MultiReader :" + e.getLocalizedMessage()); + LOG.debug("Could not create the MultiReader", e); + } } - } - finally - { - // don't forget to release a reader anyway - if (readers != null) + // if indexReader exists (it is possible that no persisted indexes exists on start) + if (indexReader != null) { - for (ReadOnlyIndexReader reader : readers) - { - reader.release(); - } + TermDocs termDocs = null; + try + { + // reader from resisted index should be + termDocs = indexReader.termDocs(new Term(FieldNames.UUID, uuid)); + // node should be indexed if not found in persistent index + addDoc = !termDocs.next(); + } + catch (Exception e) + { + LOG.debug("Some exception occured, during index check"); + } + finally + { + if (termDocs != null) + termDocs.close(); + } } - releaseMultiReader(); - } + } + if (addDoc) + { + volatileIndex.addDocuments(new Document[]{doc}); + } + else if (LOG.isDebugEnabled()) + { + LOG.debug("Could find the document {} in the last persisted index", uuid); + } + } + } + } + finally + { + // don't forget to release a reader anyway + if (readers != null) + { + for (ReadOnlyIndexReader reader : readers) + { + reader.release(); + } } - return null; + releaseMultiReader(); } - }); + } } /** @@ -1018,32 +1002,25 @@ private void invokeOfflineIndex() throws IOException */ private void doUpdateOffline(final Collection remove, final Collection add) throws IOException { - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() + for (Iterator it = remove.iterator(); it.hasNext();) + { + Term idTerm = new Term(FieldNames.UUID, it.next()); + offlineIndex.removeDocument(idTerm); + } + + for (Iterator it = add.iterator(); it.hasNext();) { - public Object run() throws Exception + Document doc = it.next(); + if (doc != null) { - for (Iterator it = remove.iterator(); it.hasNext();) + offlineIndex.addDocuments(new Document[]{doc}); + // reset volatile index if needed + if (offlineIndex.getRamSizeInBytes() >= handler.getMaxVolatileIndexSize()) { - Term idTerm = new Term(FieldNames.UUID, it.next()); - offlineIndex.removeDocument(idTerm); + offlineIndex.commit(); } - - for (Iterator it = add.iterator(); it.hasNext();) - { - Document doc = it.next(); - if (doc != null) - { - offlineIndex.addDocuments(new Document[]{doc}); - // reset volatile index if needed - if (offlineIndex.getRamSizeInBytes() >= handler.getMaxVolatileIndexSize()) - { - offlineIndex.commit(); - } - } - } - return null; } - }); + } } /** @@ -1171,14 +1148,7 @@ synchronized IndexReader[] getIndexReaders(String[] indexNames, IndexListener li final ReadOnlyIndexReader reader = entry.getKey(); try { - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - reader.release(); - return null; - } - }); + reader.release(); } catch (IOException ex) { @@ -1312,7 +1282,7 @@ void replaceIndexes(String[] obsoleteIndexes, final PersistentIndex index, Colle if (LOG.isDebugEnabled()) { time = System.currentTimeMillis() - time; - LOG.debug("hierarchy cache initialized in {} ms", new Long(time)); + LOG.debug("hierarchy cache initialized in {} ms", time); } } @@ -1415,42 +1385,36 @@ public CachingMultiIndexReader getIndexReader() throws IOException */ public synchronized CachingMultiIndexReader getIndexReader(final boolean initCache) throws IOException { - return SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() + synchronized (updateMonitor) { - public CachingMultiIndexReader run() throws Exception + if (multiReader != null) { - synchronized (updateMonitor) + multiReader.acquire(); + return multiReader; + } + // no reader available + // wait until no update is in progress + while (indexUpdateMonitor.getUpdateInProgress()) + { + try { - if (multiReader != null) - { - multiReader.acquire(); - return multiReader; - } - // no reader available - // wait until no update is in progress - while (indexUpdateMonitor.getUpdateInProgress()) - { - try - { - updateMonitor.wait(); - } - catch (InterruptedException e) - { - throw new IOException("Interrupted while waiting to aquire reader"); - } - } - // some other read thread might have created the reader in the - // meantime -> check again - if (multiReader == null) - { - ReadOnlyIndexReader[] readers = getReadOnlyIndexReaders(initCache, true); - multiReader = new CachingMultiIndexReader(readers, cache); - } - multiReader.acquire(); - return multiReader; + updateMonitor.wait(); } + catch (InterruptedException e) + { + throw new IOException("Interrupted while waiting to aquire reader"); + } + } + // some other read thread might have created the reader in the + // meantime -> check again + if (multiReader == null) + { + ReadOnlyIndexReader[] readers = getReadOnlyIndexReaders(initCache, true); + multiReader = new CachingMultiIndexReader(readers, cache); } - }); + multiReader.acquire(); + return multiReader; + } } @@ -1568,27 +1532,20 @@ public void close() finally { // Remove the hook that will stop the threads if they are still running - SecurityHelper.doPrivilegedAction(new PrivilegedAction() + try + { + Runtime.getRuntime().removeShutdownHook(hook); + } + catch (IllegalStateException e) { - public Void run() + // can't register shutdown hook because + // jvm shutdown sequence has already begun, + // silently ignore... + if (LOG.isTraceEnabled()) { - try - { - Runtime.getRuntime().removeShutdownHook(hook); - } - catch (IllegalStateException e) - { - // can't register shutdown hook because - // jvm shutdown sequence has already begun, - // silently ignore... - if (LOG.isTraceEnabled()) - { - LOG.trace("An exception occurred: " + e.getMessage()); - } - } - return null; + LOG.trace("An exception occurred: " + e.getMessage()); } - }); + } } } } @@ -1708,51 +1665,44 @@ synchronized void deleteIndex(PersistentIndex index) */ public void flush() throws IOException { - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() + synchronized (MultiIndex.this) { - public Void run() throws Exception + // commit volatile index + executeAndLog(new Start(Action.INTERNAL_TRANSACTION)); + commitVolatileIndex(); + + // commit persistent indexes + for (int i = indexes.size() - 1; i >= 0; i--) { - synchronized (MultiIndex.this) + PersistentIndex index = indexes.get(i); + // only commit indexes we own + // index merger also places PersistentIndex instances in + // indexes, + // but does not make them public by registering the name in + // indexNames + if (indexNames.contains(index.getName())) { - // commit volatile index - executeAndLog(new Start(Action.INTERNAL_TRANSACTION)); - commitVolatileIndex(); - - // commit persistent indexes - for (int i = indexes.size() - 1; i >= 0; i--) + index.commit(); + // check if index still contains documents + if (index.getNumDocuments() == 0) { - PersistentIndex index = indexes.get(i); - // only commit indexes we own - // index merger also places PersistentIndex instances in - // indexes, - // but does not make them public by registering the name in - // indexNames - if (indexNames.contains(index.getName())) - { - index.commit(); - // check if index still contains documents - if (index.getNumDocuments() == 0) - { - executeAndLog(new DeleteIndex(getTransactionId(), index.getName())); - } - } + executeAndLog(new DeleteIndex(getTransactionId(), index.getName())); } - executeAndLog(new Commit(getTransactionId())); + } + } + executeAndLog(new Commit(getTransactionId())); - indexNames.write(); + indexNames.write(); - // reset redo log - redoLog.clear(); + // reset redo log + redoLog.clear(); - lastFlushTime = System.currentTimeMillis(); - lastFileSystemFlushTime = System.currentTimeMillis(); - } + lastFlushTime = System.currentTimeMillis(); + lastFileSystemFlushTime = System.currentTimeMillis(); + } - // delete obsolete indexes - attemptDelete(); - return null; - } - }); + // delete obsolete indexes + attemptDelete(); } /** @@ -2006,7 +1956,7 @@ private void createIndex(final Queue> tasks, final NodeData node, { if (nodesCount == null) { - LOG.info("indexing... {} ({})", node.getQPath().getAsString(), new Long(count.get())); + LOG.info("indexing... {} ({})", node.getQPath().getAsString(), count.get()); } else { @@ -3907,12 +3857,12 @@ private boolean recoveryIndexFromCoordinator() throws IOException long start = System.currentTimeMillis(); try { File zipIndexesFile = new File(indexDirectory, "index-recovery-coordinator.zip"); - if (!PrivilegedFileHelper.exists(zipIndexesFile.getParentFile())) { - PrivilegedFileHelper.mkdirs(zipIndexesFile.getParentFile()); + if (!zipIndexesFile.getParentFile().exists()) { + zipIndexesFile.getParentFile().mkdirs(); } // transfer file InputStream in = indexRecovery.getIndexFolderInZip(); - OutputStream out = PrivilegedFileHelper.fileOutputStream(zipIndexesFile); + OutputStream out = new FileOutputStream(zipIndexesFile); try { DirectoryHelper.transfer(in, out); } finally { diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java index 12edded427..314888727b 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java @@ -37,9 +37,6 @@ import org.apache.lucene.search.Sort; import org.apache.lucene.search.SortField; import org.exoplatform.commons.utils.ClassLoading; -import org.exoplatform.commons.utils.PrivilegedFileHelper; -import org.exoplatform.commons.utils.PrivilegedSystemHelper; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.container.configuration.ConfigurationManager; import org.exoplatform.container.util.Utils; import org.exoplatform.container.xml.Deserializer; @@ -77,12 +74,12 @@ import java.io.BufferedInputStream; import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.StringReader; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; -import java.security.PrivilegedAction; import java.util.*; import java.util.concurrent.CountDownLatch; import java.util.concurrent.atomic.AtomicBoolean; @@ -753,7 +750,7 @@ public void run() if (!index.getIndexFormatVersion().equals(getIndexFormatVersion())) { log.warn("Using Version {} for reading. Please re-index version " + "storage for optimal performance.", - new Integer(getIndexFormatVersion().getVersion())); + getIndexFormatVersion().getVersion()); } this.errorLog = doInitErrorLog(path); @@ -2024,8 +2021,8 @@ protected InputStream createSynonymProviderConfigResource() throws IOException { InputStream fsr; // simple sanity check - String separator = PrivilegedSystemHelper.getProperty("file.separator"); - if (synonymProviderConfigPath.endsWith(PrivilegedSystemHelper.getProperty("file.separator"))) + String separator = System.getProperty("file.separator"); + if (synonymProviderConfigPath.endsWith(System.getProperty("file.separator"))) { throw new IOException("Invalid synonymProviderConfigPath: " + synonymProviderConfigPath); } @@ -2037,12 +2034,12 @@ protected InputStream createSynonymProviderConfigResource() throws IOException { File root = new File(path, synonymProviderConfigPath.substring(0, lastSeparator)); fsr = - new BufferedInputStream(PrivilegedFileHelper.fileInputStream(new File(root, synonymProviderConfigPath + new BufferedInputStream(new FileInputStream(new File(root, synonymProviderConfigPath .substring(lastSeparator + 1)))); } else { - fsr = new BufferedInputStream(PrivilegedFileHelper.fileInputStream(new File(synonymProviderConfigPath))); + fsr = new BufferedInputStream(new FileInputStream(new File(synonymProviderConfigPath))); } synonymProviderConfigFs = fsr; @@ -2112,49 +2109,40 @@ protected Element getIndexingConfigurationDOM() { if (indexingConfigPath != null) { - - // File config = PrivilegedFileHelper.file(indexingConfigPath); - SecurityHelper.doPrivilegedAction(new PrivilegedAction() + InputStream is = SearchIndex.class.getResourceAsStream(indexingConfigPath); + if (is == null) { - public Object run() + try { - InputStream is = SearchIndex.class.getResourceAsStream(indexingConfigPath); - if (is == null) - { - try - { - is = cfm.getInputStream(indexingConfigPath); - } - catch (Exception e1) - { - log.warn("Unable to load configuration " + indexingConfigPath); - } - } - - try - { - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - DocumentBuilder builder = factory.newDocumentBuilder(); - builder.setEntityResolver(new IndexingConfigurationEntityResolver()); - String content = Deserializer.resolveVariables(Utils.readStream(is)); - InputSource source = new InputSource(new StringReader(content)); - indexingConfiguration = builder.parse(source).getDocumentElement(); - } - catch (ParserConfigurationException e) - { - log.warn("Unable to create XML parser", e); - } - catch (IOException e) - { - log.warn("Exception parsing " + indexingConfigPath, e); - } - catch (SAXException e) - { - log.warn("Exception parsing " + indexingConfigPath, e); - } - return null; + is = cfm.getInputStream(indexingConfigPath); + } + catch (Exception e1) + { + log.warn("Unable to load configuration " + indexingConfigPath); } - }); + } + + try + { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + builder.setEntityResolver(new IndexingConfigurationEntityResolver()); + String content = Deserializer.resolveVariables(Utils.readStream(is)); + InputSource source = new InputSource(new StringReader(content)); + indexingConfiguration = builder.parse(source).getDocumentElement(); + } + catch (ParserConfigurationException e) + { + log.warn("Unable to create XML parser", e); + } + catch (IOException e) + { + log.warn("Exception parsing " + indexingConfigPath, e); + } + catch (SAXException e) + { + log.warn("Exception parsing " + indexingConfigPath, e); + } } } return indexingConfiguration; @@ -2377,65 +2365,58 @@ protected void retrieveAggregateRoot(final Set removedNodeIds, final Map { time = System.currentTimeMillis(); } - int found = SecurityHelper.doPrivilegedAction(new PrivilegedAction() + int found = 0; + try { - public Integer run() + CachingMultiIndexReader reader = indexRegister.getDefaultIndex().getIndexReader(); + try { - int found = 0; + Term aggregateUUIDs = new Term(FieldNames.AGGREGATED_NODE_UUID, ""); + TermDocs tDocs = reader.termDocs(); try { - CachingMultiIndexReader reader = indexRegister.getDefaultIndex().getIndexReader(); - try + ItemDataConsumer ism = getContext().getItemStateManager(); + for (Iterator it = removedNodeIds.iterator(); it.hasNext();) { - Term aggregateUUIDs = new Term(FieldNames.AGGREGATED_NODE_UUID, ""); - TermDocs tDocs = reader.termDocs(); - try + String id = it.next(); + aggregateUUIDs = aggregateUUIDs.createTerm(id); + tDocs.seek(aggregateUUIDs); + while (tDocs.next()) { - ItemDataConsumer ism = getContext().getItemStateManager(); - for (Iterator it = removedNodeIds.iterator(); it.hasNext();) + Document doc = reader.document(tDocs.doc(), FieldSelectors.UUID); + String uuid = doc.get(FieldNames.UUID); + ItemData itd = ism.getItemData(uuid); + if (itd == null) { - String id = it.next(); - aggregateUUIDs = aggregateUUIDs.createTerm(id); - tDocs.seek(aggregateUUIDs); - while (tDocs.next()) - { - Document doc = reader.document(tDocs.doc(), FieldSelectors.UUID); - String uuid = doc.get(FieldNames.UUID); - ItemData itd = ism.getItemData(uuid); - if (itd == null) - { - continue; - } - if (!itd.isNode()) - { - throw new RepositoryException("Item with id:" + uuid + " is not a node"); - } - map.put(uuid, (NodeData)itd); - found++; - } + continue; } - } - finally - { - tDocs.close(); + if (!itd.isNode()) + { + throw new RepositoryException("Item with id:" + uuid + " is not a node"); + } + map.put(uuid, (NodeData)itd); + found++; } } - finally - { - reader.release(); - } } - catch (Exception e) + finally { - log.warn("Exception while retrieving aggregate roots", e); + tDocs.close(); } - return found; } - }); + finally + { + reader.release(); + } + } + catch (Exception e) + { + log.warn("Exception while retrieving aggregate roots", e); + } if (log.isDebugEnabled()) { time = System.currentTimeMillis() - time; - log.debug("Retrieved {} aggregate roots in {} ms.", new Integer(found), new Long(time)); + log.debug("Retrieved {} aggregate roots in {} ms.", found, time); } } } @@ -2633,7 +2614,7 @@ public String getAnalyzer() public void setPath(String path) { - this.path = path.replace("${java.io.tmpdir}", PrivilegedSystemHelper.getProperty("java.io.tmpdir")); + this.path = path.replace("${java.io.tmpdir}", System.getProperty("java.io.tmpdir")); } diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/directory/FSDirectoryManager.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/directory/FSDirectoryManager.java index b0a88da2bc..d1bc5b005f 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/directory/FSDirectoryManager.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/directory/FSDirectoryManager.java @@ -22,7 +22,6 @@ import org.apache.lucene.store.LockFactory; import org.apache.lucene.store.NativeFSLockFactory; import org.exoplatform.commons.utils.PropertyManager; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex; import org.exoplatform.services.jcr.impl.util.io.DirectoryHelper; @@ -30,8 +29,7 @@ import java.io.FileFilter; import java.io.IOException; import java.lang.reflect.Constructor; -import java.security.PrivilegedAction; -import java.security.PrivilegedExceptionAction; +import java.lang.reflect.InvocationTargetException; /** * FSDirectoryManager implements a directory manager for @@ -96,14 +94,7 @@ public class FSDirectoryManager implements DirectoryManager */ public void init(final SearchIndex handler) throws IOException { - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - baseDir = new File(handler.getPath()); - return null; - } - }); + baseDir = new File(handler.getPath()); } /** @@ -111,14 +102,7 @@ public Object run() throws Exception */ public void init(final String path) throws IOException { - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - baseDir = new File(path); - return null; - } - }); + baseDir = new File(path); } /** @@ -126,14 +110,7 @@ public Object run() throws Exception */ public boolean hasDirectory(final String name) throws IOException { - return SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() - { - public Boolean run() throws Exception - { - return new File(baseDir, name).exists(); - - } - }); + return new File(baseDir, name).exists(); } /** @@ -141,42 +118,42 @@ public Boolean run() throws Exception */ public Directory getDirectory(final String name) throws IOException { - return SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() + File dir; + if (name.equals(".")) + { + dir = baseDir; + } + else { - public Directory run() throws Exception + dir = new File(baseDir, name); + } + // FSDirectory itself doesnt create dirs now + if (!dir.exists()) + { + if (!dir.mkdirs()) + { + throw new IOException("Cannot create directory: " + dir); + } + } + try { + LockFactory lockFactory = + (LOCK_FACTORY_CLASS == null) ? new NativeFSLockFactory() : (LockFactory)LOCK_FACTORY_CLASS.newInstance(); + + if (FS_DIRECTORY_CLASS == null) + { + return FSDirectory.open(dir, lockFactory); + } + else { - File dir; - if (name.equals(".")) - { - dir = baseDir; - } - else - { - dir = new File(baseDir, name); - } - // FSDirectory itself doesnt create dirs now - if (!dir.exists()) - { - if (!dir.mkdirs()) - { - throw new IOException("Cannot create directory: " + dir); - } - } - LockFactory lockFactory = - (LOCK_FACTORY_CLASS == null) ? new NativeFSLockFactory() : (LockFactory)LOCK_FACTORY_CLASS.newInstance(); - if (FS_DIRECTORY_CLASS == null) - { - return FSDirectory.open(dir, lockFactory); - } - else - { Constructor constructor = - FS_DIRECTORY_CLASS.getConstructor(File.class, LockFactory.class); + FS_DIRECTORY_CLASS.getConstructor(File.class, LockFactory.class); return constructor.newInstance(dir, lockFactory); - } + } - }); + } catch (NoSuchMethodException | InvocationTargetException | InstantiationException | IllegalAccessException e) { + throw new IOException("Cannot create directory: " + dir); + } } /** @@ -184,32 +161,26 @@ public Directory run() throws Exception */ public String[] getDirectoryNames() throws IOException { - return SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() + File[] dirs = baseDir.listFiles(new FileFilter() { - public String[] run() throws Exception + public boolean accept(File pathname) { - File[] dirs = baseDir.listFiles(new FileFilter() - { - public boolean accept(File pathname) - { - return pathname.isDirectory(); - } - }); - if (dirs != null) - { - String[] names = new String[dirs.length]; - for (int i = 0; i < dirs.length; i++) - { - names[i] = dirs[i].getName(); - } - return names; - } - else - { - throw new IOException("listFiles for " + baseDir.getPath() + " returned null"); - } + return pathname.isDirectory(); } }); + if (dirs != null) + { + String[] names = new String[dirs.length]; + for (int i = 0; i < dirs.length; i++) + { + names[i] = dirs[i].getName(); + } + return names; + } + else + { + throw new IOException("listFiles for " + baseDir.getPath() + " returned null"); + } } /** @@ -217,36 +188,30 @@ public boolean accept(File pathname) */ public boolean delete(final String name) { - return SecurityHelper.doPrivilegedAction(new PrivilegedAction() + File directory = new File(baseDir, name); + // trivial if it does not exist anymore + if (!directory.exists()) { - public Boolean run() + return true; + } + // delete files first + File[] files = directory.listFiles(); + if (files != null) + { + for (int i = 0; i < files.length; i++) { - File directory = new File(baseDir, name); - // trivial if it does not exist anymore - if (!directory.exists()) - { - return true; - } - // delete files first - File[] files = directory.listFiles(); - if (files != null) - { - for (int i = 0; i < files.length; i++) - { - if (!files[i].delete()) - { - return false; - } - } - } - else + if (!files[i].delete()) { return false; } - // now delete directory itself - return directory.delete(); } - }); + } + else + { + return false; + } + // now delete directory itself + return directory.delete(); } /** @@ -259,15 +224,7 @@ public boolean rename(final String from, final String to) try { - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() - { - public Void run() throws IOException - { - DirectoryHelper.renameFile(src, dest); - - return null; - } - }); + DirectoryHelper.renameFile(src, dest); } catch (IOException e) { diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/spell/LuceneSpellChecker.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/spell/LuceneSpellChecker.java index 3b171703d0..b7be23cf97 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/spell/LuceneSpellChecker.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/spell/LuceneSpellChecker.java @@ -30,7 +30,6 @@ import org.apache.lucene.store.AlreadyClosedException; import org.apache.lucene.store.Directory; import org.apache.lucene.util.Version; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.jcr.impl.core.query.QueryHandler; import org.exoplatform.services.jcr.impl.core.query.QueryRootNode; import org.exoplatform.services.jcr.impl.core.query.RelationQueryNode; @@ -43,7 +42,6 @@ import java.io.IOException; import java.io.StringReader; -import java.security.PrivilegedExceptionAction; import java.util.ArrayList; import java.util.List; @@ -257,19 +255,12 @@ private final class InternalSpellChecker { this.handler = handler; spellIndexDirectory = null; - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - spellIndexDirectory = handler.getDirectoryManager().getDirectory("spellchecker"); + spellIndexDirectory = handler.getDirectoryManager().getDirectory("spellchecker"); - if (IndexReader.indexExists(spellIndexDirectory)) - { - lastRefresh = System.currentTimeMillis(); - } - return null; - } - }); + if (IndexReader.indexExists(spellIndexDirectory)) + { + lastRefresh = System.currentTimeMillis(); + } this.spellChecker = new SpellChecker(spellIndexDirectory); this.spellChecker.setAccuracy(minDistance); this.morePopular = morePopular; @@ -328,14 +319,7 @@ void close() { try { - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - spellIndexDirectory.close(); - return null; - } - }); + spellIndexDirectory.close(); } catch (IOException e) { @@ -457,16 +441,9 @@ private String[] check(final String words[]) throws IOException for (int i = 0; i < words.length; i++) { final int currentIndex = i; - String[] similar = - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() - { - public String[] run() throws Exception - { - return spellChecker - .suggestSimilar(words[currentIndex], 5, reader, FieldNames.FULLTEXT, morePopular - ? SuggestMode.SUGGEST_MORE_POPULAR : SuggestMode.SUGGEST_WHEN_NOT_IN_INDEX); - } - }); + String[] similar = spellChecker + .suggestSimilar(words[currentIndex], 5, reader, FieldNames.FULLTEXT, morePopular + ? SuggestMode.SUGGEST_MORE_POPULAR : SuggestMode.SUGGEST_WHEN_NOT_IN_INDEX); if (similar.length > 0) { @@ -480,7 +457,7 @@ public String[] run() throws Exception } if (hasSuggestion) { - LOG.debug("Successful after " + new Integer(retries) + " retries"); + LOG.debug("Successful after " + retries + " retries"); return suggestion; } else @@ -505,14 +482,7 @@ public String[] run() throws Exception } finally { - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - Util.closeOrRelease(reader); - return null; - } - }); + Util.closeOrRelease(reader); } } @@ -528,11 +498,7 @@ private void refreshSpellChecker() { synchronized (this) { - if (refreshing) - { - return; - } - else + if (!refreshing) { refreshing = true; Runnable refresh = new Runnable() @@ -542,33 +508,26 @@ public void run() try { - SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction() + IndexReader reader = handler.getIndexReader(); + try { - public Object run() throws Exception + long time = System.currentTimeMillis(); + Dictionary dict = new LuceneDictionary(reader, FieldNames.FULLTEXT); + LOG.debug("Starting spell checker index refresh"); + spellChecker.indexDictionary(dict, new IndexWriterConfig(Version.LUCENE_36, + new StandardAnalyzer(Version.LUCENE_36)), true); + time = System.currentTimeMillis() - time; + time = time / 1000; + LOG.info("Spell checker index refreshed in: " + time + " s."); + } + finally + { + Util.closeOrRelease(reader); + synchronized (InternalSpellChecker.this) { - IndexReader reader = handler.getIndexReader(); - try - { - long time = System.currentTimeMillis(); - Dictionary dict = new LuceneDictionary(reader, FieldNames.FULLTEXT); - LOG.debug("Starting spell checker index refresh"); - spellChecker.indexDictionary(dict, new IndexWriterConfig(Version.LUCENE_36, - new StandardAnalyzer(Version.LUCENE_36)), true); - time = System.currentTimeMillis() - time; - time = time / 1000; - LOG.info("Spell checker index refreshed in: " + new Long(time) + " s."); - } - finally - { - Util.closeOrRelease(reader); - synchronized (InternalSpellChecker.this) - { - refreshing = false; - } - } - return null; + refreshing = false; } - }); + } } catch (IOException e) { diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/StreamNewEditableValueData.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/StreamNewEditableValueData.java index 84d951049d..15d64848d0 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/StreamNewEditableValueData.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/StreamNewEditableValueData.java @@ -18,14 +18,15 @@ */ package org.exoplatform.services.jcr.impl.dataflow; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.services.jcr.core.value.EditableBinaryValue; import org.exoplatform.services.jcr.impl.util.io.DirectoryHelper; import org.exoplatform.services.jcr.impl.util.io.SpoolFile; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.io.RandomAccessFile; import java.nio.MappedByteBuffer; import java.nio.channels.Channels; import java.nio.channels.FileChannel; @@ -43,7 +44,7 @@ public StreamNewEditableValueData(InputStream stream, int orderNumber, SpoolConf super(orderNumber, null, null, spoolConfig); SpoolFile sf = SpoolFile.createTempFile("jcrvdedit", null, spoolConfig.tempDirectory); - OutputStream sfout = PrivilegedFileHelper.fileOutputStream(sf); + OutputStream sfout = new FileOutputStream(sf); try { DirectoryHelper.transfer(stream, sfout); @@ -53,7 +54,7 @@ public StreamNewEditableValueData(InputStream stream, int orderNumber, SpoolConf try { sfout.close(); - PrivilegedFileHelper.delete(sf); + sf.delete(); } catch (Exception e1) { @@ -71,7 +72,7 @@ public StreamNewEditableValueData(InputStream stream, int orderNumber, SpoolConf } this.spoolFile = sf; - this.channel = PrivilegedFileHelper.randomAccessFile(sf, "rw").getChannel(); + this.channel = new RandomAccessFile(sf, "rw").getChannel(); } /** diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/StreamValueData.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/StreamValueData.java index 45ecc20b7f..ac3e19e81c 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/StreamValueData.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/StreamValueData.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.impl.dataflow; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.services.jcr.access.AccessControlEntry; import org.exoplatform.services.jcr.datamodel.IllegalNameException; import org.exoplatform.services.jcr.datamodel.IllegalPathException; @@ -36,6 +35,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -120,7 +120,7 @@ public InputStream getAsStream() throws IOException { if (spoolFile != null) { - return PrivilegedFileHelper.fileInputStream(spoolFile); // from spool file + return new FileInputStream(spoolFile); // from spool file } else { @@ -141,7 +141,7 @@ public long getLength() } else { - return PrivilegedFileHelper.length(spoolFile); + return spoolFile.length(); } } @@ -182,7 +182,7 @@ protected long readFromFile(OutputStream stream, File file, long length, long po { if (channel == null || !channel.isOpen()) { - in = PrivilegedFileHelper.fileInputStream(file); + in = new FileInputStream(file); channel = in.getChannel(); } @@ -276,7 +276,7 @@ else if (len + read > spoolConfig.maxBufferSize) sf = SpoolFile.createTempFile("jcrvd", null, spoolConfig.tempDirectory); sf.acquire(this); - sfout = PrivilegedFileHelper.fileOutputStream(sf); + sfout = new FileOutputStream(sf); sfout.write(buffer, 0, len); sfout.write(tmpBuff, 0, read); @@ -359,7 +359,7 @@ protected byte[] fileToByteArray(File file) throws IOException { if (channel == null || !channel.isOpen()) { - in = PrivilegedFileHelper.fileInputStream(file); + in = new FileInputStream(file); channel = in.getChannel(); } @@ -405,16 +405,16 @@ private void removeSpoolFile() throws IOException (spoolFile).release(this); } - if (PrivilegedFileHelper.exists(spoolFile)) + if (spoolFile.exists()) { - if (!PrivilegedFileHelper.delete(spoolFile)) + if (!spoolFile.delete()) { spoolConfig.fileCleaner.addFile(spoolFile); if (LOG.isDebugEnabled()) { LOG.debug("Could not remove file. Add to fileCleaner " - + PrivilegedFileHelper.getAbsolutePath(spoolFile)); + + spoolFile.getAbsolutePath()); } } } diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ValueDataUtil.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ValueDataUtil.java index 7b7c2eb88b..8a4a4e569c 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ValueDataUtil.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ValueDataUtil.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.impl.dataflow; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.services.jcr.access.AccessControlEntry; import org.exoplatform.services.jcr.core.ExtendedPropertyType; import org.exoplatform.services.jcr.datamodel.Identifier; @@ -45,6 +44,7 @@ import java.io.File; import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -124,7 +124,7 @@ else if (len + read > spoolConfig.maxBufferSize) buffer = null; break; } - out = PrivilegedFileHelper.fileOutputStream(swapFile); + out = new FileOutputStream(swapFile); out.write(buffer, 0, len); out.write(spoolBuffer, 0, read); buffer = null; diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java index 05a5443a3d..7fd5d11d24 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java @@ -18,9 +18,6 @@ */ package org.exoplatform.services.jcr.impl.dataflow.persistent; -import org.exoplatform.commons.utils.PrivilegedFileHelper; -import org.exoplatform.commons.utils.PrivilegedSystemHelper; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.management.annotations.Managed; import org.exoplatform.management.annotations.ManagedDescription; import org.exoplatform.management.jmx.annotations.NameTemplate; @@ -623,19 +620,12 @@ public int getChildNodesCount(final NodeData parent) throws RepositoryException return childCount; } } - - return executeAction(new PrivilegedExceptionAction() + int childCount = CacheableWorkspaceDataManager.super.getChildNodesCount(parent); + if (cache.isEnabled()) { - public Integer run() throws RepositoryException - { - int childCount = CacheableWorkspaceDataManager.super.getChildNodesCount(parent); - if (cache.isEnabled()) - { - cache.addChildNodesCount(parent, childCount); - } - return childCount; - } - }); + cache.addChildNodesCount(parent, childCount); + } + return childCount; } finally { @@ -711,22 +701,16 @@ public boolean getChildNodesDataByPage(final NodeData nodeData, final int fromOr } } - return executeAction(new PrivilegedExceptionAction() - { - public Boolean run() throws RepositoryException - { - boolean hasNext = - CacheableWorkspaceDataManager.super.getChildNodesDataByPage(nodeData, fromOrderNum, offset, pageSize, - childs); + boolean hasNext = + CacheableWorkspaceDataManager.super.getChildNodesDataByPage(nodeData, fromOrderNum, offset, pageSize, + childs); - if (cache.isEnabled()) - { - cache.addChildNodesByPage(nodeData, childs, fromOrderNum); - } + if (cache.isEnabled()) + { + cache.addChildNodesByPage(nodeData, childs, fromOrderNum); + } - return hasNext; - } - }); + return hasNext; } finally { @@ -809,13 +793,7 @@ public ItemData getItemData(final NodeData parentData, final QPathEntry name, fi data = getCachedCleanItemData(parentData, name, itemType); if (data == null) { - data = executeAction(new PrivilegedExceptionAction() - { - public ItemData run() throws RepositoryException - { - return getPersistedItemData(parentData, name, itemType, createNullItemData); - } - }); + data = getPersistedItemData(parentData, name, itemType, createNullItemData); } } finally @@ -838,14 +816,8 @@ public ItemData run() throws RepositoryException } else { - return executeAction(new PrivilegedExceptionAction() - { - public ItemData run() throws RepositoryException - { - ItemData item = CacheableWorkspaceDataManager.super.getItemData(parentData, name, itemType); - return item != null && item.isNode() ? initACL(parentData, (NodeData)item) : item; - } - }); + ItemData item = CacheableWorkspaceDataManager.super.getItemData(parentData, name, itemType); + return item != null && item.isNode() ? initACL(parentData, (NodeData)item) : item; } } @@ -873,13 +845,7 @@ public boolean hasItemData(final NodeData parentData, final QPathEntry name, fin data = getCachedItemData(parentData, name, itemType); if (data == null) { - return executeAction(new PrivilegedExceptionAction() - { - public Boolean run() throws RepositoryException - { - return CacheableWorkspaceDataManager.super.hasItemData(parentData, name, itemType); - } - }); + return CacheableWorkspaceDataManager.super.hasItemData(parentData, name, itemType); } } finally @@ -897,13 +863,7 @@ public Boolean run() throws RepositoryException } else { - return executeAction(new PrivilegedExceptionAction() - { - public Boolean run() throws RepositoryException - { - return CacheableWorkspaceDataManager.super.hasItemData(parentData, name, itemType); - } - }); + return CacheableWorkspaceDataManager.super.hasItemData(parentData, name, itemType); } } @@ -945,13 +905,7 @@ private ItemData getItemData(final String identifier, final boolean doInitACL) t data = getCachedCleanItemData(identifier); if (data == null) { - data = executeAction(new PrivilegedExceptionAction() - { - public ItemData run() throws RepositoryException - { - return getPersistedItemData(identifier); - } - }); + data = getPersistedItemData(identifier); } } finally @@ -974,21 +928,15 @@ public ItemData run() throws RepositoryException } else { - return executeAction(new PrivilegedExceptionAction() + ItemData item = CacheableWorkspaceDataManager.super.getItemData(identifier); + if (item != null && item.isNode() && doInitACL) { - public ItemData run() throws RepositoryException - { - ItemData item = CacheableWorkspaceDataManager.super.getItemData(identifier); - if (item != null && item.isNode() && doInitACL) - { - return initACL(null, (NodeData)item); - } - else - { - return item; - } - } - }); + return initACL(null, (NodeData)item); + } + else + { + return item; + } } } @@ -1024,13 +972,7 @@ public List getReferencesData(String identifier, boolean skipVersi */ public int getLastOrderNumber(final NodeData nodeData) throws RepositoryException { - return executeAction(new PrivilegedExceptionAction() - { - public Integer run() throws RepositoryException - { - return CacheableWorkspaceDataManager.super.getLastOrderNumber(nodeData); - } - }); + return CacheableWorkspaceDataManager.super.getLastOrderNumber(nodeData); } /** @@ -1081,32 +1023,8 @@ void save(final ItemStateChangesLog changesLog, final TransactionableResourceMan } workingThreads.incrementAndGet(); - try - { - SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public Void run() throws Exception - { - doSave(changesLog, txResourceManager); - return null; - } - }); - } - catch (PrivilegedActionException e) - { - Throwable cause = e.getCause(); - if (cause instanceof RepositoryException) - { - throw (RepositoryException)cause; - } - else if (cause instanceof RuntimeException) - { - throw (RuntimeException)cause; - } - else - { - throw new RuntimeException(cause); - } + try { + doSave(changesLog, txResourceManager); } finally { @@ -1261,14 +1179,7 @@ public void onAfterCompletion(int status) throws Exception // the current tx we can face enlistment issues on product like ISPN transactionManager.suspend(); - SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Void run() - { - notifySaveItems(logWrapper.getChangesLog(), false); - return null; - } - }); + notifySaveItems(logWrapper.getChangesLog(), false); // Since the resume method could cause issue with some TM at this stage, we don't resume the tx } } @@ -1418,19 +1329,14 @@ protected List getChildNodesData(final NodeData nodeData, boolean forc return childNodes; } } - return executeAction(new PrivilegedExceptionAction>() + + childNodes = CacheableWorkspaceDataManager.super.getChildNodesData(nodeData); + if (cache.isEnabled()) { - public List run() throws RepositoryException - { - List childNodes = CacheableWorkspaceDataManager.super.getChildNodesData(nodeData); - if (cache.isEnabled()) - { - cache.addChildNodes(nodeData, childNodes); - } + cache.addChildNodes(nodeData, childNodes); + } - return childNodes; - } - }); + return childNodes; } finally { @@ -1443,22 +1349,16 @@ protected List getChildNodesDataByPattern(final NodeData parentData, { if (!cache.isEnabled()) { - return executeAction(new PrivilegedExceptionAction>() - { - public List run() throws RepositoryException - { - List childNodes = - CacheableWorkspaceDataManager.super.getChildNodesData(parentData, patternFilters); + List childNodes = + CacheableWorkspaceDataManager.super.getChildNodesData(parentData, patternFilters); - // ini ACL - for (int i = 0; i < childNodes.size(); i++) - { - childNodes.set(i, (NodeData)initACL(parentData, childNodes.get(i))); - } + // ini ACL + for (int i = 0; i < childNodes.size(); i++) + { + childNodes.set(i, (NodeData)initACL(parentData, childNodes.get(i))); + } - return childNodes; - } - }); + return childNodes; } if (!cache.isPatternSupported()) @@ -1565,56 +1465,48 @@ public List run() throws RepositoryException } } } - patternIterator = null; // execute all patterns and put result in cache if (!uncachedPatterns.isEmpty()) { - executeAction(new PrivilegedExceptionAction() + List persistedItemList = + CacheableWorkspaceDataManager.super.getChildNodesData(parentData, + new ArrayList(uncachedPatterns)); + + if (persistedItemList.size() > 0) { - public Void run() throws RepositoryException + NodeData parent = (NodeData)getItemData(parentData.getIdentifier()); + if (parent != null) { - List persistedItemList = - CacheableWorkspaceDataManager.super.getChildNodesData(parentData, - new ArrayList(uncachedPatterns)); - - if (persistedItemList.size() > 0) + // filter nodes list for each exact name + patternIterator = uncachedPatterns.iterator(); + while (patternIterator.hasNext()) { - NodeData parent = (NodeData)getItemData(parentData.getIdentifier()); - if (parent != null) + QPathEntryFilter pattern = patternIterator.next(); + @SuppressWarnings("unchecked") + List persistedNodeData = (List)pattern.accept(persistedItemList); + if (pattern.isExactName()) { - // filter nodes list for each exact name - Iterator patternIterator = uncachedPatterns.iterator(); - while (patternIterator.hasNext()) + if (persistedNodeData.isEmpty()) + { + cache.put(new NullNodeData(parentData, pattern.getQPathEntry())); + } + else { - QPathEntryFilter pattern = patternIterator.next(); - @SuppressWarnings("unchecked") - List persistedNodeData = (List)pattern.accept(persistedItemList); - if (pattern.isExactName()) - { - if (persistedNodeData.isEmpty()) - { - cache.put(new NullNodeData(parentData, pattern.getQPathEntry())); - } - else - { - cache.put(persistedNodeData.get(0)); - } - } - else - { - cache.addChildNodes(parent, pattern, persistedNodeData); - } - for (NodeData node : persistedItemList) - { - childNodesMap.put(node.getIdentifier(), node); - } + cache.put(persistedNodeData.get(0)); } } + else + { + cache.addChildNodes(parent, pattern, persistedNodeData); + } + for (NodeData node : persistedItemList) + { + childNodesMap.put(node.getIdentifier(), node); + } } - return null; } - }); + } } } finally @@ -1665,18 +1557,12 @@ protected List getReferencedPropertiesData(final String identifier return refProps; } } - return executeAction(new PrivilegedExceptionAction>() + refProps = CacheableWorkspaceDataManager.super.getReferencesData(identifier, false); + if (cache.isEnabled()) { - public List run() throws RepositoryException - { - List refProps = CacheableWorkspaceDataManager.super.getReferencesData(identifier, false); - if (cache.isEnabled()) - { - cache.addReferencedProperties(identifier, refProps); - } - return refProps; - } - }); + cache.addReferencedProperties(identifier, refProps); + } + return refProps; } finally { @@ -1753,20 +1639,14 @@ protected List getChildPropertiesData(final NodeData nodeData, boo return childProperties; } } - return executeAction(new PrivilegedExceptionAction>() - { - public List run() throws RepositoryException - { - List childProperties = - CacheableWorkspaceDataManager.super.getChildPropertiesData(nodeData); + childProperties = + CacheableWorkspaceDataManager.super.getChildPropertiesData(nodeData); - if (childProperties.size() > 0 && cache.isEnabled()) - { - cache.addChildProperties(nodeData, childProperties); - } - return childProperties; - } - }); + if (childProperties.size() > 0 && cache.isEnabled()) + { + cache.addChildProperties(nodeData, childProperties); + } + return childProperties; } finally { @@ -1779,13 +1659,7 @@ protected List getChildPropertiesDataByPattern(final NodeData node { if (!cache.isEnabled()) { - return executeAction(new PrivilegedExceptionAction>() - { - public List run() throws RepositoryException - { - return CacheableWorkspaceDataManager.super.getChildPropertiesData(nodeData, patternFilters); - } - }); + return CacheableWorkspaceDataManager.super.getChildPropertiesData(nodeData, patternFilters); } if (!cache.isPatternSupported()) @@ -1908,58 +1782,50 @@ public List run() throws RepositoryException } } } - patternIterator = null; // execute all patterns and put result in cache if (!uncachedPatterns.isEmpty()) { - executeAction(new PrivilegedExceptionAction() + List persistedItemList = + CacheableWorkspaceDataManager.super.getChildPropertiesData(nodeData, + new ArrayList(uncachedPatterns)); + + if (persistedItemList.size() > 0) { - public Void run() throws RepositoryException + NodeData parent = (NodeData)getItemData(nodeData.getIdentifier()); + if (parent != null) { - List persistedItemList = - CacheableWorkspaceDataManager.super.getChildPropertiesData(nodeData, - new ArrayList(uncachedPatterns)); - - if (persistedItemList.size() > 0) + // filter properties list for each exact name + patternIterator = uncachedPatterns.iterator(); + while (patternIterator.hasNext()) { - NodeData parent = (NodeData)getItemData(nodeData.getIdentifier()); - if (parent != null) + QPathEntryFilter pattern = patternIterator.next(); + @SuppressWarnings("unchecked") + List persistedPropData = + (List)pattern.accept(persistedItemList); + if (pattern.isExactName()) { - // filter properties list for each exact name - Iterator patternIterator = uncachedPatterns.iterator(); - while (patternIterator.hasNext()) + if (persistedPropData.isEmpty()) + { + cache.put(new NullPropertyData(parent, pattern.getQPathEntry())); + } + else { - QPathEntryFilter pattern = patternIterator.next(); - @SuppressWarnings("unchecked") - List persistedPropData = - (List)pattern.accept(persistedItemList); - if (pattern.isExactName()) - { - if (persistedPropData.isEmpty()) - { - cache.put(new NullPropertyData(parent, pattern.getQPathEntry())); - } - else - { - cache.put(persistedPropData.get(0)); - } - } - else - { - cache.addChildProperties(parent, pattern, persistedPropData); - } - - for (PropertyData node : persistedItemList) - { - childPropsMap.put(node.getIdentifier(), node); - } + cache.put(persistedPropData.get(0)); } } + else + { + cache.addChildProperties(parent, pattern, persistedPropData); + } + + for (PropertyData node : persistedItemList) + { + childPropsMap.put(node.getIdentifier(), node); + } } - return null; } - }); + } } } finally @@ -2125,20 +1991,14 @@ protected List listChildPropertiesData(final NodeData nodeData, bo return propertiesList; } } - return executeAction(new PrivilegedExceptionAction>() - { - public List run() throws RepositoryException - { - List propertiesList = - CacheableWorkspaceDataManager.super.listChildPropertiesData(nodeData); + propertiesList = + CacheableWorkspaceDataManager.super.listChildPropertiesData(nodeData); - if (propertiesList.size() > 0 && cache.isEnabled()) - { - cache.addChildPropertiesList(nodeData, propertiesList); - } - return propertiesList; - } - }); + if (propertiesList.size() > 0 && cache.isEnabled()) + { + cache.addChildPropertiesList(nodeData, propertiesList); + } + return propertiesList; } finally { @@ -2358,30 +2218,6 @@ private void unregisterRemoteCommands() { } } - private T executeAction(PrivilegedExceptionAction action) throws RepositoryException - { - try - { - return SecurityHelper.doPrivilegedExceptionAction(action); - } - catch (PrivilegedActionException pae) - { - Throwable cause = pae.getCause(); - if (cause instanceof RepositoryException) - { - throw (RepositoryException)cause; - } - else if (cause instanceof RuntimeException) - { - throw (RuntimeException)cause; - } - else - { - throw new RuntimeException(cause); - } - } - } - /** * Init ACL of the node. * @param parent @@ -2603,25 +2439,18 @@ public void start() initRemoteCommands(); // Remove all locks records directly from the cache by cleaning the entire cache to prevent inconsistencies boolean deleteLocks = - "true".equalsIgnoreCase(PrivilegedSystemHelper.getProperty(AbstractCacheableLockManager.LOCKS_FORCE_REMOVE, + "true".equalsIgnoreCase(System.getProperty(AbstractCacheableLockManager.LOCKS_FORCE_REMOVE, "false")); if (deleteLocks && this.cache instanceof Backupable) { - SecurityHelper.doPrivilegedAction(new PrivilegedAction() + try { - public Void run() - { - try - { - ((Backupable)CacheableWorkspaceDataManager.this.cache).clean(); - } - catch (BackupException e) - { - LOG.warn("Could not clean the cache to remove all the locks", e); - } - return null; - } - }); + ((Backupable)CacheableWorkspaceDataManager.this.cache).clean(); + } + catch (BackupException e) + { + LOG.warn("Could not clean the cache to remove all the locks", e); + } } isStopped.set(false); @@ -2825,7 +2654,7 @@ private boolean forceLoad(PropertyData prop) continue; return true; } - else if (!PrivilegedFileHelper.exists(fpvd.getFile()))// check if file exist + else if (!fpvd.getFile().exists())// check if file exist { return true; } @@ -2904,4 +2733,4 @@ public boolean hasPermissions() return permissions != null; } } -} \ No newline at end of file +} diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/FilePersistedValueData.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/FilePersistedValueData.java index 38df522719..4626260869 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/FilePersistedValueData.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/FilePersistedValueData.java @@ -18,12 +18,12 @@ */ package org.exoplatform.services.jcr.impl.dataflow.persistent; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.services.jcr.datamodel.ValueData; import org.exoplatform.services.jcr.impl.dataflow.SpoolConfig; import org.exoplatform.services.jcr.impl.dataflow.StreamValueData; import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInput; @@ -75,7 +75,7 @@ public File getFile() @Override public InputStream getAsStream() throws IOException { - return PrivilegedFileHelper.fileInputStream(file); + return new FileInputStream(file); } /** @@ -93,7 +93,7 @@ public byte[] getAsByteArray() throws IllegalStateException, IOException @Override public long getLength() { - return PrivilegedFileHelper.length(file); + return file.length(); } /** @@ -129,7 +129,7 @@ public void readExternal(ObjectInput in) throws IOException, ClassNotFoundExcept File f = new File(new String(buf, "UTF-8")); // validate if exists - if (PrivilegedFileHelper.exists(f)) + if (f.exists()) { file = f; } @@ -156,7 +156,7 @@ public void writeExternal(ObjectOutput out) throws IOException // write canonical file path if (file != null) { - byte[] buf = PrivilegedFileHelper.getCanonicalPath(file).getBytes("UTF-8"); + byte[] buf = file.getCanonicalPath().getBytes("UTF-8"); out.writeInt(buf.length); out.write(buf); } diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/StreamPersistedValueData.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/StreamPersistedValueData.java index 4a85118861..97137d4663 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/StreamPersistedValueData.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/StreamPersistedValueData.java @@ -18,8 +18,6 @@ */ package org.exoplatform.services.jcr.impl.dataflow.persistent; -import org.exoplatform.commons.utils.PrivilegedFileHelper; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.jcr.datamodel.ValueData; import org.exoplatform.services.jcr.impl.dataflow.SpoolConfig; import org.exoplatform.services.jcr.impl.util.io.SpoolFile; @@ -30,6 +28,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInput; @@ -37,7 +36,6 @@ import java.io.OutputStream; import java.net.URL; import java.net.URLConnection; -import java.security.PrivilegedExceptionAction; import java.util.concurrent.atomic.AtomicLong; /** @@ -236,11 +234,11 @@ public long getLength() { if (file != null) { - return PrivilegedFileHelper.length(file); + return file.length(); } else if (tempFile != null) { - return PrivilegedFileHelper.length(tempFile); + return tempFile.length(); } else if (stream instanceof FileInputStream) { @@ -343,12 +341,12 @@ public InputStream getAsStream() throws IOException { if (tempFile != null) { - return PrivilegedFileHelper.fileInputStream(tempFile); + return new FileInputStream(tempFile); } else if (spoolContent) { spoolContent(); - return PrivilegedFileHelper.fileInputStream(tempFile); + return new FileInputStream(tempFile); } return url.openStream(); } @@ -373,7 +371,7 @@ private void spoolContent(InputStream is) throws IOException, FileNotFoundExcept spoolConfig.fileCleaner); try { - OutputStream os = PrivilegedFileHelper.fileOutputStream(swapFile); + OutputStream os = new FileOutputStream(swapFile); try { byte[] bytes = new byte[1024]; @@ -485,19 +483,13 @@ public void readExternal(ObjectInput in) throws IOException, ClassNotFoundExcept final String path = new String(buf, "UTF-8"); File f = new File(path); // validate if exists - if (PrivilegedFileHelper.exists(f)) + if (f.exists()) { file = f; } else if (path.startsWith(ValueStorageURLStreamHandler.PROTOCOL + ":/")) { - url = SecurityHelper.doPrivilegedMalformedURLExceptionAction(new PrivilegedExceptionAction() - { - public URL run() throws Exception - { - return new URL(null, path, ValueStorageURLStreamHandler.INSTANCE); - } - }); + url = new URL(null, path, ValueStorageURLStreamHandler.INSTANCE); } else { diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/ISPNCacheWorkspaceStorageCache.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/ISPNCacheWorkspaceStorageCache.java index c4e6e01255..2dd45d5932 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/ISPNCacheWorkspaceStorageCache.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/ISPNCacheWorkspaceStorageCache.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.impl.dataflow.persistent.infinispan; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.container.ExoContainer; import org.exoplatform.container.ExoContainerContext; import org.exoplatform.container.configuration.ConfigurationManager; @@ -53,11 +52,11 @@ import org.exoplatform.services.jcr.impl.backup.DataRestore; import org.exoplatform.services.jcr.impl.backup.rdbms.DataRestoreContext; import org.exoplatform.services.jcr.impl.core.itemfilters.QPathEntryFilter; -import org.exoplatform.services.jcr.impl.dataflow.SpoolConfig; +import org.exoplatform.services.jcr.impl.dataflow.SpoolConfig; import org.exoplatform.services.jcr.impl.dataflow.ValueDataUtil; -import org.exoplatform.services.jcr.impl.dataflow.persistent.CleanableFilePersistedValueData; +import org.exoplatform.services.jcr.impl.dataflow.persistent.CleanableFilePersistedValueData; import org.exoplatform.services.jcr.impl.dataflow.persistent.SimplePersistedSize; -import org.exoplatform.services.jcr.impl.dataflow.persistent.StreamPersistedValueData; +import org.exoplatform.services.jcr.impl.dataflow.persistent.StreamPersistedValueData; import org.exoplatform.services.jcr.infinispan.AbstractMapper; import org.exoplatform.services.jcr.infinispan.CacheKey; import org.exoplatform.services.jcr.infinispan.ISPNCacheFactory; @@ -82,7 +81,6 @@ import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; -import java.security.PrivilegedAction; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -146,8 +144,8 @@ public class ISPNCacheWorkspaceStorageCache implements WorkspaceStorageCache, Ba protected final String ownerId; private final boolean enabled; - - private final long lifespan; + + private final long lifespan; protected final BufferedISPNCache cache; @@ -603,7 +601,7 @@ public ISPNCacheWorkspaceStorageCache(ExoContainerContext ctx, WorkspaceEntry ws throw new RepositoryConfigurationException("Cache configuration not found"); } this.enabled = wsConfig.getCache().isEnabled(); - this.lifespan = SpoolConfig.liveTime; + this.lifespan = SpoolConfig.liveTime; // create cache using custom factory ISPNCacheFactory factory = @@ -1417,9 +1415,9 @@ else if (item.getName() != null && item.getParentIdentifier() != null) */ protected PropertyData putProperty(PropertyData prop, ModifyChildOption modifyListsOfChild) { - boolean forceLifespan = lifespan > 0 && prop.getValues() != null && prop.getValues().size() > 0 && - ((prop.getValues().get(0) instanceof CleanableFilePersistedValueData) || - (prop.getValues().get(0) instanceof StreamPersistedValueData)); + boolean forceLifespan = lifespan > 0 && prop.getValues() != null && prop.getValues().size() > 0 && + ((prop.getValues().get(0) instanceof CleanableFilePersistedValueData) || + (prop.getValues().get(0) instanceof StreamPersistedValueData)); // if MODIFY and List present OR FORCE_MODIFY, then write if (modifyListsOfChild != ModifyChildOption.NOT_MODIFY) { @@ -1473,25 +1471,25 @@ protected PropertyData putProperty(PropertyData prop, ModifyChildOption modifyLi ItemData returnedData; if (modifyListsOfChild == ModifyChildOption.NOT_MODIFY) { - if(forceLifespan) - { - returnedData = (ItemData)cache.putIfAbsent(new CacheId(getOwnerId(), prop.getIdentifier()), prop, lifespan); - } - else - { - returnedData = (ItemData)cache.putIfAbsent(new CacheId(getOwnerId(), prop.getIdentifier()), prop); - } + if(forceLifespan) + { + returnedData = (ItemData)cache.putIfAbsent(new CacheId(getOwnerId(), prop.getIdentifier()), prop, lifespan); + } + else + { + returnedData = (ItemData)cache.putIfAbsent(new CacheId(getOwnerId(), prop.getIdentifier()), prop); + } } else { - if(forceLifespan) - { - returnedData = (ItemData)cache.put(new CacheId(getOwnerId(), prop.getIdentifier()), prop, true, lifespan); - } - else - { - returnedData = (ItemData)cache.put(new CacheId(getOwnerId(), prop.getIdentifier()), prop, true); - } + if(forceLifespan) + { + returnedData = (ItemData)cache.put(new CacheId(getOwnerId(), prop.getIdentifier()), prop, true, lifespan); + } + else + { + returnedData = (ItemData)cache.put(new CacheId(getOwnerId(), prop.getIdentifier()), prop, true); + } } return (returnedData instanceof NullItemData) ? null : (PropertyData) returnedData; @@ -2095,17 +2093,10 @@ private class DistributedOperationCaller extends GlobalOperationCaller @Override protected int getCacheSize() { - Map map = SecurityHelper.doPrivilegedAction(new PrivilegedAction>() - { - public Map run() - { - MapReduceTask task = - new MapReduceTask(cache); - task.mappedWith(new GetSizeMapper(getOwnerId())).reducedWith(new GetSizeReducer()); - return task.execute(); - } - - }); + MapReduceTask task = + new MapReduceTask(cache); + task.mappedWith(new GetSizeMapper(getOwnerId())).reducedWith(new GetSizeReducer()); + Map map = task.execute(); int sum = 0; for (Integer i : map.values()) { @@ -2120,17 +2111,10 @@ public Map run() @Override protected void clearCache() { - SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Void run() - { - MapReduceTask task = - new MapReduceTask(cache); - task.mappedWith(new ClearCacheMapper(getOwnerId())).reducedWith(new IdentityReducer()); - task.execute(); - return null; - } - }); + MapReduceTask task = + new MapReduceTask(cache); + task.mappedWith(new ClearCacheMapper(getOwnerId())).reducedWith(new IdentityReducer()); + task.execute(); } /** @@ -2190,18 +2174,11 @@ public void afterCompletion(int status) private void _updateTreePath(final QPath prevRootPath, final QPath newRootPath) { - SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Void run() - { - MapReduceTask task = - new MapReduceTask(cache); - task.mappedWith(new UpdateTreePathMapper(getOwnerId(), prevRootPath, newRootPath)).reducedWith( - new IdentityReducer()); - task.execute(); - return null; - } - }); + MapReduceTask task = + new MapReduceTask(cache); + task.mappedWith(new UpdateTreePathMapper(getOwnerId(), prevRootPath, newRootPath)).reducedWith( + new IdentityReducer()); + task.execute(); } /** @@ -2216,18 +2193,11 @@ protected void updateChildsACL(String parentId, final AccessControlList acl) return; } final QPath parentPath = ((NodeData)parentItem).getQPath(); - SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Void run() - { - MapReduceTask task = - new MapReduceTask(cache); - task.mappedWith(new UpdateChildsACLMapper(getOwnerId(), parentPath, acl)).reducedWith( - new IdentityReducer()); - task.execute(); - return null; - } - }); + MapReduceTask task = + new MapReduceTask(cache); + task.mappedWith(new UpdateChildsACLMapper(getOwnerId(), parentPath, acl)).reducedWith( + new IdentityReducer()); + task.execute(); } } diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/FileObjectReaderImpl.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/FileObjectReaderImpl.java index 389fcb77e9..f21517d53c 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/FileObjectReaderImpl.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/FileObjectReaderImpl.java @@ -18,13 +18,13 @@ */ package org.exoplatform.services.jcr.impl.dataflow.serialization; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.services.jcr.dataflow.serialization.ObjectReader; import org.exoplatform.services.jcr.dataflow.serialization.SerializationConstants; import org.exoplatform.services.jcr.impl.Constants; import java.io.EOFException; import java.io.File; +import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; @@ -58,7 +58,7 @@ public class FileObjectReaderImpl implements ObjectReader */ public FileObjectReaderImpl(File file) throws FileNotFoundException { - this.channel = PrivilegedFileHelper.fileInputStream(file).getChannel(); + this.channel = new FileInputStream(file).getChannel(); } /** diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/PersistedValueDataReader.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/PersistedValueDataReader.java index 095370ce84..dd9a64894d 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/PersistedValueDataReader.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/PersistedValueDataReader.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.impl.dataflow.serialization; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.services.jcr.dataflow.serialization.ObjectReader; import org.exoplatform.services.jcr.dataflow.serialization.SerializationConstants; import org.exoplatform.services.jcr.dataflow.serialization.UnknownClassIdException; @@ -77,7 +76,7 @@ public PersistedValueDataReader(ReaderSpoolFileHolder holder, SpoolConfig spoolC public PersistedValueData read(ObjectReader in, int type) throws UnknownClassIdException, IOException { File tempDirectory = new File(SerializationConstants.TEMP_DIR); - PrivilegedFileHelper.mkdirs(tempDirectory); + tempDirectory.mkdirs(); // read id int key; @@ -143,7 +142,7 @@ public PersistedValueData read(ObjectReader in, int type) throws UnknownClassIdE private void writeToFile(ObjectReader src, SpoolFile dest, long length) throws IOException { // write data to file - FileOutputStream sfout = PrivilegedFileHelper.fileOutputStream(dest); + FileOutputStream sfout = new FileOutputStream(dest); int bSize = SerializationConstants.INTERNAL_BUFFER_SIZE; try { diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/PersistedValueDataWriter.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/PersistedValueDataWriter.java index 852f6cba2d..69089e2eec 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/PersistedValueDataWriter.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/PersistedValueDataWriter.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.impl.dataflow.serialization; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.services.jcr.dataflow.serialization.ObjectWriter; import org.exoplatform.services.jcr.dataflow.serialization.SerializationConstants; import org.exoplatform.services.jcr.impl.dataflow.persistent.FilePersistedValueData; @@ -26,6 +25,7 @@ import org.exoplatform.services.jcr.impl.dataflow.persistent.StreamPersistedValueData; import org.exoplatform.services.jcr.util.IdGenerator; +import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; @@ -72,7 +72,7 @@ public void write(ObjectWriter out, PersistedValueData vd) throws IOException { if (((StreamPersistedValueData)vd).getTempFile() != null) { - in = PrivilegedFileHelper.fileInputStream(((StreamPersistedValueData)vd).getTempFile()); + in = new FileInputStream(((StreamPersistedValueData)vd).getTempFile()); } } else diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/SerializationSpoolFile.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/SerializationSpoolFile.java index 05e45d7485..27853d93c1 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/SerializationSpoolFile.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/SerializationSpoolFile.java @@ -18,14 +18,12 @@ */ package org.exoplatform.services.jcr.impl.dataflow.serialization; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.jcr.impl.util.io.SpoolFile; import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; import java.io.File; import java.io.FileNotFoundException; -import java.security.PrivilegedAction; /** * Created by The eXo Platform SAS.
@@ -86,14 +84,7 @@ public synchronized boolean delete() { if (!inUse()) { - PrivilegedAction action = new PrivilegedAction() - { - public Boolean run() - { - return SerializationSpoolFile.super.delete(); - } - }; - boolean result = SecurityHelper.doPrivilegedAction(action); + boolean result = SerializationSpoolFile.super.delete(); if (result) { diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/TransactionableResourceManager.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/TransactionableResourceManager.java index 87c94e1eed..2e4f0e2d47 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/TransactionableResourceManager.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/TransactionableResourceManager.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.impl.dataflow.session; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.container.ExoContainer; import org.exoplatform.container.ExoContainerContext; import org.exoplatform.services.jcr.dataflow.PlainChangesLog; @@ -30,8 +29,6 @@ import org.exoplatform.services.transaction.TransactionService; import java.lang.ref.SoftReference; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -219,27 +216,16 @@ public boolean canEnrollChangeToGlobalTx(final SessionImpl session, final PlainC + "to an invalidate state, the current status is " + status + " and only ACTIVE and PREPARING are allowed"); } - SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public Void run() throws Exception - { - add(session, changes); - return null; - } - }); + add(session, changes); return true; } } - catch (PrivilegedActionException e) - { - log.warn("Could not check if a global Tx has been started or register the session into the resource manager", - e); - } - catch (SystemException e) + catch (RollbackException | SystemException e) { log.warn("Could not check if a global Tx has been started or register the session into the resource manager", e); } + return false; } diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/proccess/WorkerService.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/proccess/WorkerService.java index 3d20ae124f..8c3f0f036a 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/proccess/WorkerService.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/proccess/WorkerService.java @@ -57,8 +57,7 @@ static class WorkerThreadFactory implements ThreadFactory WorkerThreadFactory(String namePrefix, boolean isDaemon) { this.isDaemon = isDaemon; - SecurityManager s = System.getSecurityManager(); - group = (s != null) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup(); + group = Thread.currentThread().getThreadGroup(); this.namePrefix = (namePrefix == null || namePrefix.isEmpty()) ? "pool-" + poolNumber.getAndIncrement() + "-thread-" : namePrefix + " "; diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/quota/WorkspaceQuotaManager.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/quota/WorkspaceQuotaManager.java index b7da4d2c7e..af3677a24e 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/quota/WorkspaceQuotaManager.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/quota/WorkspaceQuotaManager.java @@ -18,8 +18,6 @@ */ package org.exoplatform.services.jcr.impl.quota; -import org.exoplatform.commons.utils.PrivilegedSystemHelper; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.management.annotations.Managed; import org.exoplatform.management.annotations.ManagedDescription; import org.exoplatform.management.annotations.ManagedName; @@ -46,9 +44,8 @@ import org.picocontainer.Startable; import java.io.File; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; @@ -312,28 +309,22 @@ public long getWorkspaceIndexSize() throws QuotaManagerException { try { - return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() + Method getIndexDirMethod = SearchManager.class.getDeclaredMethod("getIndexDirectory"); + getIndexDirMethod.setAccessible(true); + + // get all instances, since for system workspace we have 2 SearchManager + List searchers = wsContainer.getComponentInstancesOfType(SearchManager.class); + + long size = 0; + for (SearchManager searchManager : searchers) { - public Long run() throws Exception - { - Method getIndexDirMethod = SearchManager.class.getDeclaredMethod("getIndexDirectory"); - getIndexDirMethod.setAccessible(true); - - // get all instances, since for system workspace we have 2 SearchManager - List searchers = wsContainer.getComponentInstancesOfType(SearchManager.class); - - long size = 0; - for (SearchManager searchManager : searchers) - { - File indexDir = (File)getIndexDirMethod.invoke(searchManager); - size += DirectoryHelper.getSize(indexDir); - } - - return size; - } - }); + File indexDir = (File)getIndexDirMethod.invoke(searchManager); + size += DirectoryHelper.getSize(indexDir); + } + + return size; } - catch (PrivilegedActionException e) + catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { throw new QuotaManagerException(e.getMessage(), e); } @@ -344,25 +335,12 @@ public Long run() throws Exception */ public long getNodeDataSizeDirectly(final String nodePath) throws QuotaManagerException { - try - { - return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public Long run() throws Exception - { - if (nodePath.equals(JCRPath.ROOT_PATH)) - { - return getWorkspaceDataSizeDirectly(); - } - - return calculateNodeDataSizeTool.getNodeDataSizeDirectly(nodePath); - } - }); - } - catch (PrivilegedActionException e) + if (nodePath.equals(JCRPath.ROOT_PATH)) { - throw new QuotaManagerException(e.getMessage(), e); + return getWorkspaceDataSizeDirectly(); } + + return calculateNodeDataSizeTool.getNodeDataSizeDirectly(nodePath); } /** @@ -445,7 +423,7 @@ public void backup(File storageDir) throws BackupException */ public void clean() throws BackupException { - File storageDir = new File(PrivilegedSystemHelper.getProperty("java.io.tmpdir")); + File storageDir = new File(System.getProperty("java.io.tmpdir")); WorkspaceQuotaRestore wqr = new WorkspaceQuotaRestore(this, storageDir); wqr.clean(); diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/quota/WorkspaceQuotaRestore.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/quota/WorkspaceQuotaRestore.java index 503717ba16..c2f5faceb5 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/quota/WorkspaceQuotaRestore.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/quota/WorkspaceQuotaRestore.java @@ -18,9 +18,6 @@ */ package org.exoplatform.services.jcr.impl.quota; -import org.exoplatform.commons.utils.PrivilegedFileHelper; -import org.exoplatform.commons.utils.PrivilegedSystemHelper; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.jcr.impl.backup.BackupException; import org.exoplatform.services.jcr.impl.backup.Backupable; import org.exoplatform.services.jcr.impl.backup.DataRestore; @@ -32,9 +29,13 @@ import org.exoplatform.services.log.Log; import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; +import java.util.zip.ZipInputStream; +import java.util.zip.ZipOutputStream; /** * {@link DataRestore} implementation for quota. @@ -101,7 +102,7 @@ public class WorkspaceQuotaRestore implements DataRestore this.wqm = wqm; this.backupFile = new File(storageDir, BACKUP_FILE_NAME + DBBackup.CONTENT_FILE_SUFFIX); - File tempDir = new File(PrivilegedSystemHelper.getProperty("java.io.tmpdir")); + File tempDir = new File(System.getProperty("java.io.tmpdir")); this.tempFile = new File(tempDir, "temp.dump"); this.wsName = wqm.getContext().wsName; @@ -114,30 +115,8 @@ public class WorkspaceQuotaRestore implements DataRestore */ public void clean() throws BackupException { - try - { - SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public Void run() throws BackupException - { - doBackup(tempFile); - doClean(); - return null; - } - }); - } - catch (PrivilegedActionException e) - { - Throwable cause = e.getCause(); - if (cause instanceof BackupException) - { - throw (BackupException)cause; - } - else - { - throw new BackupException(cause); - } - } + doBackup(tempFile); + doClean(); } /** @@ -169,7 +148,7 @@ public void rollback() throws BackupException */ public void close() throws BackupException { - PrivilegedFileHelper.delete(tempFile); + tempFile.delete(); } /** @@ -185,7 +164,7 @@ public void backup() throws BackupException */ protected void doRestore(File backupFile) throws BackupException { - if (!PrivilegedFileHelper.exists(backupFile)) + if (!backupFile.exists()) { LOG.warn("Nothing to restore for quotas"); return; @@ -194,7 +173,7 @@ protected void doRestore(File backupFile) throws BackupException ZipObjectReader in = null; try { - in = new ZipObjectReader(PrivilegedFileHelper.zipInputStream(backupFile)); + in = new ZipObjectReader(new ZipInputStream(new FileInputStream(backupFile))); quotaPersister.restoreWorkspaceData(rName, wsName, in); } catch (IOException e) @@ -254,7 +233,7 @@ protected void doBackup(File backupFile) throws BackupException ZipObjectWriter out = null; try { - out = new ZipObjectWriter(PrivilegedFileHelper.zipOutputStream(backupFile)); + out = new ZipObjectWriter(new ZipOutputStream(new FileOutputStream(backupFile))); quotaPersister.backupWorkspaceData(rName, wsName, out); } catch (IOException e) diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/quota/infinispan/ISPNQuotaPersister.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/quota/infinispan/ISPNQuotaPersister.java index f141eb41a7..ef13bf6f56 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/quota/infinispan/ISPNQuotaPersister.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/quota/infinispan/ISPNQuotaPersister.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.impl.quota.infinispan; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.container.configuration.ConfigurationManager; import org.exoplatform.services.jcr.config.MappedParametrizedObjectEntry; import org.exoplatform.services.jcr.config.RepositoryConfigurationException; @@ -33,7 +32,6 @@ import org.infinispan.context.Flag; import java.io.Serializable; -import java.security.PrivilegedAction; import java.util.HashSet; import java.util.Set; @@ -148,17 +146,10 @@ public long getWorkspaceQuota(String repositoryName, String workspaceName) throw */ public void setWorkspaceQuota(final String repositoryName, final String workspaceName, final long quotaLimit) { - SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Void run() - { - String wsUniqueName = composeWorkspaceUniqueName(repositoryName, workspaceName); - CacheKey key = new WorkspaceQuotaKey(wsUniqueName); + String wsUniqueName = composeWorkspaceUniqueName(repositoryName, workspaceName); + CacheKey key = new WorkspaceQuotaKey(wsUniqueName); - cache.put(key, quotaLimit); - return null; - } - }); + cache.put(key, quotaLimit); } /** @@ -177,17 +168,10 @@ public void removeWorkspaceQuota(String repositoryName, String workspaceName) */ public void setWorkspaceDataSize(final String repositoryName, final String workspaceName, final long dataSize) { - SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Void run() - { - String wsUniqueName = composeWorkspaceUniqueName(repositoryName, workspaceName); - CacheKey key = new WorkspaceDataSizeKey(wsUniqueName); + String wsUniqueName = composeWorkspaceUniqueName(repositoryName, workspaceName); + CacheKey key = new WorkspaceDataSizeKey(wsUniqueName); - cache.put(key, dataSize); - return null; - } - }); + cache.put(key, dataSize); } /** @@ -215,15 +199,8 @@ public long getRepositoryQuota(String repositoryName) throws UnknownQuotaLimitEx */ public void setRepositoryQuota(final String repositoryName, final long quotaLimit) { - SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Void run() - { - CacheKey key = new RepositoryQuotaKey(repositoryName); - cache.put(key, quotaLimit); - return null; - } - }); + CacheKey key = new RepositoryQuotaKey(repositoryName); + cache.put(key, quotaLimit); } /** @@ -267,15 +244,8 @@ public long getGlobalDataSize() throws UnknownDataSizeException */ public void setGlobalDataSize(final long dataSize) { - SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Void run() - { - CacheKey key = new GlobalDataSizeKey(); - cache.put(key, dataSize); - return null; - } - }); + CacheKey key = new GlobalDataSizeKey(); + cache.put(key, dataSize); } /** @@ -482,13 +452,7 @@ private long getQuota(CacheKey key) throws UnknownQuotaLimitException */ private QuotaValue getQuotaValue(final CacheKey key) throws UnknownQuotaLimitException { - QuotaValue quotaValue = SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public QuotaValue run() - { - return (QuotaValue)cache.withFlags(Flag.FORCE_WRITE_LOCK).get(key); - } - }); + QuotaValue quotaValue = (QuotaValue)cache.withFlags(Flag.FORCE_WRITE_LOCK).get(key); if (quotaValue == null) { throw new UnknownQuotaLimitException("Quota was not set early"); @@ -502,13 +466,7 @@ public QuotaValue run() */ private long getDataSize(final CacheKey key) throws UnknownDataSizeException { - Long size = SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Long run() - { - return (Long)cache.withFlags(Flag.FORCE_WRITE_LOCK).get(key); - } - }); + Long size = (Long)cache.withFlags(Flag.FORCE_WRITE_LOCK).get(key); if (size == null) { throw new UnknownDataSizeException("Data size is unknown"); diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java index a4d4de1a1d..be19c832ca 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java @@ -18,11 +18,7 @@ */ package org.exoplatform.services.jcr.impl.storage.jdbc; -import org.exoplatform.commons.utils.PrivilegedFileHelper; -import org.exoplatform.commons.utils.PrivilegedSystemHelper; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.database.utils.DialectDetecter; -import org.exoplatform.services.database.utils.JDBCUtils; import org.exoplatform.services.jcr.config.RepositoryConfigurationException; import org.exoplatform.services.jcr.config.RepositoryEntry; import org.exoplatform.services.jcr.config.SimpleParameterEntry; @@ -83,6 +79,7 @@ import org.picocontainer.Startable; import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; @@ -119,8 +116,7 @@ public class JDBCWorkspaceDataContainer extends WorkspaceDataContainerBase imple /** * Indicates if the statistics has to be enabled. */ - public static final boolean STATISTICS_ENABLED = Boolean.valueOf(PrivilegedSystemHelper - .getProperty("JDBCWorkspaceDataContainer.statistics.enabled")); + public static final boolean STATISTICS_ENABLED = Boolean.valueOf(System.getProperty("JDBCWorkspaceDataContainer.statistics.enabled")); static { @@ -229,13 +225,7 @@ public JDBCWorkspaceDataContainer(WorkspaceEntry wsConfig, RepositoryEntry repCo Connection jdbcConn = null; try { - jdbcConn = SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction() - { - public Connection run() throws Exception - { - return ds.getConnection(); - } - }); + jdbcConn = ds.getConnection(); this.containerConfig.dbDialect = DialectDetecter.detect(jdbcConn.getMetaData()); } @@ -314,9 +304,9 @@ public Connection run() throws Exception { this.containerConfig.spoolConfig.tempDirectory = new File(DEF_SWAPDIR); } - if (!PrivilegedFileHelper.exists(this.containerConfig.spoolConfig.tempDirectory)) + if (!this.containerConfig.spoolConfig.tempDirectory.exists()) { - PrivilegedFileHelper.mkdirs(this.containerConfig.spoolConfig.tempDirectory); + this.containerConfig.spoolConfig.tempDirectory.mkdirs(); } else { @@ -337,26 +327,18 @@ public Connection run() throws Exception */ private void cleanupSwapDirectory() { - PrivilegedAction action = new PrivilegedAction() + File[] files = containerConfig.spoolConfig.tempDirectory.listFiles(); + if (files != null && files.length > 0) { - public Void run() + LOG.info("Some files have been found in the swap directory and will be deleted"); + for (int i = 0; i < files.length; i++) { - File[] files = containerConfig.spoolConfig.tempDirectory.listFiles(); - if (files != null && files.length > 0) - { - LOG.info("Some files have been found in the swap directory and will be deleted"); - for (int i = 0; i < files.length; i++) - { - File file = files[i]; - // We don't use the file cleaner in case the deletion failed to ensure - // that the file won't be deleted while it is currently re-used - file.delete(); - } - } - return null; + File file = files[i]; + // We don't use the file cleaner in case the deletion failed to ensure + // that the file won't be deleted while it is currently re-used + file.delete(); } - }; - SecurityHelper.doPrivilegedAction(action); + } } /** @@ -739,7 +721,7 @@ public void start() // Remove lock properties from DB. The lock tables will be new but still remaining lock properties in JCR tables. boolean deleteLocks = - "true".equalsIgnoreCase(PrivilegedSystemHelper.getProperty(AbstractCacheableLockManager.LOCKS_FORCE_REMOVE, + "true".equalsIgnoreCase(System.getProperty(AbstractCacheableLockManager.LOCKS_FORCE_REMOVE, "false")); if (deleteLocks) @@ -848,39 +830,20 @@ public boolean isCheckSNSNewConnection() /** * {@inheritDoc} */ - public void clean() throws BackupException - { - LOG.info("Start to clean value storage of the workspace '"+containerConfig.containerName+"'"); - try - { + public void clean() throws BackupException { + LOG.info("Start to clean value storage of the workspace '" + containerConfig.containerName + "'"); + try { DBCleanService.cleanWorkspaceData(wsConfig); - if (wsConfig.getContainer().getValueStorages() != null) - { - SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public Void run() throws IOException, RepositoryConfigurationException - { - for (ValueStorageEntry valueStorage : wsConfig.getContainer().getValueStorages()) - { - File valueStorageDir = new File(valueStorage.getParameterValue(FileValueStorage.PATH)); - if (valueStorageDir.exists()) - { - DirectoryHelper.removeDirectory(valueStorageDir); - } - } - - return null; + if (wsConfig.getContainer().getValueStorages() != null) { + for (ValueStorageEntry valueStorage : wsConfig.getContainer().getValueStorages()) { + File valueStorageDir = new File(valueStorage.getParameterValue(FileValueStorage.PATH)); + if (valueStorageDir.exists()) { + DirectoryHelper.removeDirectory(valueStorageDir); } - }); + } } - } - catch (DBCleanException e) - { - throw new BackupException(e); - } - catch (PrivilegedActionException e) - { + } catch (DBCleanException | IOException | RepositoryConfigurationException e) { throw new BackupException(e); } } @@ -896,8 +859,8 @@ public void backup(final File storageDir) throws BackupException try { backupInfo = - new ObjectWriterImpl(PrivilegedFileHelper.fileOutputStream(new File(storageDir, - "JDBCWorkspaceDataContainer.info"))); + new ObjectWriterImpl(new FileOutputStream(new File(storageDir, + "JDBCWorkspaceDataContainer.info"))); backupInfo.writeString(containerConfig.containerName); backupInfo.writeString(containerConfig.dbStructureType.toString()); @@ -937,43 +900,28 @@ public void backup(final File storageDir) throws BackupException // backup value storage if (wsConfig.getContainer().getValueStorages() != null) { - SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() + for (ValueStorageEntry valueStorage : wsConfig.getContainer().getValueStorages()) { - public Void run() throws RepositoryConfigurationException, IOException + Boolean enable = valueStorage.getParameterBoolean(StandaloneStoragePluginProvider.VALUE_STORAGE_ENABLED_PARAM, true); + if (enable) { - for (ValueStorageEntry valueStorage : wsConfig.getContainer().getValueStorages()) - { - Boolean enable = valueStorage.getParameterBoolean(StandaloneStoragePluginProvider.VALUE_STORAGE_ENABLED_PARAM, true); - if (enable) - { - File srcDir = new File(valueStorage.getParameterValue(FileValueStorage.PATH)); + File srcDir = new File(valueStorage.getParameterValue(FileValueStorage.PATH)); - if (!srcDir.exists()) - { - throw new IOException("Can't backup value storage. Directory " + srcDir.getName() - + " doesn't exist"); - } - else - { - File zipFile = new File(storageDir, "values-" + valueStorage.getId() + ".zip"); - DirectoryHelper.compressDirectory(srcDir, zipFile); - } - } + if (!srcDir.exists()) + { + throw new IOException("Can't backup value storage. Directory " + srcDir.getName() + + " doesn't exist"); + } + else + { + File zipFile = new File(storageDir, "values-" + valueStorage.getId() + ".zip"); + DirectoryHelper.compressDirectory(srcDir, zipFile); } - return null; } - }); + } } } - catch (IOException e) - { - throw new BackupException(e); - } - catch (RepositoryException e) - { - throw new BackupException(e); - } - catch (PrivilegedActionException e) + catch (IOException | RepositoryException | RepositoryConfigurationException e) { throw new BackupException(e); } @@ -1061,7 +1009,7 @@ private List initBackupDirs(File storageDir) throws RepositoryConfiguratio if (enable) { File zipFile = new File(storageDir, "values-" + valueStorage.getId() + ".zip"); - if (PrivilegedFileHelper.exists(zipFile)) + if (zipFile.exists()) { backupDirsList.add(zipFile); } @@ -1069,7 +1017,7 @@ private List initBackupDirs(File storageDir) throws RepositoryConfiguratio { // try to check if we have deal with old backup format zipFile = new File(storageDir, "values/" + valueStorage.getId()); - if (PrivilegedFileHelper.exists(zipFile)) + if (zipFile.exists()) { backupDirsList.add(zipFile); } diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainerChecker.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainerChecker.java index c08fd190a3..e966fcb1e6 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainerChecker.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainerChecker.java @@ -18,11 +18,9 @@ */ package org.exoplatform.services.jcr.impl.storage.jdbc; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.database.utils.JDBCUtils; import org.exoplatform.services.jcr.config.RepositoryConfigurationException; import org.exoplatform.services.jcr.config.WorkspaceEntry; -import org.exoplatform.services.jcr.core.security.JCRRuntimePermissions; import org.exoplatform.services.jcr.datamodel.ItemType; import org.exoplatform.services.jcr.datamodel.NodeData; import org.exoplatform.services.jcr.datamodel.PropertyData; @@ -115,8 +113,6 @@ public JDBCWorkspaceDataContainerChecker(JDBCWorkspaceDataContainer jdbcDataCont */ public void checkLocksInDataBase(boolean autoRepair) { - SecurityHelper.validateSecurityPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); - ResultSet resultSet = null; PreparedStatement preparedStatement = null; Connection jdbcConnection = null; @@ -224,8 +220,6 @@ private void checkConsistencyInJCRLOCK(Set lockedInJCRITEM, Set */ public void checkDataBase(boolean autoRepair) { - SecurityHelper.validateSecurityPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); - Connection jdbcConn = null; try { @@ -293,8 +287,6 @@ public void checkDataBase(boolean autoRepair) */ public void checkValueStorage(boolean autoRepair) { - SecurityHelper.validateSecurityPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION); - Connection connection = null; PreparedStatement st = null; ResultSet resultSet = null; diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/DB2DBInitializer.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/DB2DBInitializer.java index f6cdd002ab..49b56482f8 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/DB2DBInitializer.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/DB2DBInitializer.java @@ -18,11 +18,9 @@ */ package org.exoplatform.services.jcr.impl.storage.jdbc.init; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCDataContainerConfig; import org.exoplatform.services.database.utils.JDBCUtils; import java.io.IOException; -import java.security.PrivilegedAction; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; @@ -50,13 +48,7 @@ public DB2DBInitializer(Connection connection, JDBCDataContainerConfig container @Override protected boolean isSequenceExists(final Connection conn, final String sequenceName) throws SQLException { - return SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Boolean run() - { - return sequenceExists(sequenceName, conn); - } - }); + return sequenceExists(sequenceName, conn); } private boolean sequenceExists(String sequenceName, Connection con) @@ -87,4 +79,4 @@ private boolean sequenceExists(String sequenceName, Connection con) } } -} \ No newline at end of file +} diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/H2DBInitializer.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/H2DBInitializer.java index 09195f4f35..a226495260 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/H2DBInitializer.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/H2DBInitializer.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.impl.storage.jdbc.init; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCDataContainerConfig; import org.exoplatform.services.jcr.impl.util.jdbc.DBInitializerHelper; import java.io.IOException; @@ -71,4 +70,4 @@ protected String updateQuery(String sql) return sql; } -} \ No newline at end of file +} diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/HSQLDBInitializer.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/HSQLDBInitializer.java index 4fd8067530..56c731a0c2 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/HSQLDBInitializer.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/HSQLDBInitializer.java @@ -18,11 +18,9 @@ */ package org.exoplatform.services.jcr.impl.storage.jdbc.init; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCDataContainerConfig; import org.exoplatform.services.database.utils.JDBCUtils; import java.io.IOException; -import java.security.PrivilegedAction; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; @@ -50,13 +48,7 @@ public HSQLDBInitializer(Connection connection, JDBCDataContainerConfig containe @Override protected boolean isSequenceExists(final Connection conn, final String sequenceName) throws SQLException { - return SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Boolean run() - { - return sequenceExists(sequenceName, conn); - } - }); + return sequenceExists(sequenceName, conn); } private boolean sequenceExists(String sequenceName, Connection con) @@ -86,4 +78,4 @@ private boolean sequenceExists(String sequenceName, Connection con) JDBCUtils.freeResources(trs, stmt, null); } } -} \ No newline at end of file +} diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/MSSQLDBInitializer.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/MSSQLDBInitializer.java index 2fa4097043..84c32b371b 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/MSSQLDBInitializer.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/MSSQLDBInitializer.java @@ -18,12 +18,10 @@ */ package org.exoplatform.services.jcr.impl.storage.jdbc.init; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.database.utils.JDBCUtils; import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCDataContainerConfig; import org.exoplatform.services.jcr.impl.util.jdbc.DBInitializerHelper; import java.io.IOException; -import java.security.PrivilegedAction; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; @@ -50,13 +48,7 @@ public MSSQLDBInitializer(Connection connection, JDBCDataContainerConfig contain @Override protected boolean isProcedureExists(final Connection conn, final String procedureName) throws SQLException { - return SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Boolean run() - { - return procedureExists(procedureName, conn); - } - }); + return procedureExists(procedureName, conn); } private boolean procedureExists(String procedureName, Connection con) diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/OracleDBInitializer.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/OracleDBInitializer.java index 3279647edf..42687f0f65 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/OracleDBInitializer.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/OracleDBInitializer.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.impl.storage.jdbc.init; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCDataContainerConfig; import java.io.IOException; diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/PgSQLDBInitializer.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/PgSQLDBInitializer.java index a092ae72ab..2c84aa58d7 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/PgSQLDBInitializer.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/PgSQLDBInitializer.java @@ -18,12 +18,10 @@ */ package org.exoplatform.services.jcr.impl.storage.jdbc.init; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.database.utils.JDBCUtils; import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCDataContainerConfig; import java.io.IOException; -import java.security.PrivilegedAction; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; @@ -60,13 +58,7 @@ protected boolean isTableExists(Connection conn, String tableName) throws SQLExc @Override protected boolean isSequenceExists(final Connection conn, final String sequenceName) throws SQLException { - return SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Boolean run() - { - return sequenceExists(sequenceName, conn); - } - }); + return sequenceExists(sequenceName, conn); } private boolean sequenceExists(String sequenceName, Connection con) diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/StorageDBInitializer.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/StorageDBInitializer.java index c95fbcc518..dafab7d9c6 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/StorageDBInitializer.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/StorageDBInitializer.java @@ -21,10 +21,8 @@ import org.exoplatform.services.database.utils.JDBCUtils; import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCDataContainerConfig; import org.exoplatform.services.jcr.impl.util.jdbc.DBInitializer; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.jcr.impl.util.jdbc.DBInitializerHelper; import java.io.IOException; -import java.security.PrivilegedAction; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; @@ -92,13 +90,7 @@ else if ((creatTablePattern.matcher(sql)).find()) protected int getSequenceStartValue(final Connection conn) throws SQLException { - return SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Integer run() - { - return getStartValue(conn); - } - }); + return getStartValue(conn); } /** diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/SybaseDBInitializer.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/SybaseDBInitializer.java index cb5e16369a..7d03a8098f 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/SybaseDBInitializer.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/init/SybaseDBInitializer.java @@ -18,12 +18,10 @@ */ package org.exoplatform.services.jcr.impl.storage.jdbc.init; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.database.utils.JDBCUtils; import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCDataContainerConfig; import org.exoplatform.services.jcr.impl.util.jdbc.DBInitializerHelper; import java.io.IOException; -import java.security.PrivilegedAction; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; @@ -50,13 +48,7 @@ public SybaseDBInitializer(Connection connection, JDBCDataContainerConfig contai @Override protected boolean isProcedureExists(final Connection conn, final String procedureName) throws SQLException { - return SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Boolean run() - { - return procedureExists(procedureName, conn); - } - }); + return procedureExists(procedureName, conn); } private boolean procedureExists(String procedureName, Connection con) diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/cas/JDBCValueContentAddressStorageImpl.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/cas/JDBCValueContentAddressStorageImpl.java index 4fe2e5a358..112cecf3d2 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/cas/JDBCValueContentAddressStorageImpl.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/cas/JDBCValueContentAddressStorageImpl.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.impl.storage.value.cas; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.database.utils.DialectDetecter; import org.exoplatform.services.database.utils.JDBCUtils; import org.exoplatform.services.jcr.config.RepositoryConfigurationException; @@ -26,7 +25,6 @@ import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; -import java.security.PrivilegedExceptionAction; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.PreparedStatement; @@ -161,14 +159,7 @@ public void init(Properties props) throws RepositoryConfigurationException, VCAS Statement st = null; try { - conn = SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction() - { - public Connection run() throws Exception - { - return dataSource.getConnection(); - } - }); - + conn = dataSource.getConnection(); DatabaseMetaData dbMetaData = conn.getMetaData(); String dialect = props.getProperty(JDBC_DIALECT_PARAM); diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleaner.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleaner.java index 32cb13ee3e..a396d0f0a5 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleaner.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleaner.java @@ -18,15 +18,12 @@ */ package org.exoplatform.services.jcr.impl.util.io; -import org.exoplatform.commons.utils.PrivilegedFileHelper; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.container.ExoContainerContext; import org.exoplatform.services.jcr.impl.proccess.WorkerThread; import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; import java.io.File; import java.lang.ref.WeakReference; -import java.security.PrivilegedAction; import java.util.HashSet; import java.util.Set; import java.util.concurrent.ConcurrentLinkedQueue; @@ -61,7 +58,7 @@ public void run() } while ((file = files.poll()) != null) { - PrivilegedFileHelper.delete(file); + file.delete(); } } }; @@ -106,15 +103,8 @@ public FileCleaner(String id, long timeout, boolean start) if (start) start(); - PrivilegedAction action = new PrivilegedAction() - { - public Object run() - { - registerShutdownHook(); - return null; - } - }; - SecurityHelper.doPrivilegedAction(action); + registerShutdownHook(); + if (LOG.isDebugEnabled()) { @@ -127,7 +117,7 @@ public Object run() */ public void addFile(File file) { - if (PrivilegedFileHelper.exists(file)) + if (file.exists()) { files.offer(file); } @@ -156,24 +146,17 @@ public void halt() } } // Remove the hook for final cleaning up - SecurityHelper.doPrivilegedAction(new PrivilegedAction() + try + { + Runtime.getRuntime().removeShutdownHook(hook); + } + catch (IllegalStateException e) { - public Void run() + if (LOG.isTraceEnabled()) { - try - { - Runtime.getRuntime().removeShutdownHook(hook); - } - catch (IllegalStateException e) - { - if (LOG.isTraceEnabled()) - { - LOG.trace("An exception occurred: " + e.getMessage()); - } - } - return null; + LOG.trace("An exception occurred: " + e.getMessage()); } - }); + } if (files != null && files.size() > 0) LOG.warn("There are uncleared files: " + files.size()); @@ -190,20 +173,20 @@ protected void callPeriodically() throws Exception Set notRemovedFiles = new HashSet(); while ((file = files.poll()) != null) { - if (PrivilegedFileHelper.exists(file)) + if (file.exists()) { - if (!PrivilegedFileHelper.delete(file)) + if (!file.delete()) { notRemovedFiles.add(file); if (LOG.isDebugEnabled()) LOG.debug("Could not delete " + (file.isDirectory() ? "directory" : "file") - + ". Will try next time: " + PrivilegedFileHelper.getAbsolutePath(file)); + + ". Will try next time: " + file.getAbsolutePath()); } else if (LOG.isDebugEnabled()) { LOG.debug((file.isDirectory() ? "Directory" : "File") + " deleted : " - + PrivilegedFileHelper.getAbsolutePath(file)); + + file.getAbsolutePath()); } } } diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SpoolFile.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SpoolFile.java index 7ecd8b3212..8977d2ce9e 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SpoolFile.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SpoolFile.java @@ -18,15 +18,12 @@ */ package org.exoplatform.services.jcr.impl.util.io; -import org.exoplatform.commons.utils.PrivilegedFileHelper; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; -import java.security.PrivilegedAction; import java.util.Map; import java.util.WeakHashMap; @@ -37,7 +34,7 @@ * For use in TransienValueData (may be shared in the Workspace cache with another Sessions). Spool * files used in ValueData for incoming values managed by SpoolFile class. Spool file may be created * with constructor or be obtained from static method createTempFile(String, String, File), which - * itself create physical file using PrivilegedFileHelper.createTempFile(prefix, suffix, directory) call. Spool file + * itself create physical file using File.createTempFile(prefix, suffix, directory) call. Spool file * may be acquired for usage by any object (SpoolFile.acquire(Object)). Till this object will call * release (SpoolFile.release(Object)) or will be garbage collected it's impossible to delete the * spool file (by File.delete() method). @@ -71,14 +68,14 @@ public SpoolFile(String absPath) public static SpoolFile createTempFile(final String prefix, final String suffix, final File directory) throws IOException { - return new SpoolFile(PrivilegedFileHelper.getAbsolutePath(PrivilegedFileHelper.createTempFile(prefix, suffix, - directory))); + return new SpoolFile(File.createTempFile(prefix, suffix, + directory).getAbsolutePath()); } public synchronized void acquire(Object holder) throws FileNotFoundException { if (users == null) - throw new FileNotFoundException("File was deleted " + PrivilegedFileHelper.getAbsolutePath(this)); + throw new FileNotFoundException("File was deleted " + this.getAbsolutePath()); users.put(holder, System.currentTimeMillis()); } @@ -86,7 +83,7 @@ public synchronized void acquire(Object holder) throws FileNotFoundException public synchronized void release(Object holder) throws FileNotFoundException { if (users == null) - throw new FileNotFoundException("File was deleted " + PrivilegedFileHelper.getAbsolutePath(this)); + throw new FileNotFoundException("File was deleted " + this.getAbsolutePath()); users.remove(holder); } @@ -94,7 +91,7 @@ public synchronized void release(Object holder) throws FileNotFoundException public synchronized boolean inUse() throws FileNotFoundException { if (users == null) - throw new FileNotFoundException("File was deleted " + PrivilegedFileHelper.getAbsolutePath(this)); + throw new FileNotFoundException("File was deleted " + this.getAbsolutePath()); return users.size() > 0; } @@ -112,14 +109,7 @@ public synchronized boolean delete() final SpoolFile sf = this; - PrivilegedAction action = new PrivilegedAction() - { - public Boolean run() - { - return sf.exists() ? SpoolFile.super.delete() : true; - } - }; - return SecurityHelper.doPrivilegedAction(action); + return sf.exists() ? SpoolFile.super.delete() : true; } diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SwapFile.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SwapFile.java index 429afbe3e7..899a935c84 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SwapFile.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SwapFile.java @@ -18,13 +18,10 @@ */ package org.exoplatform.services.jcr.impl.util.io; -import org.exoplatform.commons.utils.PrivilegedFileHelper; -import org.exoplatform.commons.utils.SecurityHelper; import java.io.File; import java.io.IOException; import java.lang.ref.WeakReference; -import java.security.PrivilegedAction; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.CountDownLatch; @@ -134,7 +131,7 @@ public static SwapFile get(final File parent, final String child) throws IOExcep public static SwapFile get(final File parent, final String child, FileCleaner cleaner) throws IOException { SwapFile newsf = new SwapFile(parent, child,cleaner); - String absPath = PrivilegedFileHelper.getAbsolutePath(newsf); + String absPath = newsf.getAbsolutePath(); WeakReference swappedRef = CURRENT_SWAP_FILES.get(absPath); SwapFile swapped; @@ -154,7 +151,7 @@ public static SwapFile get(final File parent, final String child, FileCleaner cl catch (final InterruptedException e) { // thinking that is ok, i.e. this thread is interrupted - throw new IOException("Swap file read error " + PrivilegedFileHelper.getAbsolutePath(swapped) + ". " + throw new IOException("Swap file read error " + swapped.getAbsolutePath() + ". " + e) { @Override @@ -238,7 +235,7 @@ protected void finalize() throws Throwable @Override public boolean delete() { - String path = PrivilegedFileHelper.getAbsolutePath(this); + String path = this.getAbsolutePath(); WeakReference currentValue = CURRENT_SWAP_FILES.get(path); if (currentValue == null || (currentValue.get() == this || currentValue.get() == null)) { @@ -248,33 +245,26 @@ public boolean delete() users.clear(); final SpoolFile sf = this; - PrivilegedAction action = new PrivilegedAction() + if (sf.exists()) { - public Boolean run() + if (SwapFile.super.delete()) { - if (sf.exists()) - { - if (SwapFile.super.delete()) - { - return true; - } - else if (swapCleaner != null) - { - swapCleaner.addFile(SwapFile.super.getAbsoluteFile()); - } - if (LOG.isDebugEnabled()) - { - LOG.debug("Could not remove swap file on finalize : " - + PrivilegedFileHelper.getAbsolutePath(SwapFile.super.getAbsoluteFile())); - } - return false; - } return true; } - }; - return SecurityHelper.doPrivilegedAction(action); + else if (swapCleaner != null) + { + swapCleaner.addFile(SwapFile.super.getAbsoluteFile()); + } + if (LOG.isDebugEnabled()) + { + LOG.debug("Could not remove swap file on finalize : " + + SwapFile.super.getAbsoluteFile().getAbsolutePath()); + } + return false; + } + return true; } } return false; } -} \ No newline at end of file +} diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializer.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializer.java index 5262b67ff8..b6db2c3fe0 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializer.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializer.java @@ -18,9 +18,6 @@ */ package org.exoplatform.services.jcr.impl.util.jdbc; -import org.exoplatform.commons.utils.SecurityHelper; -import org.exoplatform.services.database.utils.DialectConstants; -import org.exoplatform.services.database.utils.DialectDetecter; import org.exoplatform.services.database.utils.JDBCUtils; import org.exoplatform.services.jcr.impl.Constants; import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCDataContainerConfig; @@ -28,10 +25,7 @@ import org.exoplatform.services.log.Log; import java.io.IOException; -import java.security.PrivilegedAction; -import java.security.PrivilegedExceptionAction; import java.sql.Connection; -import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.HashSet; @@ -116,13 +110,7 @@ public DBInitializer(Connection connection, JDBCDataContainerConfig containerCon protected boolean isTableExists(final Connection conn, final String tableName) throws SQLException { - return SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public Boolean run() - { - return JDBCUtils.tableExists(tableName, conn); - } - }); + return JDBCUtils.tableExists(tableName, conn); } protected boolean isSequenceExists(Connection conn, String sequenceName) throws SQLException @@ -333,14 +321,7 @@ public void init() throws DBInitializerException { continue; } - SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - finalSt.executeUpdate(finalSql); - return null; - } - }); + finalSt.executeUpdate(finalSql); } } diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializerHelper.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializerHelper.java index 807688793b..928e8192be 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializerHelper.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializerHelper.java @@ -17,7 +17,6 @@ package org.exoplatform.services.jcr.impl.util.jdbc; import org.exoplatform.commons.utils.IOUtil; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.services.database.utils.DialectConstants; import org.exoplatform.services.database.utils.JDBCUtils; import org.exoplatform.services.jcr.config.RepositoryConfigurationException; @@ -97,7 +96,7 @@ public static String prepareScripts(WorkspaceEntry wsEntry, String dialect) thro private static String prepareScripts(String initScriptPath, String itemTableSuffix, String valueTableSuffix, String refTableSuffix, boolean isolatedDB) throws IOException { - String scripts = IOUtil.getStreamContentAsString(PrivilegedFileHelper.getResourceAsStream(initScriptPath)); + String scripts = IOUtil.getStreamContentAsString(DBInitializerHelper.class.getResourceAsStream(initScriptPath)); if (isolatedDB) { diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/BufferedDecoder.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/BufferedDecoder.java index 4719a303e6..72611cd3cc 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/BufferedDecoder.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/BufferedDecoder.java @@ -19,13 +19,14 @@ package org.exoplatform.services.jcr.impl.xml; import org.apache.ws.commons.util.Base64; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -100,7 +101,7 @@ else if (out instanceof BufferedOutputStream) { out.close(); - return new BufferedInputStream(PrivilegedFileHelper.fileInputStream(fileBuffer)); + return new BufferedInputStream(new FileInputStream(fileBuffer)); } else { @@ -116,11 +117,11 @@ else if (out instanceof BufferedOutputStream) */ public void remove() throws IOException { - if ((fileBuffer != null) && PrivilegedFileHelper.exists(fileBuffer)) + if ((fileBuffer != null) && fileBuffer.exists()) { - if (!PrivilegedFileHelper.delete(fileBuffer)) + if (!fileBuffer.delete()) { - throw new IOException("Cannot remove file " + PrivilegedFileHelper.getAbsolutePath(fileBuffer) + throw new IOException("Cannot remove file " + fileBuffer.getAbsolutePath() + " Close all streams."); } } @@ -141,7 +142,7 @@ else if (out instanceof BufferedOutputStream) try { out.close(); - BufferedInputStream is = new BufferedInputStream(PrivilegedFileHelper.fileInputStream(fileBuffer)); + BufferedInputStream is = new BufferedInputStream(new FileInputStream(fileBuffer)); StringBuilder fileData = new StringBuilder(DEFAULT_READ_BUFFER_SIZE); @@ -177,9 +178,9 @@ else if (out instanceof BufferedOutputStream) private void swapBuffers() throws IOException { byte[] data = ((ByteArrayOutputStream)out).toByteArray(); - fileBuffer = PrivilegedFileHelper.createTempFile("decoderBuffer", ".tmp"); - PrivilegedFileHelper.deleteOnExit(fileBuffer); - out = new BufferedOutputStream(PrivilegedFileHelper.fileOutputStream(fileBuffer), bufferSize); + fileBuffer = File.createTempFile("decoderBuffer", ".tmp"); + fileBuffer.deleteOnExit(); + out = new BufferedOutputStream(new FileOutputStream(fileBuffer), bufferSize); out.write(data); } diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/infinispan/ISPNCacheFactory.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/infinispan/ISPNCacheFactory.java index c55619b327..80a75c1f53 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/infinispan/ISPNCacheFactory.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/infinispan/ISPNCacheFactory.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.infinispan; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.container.ExoContainer; import org.exoplatform.container.ExoContainerContext; import org.exoplatform.container.configuration.ConfigurationManager; @@ -161,44 +160,28 @@ public Cache createCache(final String regionId, MappedParametrizedObjectEn final EmbeddedCacheManager manager; try { - // creating new CacheManager using SecurityHelper + // creating new CacheManager - manager = SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public EmbeddedCacheManager run() throws Exception - { - ParserRegistry parser = new ParserRegistry(Thread.currentThread().getContextClassLoader()); - // Loads the configuration from the input stream - ConfigurationBuilderHolder holder = parser.parse(configStream); - GlobalConfigurationBuilder configBuilder = holder.getGlobalConfigurationBuilder(); - Utils.loadJGroupsConfig(configurationManager, configBuilder.build(), configBuilder); - return getUniqueInstance(regionIdEscaped, holder, transactionManager, jndiUrl); - } - }); + ParserRegistry parser = new ParserRegistry(Thread.currentThread().getContextClassLoader()); + // Loads the configuration from the input stream + ConfigurationBuilderHolder holder = parser.parse(configStream); + GlobalConfigurationBuilder configBuilder = holder.getGlobalConfigurationBuilder(); + Utils.loadJGroupsConfig(configurationManager, configBuilder.build(), configBuilder); + manager = getUniqueInstance(regionIdEscaped, holder, transactionManager, jndiUrl); } - catch (PrivilegedActionException pae) + catch (Exception e) { - Throwable cause = pae.getCause(); - throw new RepositoryConfigurationException(cause); + throw new RepositoryConfigurationException(e); } - PrivilegedAction> action = new PrivilegedAction>() + Cache cache = manager.getCache(regionIdEscaped); + if (cache.getStatus() == ComponentStatus.TERMINATED) { - public Cache run() - { - Cache cache = manager.getCache(regionIdEscaped); - if (cache.getStatus() == ComponentStatus.TERMINATED) - { - cache.start(); - LOG.info("The cache corresponding to the region {} was in state Terminated, so it has been restarted", + cache.start(); + LOG.info("The cache corresponding to the region {} was in state Terminated, so it has been restarted", regionIdEscaped); - } - return cache; - } - }; - Cache cache = SecurityHelper.doPrivilegedAction(action); - + } return cache; } diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/infinispan/PrivilegedISPNCacheHelper.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/infinispan/PrivilegedISPNCacheHelper.java index 0eff94f5af..1af0d79d18 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/infinispan/PrivilegedISPNCacheHelper.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/infinispan/PrivilegedISPNCacheHelper.java @@ -18,11 +18,9 @@ */ package org.exoplatform.services.jcr.infinispan; -import org.exoplatform.commons.utils.SecurityHelper; import org.infinispan.Cache; import java.io.Serializable; -import java.security.PrivilegedAction; import java.util.concurrent.TimeUnit; /** @@ -40,15 +38,7 @@ public class PrivilegedISPNCacheHelper */ public static void start(final Cache cache) { - PrivilegedAction action = new PrivilegedAction() - { - public Object run() - { - cache.start(); - return null; - } - }; - SecurityHelper.doPrivilegedAction(action); + cache.start(); } /** @@ -58,15 +48,7 @@ public Object run() */ public static void stop(final Cache cache) { - PrivilegedAction action = new PrivilegedAction() - { - public Object run() - { - cache.stop(); - return null; - } - }; - SecurityHelper.doPrivilegedAction(action); + cache.stop(); } /** @@ -76,14 +58,7 @@ public Object run() */ public static Object putIfAbsent(final Cache cache, final Serializable key, final Object value) { - PrivilegedAction action = new PrivilegedAction() - { - public Object run() - { - return cache.putIfAbsent(key, value); - } - }; - return SecurityHelper.doPrivilegedAction(action); + return cache.putIfAbsent(key, value); } /** @@ -93,14 +68,7 @@ public Object run() */ public static Object put(final Cache cache, final Serializable key, final Object value) { - PrivilegedAction action = new PrivilegedAction() - { - public Object run() - { - return cache.put(key, value); - } - }; - return SecurityHelper.doPrivilegedAction(action); + return cache.put(key, value); } /** @@ -111,13 +79,6 @@ public Object run() public static Object put(final Cache cache, final Serializable key, final Object value, final long lifespan, final TimeUnit unit) { - PrivilegedAction action = new PrivilegedAction() - { - public Object run() - { - return cache.put(key, value, lifespan, unit); - } - }; - return SecurityHelper.doPrivilegedAction(action); + return cache.put(key, value, lifespan, unit); } } diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/statistics/JCRStatisticsManager.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/statistics/JCRStatisticsManager.java index 3555905d8e..323add4afb 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/statistics/JCRStatisticsManager.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/statistics/JCRStatisticsManager.java @@ -16,8 +16,6 @@ */ package org.exoplatform.services.jcr.statistics; -import org.exoplatform.commons.utils.PrivilegedFileHelper; -import org.exoplatform.commons.utils.PrivilegedSystemHelper; import org.exoplatform.container.ExoContainer; import org.exoplatform.container.ExoContainerContext; import org.exoplatform.management.ManagementContext; @@ -81,12 +79,12 @@ public class JCRStatisticsManager * Indicates if the persistence of the statistics has to be enabled. */ public static final boolean PERSISTENCE_ENABLED = - Boolean.valueOf(PrivilegedSystemHelper.getProperty("JCRStatisticsManager.persistence.enabled", "true")); + Boolean.valueOf(System.getProperty("JCRStatisticsManager.persistence.enabled", "true")); /** * The length of time in milliseconds after which the snapshot of the statistics is persisted. */ - public static final long PERSISTENCE_TIMEOUT = Long.valueOf(PrivilegedSystemHelper.getProperty( + public static final long PERSISTENCE_TIMEOUT = Long.valueOf(System.getProperty( "JCRStatisticsManager.persistence.timeout", "15000")); /** @@ -149,7 +147,7 @@ private static PrintWriter initWriter(String category) try { file = - new File(PrivilegedSystemHelper.getProperty("user.dir"), "Statistics" + category + "-" + new File(System.getProperty("user.dir"), "Statistics" + category + "-" + System.currentTimeMillis() + ".csv"); file.createNewFile(); pw = new PrintWriter(file); @@ -161,7 +159,7 @@ private static PrintWriter initWriter(String category) try { file = - PrivilegedFileHelper.createTempFile("Statistics" + category, "-" + System.currentTimeMillis() + ".csv"); + File.createTempFile("Statistics" + category, "-" + System.currentTimeMillis() + ".csv"); pw = new PrintWriter(file); } catch (IOException e1) diff --git a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/WorkspaceDataContainer.java b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/WorkspaceDataContainer.java index 1ba21c5155..b9e33b52b7 100644 --- a/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/WorkspaceDataContainer.java +++ b/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/WorkspaceDataContainer.java @@ -18,8 +18,6 @@ */ package org.exoplatform.services.jcr.storage; -import org.exoplatform.commons.utils.PrivilegedSystemHelper; - import java.util.Calendar; import javax.jcr.RepositoryException; @@ -72,7 +70,7 @@ public interface WorkspaceDataContainer extends DataContainer public final static int DEF_MAXBUFFERSIZE = 1024 * 200; // 200k - public final static String DEF_SWAPDIR = PrivilegedSystemHelper.getProperty("java.io.tmpdir"); + public final static String DEF_SWAPDIR = System.getProperty("java.io.tmpdir"); public final static String CHECK_SNS_NEW_CONNECTION = "check-sns-new-connection"; diff --git a/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestRepositoryManagement.java b/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestRepositoryManagement.java index bb502a1e9e..8b8d26300a 100644 --- a/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestRepositoryManagement.java +++ b/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestRepositoryManagement.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.impl.core; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.container.configuration.ConfigurationManagerImpl; import org.exoplatform.container.xml.InitParams; import org.exoplatform.container.xml.PropertiesParam; @@ -48,6 +47,7 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FilenameFilter; import java.io.OutputStream; @@ -145,8 +145,8 @@ public void testMarshalUnmarshalRepositoryConfiguration() throws Exception repository.getConfiguration().getWorkspaceEntries().get(0).getLockManager().getParameterLong("time-out"); // 1st marshal configuration - File tempFile = PrivilegedFileHelper.createTempFile("test-config", "xml"); - PrivilegedFileHelper.deleteOnExit(tempFile); + File tempFile = File.createTempFile("test-config", "xml"); + tempFile.deleteOnExit(); IBindingFactory factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class); IMarshallingContext mctx = factory.createMarshallingContext(); @@ -166,7 +166,7 @@ public void testMarshalUnmarshalRepositoryConfiguration() throws Exception IUnmarshallingContext uctx = factory.createUnmarshallingContext(); RepositoryServiceConfiguration conf = (RepositoryServiceConfiguration)uctx - .unmarshalDocument(PrivilegedFileHelper.fileInputStream(tempFile), null); + .unmarshalDocument(new FileInputStream(tempFile), null); // 1st check RepositoryEntry unmarshledRepositoryEntry = @@ -175,8 +175,8 @@ public void testMarshalUnmarshalRepositoryConfiguration() throws Exception .getParameterLong("time-out").longValue()); // 2nd marshal configuration - tempFile = PrivilegedFileHelper.createTempFile("test-config", "xml"); - PrivilegedFileHelper.deleteOnExit(tempFile); + tempFile = File.createTempFile("test-config", "xml"); + tempFile.deleteOnExit(); factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class); mctx = factory.createMarshallingContext(); @@ -195,7 +195,7 @@ public void testMarshalUnmarshalRepositoryConfiguration() throws Exception uctx = factory.createUnmarshallingContext(); conf = (RepositoryServiceConfiguration)uctx - .unmarshalDocument(PrivilegedFileHelper.fileInputStream(tempFile), null); + .unmarshalDocument(new FileInputStream(tempFile), null); // 2nd check unmarshledRepositoryEntry = conf.getRepositoryConfiguration(repository.getConfiguration().getName()); diff --git a/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/security/BaseSecurityTest.java b/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/security/BaseSecurityTest.java deleted file mode 100644 index 34ae8b28c2..0000000000 --- a/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/security/BaseSecurityTest.java +++ /dev/null @@ -1,173 +0,0 @@ -/** - * Copyright (C) 2010 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ - -package org.exoplatform.services.jcr.impl.core.security; - -import org.exoplatform.services.jcr.BaseStandaloneTest; - -import java.net.URL; -import java.security.AccessControlContext; -import java.security.AccessController; -import java.security.AllPermission; -import java.security.CodeSource; -import java.security.Permission; -import java.security.PermissionCollection; -import java.security.Permissions; -import java.security.PrivilegedAction; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; -import java.security.ProtectionDomain; -import java.util.Enumeration; - -/** - * @author Andrey Parfonov - * @version $Id$ - */ -public abstract class BaseSecurityTest extends BaseStandaloneTest -{ - - public void setUp() throws Exception - { - super.setUp(); - SecurityManager security = System.getSecurityManager(); - assertNotNull("SecurityManager must be ON.", security); - } - - public String getRepositoryName() - { - return "db1"; - } - - /** - * Run privileged action with specified privileges. - */ - protected T doPrivilegedAction(PrivilegedExceptionAction action, ProtectionDomain[] protectionDomains) - throws Throwable - { - try - { - return AccessController.doPrivileged(action, new AccessControlContext(protectionDomains)); - } - catch (PrivilegedActionException pae) - { - throw pae.getCause(); - } - } - - /** - * Run privileged action without any privileges. - */ - protected T doPrivilegedAction(PrivilegedExceptionAction action) throws Throwable - { - ProtectionDomain[] protectionDomains = - new ProtectionDomain[]{new ProtectionDomain(new CodeSource(getCodeSource(), - (java.security.cert.Certificate[])null), new Permissions())}; - try - { - return AccessController.doPrivileged(action, new AccessControlContext(protectionDomains)); - } - catch (PrivilegedActionException pae) - { - throw pae.getCause(); - } - } - - /** - * Run privileged action with static permissions only. - */ - protected T doPrivilegedActionStaticPermissions(PrivilegedExceptionAction action) throws Throwable - { - try - { - return AccessController.doPrivileged(action); - } - catch (PrivilegedActionException pae) - { - throw pae.getCause(); - } - } - - /** - * Run privileged action with specified privileges. - */ - protected T doPrivilegedAction(PrivilegedAction action, ProtectionDomain[] protectionDomains) - { - return AccessController.doPrivileged(action, new AccessControlContext(protectionDomains)); - } - - /** - * Run privileged action without any privileges. - */ - protected T doPrivilegedAction(PrivilegedAction action) - { - ProtectionDomain[] protectionDomains = - new ProtectionDomain[]{new ProtectionDomain(new CodeSource(getCodeSource(), - (java.security.cert.Certificate[])null), new Permissions())}; - return AccessController.doPrivileged(action, new AccessControlContext(protectionDomains)); - } - - /** - * Run privileged action with static permissions only. - */ - protected T doPrivilegedActionStaticPermissions(PrivilegedAction action) - { - return AccessController.doPrivileged(action); - } - - /** - * Get code-source of class. - */ - protected URL getCodeSource() - { - return getClass().getProtectionDomain().getCodeSource().getLocation(); - } - - protected static final PermissionCollection ALL = new PermissionCollection() - { - - public boolean implies(Permission permission) - { - return true; - } - - public Enumeration elements() - { - return new Enumeration() - { - private boolean hasMore = true; - - public boolean hasMoreElements() - { - return hasMore; - } - - public Permission nextElement() - { - hasMore = false; - return new AllPermission(); - } - }; - } - - public void add(Permission permission) - { - } - }; - -} diff --git a/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/security/TestSecurityRepositoryManagment.java b/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/security/TestSecurityRepositoryManagment.java deleted file mode 100644 index d0bbedefab..0000000000 --- a/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/security/TestSecurityRepositoryManagment.java +++ /dev/null @@ -1,547 +0,0 @@ -/** - * Copyright (C) 2010 eXo Platform SAS. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ - -package org.exoplatform.services.jcr.impl.core.security; - -import org.exoplatform.services.jcr.config.WorkspaceEntry; -import org.exoplatform.services.jcr.core.CredentialsImpl; -import org.exoplatform.services.jcr.core.ManageableRepository; -import org.exoplatform.services.jcr.impl.dataflow.serialization.TesterItemsPersistenceListener; -import org.exoplatform.services.security.IdentityConstants; - -import java.security.AccessControlException; -import java.security.PrivilegedExceptionAction; - -/** - * @author Andrey Parfonov - * @version $Id: TestGetSystemSession.java 2521 2010-06-09 11:50:54Z nzamosenchuk $ - */ -public class TestSecurityRepositoryManagment extends BaseSecurityTest -{ - public void testGetSystemSessionSuccess() - { - PrivilegedExceptionAction action = new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - repository.getSystemSession(); - return null; - } - - }; - try - { - doPrivilegedActionStaticPermissions(action); - } - catch (AccessControlException ace) - { - fail("Must be able get system session. We are under static permissions"); - } - catch (Throwable t) - { - t.printStackTrace(); - fail(); - } - } - - public void testGetSystemSessionFail() - { - PrivilegedExceptionAction action = new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - repository.getSystemSession(); - return null; - } - - }; - try - { - doPrivilegedAction(action); - fail("Must not be able get system session."); - } - catch (AccessControlException ace) - { - // OK - } - catch (Throwable t) - { - t.printStackTrace(); - fail(); - } - } - - public void testGetSystemSessionFail2() - { - PrivilegedExceptionAction action = new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - repository.login(new CredentialsImpl(IdentityConstants.SYSTEM, "".toCharArray()), repository.getSystemWorkspaceName()); - return null; - } - - }; - try - { - doPrivilegedAction(action); - fail("Must not be able get system session."); - } - catch (AccessControlException ace) - { - // OK - } - catch (Throwable t) - { - t.printStackTrace(); - fail(); - } - } - public void testAddItemPersistenceListenerSuccess() - { - final TesterItemsPersistenceListener listener = new TesterItemsPersistenceListener(session, false); - PrivilegedExceptionAction action = new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - repository.addItemPersistenceListener(workspace.getName(), listener); - return null; - } - - }; - try - { - doPrivilegedActionStaticPermissions(action); - } - catch (AccessControlException ace) - { - fail("Must be able add listener. We are under static permissions"); - } - catch (Throwable t) - { - t.printStackTrace(); - fail(); - } - finally - { - // unregister the listener to avoid keeping ItemData into the memory for nothing - listener.pushChanges(); - } - } - - public void testAddItemPersistenceListenerFail() - { - final TesterItemsPersistenceListener listener = new TesterItemsPersistenceListener(session, false); - PrivilegedExceptionAction action = new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - repository.addItemPersistenceListener(workspace.getName(), listener); - return null; - } - - }; - try - { - doPrivilegedAction(action); - fail("Must not be able add listener."); - } - catch (AccessControlException ace) - { - // OK - } - catch (Throwable t) - { - t.printStackTrace(); - fail(); - } - finally - { - // unregister the listener to avoid keeping ItemData into the memory for nothing - listener.pushChanges(); - } - } - - public void testConfigWorkspaceSuccess() throws Exception - { - PrivilegedExceptionAction action = new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - WorkspaceEntry defConfig = - (WorkspaceEntry)session.getContainer().getComponentInstanceOfType(WorkspaceEntry.class); - - WorkspaceEntry wsConfig = new WorkspaceEntry(); - wsConfig.setName("testCWS"); - - wsConfig.setAccessManager(defConfig.getAccessManager()); - wsConfig.setCache(defConfig.getCache()); - wsConfig.setContainer(defConfig.getContainer()); - wsConfig.setLockManager(defConfig.getLockManager()); - - repository.configWorkspace(wsConfig); - return null; - } - - }; - try - { - doPrivilegedActionStaticPermissions(action); - } - catch (AccessControlException ace) - { - fail("Must be able config workspace. We are under static permissions"); - } - catch (Throwable t) - { - t.printStackTrace(); - fail(); - } - - action = new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - // remove configured workspace - repository.createWorkspace("testCWS"); - repository.internalRemoveWorkspace("testCWS"); - return null; - } - - }; - try - { - doPrivilegedActionStaticPermissions(action); - } - catch (AccessControlException ace) - { - fail("Must be able config workspace. We are under static permissions"); - } - catch (Throwable t) - { - t.printStackTrace(); - fail(); - } - } - - public void testConfigWorkspaceFail() throws Exception - { - PrivilegedExceptionAction action = new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - WorkspaceEntry defConfig = - (WorkspaceEntry)session.getContainer().getComponentInstanceOfType(WorkspaceEntry.class); - - WorkspaceEntry wsConfig = new WorkspaceEntry(); - wsConfig.setName("testConfigWorkspaceFail"); - - wsConfig.setAccessManager(defConfig.getAccessManager()); - wsConfig.setCache(defConfig.getCache()); - wsConfig.setContainer(defConfig.getContainer()); - wsConfig.setLockManager(defConfig.getLockManager()); - - repository.configWorkspace(wsConfig); - return null; - } - - }; - try - { - doPrivilegedAction(action); - fail("Must not be able config workspace."); - } - catch (AccessControlException ace) - { - // OK - } - catch (Throwable t) - { - t.printStackTrace(); - fail(); - } - } - - public void testCreateWorkspaceSuccess() throws Exception - { - // configures workspace for creation - WorkspaceEntry defConfig = - (WorkspaceEntry)session.getContainer().getComponentInstanceOfType(WorkspaceEntry.class); - - final WorkspaceEntry wsConfig = new WorkspaceEntry(); - wsConfig.setName("testCWS"); - - wsConfig.setAccessManager(defConfig.getAccessManager()); - wsConfig.setCache(defConfig.getCache()); - wsConfig.setContainer(defConfig.getContainer()); - wsConfig.setLockManager(defConfig.getLockManager()); - - PrivilegedExceptionAction action = new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - repository.configWorkspace(wsConfig); - repository.createWorkspace("testCWS"); - return null; - } - - }; - try - { - doPrivilegedActionStaticPermissions(action); - } - catch (AccessControlException ace) - { - fail("Must be able create workspace. We are under static permissions"); - } - catch (Throwable t) - { - t.printStackTrace(); - fail(); - } - action = new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - // remove configured workspace - repository.internalRemoveWorkspace("testCWS"); - return null; - } - - }; - try - { - doPrivilegedActionStaticPermissions(action); - } - catch (AccessControlException ace) - { - fail("Must be able config workspace. We are under static permissions"); - } - catch (Throwable t) - { - t.printStackTrace(); - fail(); - } - - } - - public void testCreateWorkspaceFail() - { - PrivilegedExceptionAction action = new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - repository.createWorkspace("testCreateWorkspaceFail"); - return null; - } - - }; - try - { - doPrivilegedAction(action); - fail("Must not be able create workspace."); - } - catch (AccessControlException ace) - { - // OK - } - catch (Throwable t) - { - t.printStackTrace(); - fail(); - } - } - - public void testInternalRemoveWorkspaceSuccess() throws Exception - { - // configures and create workspace - WorkspaceEntry defConfig = - (WorkspaceEntry)session.getContainer().getComponentInstanceOfType(WorkspaceEntry.class); - - final WorkspaceEntry wsConfig = new WorkspaceEntry(); - wsConfig.setName("testIRWS"); - - wsConfig.setAccessManager(defConfig.getAccessManager()); - wsConfig.setCache(defConfig.getCache()); - wsConfig.setContainer(defConfig.getContainer()); - wsConfig.setLockManager(defConfig.getLockManager()); - - - PrivilegedExceptionAction action = new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - repository.configWorkspace(wsConfig); - repository.createWorkspace("testIRWS"); - repository.internalRemoveWorkspace("testIRWS"); - return null; - } - - }; - try - { - doPrivilegedActionStaticPermissions(action); - } - catch (AccessControlException ace) - { - fail("Must be able remove workspace. We are under static permissions"); - } - catch (Throwable t) - { - t.printStackTrace(); - fail(); - } - } - - public void testInternalRemoveWorkspaceFail() - { - PrivilegedExceptionAction action = new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - repository.internalRemoveWorkspace("testInternalRemoveWorkspaceFail"); - return null; - } - - }; - try - { - doPrivilegedAction(action); - fail("Must not be able remove workspace."); - } - catch (AccessControlException ace) - { - // OK - } - catch (Throwable t) - { - t.printStackTrace(); - fail(); - } - } - - public void testSetStateeSuccess() - { - PrivilegedExceptionAction action = new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - repository.setState(ManageableRepository.OFFLINE); - repository.setState(ManageableRepository.ONLINE); - return null; - } - - }; - try - { - doPrivilegedActionStaticPermissions(action); - } - catch (AccessControlException ace) - { - fail("Must be able set state. We are under static permissions"); - } - catch (Throwable t) - { - t.printStackTrace(); - fail(); - } - } - - public void testSetStateFail() - { - PrivilegedExceptionAction action = new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - repository.setState(ManageableRepository.OFFLINE); - repository.setState(ManageableRepository.ONLINE); - return null; - } - - }; - try - { - doPrivilegedAction(action); - fail("Must not be able set state."); - } - catch (AccessControlException ace) - { - // OK - } - catch (Throwable t) - { - t.printStackTrace(); - fail(); - } - } - - public void testGetConfigurationSuccess() - { - PrivilegedExceptionAction action = new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - repository.getConfiguration(); - return null; - } - - }; - try - { - doPrivilegedActionStaticPermissions(action); - } - catch (AccessControlException ace) - { - fail("Must be able get configuration. We are under static permissions"); - } - catch (Throwable t) - { - t.printStackTrace(); - fail(); - } - } - - public void testGetConfigurationFail() - { - PrivilegedExceptionAction action = new PrivilegedExceptionAction() - { - public Object run() throws Exception - { - repository.getConfiguration(); - return null; - } - - }; - try - { - doPrivilegedAction(action); - fail("Must not be able get configuration."); - } - catch (AccessControlException ace) - { - // OK - } - catch (Throwable t) - { - t.printStackTrace(); - fail(); - } - } - -} diff --git a/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/value/fs/TestRemoveFromValueStorage.java b/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/value/fs/TestRemoveFromValueStorage.java index 5fdc5f8d36..3259a60dd6 100644 --- a/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/value/fs/TestRemoveFromValueStorage.java +++ b/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/value/fs/TestRemoveFromValueStorage.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.impl.storage.value.fs; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.services.jcr.BaseStandaloneTest; import org.exoplatform.services.jcr.config.WorkspaceEntry; import org.exoplatform.services.jcr.core.WorkspaceContainerFacade; @@ -212,9 +211,9 @@ public void testRemoveInconsistentNode() throws Exception File[] list =folder.listFiles(); for(File f : list) { - PrivilegedFileHelper.delete(f); + f.delete(); } - PrivilegedFileHelper.delete(folder); + folder.delete(); try { myNode.remove(); diff --git a/exo.jcr.component.core/src/test/resources/test.policy b/exo.jcr.component.core/src/test/resources/test.policy deleted file mode 100644 index bffa6177ce..0000000000 --- a/exo.jcr.component.core/src/test/resources/test.policy +++ /dev/null @@ -1,21 +0,0 @@ -grant codeBase "@MAVEN_REPO@-"{ - permission java.security.AllPermission; -}; - -grant codeBase "@MAIN_CLASSES@-"{ - permission java.security.AllPermission; -}; - -grant codeBase "@TEST_CLASSES@-"{ - permission java.lang.RuntimePermission "createSystemSession"; - permission java.lang.RuntimePermission "createDynamicSession"; - permission java.lang.RuntimePermission "manageRepository"; - permission java.lang.RuntimePermission "accessRPCService"; - permission java.lang.RuntimePermission "invokeInternalAPI"; - permission java.lang.RuntimePermission "setContextClassLoader"; - permission java.lang.RuntimePermission "manageComponent"; - permission java.lang.RuntimePermission "manageContainer"; - permission java.util.PropertyPermission "org.postgresql.forcebinary", "read"; - permission java.util.PropertyPermission "com.edb.forcebinary", "read"; -}; - diff --git a/exo.jcr.component.ext/pom.xml b/exo.jcr.component.ext/pom.xml index 5b1e8cf2af..67349545f8 100644 --- a/exo.jcr.component.ext/pom.xml +++ b/exo.jcr.component.ext/pom.xml @@ -93,7 +93,6 @@ org.apache.maven.plugins maven-surefire-plugin - @{argLine} ${env.MAVEN_OPTS} --add-opens=java.base/java.util=ALL-UNNAMED -Djava.security.manager=org.exoplatform.commons.test.TestSecurityManager -Djava.security.policy=${project.build.directory}/test-classes/test.policy ${debug.opts} jcr.test.configuration.file @@ -626,11 +625,5 @@ false - - debug - - -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y - - diff --git a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/BackupChainLog.java b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/BackupChainLog.java index 22a85f0463..d92dde6fb7 100644 --- a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/BackupChainLog.java +++ b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/BackupChainLog.java @@ -18,8 +18,6 @@ */ package org.exoplatform.services.jcr.ext.backup; -import org.exoplatform.commons.utils.PrivilegedFileHelper; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.jcr.config.RepositoryConfigurationException; import org.exoplatform.services.jcr.config.RepositoryEntry; import org.exoplatform.services.jcr.config.RepositoryServiceConfiguration; @@ -36,6 +34,7 @@ import org.jibx.runtime.JiBXException; import java.io.File; +import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; @@ -44,8 +43,6 @@ import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; @@ -137,9 +134,9 @@ public BackupChainLog(File logDir, BackupConfig config, String fullBackupType, S this.finalized = false; this.versionLog = VERSION_LOG_1_1; this.log = - new File(PrivilegedFileHelper.getCanonicalPath(logDir) + File.separator + new File(logDir.getCanonicalPath() + File.separator + (PREFIX + backupId + SUFFIX)); - PrivilegedFileHelper.createNewFile(this.log); + this.log.createNewFile(); this.rootDir = rootDir; this.backupId = backupId; this.fullBackupType = fullBackupType; @@ -354,14 +351,14 @@ public void endLog() //copy backup chain log file in into Backupset files itself for portability (e.g. on another server) try { - InputStream in = PrivilegedFileHelper.fileInputStream(log); + InputStream in = new FileInputStream(log); File dest = new File(config.getBackupDir() + File.separator + log.getName()); - if (!PrivilegedFileHelper.exists(dest)) + if (!dest.exists()) { - OutputStream out = PrivilegedFileHelper.fileOutputStream(dest); + OutputStream out = new FileOutputStream(dest); - byte[] buf = new byte[(int) (PrivilegedFileHelper.length(log))]; + byte[] buf = new byte[(int) (log.length())]; in.read(buf); String sConfig = new String(buf, Constants.DEFAULT_ENCODING); @@ -423,7 +420,7 @@ public BackupConfig getBackupConfig() */ public String getLogFilePath() { - return PrivilegedFileHelper.getAbsolutePath(log); + return log.getAbsolutePath(); } /** @@ -488,7 +485,7 @@ public LogReader(File logFile) throws FileNotFoundException, XMLStreamException, reader = XMLInputFactory.newInstance().createXMLStreamReader( - PrivilegedFileHelper.fileInputStream(this.logFile), Constants.DEFAULT_ENCODING); + new FileInputStream(this.logFile), Constants.DEFAULT_ENCODING); } public String getIncrementalBackupType() @@ -577,47 +574,21 @@ private WorkspaceEntry readWorkspaceEntry() throws Exception String configName = readContent(); File configFile = - new File(PrivilegedFileHelper.getCanonicalPath(getBackupConfig().getBackupDir()) + File.separator + new File(getBackupConfig().getBackupDir().getCanonicalPath() + File.separator + configName); - if (!PrivilegedFileHelper.exists(configFile)) + if (!configFile.exists()) { throw new WorkspaceRestoreExeption("The backup set is not contains original workspace configuration : " - + PrivilegedFileHelper.getCanonicalPath(getBackupConfig().getBackupDir())); + + getBackupConfig().getBackupDir().getCanonicalPath()); } IBindingFactory factory; - try - { - factory = SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public IBindingFactory run() throws Exception - { - return BindingDirectory.getFactory(RepositoryServiceConfiguration.class); - } - }); - } - catch (PrivilegedActionException pae) - { - Throwable cause = pae.getCause(); - if (cause instanceof JiBXException) - { - throw (JiBXException)cause; - } - else if (cause instanceof RuntimeException) - { - throw (RuntimeException)cause; - } - else - { - throw new RuntimeException(cause); - } - } + factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class); IUnmarshallingContext uctx = factory.createUnmarshallingContext(); RepositoryServiceConfiguration conf = - (RepositoryServiceConfiguration) uctx.unmarshalDocument(PrivilegedFileHelper - .fileInputStream(configFile), null); + (RepositoryServiceConfiguration) uctx.unmarshalDocument(new FileInputStream(configFile), null); RepositoryEntry repositoryEntry = conf.getRepositoryConfiguration(getBackupConfig().getRepository()); @@ -625,7 +596,7 @@ else if (cause instanceof RuntimeException) { throw new WorkspaceRestoreExeption( "The oririginal configuration should be contains only one workspace entry :" - + PrivilegedFileHelper.getCanonicalPath(configFile)); + + configFile.getCanonicalPath()); } if (!repositoryEntry.getWorkspaceEntries().get(0).getName().equals(getBackupConfig().getWorkspace())) @@ -633,7 +604,7 @@ else if (cause instanceof RuntimeException) throw new WorkspaceRestoreExeption( "The oririginal configuration should be contains only one workspace entry with name \"" + getBackupConfig().getWorkspace() + "\" :" - + PrivilegedFileHelper.getCanonicalPath(configFile)); + + configFile.getCanonicalPath()); } return repositoryEntry.getWorkspaceEntries().get(0); @@ -667,7 +638,7 @@ private JobEntryInfo readJobEntryInfo() throws XMLStreamException, ValueFormatEx String path = readContent().replace( "file:", - "file:" + PrivilegedFileHelper.getCanonicalPath(config.getBackupDir()) + "file:" + config.getBackupDir().getCanonicalPath() + File.separator); info.setURL(new URL(path)); @@ -749,7 +720,7 @@ private BackupConfig readBackupConfig() throws XMLStreamException, IOException String dir = readContent(); if (dir.equals(".")) { - String path = PrivilegedFileHelper.getCanonicalPath(logFile.getParentFile()); + String path = logFile.getParentFile().getCanonicalPath(); conf.setBackupDir(new File(path)); } else @@ -839,42 +810,8 @@ private class LogWriter public LogWriter(File file) throws FileNotFoundException, XMLStreamException, FactoryConfigurationError { this.logFile = file; - - try - { - writer = SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public XMLStreamWriter run() throws Exception - { - return XMLOutputFactory.newInstance().createXMLStreamWriter(new FileOutputStream(logFile), - Constants.DEFAULT_ENCODING); - } - }); - } - catch (PrivilegedActionException pae) - { - Throwable cause = pae.getCause(); - if (cause instanceof FileNotFoundException) - { - throw (FileNotFoundException) cause; - } - else if (cause instanceof XMLStreamException) - { - throw (XMLStreamException) cause; - } - else if (cause instanceof FactoryConfigurationError) - { - throw (FactoryConfigurationError) cause; - } - else if (cause instanceof RuntimeException) - { - throw (RuntimeException) cause; - } - else - { - throw new RuntimeException(cause); - } - }; + writer = XMLOutputFactory.newInstance().createXMLStreamWriter(new FileOutputStream(logFile), + Constants.DEFAULT_ENCODING); writer.writeStartDocument(); writer.writeStartElement("backup-chain-log"); @@ -891,10 +828,10 @@ public void writeWorkspaceEntry(WorkspaceEntry originalWorkspaceEntry, JiBXException, RepositoryException, RepositoryConfigurationException { File config = - new File(PrivilegedFileHelper.getCanonicalPath(BackupChainLog.this.config.getBackupDir()) + new File(BackupChainLog.this.config.getBackupDir().getCanonicalPath() + File.separator + "original-workspace-config.xml"); - PrivilegedFileHelper.createNewFile(config); - OutputStream saveStream = PrivilegedFileHelper.fileOutputStream(config); + config.createNewFile(); + OutputStream saveStream = new FileOutputStream(config); RepositoryEntry baseRepositoryEntry = serviceConfiguration.getRepositoryConfiguration(BackupChainLog.this.config.getRepository()); @@ -916,32 +853,8 @@ public void writeWorkspaceEntry(WorkspaceEntry originalWorkspaceEntry, new RepositoryServiceConfiguration(serviceConfiguration.getDefaultRepositoryName(), repositoryEntries); IBindingFactory bfact; - try - { - bfact = SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public IBindingFactory run() throws Exception - { - return BindingDirectory.getFactory(RepositoryServiceConfiguration.class); - } - }); - } - catch (PrivilegedActionException pae) - { - Throwable cause = pae.getCause(); - if (cause instanceof JiBXException) - { - throw (JiBXException) cause; - } - else if (cause instanceof RuntimeException) - { - throw (RuntimeException) cause; - } - else - { - throw new RuntimeException(cause); - } - } + bfact = BindingDirectory.getFactory(RepositoryServiceConfiguration.class); + IMarshallingContext mctx = bfact.createMarshallingContext(); mctx.marshalDocument(newRepositoryServiceConfiguration, "ISO-8859-1", null, saveStream); @@ -969,7 +882,7 @@ public synchronized void write(BackupConfig config, String fullBackupType, Strin { writer.writeStartElement("backup-dir"); String path = - (isRootBackupManagerDir(logFile) ? PrivilegedFileHelper.getCanonicalPath(config.getBackupDir()) + (isRootBackupManagerDir(logFile) ? config.getBackupDir().getCanonicalPath() : "."); writer.writeCharacters(path); @@ -1030,16 +943,16 @@ public synchronized void write(JobEntryInfo info, BackupConfig config) throws XM private String getRelativeUrl(URL url, File backupDir) throws IOException { - String str = PrivilegedFileHelper.getCanonicalPath(new File(url.getFile())); + String str = new File(url.getFile()).getCanonicalPath(); return url.getProtocol() + ":" - + str.replace(PrivilegedFileHelper.getCanonicalPath(config.getBackupDir()) + File.separator, ""); + + str.replace(config.getBackupDir().getCanonicalPath() + File.separator, ""); } private boolean isRootBackupManagerDir(File log) throws IOException { - return (PrivilegedFileHelper.getCanonicalPath(log.getParentFile()).equals(PrivilegedFileHelper - .getCanonicalPath(rootDir))); + return (log.getParentFile().getCanonicalPath().equals(rootDir + .getCanonicalPath())); } public synchronized void writeEndLog() diff --git a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/RepositoryBackupChainLog.java b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/RepositoryBackupChainLog.java index 87c30b1238..7c3a565982 100644 --- a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/RepositoryBackupChainLog.java +++ b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/RepositoryBackupChainLog.java @@ -16,8 +16,6 @@ */ package org.exoplatform.services.jcr.ext.backup; -import org.exoplatform.commons.utils.PrivilegedFileHelper; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.container.xml.Deserializer; import org.exoplatform.services.jcr.config.RepositoryEntry; import org.exoplatform.services.jcr.config.RepositoryServiceConfiguration; @@ -33,14 +31,13 @@ import org.jibx.runtime.JiBXException; import java.io.File; +import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; import java.util.ArrayList; import java.util.Calendar; import java.util.List; @@ -77,41 +74,9 @@ public LogWriter(File file) throws FileNotFoundException, XMLStreamException, Fa { this.logFile = file; - try - { - writer = SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public XMLStreamWriter run() throws Exception - { - return XMLOutputFactory.newInstance().createXMLStreamWriter(new FileOutputStream(logFile), - Constants.DEFAULT_ENCODING); - } - }); - } - catch (PrivilegedActionException pae) - { - Throwable cause = pae.getCause(); - if (cause instanceof FileNotFoundException) - { - throw (FileNotFoundException)cause; - } - else if (cause instanceof XMLStreamException) - { - throw (XMLStreamException)cause; - } - else if (cause instanceof FactoryConfigurationError) - { - throw (FactoryConfigurationError)cause; - } - else if (cause instanceof RuntimeException) - { - throw (RuntimeException)cause; - } - else - { - throw new RuntimeException(cause); - } - }; + writer = XMLOutputFactory.newInstance().createXMLStreamWriter(new FileOutputStream(logFile), + Constants.DEFAULT_ENCODING); + writer.writeStartDocument(); writer.writeStartElement("repository-backup-chain-log"); @@ -144,8 +109,8 @@ public void writeBackupsPath(List wsLogFilePathList, RepositoryBackupCon for (String path : wsLogFilePathList) { writer.writeStartElement("url"); - writer.writeCharacters(RepositoryChainLogPathHelper.getRelativePath(path, PrivilegedFileHelper.getCanonicalPath(config - .getBackupDir()))); + writer.writeCharacters(RepositoryChainLogPathHelper.getRelativePath(path, config + .getBackupDir().getCanonicalPath())); writer.writeEndElement(); } @@ -174,8 +139,8 @@ public synchronized void write(RepositoryBackupConfig config, String fullBackupT if (config.getBackupDir() != null) { - String backupDir = PrivilegedFileHelper.getCanonicalPath(config.getBackupDir()); - String serviceBackupDirPath = PrivilegedFileHelper.getCanonicalPath(serviceBackupDir); + String backupDir = config.getBackupDir().getCanonicalPath(); + String serviceBackupDirPath = serviceBackupDir.getCanonicalPath(); if (backupDir.startsWith(serviceBackupDirPath)) { @@ -235,10 +200,10 @@ public synchronized void writeRepositoryEntry(RepositoryEntry rEntry, JiBXException { File config = - new File(PrivilegedFileHelper.getCanonicalPath(RepositoryBackupChainLog.this.config.getBackupDir()) + new File(RepositoryBackupChainLog.this.config.getBackupDir().getCanonicalPath() + File.separator + "original-repository-config.xml"); - PrivilegedFileHelper.createNewFile(config); - OutputStream saveStream = PrivilegedFileHelper.fileOutputStream(config); + config.createNewFile(); + OutputStream saveStream = new FileOutputStream(config); ArrayList repositoryEntries = new ArrayList(); repositoryEntries.add(rEntry); @@ -247,32 +212,7 @@ public synchronized void writeRepositoryEntry(RepositoryEntry rEntry, new RepositoryServiceConfiguration(serviceConfiguration.getDefaultRepositoryName(), repositoryEntries); IBindingFactory bfact; - try - { - bfact = SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public IBindingFactory run() throws Exception - { - return BindingDirectory.getFactory(RepositoryServiceConfiguration.class); - } - }); - } - catch (PrivilegedActionException pae) - { - Throwable cause = pae.getCause(); - if (cause instanceof JiBXException) - { - throw (JiBXException) cause; - } - else if (cause instanceof RuntimeException) - { - throw (RuntimeException) cause; - } - else - { - throw new RuntimeException(cause); - } - } + bfact = BindingDirectory.getFactory(RepositoryServiceConfiguration.class); IMarshallingContext mctx = bfact.createMarshallingContext(); mctx.marshalDocument(newRepositoryServiceConfiguration, "ISO-8859-1", null, saveStream); @@ -298,7 +238,7 @@ public LogReader(File logFile) throws FileNotFoundException, XMLStreamException, { this.logFile = logFile; reader = - XMLInputFactory.newInstance().createXMLStreamReader(PrivilegedFileHelper.fileInputStream(logFile), + XMLInputFactory.newInstance().createXMLStreamReader(new FileInputStream(logFile), Constants.DEFAULT_ENCODING); } @@ -356,53 +296,28 @@ private RepositoryEntry readRepositoryEntry() throws UnsupportedEncodingExceptio String configName = readContent(); File configFile = - new File(PrivilegedFileHelper.getCanonicalPath(getBackupConfig().getBackupDir()) + File.separator + new File(getBackupConfig().getBackupDir().getCanonicalPath() + File.separator + configName); - if (!PrivilegedFileHelper.exists(configFile)) + if (!configFile.exists()) { throw new RepositoryRestoreExeption("The backup set is not contains original repository configuration : " - + PrivilegedFileHelper.getCanonicalPath(getBackupConfig().getBackupDir())); + + getBackupConfig().getBackupDir().getCanonicalPath()); } IBindingFactory factory; - try - { - factory = SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public IBindingFactory run() throws Exception - { - return BindingDirectory.getFactory(RepositoryServiceConfiguration.class); - } - }); - } - catch (PrivilegedActionException pae) - { - Throwable cause = pae.getCause(); - if (cause instanceof JiBXException) - { - throw (JiBXException)cause; - } - else if (cause instanceof RuntimeException) - { - throw (RuntimeException)cause; - } - else - { - throw new RuntimeException(cause); - } - } + factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class); + IUnmarshallingContext uctx = factory.createUnmarshallingContext(); RepositoryServiceConfiguration conf = - (RepositoryServiceConfiguration) uctx.unmarshalDocument(PrivilegedFileHelper - .fileInputStream(configFile), null); + (RepositoryServiceConfiguration) uctx.unmarshalDocument(new FileInputStream(configFile), null); if (conf.getRepositoryConfigurations().size() != 1) { throw new RepositoryRestoreExeption( "The oririginal configuration should be contains only one repository entry :" - + PrivilegedFileHelper.getCanonicalPath(configFile)); + + configFile.getCanonicalPath()); } if (!conf.getRepositoryConfiguration(getBackupConfig().getRepository()).getName().equals( @@ -411,7 +326,7 @@ else if (cause instanceof RuntimeException) throw new RepositoryRestoreExeption( "The oririginal configuration should be contains only one repository entry with name \"" + getBackupConfig().getRepository() + "\" :" - + PrivilegedFileHelper.getCanonicalPath(configFile)); + + configFile.getCanonicalPath()); } @@ -439,8 +354,8 @@ private List readWorkspaceBackupInfo() throws XMLStreamException, IOExce if (version != null && version.equals(VERSION_LOG_1_1)) { String path = readContent(); - wsBackupInfo.add(RepositoryChainLogPathHelper.getPath(path, PrivilegedFileHelper.getCanonicalPath(config - .getBackupDir()))); + wsBackupInfo.add(RepositoryChainLogPathHelper.getPath(path, config + .getBackupDir().getCanonicalPath())); } else { @@ -484,13 +399,13 @@ private BackupConfig readBackupConfig() throws XMLStreamException, IOException String dir = readContent(); if (dir.equals(".")) { - String path = PrivilegedFileHelper.getCanonicalPath(logFile.getParentFile()); + String path = logFile.getParentFile().getCanonicalPath(); conf.setBackupDir(new File(path)); } else if (dir.startsWith("./")) { - String path = PrivilegedFileHelper.getCanonicalPath(logFile.getParentFile()); + String path = logFile.getParentFile().getCanonicalPath(); dir = dir.replace("./", "/"); @@ -624,9 +539,9 @@ public RepositoryBackupChainLog(File logDirectory, RepositoryBackupConfig config this.finalized = false; this.versionLog = VERSION_LOG_1_1; this.log = - new File(PrivilegedFileHelper.getCanonicalPath(logDirectory) + File.separator + new File(logDirectory.getCanonicalPath() + File.separator + (PREFIX + backupId + SUFFIX)); - PrivilegedFileHelper.createNewFile(this.log); + this.log.createNewFile(); this.backupId = backupId; this.config = config; this.startedTime = Calendar.getInstance(); @@ -679,22 +594,22 @@ public RepositoryBackupChainLog(File log) throws BackupOperationException catch (FileNotFoundException e) { throw new BackupOperationException("Can not read RepositoryBackupChainLog from file :" - + PrivilegedFileHelper.getAbsolutePath(log), e); + + log.getAbsolutePath(), e); } catch (XMLStreamException e) { throw new BackupOperationException("Can not read RepositoryBackupChainLog from file :" - + PrivilegedFileHelper.getAbsolutePath(log), e); + + log.getAbsolutePath(), e); } catch (UnsupportedEncodingException e) { throw new BackupOperationException("Can not read RepositoryBackupChainLog from file :" - + PrivilegedFileHelper.getAbsolutePath(log), e); + + log.getAbsolutePath(), e); } catch (Exception e) { throw new BackupOperationException("Can not read RepositoryBackupChainLog from file :" - + PrivilegedFileHelper.getAbsolutePath(log), e); + + log.getAbsolutePath(), e); } } @@ -706,7 +621,7 @@ public RepositoryBackupChainLog(File log) throws BackupOperationException */ public String getLogFilePath() { - return PrivilegedFileHelper.getAbsolutePath(log); + return log.getAbsolutePath(); } /** @@ -762,14 +677,14 @@ public synchronized void endLog() //copy backup chain log file in into Backupset files itself for portability (e.g. on another server) try { - InputStream in = PrivilegedFileHelper.fileInputStream(log); + InputStream in = new FileInputStream(log); File dest = new File(config.getBackupDir() + File.separator + log.getName()); - if (!PrivilegedFileHelper.exists(dest)) + if (!dest.exists()) { - OutputStream out = PrivilegedFileHelper.fileOutputStream(dest); + OutputStream out = new FileOutputStream(dest); - byte[] buf = new byte[(int) (PrivilegedFileHelper.length(log))]; + byte[] buf = new byte[(int) (log.length())]; in.read(buf); String sConfig = new String(buf, Constants.DEFAULT_ENCODING); diff --git a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/BackupManagerImpl.java b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/BackupManagerImpl.java index 988e9d3587..4dcd090811 100644 --- a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/BackupManagerImpl.java +++ b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/BackupManagerImpl.java @@ -20,9 +20,6 @@ import org.apache.commons.collections.map.HashedMap; import org.exoplatform.commons.utils.ClassLoading; -import org.exoplatform.commons.utils.PrivilegedFileHelper; -import org.exoplatform.commons.utils.PrivilegedSystemHelper; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.container.ExoContainerContext; import org.exoplatform.container.xml.InitParams; import org.exoplatform.container.xml.PropertiesParam; @@ -74,7 +71,6 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.PrintWriter; -import java.security.PrivilegedExceptionAction; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; @@ -508,7 +504,7 @@ public BackupManagerImpl(ExoContainerContext ctx, InitParams initParams, Reposit this.repoService = repoService; this.registryService = registryService; this.initParams = initParams; - this.tempDir = new File(PrivilegedSystemHelper.getProperty("java.io.tmpdir")); + this.tempDir = new File(System.getProperty("java.io.tmpdir")); currentBackups = Collections.synchronizedSet(new HashSet()); @@ -545,7 +541,7 @@ public BackupMessage[] getMessages() */ public BackupChainLog[] getBackupsLogs() { - File[] cfs = PrivilegedFileHelper.listFiles(logsDirectory, new BackupLogsFilter()); + File[] cfs = logsDirectory.listFiles(new BackupLogsFilter()); List logs = new ArrayList(); for (int i = 0; i < cfs.length; i++) { @@ -560,7 +556,7 @@ public BackupChainLog[] getBackupsLogs() } catch (BackupOperationException e) { - LOG.warn("Log file " + PrivilegedFileHelper.getAbsolutePath(cf) + " is bussy or corrupted. Skipped. " + e, + LOG.warn("Log file " + cf.getAbsolutePath() + " is bussy or corrupted. Skipped. " + e, e); } } @@ -574,7 +570,7 @@ public BackupChainLog[] getBackupsLogs() */ public RepositoryBackupChainLog[] getRepositoryBackupsLogs() { - File[] cfs = PrivilegedFileHelper.listFiles(logsDirectory, new RepositoryBackupLogsFilter()); + File[] cfs = logsDirectory.listFiles(new RepositoryBackupLogsFilter()); List logs = new ArrayList(); for (int i = 0; i < cfs.length; i++) { @@ -589,7 +585,7 @@ public RepositoryBackupChainLog[] getRepositoryBackupsLogs() } catch (BackupOperationException e) { - LOG.warn("Log file " + PrivilegedFileHelper.getAbsolutePath(cf) + " is bussy or corrupted. Skipped. " + e, + LOG.warn("Log file " + cf.getAbsolutePath() + " is bussy or corrupted. Skipped. " + e, e); } } @@ -770,7 +766,7 @@ BackupChain startBackup(BackupConfig config, BackupJobListener jobListener) thro File dir = FileNameProducer.generateBackupSetDir(config.getRepository(), config.getWorkspace(), config.getBackupDir() .getPath(), startTime); - PrivilegedFileHelper.mkdirs(dir); + dir.mkdirs(); config.setBackupDir(dir); BackupChain bchain = @@ -831,16 +827,16 @@ public void start() this.workspaceBackupStopper.start(); this.repositoryBackupStopper.start(); - if (!PrivilegedFileHelper.exists(tempDir)) + if (!tempDir.exists()) { throw new IllegalStateException("Directory " + tempDir.getAbsolutePath() + " not found. Please create it."); } //remove if exists all old jcrrestorewi*.tmp files. - File[] files = PrivilegedFileHelper.listFiles(tempDir, new JcrRestoreWiFilter()); + File[] files = tempDir.listFiles(new JcrRestoreWiFilter()); for (int i = 0; i < files.length; i++) { - PrivilegedFileHelper.delete(files[i]); + files[i].delete(); } // start all scheduled before tasks @@ -964,13 +960,7 @@ private void incrementalRestore(String pathBackupFile, String repositoryName, St private void writeParamsToRegistryService(SessionProvider sessionProvider) throws IOException, SAXException, ParserConfigurationException, RepositoryException { - Document doc = SecurityHelper.doPrivilegedParserConfigurationAction(new PrivilegedExceptionAction() - { - public Document run() throws Exception - { - return DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); - } - }); + Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); Element root = doc.createElement(SERVICE_NAME); doc.appendChild(root); @@ -1091,9 +1081,9 @@ private void checkParams() } logsDirectory = new File(backupDir); - if (!PrivilegedFileHelper.exists(logsDirectory)) + if (!logsDirectory.exists()) { - if (!PrivilegedFileHelper.mkdirs(logsDirectory)) + if (!logsDirectory.mkdirs()) { throw new IllegalStateException("Could not create the backup directory at " + logsDirectory.getAbsolutePath()); @@ -1488,7 +1478,7 @@ public RepositoryBackupChain startBackup(RepositoryBackupConfig config) throws B File dir = new File(config.getBackupDir() + File.separator + "repository_" + config.getRepository() + "_backup_" + System.currentTimeMillis()); - PrivilegedFileHelper.mkdirs(dir); + dir.mkdirs(); config.setBackupDir(dir); RepositoryBackupChain repositoryBackupChain = @@ -1956,7 +1946,7 @@ public void restoreWorkspace(String workspaceBackupIdentifier, boolean asynchron public void restoreExistingRepository(File repositoryBackupSetDir, boolean asynchronous) throws BackupOperationException, BackupConfigurationException { - File[] cfs = PrivilegedFileHelper.listFiles(repositoryBackupSetDir, new RepositoryBackupLogsFilter()); + File[] cfs = repositoryBackupSetDir.listFiles(new RepositoryBackupLogsFilter()); if (cfs.length == 0) { @@ -1981,7 +1971,7 @@ public void restoreExistingRepository(File repositoryBackupSetDir, boolean async public void restoreExistingWorkspace(File workspaceBackupSetDir, boolean asynchronous) throws BackupOperationException, BackupConfigurationException { - File[] cfs = PrivilegedFileHelper.listFiles(workspaceBackupSetDir, new BackupLogsFilter()); + File[] cfs = workspaceBackupSetDir.listFiles(new BackupLogsFilter()); if (cfs.length == 0) { @@ -2007,7 +1997,7 @@ public void restoreExistingWorkspace(File workspaceBackupSetDir, boolean asynchr public void restoreRepository(File repositoryBackupSetDir, boolean asynchronous) throws BackupOperationException, BackupConfigurationException { - File[] cfs = PrivilegedFileHelper.listFiles(repositoryBackupSetDir, new RepositoryBackupLogsFilter()); + File[] cfs = repositoryBackupSetDir.listFiles(new RepositoryBackupLogsFilter()); if (cfs.length == 0) { @@ -2045,7 +2035,7 @@ public void restoreRepository(File repositoryBackupSetDir, boolean asynchronous) public void restoreWorkspace(File workspaceBackupSetDir, boolean asynchronous) throws BackupOperationException, BackupConfigurationException { - File[] cfs = PrivilegedFileHelper.listFiles(workspaceBackupSetDir, new BackupLogsFilter()); + File[] cfs = workspaceBackupSetDir.listFiles(new BackupLogsFilter()); if (cfs.length == 0) { diff --git a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/FileNameProducer.java b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/FileNameProducer.java index c4df58425a..982a5c195b 100644 --- a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/FileNameProducer.java +++ b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/FileNameProducer.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.ext.backup.impl; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; @@ -91,9 +90,9 @@ public FileNameProducer(String backupSetName, String backupDir, Calendar timeSta this.backupSetDir = new File(backupDir); - if (!PrivilegedFileHelper.exists(backupSetDir)) + if (!backupSetDir.exists()) { - PrivilegedFileHelper.mkdirs(backupSetDir); + backupSetDir.mkdirs(); } } @@ -104,9 +103,9 @@ public static File generateBackupSetDir(String repositoryName, String workspaceN String sTime = "-" + fileNameProducer.getStrDate(timeStamp) + "_" + fileNameProducer.getStrTime(timeStamp); File fBackupSetDir = new File(backupDir + File.separator + repositoryName + "_" + workspaceName + sTime); - if (!PrivilegedFileHelper.exists(fBackupSetDir)) + if (!fBackupSetDir.exists()) { - PrivilegedFileHelper.mkdirs(fBackupSetDir); + fBackupSetDir.mkdirs(); } else { @@ -116,7 +115,7 @@ public static File generateBackupSetDir(String repositoryName, String workspaceN fBackupSetDir = new File(backupDir + File.separator + repositoryName + "_" + workspaceName + sTime + "_" + i++); } - while (PrivilegedFileHelper.exists(fBackupSetDir)); + while (fBackupSetDir.exists()); } return fBackupSetDir; @@ -188,14 +187,14 @@ public File getNextFile() nextFile = new File(backupSetDir.getAbsoluteFile() + File.separator + sNextName); if (isFullBackup && isDirectoryForFullBackup) { - if (!PrivilegedFileHelper.exists(nextFile)) + if (!nextFile.exists()) { - PrivilegedFileHelper.mkdirs(nextFile); + nextFile.mkdirs(); } } else { - PrivilegedFileHelper.createNewFile(nextFile); + nextFile.createNewFile(); } } catch (IOException e) @@ -234,7 +233,7 @@ private String generateName() private String getNextSufix() { - String[] fileList = PrivilegedFileHelper.list(backupSetDir, new SkipBackupLogFilter()); + String[] fileList = backupSetDir.list(new SkipBackupLogFilter()); int sufix = 0; diff --git a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/IndexCleanHelper.java b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/IndexCleanHelper.java index e517078534..a90551db41 100644 --- a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/IndexCleanHelper.java +++ b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/IndexCleanHelper.java @@ -16,7 +16,6 @@ */ package org.exoplatform.services.jcr.ext.backup.impl; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.services.jcr.config.QueryHandlerParams; import org.exoplatform.services.jcr.config.RepositoryConfigurationException; import org.exoplatform.services.jcr.config.WorkspaceEntry; @@ -51,7 +50,7 @@ public void removeWorkspaceIndex(WorkspaceEntry wsConfig, boolean isSystem) thro String indexDirName = wsConfig.getQueryHandler().getParameterValue(QueryHandlerParams.PARAM_INDEX_DIR); File indexDir = new File(indexDirName); - if (PrivilegedFileHelper.exists(indexDir)) + if (indexDir.exists()) { removeFolder(indexDir); } @@ -59,7 +58,7 @@ public void removeWorkspaceIndex(WorkspaceEntry wsConfig, boolean isSystem) thro if (isSystem) { File systemIndexDir = new File(indexDirName + "_" + SystemSearchManager.INDEX_DIR_SUFFIX); - if (PrivilegedFileHelper.exists(systemIndexDir)) + if (systemIndexDir.exists()) { removeFolder(systemIndexDir); } @@ -71,23 +70,23 @@ public void removeWorkspaceIndex(WorkspaceEntry wsConfig, boolean isSystem) thro */ private void removeFolder(File dir) throws IOException { - if (PrivilegedFileHelper.isDirectory(dir)) + if (dir.isDirectory()) { - for (File subFile : PrivilegedFileHelper.listFiles(dir)) + for (File subFile : dir.listFiles()) { removeFolder(subFile); } - if (!PrivilegedFileHelper.delete(dir)) + if (!dir.delete()) { - throw new IOException("Index folder was not deleted : " + PrivilegedFileHelper.getCanonicalPath(dir)); + throw new IOException("Index folder was not deleted : " + dir.getCanonicalPath()); } } else { - if (!PrivilegedFileHelper.delete(dir)) + if (!dir.delete()) { - throw new IOException("Index file was not deleted : " + PrivilegedFileHelper.getCanonicalPath(dir)); + throw new IOException("Index file was not deleted : " + dir.getCanonicalPath()); } } } diff --git a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistingRepositorySameConfigRestore.java b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistingRepositorySameConfigRestore.java index 44c536ed32..679a86e3f3 100644 --- a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistingRepositorySameConfigRestore.java +++ b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistingRepositorySameConfigRestore.java @@ -16,7 +16,6 @@ */ package org.exoplatform.services.jcr.ext.backup.impl; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.jcr.RepositoryService; import org.exoplatform.services.jcr.config.RepositoryEntry; import org.exoplatform.services.jcr.config.WorkspaceEntry; @@ -40,7 +39,6 @@ import org.exoplatform.services.jcr.impl.util.jdbc.DBInitializerHelper; import java.io.File; -import java.security.PrivilegedExceptionAction; import java.sql.Connection; import java.util.ArrayList; import java.util.List; @@ -114,14 +112,7 @@ protected void restoreRepository() throws RepositoryRestoreExeption throw new NameNotFoundException("Data source " + dsName + " not found"); } - jdbcConn = SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction() - { - public Connection run() throws Exception - { - return ds.getConnection(); - - } - }); + jdbcConn = ds.getConnection(); jdbcConn.setAutoCommit(false); if (dbType == DatabaseStructureType.SINGLE) diff --git a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/PendingChangesLog.java b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/PendingChangesLog.java index 7f81a75bd6..28a13e94a1 100644 --- a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/PendingChangesLog.java +++ b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/PendingChangesLog.java @@ -18,8 +18,6 @@ */ package org.exoplatform.services.jcr.ext.backup.impl; -import org.exoplatform.commons.utils.PrivilegedFileHelper; -import org.exoplatform.commons.utils.PrivilegedSystemHelper; import org.exoplatform.services.jcr.dataflow.ItemState; import org.exoplatform.services.jcr.dataflow.TransactionChangesLog; import org.exoplatform.services.jcr.dataflow.persistent.PersistedPropertyData; @@ -158,7 +156,7 @@ public PendingChangesLog(TransactionChangesLog itemDataChangesLog, FileCleaner f listFile = new ArrayList(); identifier = IdGenerator.generate(); this.fileCleaner = fileCleaner; - this.tempDir = new File(PrivilegedSystemHelper.getProperty("java.io.tmpdir")); + this.tempDir = new File(System.getProperty("java.io.tmpdir")); } /** @@ -186,7 +184,7 @@ public PendingChangesLog(TransactionChangesLog itemDataChangesLog, String identi this.identifier = identifier; containerType = type; this.fileCleaner = fileCleaner; - this.tempDir = new File(PrivilegedSystemHelper.getProperty("java.io.tmpdir")); + this.tempDir = new File(System.getProperty("java.io.tmpdir")); } /** @@ -201,7 +199,7 @@ public PendingChangesLog(String identifier, int dataLength) { this.identifier = identifier; data = new byte[dataLength]; - this.tempDir = new File(PrivilegedSystemHelper.getProperty("java.io.tmpdir")); + this.tempDir = new File(System.getProperty("java.io.tmpdir")); } /** @@ -223,7 +221,7 @@ public PendingChangesLog(TransactionChangesLog transactionChangesLog, List 0) diff --git a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/FullBackupJob.java b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/FullBackupJob.java index 0d295d6eec..ebc807f836 100644 --- a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/FullBackupJob.java +++ b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/FullBackupJob.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.ext.backup.impl.rdbms; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.services.jcr.core.ManageableRepository; import org.exoplatform.services.jcr.ext.backup.BackupConfig; import org.exoplatform.services.jcr.ext.backup.impl.AbstractFullBackupJob; @@ -56,9 +55,9 @@ protected URL createStorage() throws FileNotFoundException, IOException { FileNameProducer fnp = new FileNameProducer(config.getRepository(), config.getWorkspace(), - PrivilegedFileHelper.getAbsolutePath(config.getBackupDir()), super.timeStamp, true, true); + config.getBackupDir().getAbsolutePath(), super.timeStamp, true, true); - return new URL("file:" + PrivilegedFileHelper.getAbsolutePath(fnp.getNextFile())); + return new URL("file:" + fnp.getNextFile().getAbsolutePath()); } /** @@ -141,4 +140,4 @@ public void stop() { LOG.info("Stop requested " + getStorageURL().getPath()); } -} \ No newline at end of file +} diff --git a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/server/HTTPBackupAgent.java b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/server/HTTPBackupAgent.java index 1b7e760318..80164e4b8b 100644 --- a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/server/HTTPBackupAgent.java +++ b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/server/HTTPBackupAgent.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.ext.backup.server; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.services.jcr.RepositoryService; import org.exoplatform.services.jcr.config.RepositoryConfigurationException; import org.exoplatform.services.jcr.config.RepositoryEntry; @@ -360,9 +359,9 @@ public Response start(BackupConfigBean bConfigBean, @PathParam("repo") String re else { backupDir = new File(bConfigBean.getBackupDir()); - if (!PrivilegedFileHelper.exists(backupDir)) + if (!backupDir.exists()) throw new BackupDirNotFoundException("The backup folder not exists : " - + PrivilegedFileHelper.getAbsolutePath(backupDir)); + + backupDir.getAbsolutePath()); } BackupConfig config = new BackupConfig(); @@ -491,9 +490,9 @@ public Response startBackupRepository(BackupConfigBean bConfigBean, @PathParam(" else { backupDir = new File(bConfigBean.getBackupDir()); - if (!PrivilegedFileHelper.exists(backupDir)) + if (!backupDir.exists()) throw new BackupDirNotFoundException("The backup folder not exists : " - + PrivilegedFileHelper.getAbsolutePath(backupDir)); + + backupDir.getAbsolutePath()); } RepositoryBackupConfig config = new RepositoryBackupConfig(); @@ -965,7 +964,7 @@ public Response restoreBackupSet(WorkspaceEntry wEntry, @PathParam("repo") Strin throw new RestoreConfigurationException("Backup set directory is not directory :" + backupSetPath); } - File[] cfs = PrivilegedFileHelper.listFiles(backupSetDir, new BackupLogsFilter()); + File[] cfs = backupSetDir.listFiles(new BackupLogsFilter()); if (cfs.length == 0) { @@ -1301,8 +1300,8 @@ public Response restoreFromBackupSet(@QueryParam("backup-set-path") String backu throw new RestoreConfigurationException("Backup set directory is not directory :" + backupSetPath); } - File[] cfsw = PrivilegedFileHelper.listFiles(backupSetDir, new BackupLogsFilter()); - File[] cfsr = PrivilegedFileHelper.listFiles(backupSetDir, new RepositoryBackupLogsFilter()); + File[] cfsw = backupSetDir.listFiles(new BackupLogsFilter()); + File[] cfsr = backupSetDir.listFiles(new RepositoryBackupLogsFilter()); if (cfsw.length == 0 && cfsr.length == 0) { @@ -1842,7 +1841,7 @@ public Response restoreRepositoryBackupSet(RepositoryEntry rEntry, throw new RestoreConfigurationException("Backup set directory is not directory :" + backupSetPath); } - File[] cfs = PrivilegedFileHelper.listFiles(backupSetDir, new RepositoryBackupLogsFilter()); + File[] cfs = backupSetDir.listFiles(new RepositoryBackupLogsFilter()); if (cfs.length == 0) { @@ -2208,7 +2207,7 @@ public Response info() { BackupServiceInfoBean infoBeen = new BackupServiceInfoBean(backupManager.getFullBackupType(), backupManager.getIncrementalBackupType(), - PrivilegedFileHelper.getAbsolutePath(backupManager.getBackupDirectory()), + backupManager.getBackupDirectory().getAbsolutePath(), backupManager.getDefaultIncrementalJobPeriod()); return Response.ok(infoBeen).cacheControl(noCache).build(); @@ -3323,7 +3322,7 @@ public boolean accept(File dir, String name) } }; - File[] files = PrivilegedFileHelper.listFiles(backupManager.getBackupDirectory(), backupLogsFilter); + File[] files = backupManager.getBackupDirectory().listFiles(backupLogsFilter); if (files.length != 0) for (File f : files) @@ -3351,7 +3350,7 @@ public boolean accept(File dir, String name) } }; - File[] files = PrivilegedFileHelper.listFiles(backupManager.getBackupDirectory(), backupLogsFilter); + File[] files = backupManager.getBackupDirectory().listFiles(backupLogsFilter); if (files.length != 0) for (File f : files) diff --git a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/server/bean/BackupConfigBean.java b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/server/bean/BackupConfigBean.java index feef1d2236..375d0dc6d0 100644 --- a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/server/bean/BackupConfigBean.java +++ b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/server/bean/BackupConfigBean.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.ext.backup.server.bean; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.services.jcr.ext.backup.BackupConfig; import org.exoplatform.services.jcr.ext.backup.RepositoryBackupConfig; import org.exoplatform.services.jcr.ext.backup.server.bean.response.BackupJobConfig; @@ -132,7 +131,7 @@ public BackupConfigBean(Integer backupType, String backupDir, Long incrementalJo */ public BackupConfigBean(BackupConfig config) { - this(config.getBackupType(), PrivilegedFileHelper.getAbsolutePath(config.getBackupDir()), config + this(config.getBackupType(), config.getBackupDir().getAbsolutePath(), config .getIncrementalJobPeriod()); this.incrementalRepetitionNumber = config.getIncrementalJobNumber(); } @@ -145,7 +144,7 @@ public BackupConfigBean(BackupConfig config) */ public BackupConfigBean(RepositoryBackupConfig config) { - this(config.getBackupType(), PrivilegedFileHelper.getAbsolutePath(config.getBackupDir()), config + this(config.getBackupType(), config.getBackupDir().getAbsolutePath(), config .getIncrementalJobPeriod()); this.incrementalRepetitionNumber = config.getIncrementalJobNumber(); } diff --git a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/registry/RESTRegistryService.java b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/registry/RESTRegistryService.java index eed90bf689..df002312e0 100644 --- a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/registry/RESTRegistryService.java +++ b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/registry/RESTRegistryService.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.ext.registry; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.jcr.ext.app.SessionProviderService; import org.exoplatform.services.jcr.ext.common.SessionProvider; import org.exoplatform.services.jcr.ext.registry.Registry.RegistryNode; @@ -33,7 +32,6 @@ import java.io.IOException; import java.io.InputStream; import java.net.URI; -import java.security.PrivilegedExceptionAction; import javax.jcr.Node; import javax.jcr.NodeIterator; @@ -124,13 +122,7 @@ public Response getRegistry(@Context UriInfo uriInfo) { Node registryNode = registryEntry.getNode(); NodeIterator registryIterator = registryNode.getNodes(); - Document entry = SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public Document run() throws Exception - { - return DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); - } - }); + Document entry = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); String fullURI = uriInfo.getRequestUri().toString(); XlinkHref xlinkHref = new XlinkHref(fullURI); diff --git a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/registry/RegistryEntry.java b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/registry/RegistryEntry.java index a97eb85288..4e52e2dca1 100644 --- a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/registry/RegistryEntry.java +++ b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/registry/RegistryEntry.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.ext.registry; -import org.exoplatform.commons.utils.SecurityHelper; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.SAXException; @@ -27,8 +26,6 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; @@ -73,14 +70,7 @@ public RegistryEntry(Document dom) */ public RegistryEntry(String rootName) throws IOException, SAXException, ParserConfigurationException { - DocumentBuilder db = - SecurityHelper.doPrivilegedParserConfigurationAction(new PrivilegedExceptionAction() - { - public DocumentBuilder run() throws Exception - { - return DocumentBuilderFactory.newInstance().newDocumentBuilder(); - } - }); + DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); this.document = db.newDocument(); Element nodeElement = document.createElement(rootName); document.appendChild(nodeElement); @@ -97,41 +87,9 @@ public DocumentBuilder run() throws Exception */ public static RegistryEntry parse(final byte[] bytes) throws IOException, SAXException, ParserConfigurationException { - try - { - return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public RegistryEntry run() throws Exception - { - return new RegistryEntry(DocumentBuilderFactory.newInstance().newDocumentBuilder() - .parse(new ByteArrayInputStream(bytes))); - } - }); - } - catch (PrivilegedActionException pae) - { - Throwable cause = pae.getCause(); - if (cause instanceof ParserConfigurationException) - { - throw (ParserConfigurationException)cause; - } - else if (cause instanceof IOException) - { - throw (IOException)cause; - } - else if (cause instanceof SAXException) - { - throw (SAXException)cause; - } - else if (cause instanceof RuntimeException) - { - throw (RuntimeException)cause; - } - else - { - throw new RuntimeException(cause); - } - } + return new RegistryEntry(DocumentBuilderFactory.newInstance().newDocumentBuilder() + .parse(new ByteArrayInputStream(bytes))); + } /** @@ -145,40 +103,7 @@ else if (cause instanceof RuntimeException) public static RegistryEntry parse(final InputStream in) throws IOException, SAXException, ParserConfigurationException { - try - { - return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public RegistryEntry run() throws Exception - { - return new RegistryEntry(DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in)); - } - }); - } - catch (PrivilegedActionException pae) - { - Throwable cause = pae.getCause(); - if (cause instanceof ParserConfigurationException) - { - throw (ParserConfigurationException)cause; - } - else if (cause instanceof IOException) - { - throw (IOException)cause; - } - else if (cause instanceof SAXException) - { - throw (SAXException)cause; - } - else if (cause instanceof RuntimeException) - { - throw (RuntimeException)cause; - } - else - { - throw new RuntimeException(cause); - } - } + return new RegistryEntry(DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in)); } /** diff --git a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/registry/RegistryService.java b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/registry/RegistryService.java index 939a183fc8..2f4444cdb9 100644 --- a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/registry/RegistryService.java +++ b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/registry/RegistryService.java @@ -20,7 +20,6 @@ import static javax.jcr.ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.container.component.ComponentPlugin; import org.exoplatform.container.xml.InitParams; import org.exoplatform.container.xml.PropertiesParam; @@ -43,9 +42,6 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; -import java.security.PrivilegedAction; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -374,13 +370,7 @@ public void start() wsName = repConfiguration.getDefaultWorkspaceName(); } addRegistryLocation(repName, wsName); - InputStream xml = SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public InputStream run() - { - return getClass().getResourceAsStream(NT_FILE); - } - }); + InputStream xml = getClass().getResourceAsStream(NT_FILE); try { @@ -467,46 +457,14 @@ public void initStorage(boolean replace) throws RepositoryConfigurationException final String xml = appConfigurations.get(appName); try { - SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public Void run() throws Exception - { - DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - ByteArrayInputStream stream = new ByteArrayInputStream(xml.getBytes()); - Document document = builder.parse(stream); - RegistryEntry entry = new RegistryEntry(document); - sysSession.importXML(fullPath, entry.getAsInputStream(), IMPORT_UUID_CREATE_NEW); - return null; - } - }); - } - catch (PrivilegedActionException pae) - { - Throwable cause = pae.getCause(); - if (cause instanceof ParserConfigurationException) - { - LOG.error(cause.getLocalizedMessage(), cause); - } - else if (cause instanceof IOException) - { - LOG.error(cause.getLocalizedMessage(), cause); - } - else if (cause instanceof SAXException) - { - LOG.error(cause.getLocalizedMessage(), cause); - } - else if (cause instanceof TransformerException) - { - LOG.error(cause.getLocalizedMessage(), cause); - } - else if (cause instanceof RuntimeException) - { - throw (RuntimeException)cause; - } - else - { - throw new RuntimeException(cause); - } + DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); + ByteArrayInputStream stream = new ByteArrayInputStream(xml.getBytes()); + Document document = builder.parse(stream); + RegistryEntry entry = new RegistryEntry(document); + sysSession.importXML(fullPath, entry.getAsInputStream(), IMPORT_UUID_CREATE_NEW); + + } catch (SAXException | TransformerException | IOException | ParserConfigurationException e) { + LOG.error(e.getLocalizedMessage(), e); } } sysSession.save(); diff --git a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/repository/creation/RepositoryCreationServiceImpl.java b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/repository/creation/RepositoryCreationServiceImpl.java index 0470c5e9a9..c8615a7ff8 100644 --- a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/repository/creation/RepositoryCreationServiceImpl.java +++ b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/repository/creation/RepositoryCreationServiceImpl.java @@ -16,7 +16,6 @@ */ package org.exoplatform.services.jcr.ext.repository.creation; -import org.exoplatform.commons.utils.PrivilegedFileHelper; import org.exoplatform.container.ExoContainerContext; import org.exoplatform.container.configuration.ConfigurationException; import org.exoplatform.container.configuration.ConfigurationManager; @@ -279,7 +278,7 @@ public Serializable execute(Serializable[] args) throws Throwable { String repositoryName = (String)args[0]; - return new Boolean(repositoryService.canRemoveRepository(repositoryName)); + return repositoryService.canRemoveRepository(repositoryName); } }); } @@ -600,7 +599,7 @@ protected void createRepositoryLocally(String backupId, RepositoryEntry rEntry, } File backLog = new File(backupChain.getLogFilePath()); - if (backLog != null && PrivilegedFileHelper.exists(backLog)) + if (backLog != null && backLog.exists()) { try { @@ -622,7 +621,7 @@ protected void createRepositoryLocally(String backupId, RepositoryEntry rEntry, else { throw new RepositoryCreationException("Backup log file by id " + backupId - + (backLog != null ? (" and file path=" + PrivilegedFileHelper.getAbsolutePath(backLog)) : "") + + (backLog != null ? (" and file path=" + backLog.getAbsolutePath()) : "") + " do not exists."); } } @@ -824,7 +823,7 @@ else if (result instanceof Boolean) } } - List results = rpcService.executeCommandOnAllNodes(removeRepository, true, repositoryName, new Boolean(forceRemove)); + List results = rpcService.executeCommandOnAllNodes(removeRepository, true, repositoryName, forceRemove); for (Object result : results) { if (result != null) diff --git a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/resource/UnifiedNodeReference.java b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/resource/UnifiedNodeReference.java index 206be7a992..69aa5bc113 100644 --- a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/resource/UnifiedNodeReference.java +++ b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/resource/UnifiedNodeReference.java @@ -19,7 +19,6 @@ package org.exoplatform.services.jcr.ext.resource; import org.exoplatform.commons.utils.ClassLoading; -import org.exoplatform.commons.utils.PrivilegedSystemHelper; import org.exoplatform.services.jcr.datamodel.Identifier; import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; @@ -258,7 +257,7 @@ public static URLStreamHandler getURLStreamHandler() // Usually this job must be done by java.net.URL, but it does // not work in web container. Under tomcat class of handler can't be found in // $CATALINA_HOME/lib/*.jar. Probably the same problem can be under AS. - String packagePrefixList = PrivilegedSystemHelper.getProperty("java.protocol.handler.pkgs"); + String packagePrefixList = System.getProperty("java.protocol.handler.pkgs"); if (packagePrefixList == null) return null; diff --git a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/resource/jcr/Handler.java b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/resource/jcr/Handler.java index e3ed35399a..077f2800d8 100644 --- a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/resource/jcr/Handler.java +++ b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/resource/jcr/Handler.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.jcr.ext.resource.jcr; -import org.exoplatform.commons.utils.PrivilegedSystemHelper; import org.exoplatform.container.ExoContainer; import org.exoplatform.container.ExoContainerContext; import org.exoplatform.services.jcr.RepositoryService; @@ -172,11 +171,11 @@ protected URLConnection openConnection(URL url) throws IOException */ public void start() { - String existingProtocolPathPkgs = PrivilegedSystemHelper.getProperty("java.protocol.handler.pkgs"); + String existingProtocolPathPkgs = System.getProperty("java.protocol.handler.pkgs"); if (existingProtocolPathPkgs == null) - PrivilegedSystemHelper.setProperty("java.protocol.handler.pkgs", protocolPathPkg); + System.setProperty("java.protocol.handler.pkgs", protocolPathPkg); else if (existingProtocolPathPkgs.indexOf(protocolPathPkg) == -1) - PrivilegedSystemHelper.setProperty("java.protocol.handler.pkgs", existingProtocolPathPkgs + "|" + System.setProperty("java.protocol.handler.pkgs", existingProtocolPathPkgs + "|" + protocolPathPkg); } diff --git a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/GroovyScript2RestLoader.java b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/GroovyScript2RestLoader.java index 046e4733bc..ad5e383cf4 100644 --- a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/GroovyScript2RestLoader.java +++ b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/GroovyScript2RestLoader.java @@ -23,8 +23,6 @@ import java.net.MalformedURLException; import java.net.URI; import java.net.URL; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; @@ -66,7 +64,6 @@ import org.w3c.dom.Element; import org.xml.sax.SAXException; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.container.component.ComponentPlugin; import org.exoplatform.container.configuration.ConfigurationManager; import org.exoplatform.container.xml.InitParams; @@ -617,20 +614,8 @@ protected void writeParamsToRegistryService(SessionProvider sessionProvider) thr } Document doc; - try - { - doc = SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public Document run() throws ParserConfigurationException - { - return DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); - } - }); - } - catch (PrivilegedActionException e) - { - throw (ParserConfigurationException)e.getCause(); - } + + doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); Element root = doc.createElement(SERVICE_NAME); doc.appendChild(root); diff --git a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/GroovyScriptAddRepoPlugin.java b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/GroovyScriptAddRepoPlugin.java index 95062fcdbf..171053a646 100644 --- a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/GroovyScriptAddRepoPlugin.java +++ b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/GroovyScriptAddRepoPlugin.java @@ -19,7 +19,6 @@ package org.exoplatform.services.jcr.ext.script.groovy; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.container.component.BaseComponentPlugin; import org.exoplatform.container.xml.InitParams; import org.exoplatform.container.xml.PropertiesParam; @@ -30,8 +29,6 @@ import java.net.MalformedURLException; import java.net.URL; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; import java.util.Collection; import java.util.Collections; import java.util.HashSet; @@ -76,19 +73,12 @@ public Collection getRepositories() final String path = p.getProperty("path"); try { - SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public Void run() throws MalformedURLException - { - repos.add(new UnifiedNodeReference(repository, workspace, path).getURL()); - return null; - } - }); + repos.add(new UnifiedNodeReference(repository, workspace, path).getURL()); + } - catch (PrivilegedActionException e) + catch (MalformedURLException e) { - // MalformedURLException - LOG.error("Failed add groovy script repository. " + e.getCause().getMessage()); + LOG.error("Failed add groovy script repository. " + e.getMessage()); } } return repos; diff --git a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/JcrGroovyClassLoaderProvider.java b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/JcrGroovyClassLoaderProvider.java index b60f5fe07e..74dc671729 100644 --- a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/JcrGroovyClassLoaderProvider.java +++ b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/JcrGroovyClassLoaderProvider.java @@ -30,7 +30,6 @@ import org.codehaus.groovy.control.SourceUnit; import org.codehaus.groovy.control.io.ReaderSource; import org.codehaus.groovy.control.io.URLReaderSource; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.rest.ext.groovy.ExtendedGroovyClassLoader; import org.exoplatform.services.rest.ext.groovy.GroovyClassLoaderProvider; import org.exoplatform.services.rest.ext.groovy.SourceFile; @@ -41,7 +40,6 @@ import java.net.MalformedURLException; import java.net.URL; import java.security.CodeSource; -import java.security.PrivilegedAction; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -231,12 +229,7 @@ public URL loadGroovySource(String filename) throws MalformedURLException public JcrGroovyClassLoaderProvider() { - super(SecurityHelper.doPrivilegedAction(new PrivilegedAction() { - public JcrGroovyClassLoader run() - { - return new JcrGroovyClassLoader(JcrGroovyClassLoaderProvider.class.getClassLoader()); - } - })); + super(new JcrGroovyClassLoader(JcrGroovyClassLoaderProvider.class.getClassLoader())); } /** @@ -252,13 +245,8 @@ public ExtendedGroovyClassLoader getGroovyClassLoader(SourceFolder[] sources) th roots[i] = sources[i].getPath(); final GroovyClassLoader parent = getGroovyClassLoader(); - JcrGroovyClassLoader classLoader = SecurityHelper.doPrivilegedAction(new PrivilegedAction() { - public JcrGroovyClassLoader run() - { - return new JcrGroovyClassLoader(parent); - } - }); + JcrGroovyClassLoader classLoader = new JcrGroovyClassLoader(parent); classLoader.setResourceLoader(new JcrGroovyResourceLoader(roots)); return classLoader; } -} \ No newline at end of file +} diff --git a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/JcrGroovyCompiler.java b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/JcrGroovyCompiler.java index 031925071c..4544745104 100644 --- a/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/JcrGroovyCompiler.java +++ b/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/JcrGroovyCompiler.java @@ -19,7 +19,6 @@ package org.exoplatform.services.jcr.ext.script.groovy; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.jcr.ext.resource.UnifiedNodeReference; import org.exoplatform.services.jcr.ext.script.groovy.JcrGroovyClassLoaderProvider.JcrGroovyClassLoader; import org.exoplatform.services.log.ExoLogger; @@ -31,9 +30,6 @@ import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; -import java.security.PrivilegedAction; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -166,13 +162,7 @@ public Class[] compile(SourceFile[] files) throws IOException @SuppressWarnings("rawtypes") private Class[] doCompile(final JcrGroovyClassLoader cl, final SourceFile[] files) throws IOException { - Class[] classes = SecurityHelper.doPrivilegedAction(new PrivilegedAction() { - public Class[] run() - { - return cl.parseClasses(files); - } - }); - return classes; + return cl.parseClasses(files); } /** @@ -188,21 +178,8 @@ public Class[] run() */ public URL[] getDependencies(final SourceFolder[] sources, final SourceFile[] files) throws IOException { - try - { - return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() { - public URL[] run() throws IOException - { - return ((JcrGroovyClassLoader)classLoaderProvider.getGroovyClassLoader()).findDependencies(sources, - files); - } - }); - } - catch (PrivilegedActionException e) - { - Throwable cause = e.getCause(); - throw (IOException)cause; - } + return ((JcrGroovyClassLoader)classLoaderProvider.getGroovyClassLoader()).findDependencies(sources, + files); } /** diff --git a/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/TestJcrRestoreWiFilter.java b/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/TestJcrRestoreWiFilter.java index a4bc6b7730..7d29b40c59 100644 --- a/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/TestJcrRestoreWiFilter.java +++ b/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/TestJcrRestoreWiFilter.java @@ -18,8 +18,6 @@ import junit.framework.TestCase; -import org.exoplatform.commons.utils.PrivilegedFileHelper; -import org.exoplatform.commons.utils.PrivilegedSystemHelper; import org.exoplatform.services.jcr.ext.backup.impl.JcrRestoreWiFilter; import java.io.File; @@ -38,17 +36,17 @@ public class TestJcrRestoreWiFilter public void testListFiles() throws Exception { - File tempDir = new File(PrivilegedSystemHelper.getProperty("java.io.tmpdir") + File.separator + Math.random()); - PrivilegedFileHelper.mkdirs(tempDir); - PrivilegedFileHelper.deleteOnExit(tempDir); + File tempDir = new File(System.getProperty("java.io.tmpdir") + File.separator + Math.random()); + tempDir.mkdirs(); + tempDir.deleteOnExit(); for (int i = 0; i < 7; i++) { - File f = PrivilegedFileHelper.createTempFile("jcrrestorewi", ".tmp", tempDir); - PrivilegedFileHelper.deleteOnExit(f); + File f = File.createTempFile("jcrrestorewi", ".tmp", tempDir); + f.deleteOnExit(); } - File[] files = PrivilegedFileHelper.listFiles(tempDir, new JcrRestoreWiFilter()); + File[] files = tempDir.listFiles(new JcrRestoreWiFilter()); assertEquals(7, files.length); } diff --git a/exo.jcr.component.ext/src/test/resources/test.policy b/exo.jcr.component.ext/src/test/resources/test.policy deleted file mode 100644 index 071bdc9f4d..0000000000 --- a/exo.jcr.component.ext/src/test/resources/test.policy +++ /dev/null @@ -1,26 +0,0 @@ -grant codeBase "@MAVEN_REPO@-"{ - permission java.security.AllPermission; -}; - -grant codeBase "@MAIN_CLASSES@-"{ - permission java.security.AllPermission; -}; - -grant codeBase "@TEST_CLASSES@-"{ - permission java.lang.RuntimePermission "createSystemSession"; - permission java.lang.RuntimePermission "createDynamicSession"; - permission java.lang.RuntimePermission "manageRepository"; - permission java.lang.RuntimePermission "invokeInternalAPI"; - permission java.lang.RuntimePermission "accessRPCService"; - permission java.lang.RuntimePermission "backupRestoreOperations"; - permission java.lang.RuntimePermission "modifyConversationState"; - permission java.lang.RuntimePermission "setContextClassLoader"; - permission java.util.PropertyPermission "org.postgresql.forcebinary", "read"; - permission java.util.PropertyPermission "com.edb.forcebinary", "read"; -}; - -grant codeBase "@MAIN_CLASSES@../../../exo.jcr.component.core/-"{ - permission java.security.AllPermission; -}; - - diff --git a/exo.jcr.component.ftp/pom.xml b/exo.jcr.component.ftp/pom.xml index 11b4837563..f05c8838a1 100644 --- a/exo.jcr.component.ftp/pom.xml +++ b/exo.jcr.component.ftp/pom.xml @@ -52,12 +52,6 @@ - - maven-surefire-plugin - - @{argLine} ${env.MAVEN_OPTS} --add-opens=java.base/java.util=ALL-UNNAMED -Djava.security.manager=org.exoplatform.commons.test.TestSecurityManager -Djava.security.policy=${project.build.directory}/test-classes/test.policy - - org.apache.maven.plugins maven-jar-plugin diff --git a/exo.jcr.component.ftp/src/main/java/org/exoplatform/services/ftp/FtpServerImpl.java b/exo.jcr.component.ftp/src/main/java/org/exoplatform/services/ftp/FtpServerImpl.java index 9aa4c12d3c..7e5f417319 100644 --- a/exo.jcr.component.ftp/src/main/java/org/exoplatform/services/ftp/FtpServerImpl.java +++ b/exo.jcr.component.ftp/src/main/java/org/exoplatform/services/ftp/FtpServerImpl.java @@ -19,8 +19,6 @@ package org.exoplatform.services.ftp; import org.apache.commons.chain.Catalog; -import org.exoplatform.commons.utils.PrivilegedFileHelper; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.command.impl.CommandService; import org.exoplatform.services.ftp.client.FtpClientSession; import org.exoplatform.services.ftp.client.FtpClientSessionImpl; @@ -40,7 +38,6 @@ import java.net.ServerSocket; import java.net.Socket; import java.security.PrivilegedAction; -import java.security.PrivilegedExceptionAction; import java.util.ArrayList; import javax.jcr.RepositoryException; @@ -76,13 +73,7 @@ public FtpServerImpl(FtpConfig configuration, CommandService commandService, Rep this.configuration = configuration; this.repositoryService = repositoryService; - InputStream commandStream = SecurityHelper.doPrivilegedAction(new PrivilegedAction() - { - public InputStream run() - { - return getClass().getResourceAsStream(COMMAND_PATH); - } - }); + InputStream commandStream = getClass().getResourceAsStream(COMMAND_PATH); commandService.putCatalog(commandStream); commandCatalog = commandService.getCatalog(FtpConst.FTP_COMMAND_CATALOG); @@ -94,13 +85,13 @@ protected void prepareCache() File cacheFolder = new File(cacheFolderName); - if (!PrivilegedFileHelper.exists(cacheFolder)) + if (!cacheFolder.exists()) { LOG.info("Cache folder not exist. Try to create it..."); - PrivilegedFileHelper.mkdirs(cacheFolder); + cacheFolder.mkdirs(); } - String[] cacheFiles = PrivilegedFileHelper.list(cacheFolder); + String[] cacheFiles = cacheFolder.list(); if (cacheFiles == null) { LOG.info("No cache file in cache folder!"); @@ -112,7 +103,7 @@ protected void prepareCache() if (cacheFile.endsWith(FtpConst.FTP_CACHEFILEEXTENTION)) { File file = new File(cacheFolderName + "/" + cacheFile); - PrivilegedFileHelper.delete(file); + file.delete(); } } @@ -238,13 +229,7 @@ public void run() Socket incoming = null; try { - incoming = SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public Socket run() throws Exception - { - return serverSocket.accept(); - } - }); + incoming = serverSocket.accept(); FtpClientSession clientSession = new FtpClientSessionImpl(ftpServer, incoming); clients.add(clientSession); diff --git a/exo.jcr.component.ftp/src/main/java/org/exoplatform/services/ftp/data/FtpDataTransiverImpl.java b/exo.jcr.component.ftp/src/main/java/org/exoplatform/services/ftp/data/FtpDataTransiverImpl.java index 8e96cf2e96..fa74562f84 100644 --- a/exo.jcr.component.ftp/src/main/java/org/exoplatform/services/ftp/data/FtpDataTransiverImpl.java +++ b/exo.jcr.component.ftp/src/main/java/org/exoplatform/services/ftp/data/FtpDataTransiverImpl.java @@ -18,7 +18,6 @@ */ package org.exoplatform.services.ftp.data; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.services.ftp.client.FtpClientSession; import org.exoplatform.services.ftp.config.FtpConfig; import org.exoplatform.services.log.ExoLogger; @@ -31,7 +30,6 @@ import java.net.ServerSocket; import java.net.Socket; import java.net.SocketAddress; -import java.security.PrivilegedExceptionAction; /** * Created by The eXo Platform SAS Author : Vitaly Guly gavrik-vetal@ukr.net/mail.ru @@ -222,13 +220,7 @@ public void run() { try { - dataSocket = SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction() - { - public Socket run() throws Exception - { - return serverSocket.accept(); - } - }); + dataSocket = serverSocket.accept(); serverSocket.close(); } diff --git a/exo.jcr.component.ftp/src/test/resources/test.policy b/exo.jcr.component.ftp/src/test/resources/test.policy deleted file mode 100644 index 9578bd93e5..0000000000 --- a/exo.jcr.component.ftp/src/test/resources/test.policy +++ /dev/null @@ -1,24 +0,0 @@ -grant codeBase "@MAVEN_REPO@-"{ - permission java.security.AllPermission; -}; - -grant codeBase "@MAIN_CLASSES@-"{ - permission java.security.AllPermission; -}; - -grant codeBase "@TEST_CLASSES@-"{ - permission java.lang.RuntimePermission "createSystemSession"; - permission java.lang.RuntimePermission "manageRepository"; - permission java.lang.RuntimePermission "invokeInternalAPI"; - permission java.lang.RuntimePermission "modifyConversationState"; -}; - -grant codeBase "@MAIN_CLASSES@../../../exo.jcr.component.core/-"{ - permission java.security.AllPermission; -}; - -grant codeBase "@MAIN_CLASSES@../../../exo.jcr.component.ext/-"{ - permission java.security.AllPermission; -}; - - diff --git a/exo.jcr.component.webdav/pom.xml b/exo.jcr.component.webdav/pom.xml index 38cb4ddd33..3124277ff5 100644 --- a/exo.jcr.component.webdav/pom.xml +++ b/exo.jcr.component.webdav/pom.xml @@ -55,7 +55,6 @@ org.apache.maven.plugins maven-surefire-plugin - @{argLine} ${env.MAVEN_OPTS} --add-opens=java.base/java.util=ALL-UNNAMED -Djava.security.manager=org.exoplatform.commons.test.TestSecurityManager -Djava.security.policy=${project.build.directory}/test-classes/test.policy **/TestUtils.java **/OrderPatchTest.java diff --git a/exo.jcr.component.webdav/src/test/resources/test.policy b/exo.jcr.component.webdav/src/test/resources/test.policy deleted file mode 100644 index 9578bd93e5..0000000000 --- a/exo.jcr.component.webdav/src/test/resources/test.policy +++ /dev/null @@ -1,24 +0,0 @@ -grant codeBase "@MAVEN_REPO@-"{ - permission java.security.AllPermission; -}; - -grant codeBase "@MAIN_CLASSES@-"{ - permission java.security.AllPermission; -}; - -grant codeBase "@TEST_CLASSES@-"{ - permission java.lang.RuntimePermission "createSystemSession"; - permission java.lang.RuntimePermission "manageRepository"; - permission java.lang.RuntimePermission "invokeInternalAPI"; - permission java.lang.RuntimePermission "modifyConversationState"; -}; - -grant codeBase "@MAIN_CLASSES@../../../exo.jcr.component.core/-"{ - permission java.security.AllPermission; -}; - -grant codeBase "@MAIN_CLASSES@../../../exo.jcr.component.ext/-"{ - permission java.security.AllPermission; -}; - - diff --git a/exo.jcr.connectors.jca/src/main/java/org/exoplatform/connectors/jcr/impl/adapter/ManagedSessionFactory.java b/exo.jcr.connectors.jca/src/main/java/org/exoplatform/connectors/jcr/impl/adapter/ManagedSessionFactory.java index 68e406a1ca..24d8ee782c 100644 --- a/exo.jcr.connectors.jca/src/main/java/org/exoplatform/connectors/jcr/impl/adapter/ManagedSessionFactory.java +++ b/exo.jcr.connectors.jca/src/main/java/org/exoplatform/connectors/jcr/impl/adapter/ManagedSessionFactory.java @@ -18,7 +18,6 @@ */ package org.exoplatform.connectors.jcr.impl.adapter; -import org.exoplatform.commons.utils.SecurityHelper; import org.exoplatform.container.ExoContainer; import org.exoplatform.container.ExoContainerContext; import org.exoplatform.container.PortalContainer; @@ -31,7 +30,6 @@ import org.exoplatform.services.log.Log; import java.io.PrintWriter; -import java.security.PrivilegedAction; import java.util.Iterator; import java.util.Set; @@ -154,26 +152,20 @@ private Credentials getCredentials(final Subject subject, SessionRequestInfo sri CredentialsImpl credentials = null; if (subject != null) { - credentials = SecurityHelper.doPrivilegedAction(new PrivilegedAction() + Iterator i = subject.getPrivateCredentials().iterator(); + while (i.hasNext()) { - public CredentialsImpl run() + Object o = i.next(); + if (o instanceof PasswordCredential) { - Iterator i = subject.getPrivateCredentials().iterator(); - while (i.hasNext()) + PasswordCredential cred = (PasswordCredential)o; + if (cred.getManagedConnectionFactory().equals(ManagedSessionFactory.this)) { - Object o = i.next(); - if (o instanceof PasswordCredential) - { - PasswordCredential cred = (PasswordCredential)o; - if (cred.getManagedConnectionFactory().equals(ManagedSessionFactory.this)) - { - return new CredentialsImpl(cred.getUserName(), cred.getPassword()); - } - } + credentials = new CredentialsImpl(cred.getUserName(), cred.getPassword()); + break; } - return null; } - }); + } } if (credentials == null && sri.getUserName() != null) { diff --git a/exo.jcr.ext.services/pom.xml b/exo.jcr.ext.services/pom.xml index a1b739d3d2..5d12633843 100644 --- a/exo.jcr.ext.services/pom.xml +++ b/exo.jcr.ext.services/pom.xml @@ -41,7 +41,6 @@ 0.9.26 1.0 - @@ -88,7 +87,7 @@ maven-surefire-plugin - @{argLine} ${env.MAVEN_OPTS} --add-opens=java.base/java.util=ALL-UNNAMED -Djava.net.preferIPv4Stack=true -Djava.security.manager=org.exoplatform.commons.test.TestSecurityManager -Djava.security.policy=${project.build.directory}/test-classes/test.policy ${debug.opts} + @{argLine} @{surefire.argLine} -Djava.net.preferIPv4Stack=true diff --git a/exo.jcr.ext.services/src/test/resources/test.policy b/exo.jcr.ext.services/src/test/resources/test.policy deleted file mode 100644 index fdd21ac1be..0000000000 --- a/exo.jcr.ext.services/src/test/resources/test.policy +++ /dev/null @@ -1,26 +0,0 @@ -grant codeBase "@MAVEN_REPO@-"{ - permission java.security.AllPermission; -}; - -grant codeBase "@MAIN_CLASSES@-"{ - permission java.security.AllPermission; -}; - -grant codeBase "@TEST_CLASSES@-"{ - permission java.security.AllPermission; -}; - -grant codeBase "@TEST_CLASSES@org/exoplatform/services/jcr/ext/audit/-"{ - permission java.lang.RuntimePermission "createSystemSession"; - permission java.lang.RuntimePermission "manageRepository"; - permission java.lang.RuntimePermission "invokeInternalAPI"; - permission java.lang.RuntimePermission "manageListeners"; -}; - -grant codeBase "@MAIN_CLASSES@../../../exo.jcr.component.core/-"{ - permission java.security.AllPermission; -}; - -grant codeBase "@MAIN_CLASSES@../../../exo.jcr.component.ext/-"{ - permission java.security.AllPermission; -}; \ No newline at end of file diff --git a/exo.jcr.framework.command/pom.xml b/exo.jcr.framework.command/pom.xml index f4d3ba7edf..b5ae14467b 100644 --- a/exo.jcr.framework.command/pom.xml +++ b/exo.jcr.framework.command/pom.xml @@ -52,12 +52,6 @@ - - maven-surefire-plugin - - @{argLine} ${env.MAVEN_OPTS} --add-opens=java.base/java.util=ALL-UNNAMED -Djava.security.manager=org.exoplatform.commons.test.TestSecurityManager -Djava.security.policy=${project.build.directory}/test-classes/test.policy - - maven-antrun-plugin diff --git a/exo.jcr.framework.command/src/test/resources/test.policy b/exo.jcr.framework.command/src/test/resources/test.policy deleted file mode 100644 index 9578bd93e5..0000000000 --- a/exo.jcr.framework.command/src/test/resources/test.policy +++ /dev/null @@ -1,24 +0,0 @@ -grant codeBase "@MAVEN_REPO@-"{ - permission java.security.AllPermission; -}; - -grant codeBase "@MAIN_CLASSES@-"{ - permission java.security.AllPermission; -}; - -grant codeBase "@TEST_CLASSES@-"{ - permission java.lang.RuntimePermission "createSystemSession"; - permission java.lang.RuntimePermission "manageRepository"; - permission java.lang.RuntimePermission "invokeInternalAPI"; - permission java.lang.RuntimePermission "modifyConversationState"; -}; - -grant codeBase "@MAIN_CLASSES@../../../exo.jcr.component.core/-"{ - permission java.security.AllPermission; -}; - -grant codeBase "@MAIN_CLASSES@../../../exo.jcr.component.ext/-"{ - permission java.security.AllPermission; -}; - - diff --git a/exo.jcr.framework.ftpclient/pom.xml b/exo.jcr.framework.ftpclient/pom.xml index 9abb05625a..362bf9365b 100644 --- a/exo.jcr.framework.ftpclient/pom.xml +++ b/exo.jcr.framework.ftpclient/pom.xml @@ -61,8 +61,7 @@ org.apache.maven.plugins maven-surefire-plugin - @{argLine} ${env.MAVEN_OPTS} -Djava.security.manager=org.exoplatform.commons.test.TestSecurityManager -Djava.security.policy=${project.build.directory}/test-classes/test.policy - true + true **/*.java @@ -71,43 +70,6 @@ - - maven-antrun-plugin - - - prepare-test-policy - process-test-resources - - - Creating Access Policy for tests - - - - - - - - - - - - - - - - - run - - - - - - ant - ant-optional - 1.5.3-1 - - - diff --git a/exo.jcr.framework.ftpclient/src/test/resources/test.policy b/exo.jcr.framework.ftpclient/src/test/resources/test.policy deleted file mode 100644 index 2c5b25caab..0000000000 --- a/exo.jcr.framework.ftpclient/src/test/resources/test.policy +++ /dev/null @@ -1,13 +0,0 @@ -grant codeBase "@MAVEN_REPO@-"{ - permission java.security.AllPermission; -}; - -grant codeBase "@MAIN_CLASSES@-"{ - permission java.security.AllPermission; -}; - -grant codeBase "@TEST_CLASSES@-"{ -}; - - -