Merged 5.0.N (5.0.3) to HEAD (5.1)

110822: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
      110619: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
         110422: Merged DEV to V4.2.5 (4.2.5)
            110332: MNT-14151 : CMIS Upload/Create in 4.2 adds the sys:hidden and cm:indexControl Aspect to documents starting with a period
               - added system property in order to enable/disable cmis hidden behavior
               


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@110935 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Tatyana Valkevych
2015-08-26 13:42:25 +00:00
parent 970409fa59
commit 271ce04935
8 changed files with 163 additions and 14 deletions

View File

@@ -28,6 +28,7 @@
<property name="filter" value="\..*" />
<property name="visibility" value="webdav,nfs,ftp" />
<property name="hiddenAttribute" value="cifs" />
<property name="cmisDisableHideConfig" value="${cmis.disable.hidden.leading.period.files}" />
</bean>
<bean class="org.alfresco.repo.model.filefolder.HiddenFileFilter">
<property name="filter" value="Thumbs\.db" />

View File

@@ -1101,3 +1101,5 @@ models.enforceTenantInNamespace=false
# Allowed protocols for links
links.protocosl.white.list=http,https,ftp,mailto
cmis.disable.hidden.leading.period.files=false

View File

@@ -0,0 +1,35 @@
/*
* Copyright (C) 2005-2015 Alfresco Software Limited.
*
* This file is part of Alfresco
*
* Alfresco 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 3 of the License, or
* (at your option) any later version.
*
* Alfresco 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 Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
package org.alfresco.repo.model.filefolder;
/**
* Represents configurable hidden file information, based on which some filename
* patterns will be hidden or not depending the client
*
* @author Andreea Dragoi
* @since 4.2.5
*/
public interface ConfigurableHiddenFileInfo extends HiddenFileInfo
{
public boolean isCmisDisableHideConfig();
public void setCmisDisableHideConfig(boolean cmisDisableHideConfig);
}

View File

@@ -165,7 +165,7 @@ public class HiddenAspect
{
for(HiddenFileFilter filter : filters)
{
this.filters.add(new HiddenFileInfoImpl(filter.getFilter(), filter.getVisibility(), filter.getHiddenAttribute(), filter.cascadeHiddenAspect(), filter.cascadeIndexControlAspect()));
this.filters.add(new HiddenFileInfoImpl(filter.getFilter(), filter.getVisibility(), filter.getHiddenAttribute(), filter.cascadeHiddenAspect(), filter.cascadeIndexControlAspect(), filter.isCmisDisableHideConfig()));
}
}
@@ -527,6 +527,13 @@ public class HiddenAspect
OUTER: for(HiddenFileInfo filter : filters)
{
if (Client.cmis.equals(FileFilterMode.getClient()) && filter instanceof ConfigurableHiddenFileInfo)
{
if (((ConfigurableHiddenFileInfo) filter).isCmisDisableHideConfig())
{
continue;
}
}
if(filter.cascadeHiddenAspect() || filter.cascadeIndexControlAspect())
{
if(path == null)
@@ -943,7 +950,7 @@ public class HiddenAspect
return ret;
}
private class HiddenFileInfoImpl implements HiddenFileInfo
private class HiddenFileInfoImpl implements ConfigurableHiddenFileInfo
{
private Pattern filter;
private Set<Client> clientVisibility = new HashSet<Client>(10);
@@ -951,6 +958,7 @@ public class HiddenAspect
private int visibilityMask;
private boolean cascadeHiddenAspect;
private boolean cascadeIndexControlAspect;
private boolean cmisDisableHideConfig;
public HiddenFileInfoImpl(String regexp, String visibility, String hiddenAttribute, boolean cascadeHiddenAspect, boolean cascadeIndexControlAspect)
{
@@ -962,6 +970,12 @@ public class HiddenAspect
calculateVisibilityMask();
}
public HiddenFileInfoImpl(String regexp, String visibility, String hiddenAttribute, boolean cascadeHiddenAspect, boolean cascadeIndexControlAspect, boolean cmisDisableHideConfig)
{
this(regexp,visibility,hiddenAttribute, cascadeHiddenAspect, cascadeIndexControlAspect);
this.cmisDisableHideConfig = cmisDisableHideConfig;
}
private void setVisibility(String visibility)
{
if(visibility != null && !visibility.equals(""))
@@ -1036,5 +1050,15 @@ public class HiddenAspect
{
return false;
}
public boolean isCmisDisableHideConfig()
{
return cmisDisableHideConfig;
}
public void setCmisDisableHideConfig(boolean cmisDisableHideConfig)
{
this.cmisDisableHideConfig = cmisDisableHideConfig;
}
}
}

View File

@@ -16,6 +16,7 @@ public class HiddenFileFilter implements InitializingBean
private String hiddenAttribute;
private boolean cascadeHiddenAspect = true;
private boolean cascadeIndexControlAspect = true;
private boolean cmisDisableHideConfig;
public HiddenFileFilter()
{
@@ -71,6 +72,15 @@ public class HiddenFileFilter implements InitializingBean
return cascadeIndexControlAspect;
}
public void setCmisDisableHideConfig(boolean cmisDisableHideConfig)
{
this.cmisDisableHideConfig = cmisDisableHideConfig;
}
public boolean isCmisDisableHideConfig()
{
return cmisDisableHideConfig;
}
/*
* (non-Javadoc)
* @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()

View File

@@ -23,6 +23,7 @@ import org.alfresco.repo.model.filefolder.FileFolderLoaderTest;
import org.alfresco.repo.model.filefolder.FileFolderPerformanceTester;
import org.alfresco.repo.model.filefolder.FileFolderServiceImplTest;
import org.alfresco.repo.model.filefolder.FileFolderServicePropagationTest;
import org.alfresco.repo.model.filefolder.HiddenAspectCmisConfigTest;
import org.alfresco.repo.model.filefolder.HiddenAspectTest;
import org.alfresco.repo.model.ml.tools.ContentFilterLanguagesMapTest;
import org.alfresco.repo.model.ml.tools.EditionServiceImplTest;
@@ -47,9 +48,8 @@ import org.junit.runners.Suite.SuiteClasses;
MultilingualDocumentAspectTest.class,
EditionServiceImplTest.class,
LanguagesTest.class,
HiddenAspectTest.class,
HiddenAspectCmisConfigTest.class,
FileFolderLoaderTest.class,
FileFolderPerformanceTester.class,

View File

@@ -0,0 +1,72 @@
/*
* Copyright (C) 2005-2015 Alfresco Software Limited.
*
* This file is part of Alfresco
*
* Alfresco 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 3 of the License, or
* (at your option) any later version.
*
* Alfresco 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 Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
package org.alfresco.repo.model.filefolder;
import javax.transaction.NotSupportedException;
import javax.transaction.SystemException;
import org.junit.After;
import org.junit.Before;
/**
* Associated tests methods for HiddenAspectTest with the non-default value for cmisDisableHide
*
* @author Andreea Dragoi
* @since 4.2.5
*
*/
public class HiddenAspectCmisConfigTest extends HiddenAspectTest
{
private static final String FILENAME_LEADING_DOT_PATTERN = "\\..*";
@Before
public void setup() throws SystemException, NotSupportedException
{
super.setup();
//change cmisHiddenConfing default value
switchCmisHiddenConfig();
}
@After
public void tearDown() throws Exception
{
//revert to cmisHiddenConfing default value
switchCmisHiddenConfig();
super.tearDown();
}
/**
* switch value for cmisDisableHide in order to tests the configuration in both states
*/
private void switchCmisHiddenConfig()
{
for (HiddenFileInfo hiddenFileInfo : hiddenAspect.getPatterns())
{
if (FILENAME_LEADING_DOT_PATTERN.equals(hiddenFileInfo.getFilter()) && hiddenFileInfo instanceof ConfigurableHiddenFileInfo)
{
ConfigurableHiddenFileInfo configurableHiddenFileInfo = (ConfigurableHiddenFileInfo) hiddenFileInfo;
configurableHiddenFileInfo.setCmisDisableHideConfig(!configurableHiddenFileInfo.isCmisDisableHideConfig());
cmisDisableHide = !cmisDisableHide;
break;
}
}
}
}

View File

@@ -13,6 +13,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Properties;
import javax.transaction.NotSupportedException;
import javax.transaction.Status;
@@ -71,7 +72,7 @@ public class HiddenAspectTest
private static final ApplicationContext ctx = ApplicationContextHelper.getApplicationContext();
private HiddenAspect hiddenAspect;
protected HiddenAspect hiddenAspect;
private TransactionService transactionService;
private NodeDAO nodeDAO;
private NodeService nodeService;
@@ -98,6 +99,8 @@ public class HiddenAspectTest
private String username;
private AlfrescoImapUser user;
protected boolean cmisDisableHide;
@Before
public void setup() throws SystemException, NotSupportedException
{
@@ -117,6 +120,8 @@ public class HiddenAspectTest
imapEnabled = serviceRegistry.getImapService().getImapServerEnabled();
nodeDAO = (NodeDAO)ctx.getBean("nodeDAO");
Properties properties = (Properties) ctx.getBean("global-properties");
cmisDisableHide = Boolean.getBoolean(properties.getProperty("cmis.disable.hidden.leading.period.files"));
// start the transaction
txn = transactionService.getUserTransaction();
@@ -417,13 +422,13 @@ public class HiddenAspectTest
FileFilterMode.setClient(saveClient);
}
assertTrue(nodeService.hasAspect(child, ContentModel.ASPECT_HIDDEN));
assertTrue(nodeService.hasAspect(child, ContentModel.ASPECT_INDEX_CONTROL));
assertTrue(nodeService.hasAspect(child1, ContentModel.ASPECT_HIDDEN));
assertTrue(nodeService.hasAspect(child1, ContentModel.ASPECT_INDEX_CONTROL));
assertTrue(nodeService.hasAspect(child, ContentModel.ASPECT_HIDDEN) != cmisDisableHide );
assertTrue(nodeService.hasAspect(child, ContentModel.ASPECT_INDEX_CONTROL ) != cmisDisableHide);
assertTrue(nodeService.hasAspect(child1, ContentModel.ASPECT_HIDDEN) != cmisDisableHide);
assertTrue(nodeService.hasAspect(child1, ContentModel.ASPECT_INDEX_CONTROL) != cmisDisableHide);
List<FileInfo> children = fileFolderService.list(parent);
assertEquals(0, children.size());
assertEquals(cmisDisableHide ? 1: 0, children.size());
saveClient = FileFilterMode.setClient(Client.script);
try
@@ -434,7 +439,7 @@ public class HiddenAspectTest
{
FileFilterMode.setClient(saveClient);
}
assertEquals(0, children.size());
assertEquals(cmisDisableHide ? 1: 0, children.size());
saveClient = FileFilterMode.setClient(Client.cmis);
try
@@ -445,7 +450,7 @@ public class HiddenAspectTest
{
FileFilterMode.setClient(saveClient);
}
assertEquals(0, children.size());
assertEquals(cmisDisableHide ? 1: 0, children.size());
}
}