| opends/resource/config/config.ldif | ●●●●● patch | view | raw | blame | history | |
| opends/resource/schema/02-config.ldif | ●●●●● patch | view | raw | blame | history | |
| opends/src/admin/defn/org/opends/server/admin/std/AttributeTypeDescriptionAttributeSyntaxConfiguration.xml | ●●●●● patch | view | raw | blame | history | |
| opends/src/server/org/opends/server/schema/AttributeTypeSyntax.java | ●●●●● patch | view | raw | blame | history |
opends/resource/config/config.ldif
@@ -1433,6 +1433,7 @@ dn: cn=Attribute Type Description,cn=Syntaxes,cn=config objectClass: top objectClass: ds-cfg-attribute-syntax objectClass: ds-cfg-attribute-type-description-attribute-syntax cn: Attribute Type Description ds-cfg-syntax-class: org.opends.server.schema.AttributeTypeSyntax ds-cfg-syntax-enabled: true opends/resource/schema/02-config.ldif
@@ -1463,6 +1463,10 @@ attributeTypes: ( 1.3.6.1.4.1.26027.1.1.430 NAME 'ds-cfg-default-auth-password-storage-scheme' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'OpenDS Directory Server' ) attributeTypes: ( 1.3.6.1.4.1.26027.1.1.435 NAME 'ds-cfg-strip-syntax-minimum-upper-bound' SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE X-ORIGIN 'OpenDS Directory Server' ) objectClasses: ( 1.3.6.1.4.1.26027.1.2.1 NAME 'ds-cfg-access-control-handler' SUP top STRUCTURAL MUST ( cn $ ds-cfg-acl-handler-class $ ds-cfg-acl-handler-enabled ) @@ -1479,6 +1483,11 @@ objectClasses: ( 1.3.6.1.4.1.26027.1.2.3 NAME 'ds-cfg-attribute-syntax' SUP top STRUCTURAL MUST ( cn $ ds-cfg-syntax-class $ ds-cfg-syntax-enabled ) X-ORIGIN 'OpenDS Directory Server' ) objectClasses: ( 1.3.6.1.4.1.26027.1.2.116 NAME 'ds-cfg-attribute-type-description-attribute-syntax' SUP ds-cfg-attribute-syntax STRUCTURAL MAY ( ds-cfg-strip-syntax-minimum-upper-bound ) X-ORIGIN 'OpenDS Directory Server' ) objectClasses: ( 1.3.6.1.4.1.26027.1.2.4 NAME 'ds-cfg-telephone-number-attribute-syntax' SUP ds-cfg-attribute-syntax STRUCTURAL opends/src/admin/defn/org/opends/server/admin/std/AttributeTypeDescriptionAttributeSyntaxConfiguration.xml
New file @@ -0,0 +1,74 @@ <?xml version="1.0" encoding="utf-8"?> <!-- ! CDDL HEADER START ! ! The contents of this file are subject to the terms of the ! Common Development and Distribution License, Version 1.0 only ! (the "License"). You may not use this file except in compliance ! with the License. ! ! You can obtain a copy of the license at ! trunk/opends/resource/legal-notices/OpenDS.LICENSE ! or https://OpenDS.dev.java.net/OpenDS.LICENSE. ! See the License for the specific language governing permissions ! and limitations under the License. ! ! When distributing Covered Code, include this CDDL HEADER in each ! file and include the License file at ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, ! add the following below this CDDL HEADER, with the fields enclosed ! by brackets "[]" replaced with your own identifying information: ! Portions Copyright [yyyy] [name of copyright owner] ! ! CDDL HEADER END ! ! ! Portions Copyright 2007 Sun Microsystems, Inc. ! --> <adm:managed-object name="attribute-type-description-attribute-syntax" plural-name="attribute-type-description-attribute-syntaxes" extends="attribute-syntax" package="org.opends.server.admin.std" abstract="false" xmlns:adm="http://www.opends.org/admin" xmlns:ldap="http://www.opends.org/admin-ldap"> <adm:synopsis> <adm:user-friendly-plural-name /> describe the format of the directory schema attribute type definitions. </adm:synopsis> <adm:profile name="ldap"> <ldap:object-class> <ldap:oid>11.3.6.1.4.1.26027.1.2.116</ldap:oid> <ldap:name>ds-cfg-attribute-type-description-attribute-syntax</ldap:name> <ldap:superior>ds-cfg-attribute-syntax</ldap:superior> </ldap:object-class> </adm:profile> <adm:property name="strip-syntax-minimum-upper-bound" mandatory="false"> <adm:synopsis> Indicate whether the suggested minimum upper bound appended to an attribute's syntax OID in it's schema definition Attribute Type Description is stripped off. When retrieving the server's schema, some API's (JNDI) fail in their syntax lookup methods because they don't parse this value correctly. This configuration option allows the server to be configured to provide schema definitions these APIs can parse correctly. </adm:synopsis> <adm:default-behavior> <adm:defined> <adm:value>false</adm:value> </adm:defined> </adm:default-behavior> <adm:syntax> <adm:boolean /> </adm:syntax> <adm:profile name="ldap"> <ldap:attribute> <ldap:oid>1.3.6.1.4.1.26027.1.1.435</ldap:oid> <ldap:name>ds-cfg-strip-syntax-minimum-upper-bound</ldap:name> </ldap:attribute> </adm:profile> </adm:property> </adm:managed-object> opends/src/server/org/opends/server/schema/AttributeTypeSyntax.java
@@ -34,7 +34,8 @@ import java.util.LinkedList; import java.util.List; import org.opends.server.admin.std.server.AttributeSyntaxCfg; import org.opends.server.admin.std.server.*; import org.opends.server.admin.server.ConfigurationChangeListener; import org.opends.server.api.ApproximateMatchingRule; import org.opends.server.api.AttributeSyntax; import org.opends.server.api.EqualityMatchingRule; @@ -42,17 +43,10 @@ import org.opends.server.api.SubstringMatchingRule; import org.opends.server.config.ConfigException; import org.opends.server.core.DirectoryServer; import org.opends.server.types.AttributeType; import org.opends.server.types.AttributeUsage; import org.opends.server.types.ByteString; import org.opends.server.types.DirectoryException; import org.opends.server.types.InitializationException; import org.opends.server.types.ResultCode; import org.opends.server.types.Schema; import static org.opends.server.loggers.debug.DebugLogger.*; import org.opends.server.loggers.debug.DebugTracer; import org.opends.server.types.DebugLogLevel; import org.opends.server.types.*; import static org.opends.server.messages.MessageHandler.*; import static org.opends.server.messages.SchemaMessages.*; import static org.opends.server.schema.SchemaConstants.*; @@ -67,14 +61,18 @@ * syntax is defined in RFC 2252. */ public class AttributeTypeSyntax extends AttributeSyntax<AttributeSyntaxCfg> { extends AttributeSyntax<AttributeTypeDescriptionAttributeSyntaxCfg> implements ConfigurationChangeListener<AttributeTypeDescriptionAttributeSyntaxCfg> { /** * The tracer object for the debug logger. */ private static final DebugTracer TRACER = getTracer(); // The reference to the configuration for this attribute type description // syntax. private AttributeTypeDescriptionAttributeSyntaxCfg currentConfig; // The default equality matching rule for this syntax. @@ -86,7 +84,8 @@ // The default substring matching rule for this syntax. private SubstringMatchingRule defaultSubstringMatchingRule; // If true strip the suggested minimum upper bound from the syntax OID. private static boolean stripMinimumUpperBound=false; /** * Creates a new instance of this syntax. Note that the only thing that @@ -104,7 +103,8 @@ /** * {@inheritDoc} */ public void initializeSyntax(AttributeSyntaxCfg configuration) public void initializeSyntax(AttributeTypeDescriptionAttributeSyntaxCfg configuration) throws ConfigException, InitializationException { defaultEqualityMatchingRule = @@ -136,6 +136,19 @@ SYNTAX_ATTRIBUTE_TYPE_NAME); throw new InitializationException(msgID, message); } // This syntax is one of the Directory Server's core syntaxes and therefore // it may be instantiated at times without a configuration entry. If that // is the case, then we'll exit now before doing anything that could require // access to that entry. if (configuration == null) { return; } currentConfig = configuration; currentConfig.addAttributeTypeDescriptionChangeListener(this); stripMinimumUpperBound=configuration.isStripSyntaxMinimumUpperBound(); } @@ -656,13 +669,13 @@ // of characters that should be allowed in values of that type. This // implementation will ignore any such length because it does not // impose any practical limit on the length of attribute values. boolean inBrace = false; boolean lastWasPeriod = false; int leftBracePos=0; StringBuilder oidBuffer = new StringBuilder(); while (pos < length) { c = lowerStr.charAt(pos++); if (inBrace) if (leftBracePos != 0) { // The only thing we'll allow here will be numeric digits and the // closing curly brace. @@ -678,7 +691,18 @@ ResultCode.INVALID_ATTRIBUTE_SYNTAX, message, msgID); } //If option ds-cfg-strip-syntax-minimum-upper-bound is true, //remove minimum number specification (including braces) because //it breaks some syntax retrieval APIs such as JNDI's //getAttributeSyntaxDefinition(). if(stripMinimumUpperBound) { String firstPart= value.stringValue().substring(0,leftBracePos-1); String secPart=value.stringValue().substring(pos); StringBuilder tmpBuffer= new StringBuilder(firstPart).append(secPart); value.setValue(tmpBuffer.toString().getBytes()); } break; } else if (! isDigit(c)) @@ -716,8 +740,10 @@ } else if (c == '{') { // It's the start of the length specification. inBrace = true; // It's the start of the length specification. Keep an index //to this character because the specification will need to be //removed. leftBracePos=pos; } else if (c == ' ') { @@ -1437,5 +1463,34 @@ return startPos; } /** * {@inheritDoc} */ public ConfigChangeResult applyConfigurationChange( AttributeTypeDescriptionAttributeSyntaxCfg configuration) { currentConfig = configuration; stripMinimumUpperBound = configuration.isStripSyntaxMinimumUpperBound(); return new ConfigChangeResult(ResultCode.SUCCESS, false); } /** * {@inheritDoc} */ public boolean isConfigurationChangeAcceptable( AttributeTypeDescriptionAttributeSyntaxCfg configuration, List<String> unacceptableReasons) { // The configuration will always be acceptable. return true; } }