From 249f365384d6e9927fc8cd3e161a789bbaf0ed47 Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Fri, 13 Dec 2013 22:40:35 +0000
Subject: [PATCH] Backport fix for OPENDJ-1252: ReadSchema example throws NPE

---
 opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/schema/MatchingRule.java |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/schema/MatchingRule.java b/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/schema/MatchingRule.java
index 7f315f6..8c59a15 100644
--- a/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/schema/MatchingRule.java
+++ b/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/schema/MatchingRule.java
@@ -371,10 +371,15 @@
         }
 
         if (impl == null) {
-            impl = schema.getDefaultMatchingRule().impl;
-            final LocalizableMessage message = WARN_MATCHING_RULE_NOT_IMPLEMENTED1
-                    .get(getNameOrOID(), schema.getDefaultMatchingRule()
-                            .getOID());
+            final MatchingRule defaultMatchingRule = schema.getDefaultMatchingRule();
+            if (defaultMatchingRule.impl == null) {
+                // The default matching rule was never validated.
+                defaultMatchingRule.validate(schema, warnings);
+            }
+            impl = defaultMatchingRule.impl;
+            final LocalizableMessage message =
+                    WARN_MATCHING_RULE_NOT_IMPLEMENTED1.get(getNameOrOID(), schema
+                            .getDefaultMatchingRule().getOID());
             warnings.add(message);
         }
 

--
Gitblit v1.10.0