AttributeTypeDescriptionSchemaParser parser = new AttributeTypeDescriptionSchemaParser();
parser.setQuirksMode( true );
AttributeType atd = parser.parseAttributeTypeDescription( value );
MutableAttributeType impl = new MutableAttributeType( atd.getOid() );
impl.setNames( atd.getNames().toArray( new String[0] ) );
impl.setDescription( atd.getDescription() );
impl.setSuperiorOid( atd.getSuperiorOid() );
impl.setUsage( atd.getUsage() );
impl.setSyntaxOid( atd.getSyntaxOid() );
impl.setSyntaxLength( atd.getSyntaxLength() );
impl.setObsolete( atd.isObsolete() );
impl.setCollective( atd.isCollective() );
impl.setSingleValued( atd.isSingleValued() );
impl.setUserModifiable( atd.isUserModifiable() );
impl.setEqualityOid( atd.getEqualityOid() );
impl.setOrderingOid( atd.getOrderingOid() );
impl.setSubstringOid( atd.getSubstringOid() );
impl.setSchemaName( schema.getSchemaName() );
// Active Directory hack
if ( impl.getSyntaxOid() != null && "OctetString".equalsIgnoreCase( impl.getSyntaxOid() ) ) //$NON-NLS-1$
{
impl.setSyntaxOid( "1.3.6.1.4.1.1466.115.121.1.40" ); //$NON-NLS-1$
}
schema.addAttributeType( impl );
}
catch ( ParseException e )
{
// Logging the exception and incrementing the counter
PluginUtils.logError( "Unable to parse the attribute type.", e );
parseErrorCount++;
}
}
}
}
Attribute objectClassesAttribute = searchResult.getAttributes().get( "objectClasses" ); //$NON-NLS-1$
if ( objectClassesAttribute != null )
{
NamingEnumeration<?> ne = objectClassesAttribute.getAll();
if ( ne != null )
{
while ( ne.hasMoreElements() )
{
String value = ( String ) ne.nextElement();
try
{
ObjectClassDescriptionSchemaParser parser = new ObjectClassDescriptionSchemaParser();
parser.setQuirksMode( true );
ObjectClass ocd = parser.parseObjectClassDescription( value );
MutableObjectClass impl = new MutableObjectClass( ocd.getOid() );
impl.setNames( ocd.getNames().toArray( new String[0] ) );
impl.setDescription( ocd.getDescription() );
impl.setSuperiorOids( ocd.getSuperiorOids() );
impl.setType( ocd.getType() );
impl.setObsolete( ocd.isObsolete() );
impl.setMustAttributeTypeOids( ocd.getMustAttributeTypeOids() );
impl.setMayAttributeTypeOids( ocd.getMayAttributeTypeOids() );
impl.setSchemaName( schema.getSchemaName() );
schema.addObjectClass( impl );
}
catch ( ParseException e )
{
// Logging the exception and incrementing the counter
PluginUtils.logError( "Unable to parse the object class.", e );
parseErrorCount++;
}
}
}
}
Attribute ldapSyntaxesAttribute = searchResult.getAttributes().get( "ldapSyntaxes" ); //$NON-NLS-1$
if ( ldapSyntaxesAttribute != null )
{
NamingEnumeration<?> ne = ldapSyntaxesAttribute.getAll();
if ( ne != null )
{
while ( ne.hasMoreElements() )
{
String value = ( String ) ne.nextElement();
try
{
LdapSyntaxDescriptionSchemaParser parser = new LdapSyntaxDescriptionSchemaParser();
parser.setQuirksMode( true );
LdapSyntax lsd = parser.parseLdapSyntaxDescription( value );
LdapSyntax impl = new LdapSyntax( lsd.getOid() );
impl.setDescription( lsd.getDescription() );
impl.setNames( new String[]
{ lsd.getDescription() } );
//impl.setObsolete( lsd.isObsolete() );
impl.setHumanReadable( true );
impl.setSchemaName( schema.getSchemaName() );
schema.addSyntax( impl );
}
catch ( ParseException e )
{
// Logging the exception and incrementing the counter
PluginUtils.logError( "Unable to parse the syntax.", e );
parseErrorCount++;
}
}
}
}
// if online: assume all received syntaxes in attributes are valid -> create dummy syntaxes if missing
for ( AttributeType at : schema.getAttributeTypes() )
{
String syntaxOid = at.getSyntaxOid();
if ( syntaxOid != null && schema.getSyntax( syntaxOid ) == null )
{
LdapSyntax impl = new LdapSyntax( syntaxOid );
impl.setSchemaName( schema.getSchemaName() );
String oidDescription = Utils.getOidDescription( syntaxOid );
impl.setDescription( oidDescription != null ? oidDescription : "Dummy" ); //$NON-NLS-1$
impl.setNames( new String[]
{ impl.getDescription() } );
schema.addSyntax( impl );
}
}
Attribute matchingRulesAttribute = searchResult.getAttributes().get( "matchingRules" ); //$NON-NLS-1$
if ( matchingRulesAttribute != null )
{
NamingEnumeration<?> ne = matchingRulesAttribute.getAll();
if ( ne != null )
{
while ( ne.hasMoreElements() )
{
String value = ( String ) ne.nextElement();
try
{
MatchingRuleDescriptionSchemaParser parser = new MatchingRuleDescriptionSchemaParser();
parser.setQuirksMode( true );
MatchingRule mrd = parser.parseMatchingRuleDescription( value );
MutableMatchingRule impl = new MutableMatchingRule( mrd.getOid() );
impl.setDescription( mrd.getDescription() );
impl.setNames( mrd.getNames().toArray( new String[0] ) );
impl.setObsolete( mrd.isObsolete() );
impl.setSyntaxOid( mrd.getSyntaxOid() );
impl.setSchemaName( schema.getSchemaName() );
schema.addMatchingRule( impl );
}
catch ( ParseException e )
{