{
monitor.reportError( BrowserCoreMessages.model__missing_schema_location );
return;
}
Schema schema = browserConnection.getSchema();
boolean mustReload = forceReload || ( schema == Schema.DEFAULT_SCHEMA )
|| mustReload( schemaLocation, browserConnection, monitor );
if ( mustReload )
{
browserConnection.setSchema( Schema.DEFAULT_SCHEMA );
try
{
SearchParameter sp = new SearchParameter();
sp.setSearchBase( schemaLocation );
sp.setFilter( Schema.SCHEMA_FILTER );
sp.setScope( SearchScope.OBJECT );
sp.setReturningAttributes( new String[]
{ SchemaConstants.OBJECT_CLASSES_AT, SchemaConstants.ATTRIBUTE_TYPES_AT,
SchemaConstants.LDAP_SYNTAXES_AT, SchemaConstants.MATCHING_RULES_AT,
SchemaConstants.MATCHING_RULE_USE_AT, SchemaConstants.CREATE_TIMESTAMP_AT,
SchemaConstants.MODIFY_TIMESTAMP_AT } );
LdifEnumeration le = ExportLdifRunnable.search( browserConnection, sp, monitor );
if ( le.hasNext() )
{
LdifContentRecord schemaRecord = ( LdifContentRecord ) le.next();
schema = new Schema();
schema.loadFromRecord( schemaRecord );
browserConnection.setSchema( schema );
}
else
{
monitor.reportError( BrowserCoreMessages.model__no_schema_information );