ALF-9351: Reverse merged 29767 as it doesn't work, is suboptimal and platform encoding dependent

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@29807 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Dave Ward
2011-08-16 20:14:01 +00:00
parent 1b9de9fe5a
commit 20b9d8a3ed
3 changed files with 9 additions and 84 deletions

View File

@@ -406,49 +406,49 @@
<!-- Permissions specific to avm website folder --> <!-- Permissions specific to avm website folder -->
<!-- ========================================== --> <!-- ========================================== -->
<permissionSet type="wcm:avmfolder" expose="selected"> <permissionSet type="wcm:avmfolder" expose="selected"> -->
<permissionGroup name="ContentManager" extends="true" expose="true" /> <permissionGroup name="ContentManager" extends="true" expose="true" />
<permissionGroup name="ContentPublisher" extends="true" expose="true" /> <permissionGroup name="ContentPublisher" extends="true" expose="true" />
<permissionGroup name="ContentContributor" extends="true" expose="true" /> <permissionGroup name="ContentContributor" extends="true" expose="true" />
<permissionGroup name="ContentReviewer" extends="true" expose="true" /> <permissionGroup name="ContentReviewer" extends="true" expose="true" />
</permissionSet> </permissionSet>
<permissionSet type="wcm:avmplainfolder" expose="selected"> <permissionSet type="wcm:avmplainfolder" expose="selected"> -->
<permissionGroup name="ContentManager" extends="true" expose="true" /> <permissionGroup name="ContentManager" extends="true" expose="true" />
<permissionGroup name="ContentPublisher" extends="true" expose="true" /> <permissionGroup name="ContentPublisher" extends="true" expose="true" />
<permissionGroup name="ContentContributor" extends="true" expose="true" /> <permissionGroup name="ContentContributor" extends="true" expose="true" />
<permissionGroup name="ContentReviewer" extends="true" expose="true" /> <permissionGroup name="ContentReviewer" extends="true" expose="true" />
</permissionSet> </permissionSet>
<permissionSet type="wcm:avmlayeredfolder" expose="selected"> <permissionSet type="wcm:avmlayeredfolder" expose="selected"> -->
<permissionGroup name="ContentManager" extends="true" expose="true" /> <permissionGroup name="ContentManager" extends="true" expose="true" />
<permissionGroup name="ContentPublisher" extends="true" expose="true" /> <permissionGroup name="ContentPublisher" extends="true" expose="true" />
<permissionGroup name="ContentContributor" extends="true" expose="true" /> <permissionGroup name="ContentContributor" extends="true" expose="true" />
<permissionGroup name="ContentReviewer" extends="true" expose="true" /> <permissionGroup name="ContentReviewer" extends="true" expose="true" />
</permissionSet> </permissionSet>
<permissionSet type="wcm:avmcontent" expose="selected"> <permissionSet type="wcm:avmcontent" expose="selected"> -->
<permissionGroup name="ContentManager" extends="true" expose="true" /> <permissionGroup name="ContentManager" extends="true" expose="true" />
<permissionGroup name="ContentPublisher" extends="true" expose="true" /> <permissionGroup name="ContentPublisher" extends="true" expose="true" />
<permissionGroup name="ContentContributor" extends="true" expose="true" /> <permissionGroup name="ContentContributor" extends="true" expose="true" />
<permissionGroup name="ContentReviewer" extends="true" expose="true" /> <permissionGroup name="ContentReviewer" extends="true" expose="true" />
</permissionSet> </permissionSet>
<permissionSet type="wcm:avmplaincontent" expose="selected"> <permissionSet type="wcm:avmplaincontent" expose="selected"> -->
<permissionGroup name="ContentManager" extends="true" expose="true" /> <permissionGroup name="ContentManager" extends="true" expose="true" />
<permissionGroup name="ContentPublisher" extends="true" expose="true" /> <permissionGroup name="ContentPublisher" extends="true" expose="true" />
<permissionGroup name="ContentContributor" extends="true" expose="true" /> <permissionGroup name="ContentContributor" extends="true" expose="true" />
<permissionGroup name="ContentReviewer" extends="true" expose="true" /> <permissionGroup name="ContentReviewer" extends="true" expose="true" />
</permissionSet> </permissionSet>
<permissionSet type="wcm:avmlayeredcontent" expose="selected"> <permissionSet type="wcm:avmlayeredcontent" expose="selected"> -->
<permissionGroup name="ContentManager" extends="true" expose="true" /> <permissionGroup name="ContentManager" extends="true" expose="true" />
<permissionGroup name="ContentPublisher" extends="true" expose="true" /> <permissionGroup name="ContentPublisher" extends="true" expose="true" />
<permissionGroup name="ContentContributor" extends="true" expose="true" /> <permissionGroup name="ContentContributor" extends="true" expose="true" />
<permissionGroup name="ContentReviewer" extends="true" expose="true" /> <permissionGroup name="ContentReviewer" extends="true" expose="true" />
</permissionSet> </permissionSet>
<permissionSet type="wca:webfolder" expose="selected"> <permissionSet type="wca:webfolder" expose="selected"> -->
<permissionGroup name="ContentManager" extends="true" expose="true" /> <permissionGroup name="ContentManager" extends="true" expose="true" />
<permissionGroup name="ContentPublisher" extends="true" expose="true" /> <permissionGroup name="ContentPublisher" extends="true" expose="true" />
<permissionGroup name="ContentContributor" extends="true" expose="true" /> <permissionGroup name="ContentContributor" extends="true" expose="true" />

View File

@@ -22,9 +22,6 @@
<property name="model"> <property name="model">
<value>alfresco/model/permissionDefinitions.xml</value> <value>alfresco/model/permissionDefinitions.xml</value>
</property> </property>
<property name="dtdSchema">
<value>alfresco/model/permissionSchema.dtd</value>
</property>
<property name="nodeService"> <property name="nodeService">
<ref bean="nodeService" /> <ref bean="nodeService" />
</property> </property>

View File

@@ -18,11 +18,8 @@
*/ */
package org.alfresco.repo.security.permissions.impl.model; package org.alfresco.repo.security.permissions.impl.model;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.URL;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.EnumMap; import java.util.EnumMap;
@@ -53,15 +50,11 @@ import org.alfresco.service.namespace.DynamicNamespacePrefixResolver;
import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QName;
import org.alfresco.util.Pair; import org.alfresco.util.Pair;
import org.alfresco.util.TempFileProvider;
import org.dom4j.Attribute; import org.dom4j.Attribute;
import org.dom4j.Document; import org.dom4j.Document;
import org.dom4j.DocumentException; import org.dom4j.DocumentException;
import org.dom4j.DocumentType;
import org.dom4j.Element; import org.dom4j.Element;
import org.dom4j.io.SAXReader; import org.dom4j.io.SAXReader;
import org.dom4j.tree.DefaultDocumentType;
import org.springframework.util.FileCopyUtils;
/** /**
* The implementation of the model DAO Reads and stores the top level model information Encapsulates access to this * The implementation of the model DAO Reads and stores the top level model information Encapsulates access to this
@@ -100,8 +93,6 @@ public class PermissionModel implements ModelDAO
// Instance variables // Instance variables
private String model; private String model;
private String dtdSchema;
private boolean validate = true;
/* /*
* (non-Javadoc) * (non-Javadoc)
@@ -1151,26 +1142,6 @@ public class PermissionModel implements ModelDAO
this.model = model; this.model = model;
} }
/**
* Set the dtd schema that is used to validate permission model
*
* @param dtdSchema
*/
public void setDtdSchema(String dtdSchema)
{
this.dtdSchema = dtdSchema;
}
/**
* Indicates whether model should be validated on initialization against specified dtd
*
* @param validate
*/
public void setValidate(boolean validate)
{
this.validate = validate;
}
/** /**
* Set the dictionary service * Set the dictionary service
* *
@@ -1290,7 +1261,6 @@ public class PermissionModel implements ModelDAO
private Document createDocument(String model) private Document createDocument(String model)
{ {
InputStream is = this.getClass().getClassLoader().getResourceAsStream(model); InputStream is = this.getClass().getClassLoader().getResourceAsStream(model);
URL dtdSchemaUrl = this.getClass().getClassLoader().getResource(dtdSchema);
if (is == null) if (is == null)
{ {
throw new PermissionModelException("File not found: " + model); throw new PermissionModelException("File not found: " + model);
@@ -1298,63 +1268,21 @@ public class PermissionModel implements ModelDAO
SAXReader reader = new SAXReader(); SAXReader reader = new SAXReader();
try try
{ {
if (validate)
{
if (dtdSchemaUrl != null)
{
is = processModelDocType(is, dtdSchemaUrl.toString());
reader.setValidation(true);
}
else
{
throw new PermissionModelException("Couldn't obtain DTD schema to validate permission model.");
}
}
Document document = reader.read(is); Document document = reader.read(is);
is.close(); is.close();
return document; return document;
} }
catch (DocumentException e) catch (DocumentException e)
{ {
throw new PermissionModelException("Failed to create permission model document: " + model, e); throw new PermissionModelException("Failed to create permission model document ", e);
} }
catch (IOException e) catch (IOException e)
{ {
throw new PermissionModelException("Failed to close permission model document: " + model, e); throw new PermissionModelException("Failed to close permission model document ", e);
} }
} }
/*
* Replace or add correct DOCTYPE to the xml to allow validation against dtd
*/
private InputStream processModelDocType(InputStream is, String dtdSchemaUrl) throws DocumentException, IOException
{
SAXReader reader = new SAXReader();
// read document without validation
Document doc = reader.read(is);
DocumentType docType = doc.getDocType();
if (docType != null)
{
// replace DOCTYPE setting the full path to the xsd
docType.setSystemID(dtdSchemaUrl);
}
else
{
// add the DOCTYPE
docType = new DefaultDocumentType(doc.getRootElement().getName(), dtdSchemaUrl);
doc.setDocType(docType);
}
File tempFile = TempFileProvider.createTempFile("permissionModel-", ".tmp");
// copy the modified permission model to the temp file
FileCopyUtils.copy(doc.asXML().getBytes(), tempFile);
return new FileInputStream(tempFile);
}
/** /**
* Set the default access status * Set the default access status
* *