From 06ec8c88556b02782c7b91a233de91eaf4a1439d Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Tue, 09 Jun 2009 12:28:05 +0000
Subject: [PATCH] Fix for issue 3550 (Consider making the control panel able to manage remote servers)
---
opends/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 101 insertions(+), 8 deletions(-)
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java b/opends/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java
index 929e555..4ad5131 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java
@@ -48,6 +48,7 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
+import java.util.Iterator;
import java.util.Set;
import javax.naming.CompositeName;
@@ -292,6 +293,25 @@
null); // default button title
}
+ /**
+ * Displays a warning dialog.
+ * @param parentComponent the parent component relative to which the dialog
+ * will be displayed.
+ * @param title the title of the dialog.
+ * @param msg the message to be displayed.
+ */
+ public static void displayWarningDialog(Component parentComponent,
+ Message title, Message msg)
+ {
+ String plainText = msg.toString().replaceAll("<br>", ServerConstants.EOL);
+ String wrappedText = StaticUtils.wrapText(plainText, 70);
+ wrappedText = wrappedText.replaceAll(ServerConstants.EOL, "<br>");
+ JOptionPane.showMessageDialog(
+ parentComponent, "<html>"+wrappedText,
+ title.toString(),
+ JOptionPane.WARNING_MESSAGE);
+ }
+
/**
* Creates a JEditorPane that displays a message.
@@ -1734,6 +1754,16 @@
"03-uddiv3.ldif", "05-solaris.ldif"
};
+ private final static String[] configurationSchemaOrigins =
+ {
+ "OpenDS Directory Server", "Sun Directory Server"
+ };
+
+ private final static String[] standardSchemaOrigins =
+ {
+ "Sun Java System Directory Server", "Solaris Specific", "X.501"
+ };
+
private final static String[] configurationSchemaFileNames =
{
"02-config.ldif", "06-compat.ldif"
@@ -1765,6 +1795,27 @@
isStandard = fileName.toLowerCase().indexOf("-rfc") != -1;
}
}
+ else if (fileElement instanceof CommonSchemaElements)
+ {
+ CommonSchemaElements element = (CommonSchemaElements)fileElement;
+ String xOrigin = getOrigin(element);
+ if (xOrigin != null)
+ {
+ for (String name : standardSchemaOrigins)
+ {
+ isStandard = xOrigin.equals(name);
+ if (isStandard)
+ {
+ break;
+ }
+ }
+ if (!isStandard)
+ {
+ isStandard = xOrigin.startsWith("RFC ") ||
+ xOrigin.startsWith("draft-");
+ }
+ }
+ }
return isStandard;
}
@@ -1790,10 +1841,47 @@
}
}
}
+ else if (fileElement instanceof CommonSchemaElements)
+ {
+ CommonSchemaElements element = (CommonSchemaElements)fileElement;
+ String xOrigin = getOrigin(element);
+ if (xOrigin != null)
+ {
+ for (String name : configurationSchemaOrigins)
+ {
+ isConfiguration = xOrigin.equals(name);
+ if (isConfiguration)
+ {
+ break;
+ }
+ }
+ }
+ }
return isConfiguration;
}
/**
+ * Returns the origin of the provided schema element.
+ * @param element the schema element.
+ * @return the origin of the provided schema element.
+ */
+ public static String getOrigin(CommonSchemaElements element)
+ {
+ String xOrigin = null;
+ Iterable<String> it =
+ element.getExtraProperty(ServerConstants.SCHEMA_PROPERTY_ORIGIN);
+ if (it != null)
+ {
+ Iterator<String> iterator = it.iterator();
+ if (iterator.hasNext())
+ {
+ xOrigin = iterator.next();
+ }
+ }
+ return xOrigin;
+ }
+
+ /**
* Returns the string representation of an attribute syntax.
* @param syntax the attribute syntax.
* @return the string representation of an attribute syntax.
@@ -1976,13 +2064,7 @@
/*
* Search for the config to check that it is the directory manager.
*/
- SearchControls searchControls = new SearchControls();
- searchControls.setCountLimit(1);
- searchControls.setSearchScope(
- SearchControls. OBJECT_SCOPE);
- searchControls.setReturningAttributes(
- new String[] {"dn"});
- ctx.search("cn=config", "objectclass=*", searchControls);
+ checkCanReadConfig(ctx);
return ctx;
}
@@ -2042,6 +2124,18 @@
bindDN, pwd, Utils.getDefaultLDAPTimeout(), null);
}
+ checkCanReadConfig(ctx);
+ return ctx;
+ }
+
+ /**
+ * Checks that the provided connection can read cn=config.
+ * @param ctx the connection to be tested.
+ * @throws NamingException if an error occurs while reading cn=config.
+ */
+ public static void checkCanReadConfig(InitialLdapContext ctx)
+ throws NamingException
+ {
/*
* Search for the config to check that it is the directory manager.
*/
@@ -2052,7 +2146,6 @@
searchControls.setReturningAttributes(
new String[] {"dn"});
ctx.search("cn=config", "objectclass=*", searchControls);
- return ctx;
}
/**
--
Gitblit v1.10.0