* org.apache.avalon.framework.configuration.Configuration, java.util.Map)
*/
public Object getAttribute(String name, Configuration modeConf, Map objectModel)
throws ConfigurationException {
ServiceSelector serviceSelector = null;
PolicyManager policyManager = null;
AccessControllerResolver acResolver = null;
AccreditableManager accreditableManager = null;
// Get parameters
final String[] attributes = name.split(":");
if (attributes.length < 3) {
throw new ConfigurationException("Invalid number of parameters: " + attributes.length
+ ". Expected area, document-id, language.");
}
final String area = attributes[0];
final String documentId = attributes[1];
final String language = attributes[2];
String value = null;
try {
PageEnvelope envelope = PageEnvelopeFactory.getInstance().getPageEnvelope(objectModel);
Publication publication = envelope.getPublication();
DocumentBuilder builder = publication.getDocumentBuilder();
// Create canonical URL
String canonicalUrl = builder
.buildCanonicalUrl(publication, area, documentId, language);
if (getLogger().isDebugEnabled()) {
getLogger().debug("Created canonicalURL: " + canonicalUrl);
}
// Get proxy for document
serviceSelector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
+ "Selector");
acResolver = (AccessControllerResolver) serviceSelector
.select(AccessControllerResolver.DEFAULT_RESOLVER);
AccessController accessController = acResolver.resolveAccessController(canonicalUrl);
if (accessController instanceof DefaultAccessController) {
DefaultAccessController defaultAccessController = (DefaultAccessController) accessController;