9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi/*
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi * CDDL HEADER START
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi *
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi * The contents of this file are subject to the terms of the
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi * Common Development and Distribution License, Version 1.0 only
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi * (the "License"). You may not use this file except in compliance
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi * with the License.
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi *
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi * or http://forgerock.org/license/CDDLv1.0.html.
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi * See the License for the specific language governing permissions
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi * and limitations under the License.
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi *
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi * When distributing Covered Code, include this CDDL HEADER in each
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi * file and include the License file at legal-notices/CDDLv1_0.txt.
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi * If applicable, add the following below this CDDL HEADER, with the
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi * fields enclosed by brackets "[]" replaced with your own identifying
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi * information:
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi * Portions Copyright [yyyy] [name of copyright owner]
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi *
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi * CDDL HEADER END
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi *
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi *
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi * Copyright 2006-2008 Sun Microsystems, Inc.
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi * Portions Copyright 2011-2015 ForgeRock AS
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi */
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponipackage org.opends.server.schema;
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponiimport static org.opends.server.schema.SchemaConstants.*;
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponiimport org.forgerock.i18n.LocalizableMessageBuilder;
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponiimport org.forgerock.i18n.slf4j.LocalizedLogger;
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponiimport org.forgerock.opendj.ldap.ByteSequence;
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponiimport org.forgerock.opendj.ldap.schema.Schema;
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponiimport org.forgerock.opendj.ldap.schema.SyntaxImpl;
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponiimport org.opends.server.authorization.dseecompat.Aci;
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponiimport org.opends.server.authorization.dseecompat.AciException;
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponiimport org.opends.server.types.DN;
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi/**
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi * Implementation of Access control information (aci) attribute syntax.
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi */
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponifinal class AciSyntaxImpl implements SyntaxImpl {
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi AciSyntaxImpl() {
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi // // nothing to do
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi }
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi @Override
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi public String getApproximateMatchingRule() {
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi return null;
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi }
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi @Override
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi public String getEqualityMatchingRule() {
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi return EMR_CASE_IGNORE_IA5_OID;
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi }
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi @Override
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi public String getOrderingMatchingRule() {
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi return null;
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi }
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi @Override
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi public String getSubstringMatchingRule() {
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi return SMR_CASE_IGNORE_IA5_OID;
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi }
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi @Override
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi public String getName() {
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi return SYNTAX_ACI_NAME;
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi }
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi @Override
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi public boolean isHumanReadable() {
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi return true;
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi }
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi @Override
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi public boolean valueIsAcceptable(final Schema schema, final ByteSequence value,
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi final LocalizableMessageBuilder invalidReason) {
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi try
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi {
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi Aci.decode(value, DN.rootDN());
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi return true;
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi }
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi catch (AciException e)
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi {
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi logger.traceException(e);
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi logger.warn(e.getMessageObject());
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi invalidReason.append(e.getMessageObject());
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi return false;
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi }
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi }
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi @Override
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi public boolean isBEREncodingRequired()
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi {
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi return false;
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi }
9defd2349274d077ad120d780a6fac5f6d594c7fNicolas Capponi}