From 591ebf6d984dcb1bbe4542f43c0acf1d5990ad39 Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Thu, 19 May 2011 11:01:59 +0000
Subject: [PATCH] Fix OPENDJ-156: Errors when parsing collective attribute definitions

---
 opendj3/opendj-sdk/src/test/java/org/opends/sdk/schema/SchemaBuilderTest.java |   57 ++++++++++++++++++++++++++++
 opendj3/opendj-sdk/src/main/java/org/opends/sdk/schema/AttributeType.java     |   14 ++----
 2 files changed, 62 insertions(+), 9 deletions(-)

diff --git a/opendj3/opendj-sdk/src/main/java/org/opends/sdk/schema/AttributeType.java b/opendj3/opendj-sdk/src/main/java/org/opends/sdk/schema/AttributeType.java
index a9c1a62..f5396c7 100644
--- a/opendj3/opendj-sdk/src/main/java/org/opends/sdk/schema/AttributeType.java
+++ b/opendj3/opendj-sdk/src/main/java/org/opends/sdk/schema/AttributeType.java
@@ -23,6 +23,7 @@
  *
  *
  *      Copyright 2009 Sun Microsystems, Inc.
+ *      Portions copyright 2011 ForgeRock AS.
  */
 
 package org.opends.sdk.schema;
@@ -730,18 +731,13 @@
 
       if (superiorType.isCollective() != isCollective())
       {
-        LocalizableMessage message;
-        if (isCollective())
+        if (!isCollective())
         {
-          message = WARN_ATTR_SYNTAX_ATTRTYPE_COLLECTIVE_FROM_NONCOLLECTIVE
+          LocalizableMessage message =
+            WARN_ATTR_SYNTAX_ATTRTYPE_NONCOLLECTIVE_FROM_COLLECTIVE
               .get(getNameOrOID(), superiorType.getNameOrOID());
+          throw new SchemaException(message);
         }
-        else
-        {
-          message = WARN_ATTR_SYNTAX_ATTRTYPE_NONCOLLECTIVE_FROM_COLLECTIVE
-              .get(getNameOrOID(), superiorType.getNameOrOID());
-        }
-        throw new SchemaException(message);
       }
     }
 
diff --git a/opendj3/opendj-sdk/src/test/java/org/opends/sdk/schema/SchemaBuilderTest.java b/opendj3/opendj-sdk/src/test/java/org/opends/sdk/schema/SchemaBuilderTest.java
new file mode 100644
index 0000000..52b0838
--- /dev/null
+++ b/opendj3/opendj-sdk/src/test/java/org/opends/sdk/schema/SchemaBuilderTest.java
@@ -0,0 +1,57 @@
+/*
+ * 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
+ *
+ *
+ *      Copyright 2011 ForgeRock AS.
+ */
+package org.opends.sdk.schema;
+
+
+
+import static org.fest.assertions.Assertions.assertThat;
+
+import org.testng.annotations.Test;
+
+
+
+/**
+ * Test SchemaBuilder.
+ */
+public class SchemaBuilderTest extends SchemaTestCase
+{
+
+  /**
+   * Test for OPENDJ-156: Errors when parsing collective attribute definitions.
+   */
+  @Test
+  public void testCollectiveAttribute()
+  {
+    SchemaBuilder builder = new SchemaBuilder(Schema.getCoreSchema());
+    builder
+        .addAttributeType(
+            "( 2.5.4.11.1 NAME 'c-ou' SUP ou SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 COLLECTIVE X-ORIGIN 'RFC 3671' )",
+            false);
+    Schema schema = builder.toSchema();
+    assertThat(schema.getWarnings()).isEmpty();
+  }
+}

--
Gitblit v1.10.0