From 7399fdb018d2248ec36edb30f5339cdcafbe2e98 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Wed, 13 Jan 2010 17:19:12 +0000
Subject: [PATCH] Fix for issues https://opends.dev.java.net/issues/show_bug.cgi?id=4484 and https://opends.dev.java.net/issues/show_bug.cgi?id=4485.
---
opends/src/guitools/org/opends/guitools/controlpanel/ui/ErrorSearchingEntryPanel.java | 131 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 129 insertions(+), 2 deletions(-)
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/ErrorSearchingEntryPanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/ErrorSearchingEntryPanel.java
index 921d525..e4b4d14 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/ErrorSearchingEntryPanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/ErrorSearchingEntryPanel.java
@@ -22,7 +22,7 @@
* CDDL HEADER END
*
*
- * Copyright 2008 Sun Microsystems, Inc.
+ * Copyright 2008-2010 Sun Microsystems, Inc.
*/
package org.opends.guitools.controlpanel.ui;
@@ -31,9 +31,18 @@
import java.awt.Component;
import java.awt.GridBagConstraints;
+import java.awt.Insets;
+import javax.naming.NameNotFoundException;
+import javax.naming.NamingException;
+
+import org.opends.guitools.controlpanel.browser.BasicNodeError;
+import org.opends.guitools.controlpanel.browser.ReferralLimitExceededException;
import org.opends.guitools.controlpanel.event.ConfigurationChangeEvent;
import org.opends.messages.Message;
+import org.opends.messages.MessageBuilder;
+import org.opends.quicksetup.util.Utils;
+import org.opends.server.types.LDAPURL;
import org.opends.server.types.OpenDsException;
/**
@@ -52,7 +61,16 @@
{
super();
GridBagConstraints gbc = new GridBagConstraints();
- addErrorPane(gbc);
+ gbc.gridx = 0;
+ gbc.gridy = 0;
+ gbc.gridwidth = 1;
+ gbc.gridheight = 1;
+ gbc.weightx = 1.0;
+ gbc.anchor = GridBagConstraints.CENTER;
+ gbc.fill = GridBagConstraints.BOTH;
+ gbc.insets = new Insets(20, 20, 0, 20);
+ createErrorPane();
+ add(errorPane, gbc);
errorPane.setVisible(true);
}
@@ -109,4 +127,113 @@
updateErrorPane(errorPane, title, ColorAndFontConstants.errorTitleFont,
details, ColorAndFontConstants.defaultFont);
}
+
+ /**
+ * Sets the error to be displayed in the panel.
+ * @param dn the DN of the local entry.
+ * @param referrals the list of referrals defined in the entry.
+ * @param error the error that occurred resolving the referral.
+ */
+ public void setReferralError(String dn, String[] referrals,
+ BasicNodeError error)
+ {
+ Message title = INFO_CTRL_PANEL_ERROR_RESOLVING_REFERRAL_TITLE.get();
+ MessageBuilder details = new MessageBuilder();
+ StringBuilder sb = new StringBuilder();
+ for (String ref: referrals)
+ {
+ if (sb.length() > 0)
+ {
+ sb.append("<br>");
+ }
+ sb.append(" "+ref);
+ }
+ details.append(INFO_CTRL_PANEL_ERROR_RESOLVING_REFERRAL_MSG.get(dn, sb));
+ Exception ex = error.getException();
+ if (ex instanceof NamingException)
+ {
+ Object arg = error.getArg();
+ Message msg = null;
+ if (arg != null)
+ {
+ // Maybe is the LDAPURL
+ try
+ {
+ LDAPURL url = LDAPURL.decode(arg.toString(), false);
+ if (url.getHost() != null)
+ {
+ String hostPort = url.getHost()+":"+url.getPort();
+ if (ex instanceof ReferralLimitExceededException)
+ {
+ msg = Message.raw(ex.getLocalizedMessage());
+ }
+ else if (ex instanceof NameNotFoundException)
+ {
+ msg =
+ ERR_CTRL_PANEL_COULD_NOT_FIND_PROVIDED_ENTRY_IN_REFERRAL.get(
+ arg.toString(), hostPort);
+ }
+ else
+ {
+ msg = Utils.getMessageForException((NamingException)ex, hostPort);
+ }
+ }
+ else
+ {
+ if (ex instanceof ReferralLimitExceededException)
+ {
+ msg = Message.raw(ex.getLocalizedMessage());
+ }
+ else if (ex instanceof NameNotFoundException)
+ {
+ msg =
+ ERR_CTRL_PANEL_COULD_NOT_FIND_PROVIDED_ENTRY_IN_REFERRAL_NO_HOST.get(
+ arg.toString());
+ }
+ else
+ {
+ msg = Utils.getMessageForException((NamingException)ex);
+ }
+ }
+ }
+ catch (Throwable t)
+ {
+ }
+ }
+
+ if (msg == null)
+ {
+ if (ex instanceof ReferralLimitExceededException)
+ {
+ msg = Message.raw(ex.getLocalizedMessage());
+ }
+ else
+ {
+ msg = Utils.getMessageForException((NamingException)ex);
+ }
+ }
+ if (arg != null)
+ {
+ details.append("<br><br>"+
+ ERR_CTRL_PANEL_RESOLVING_REFERRAL_DETAILS.get(arg.toString(),
+ msg));
+ }
+ else
+ {
+ details.append("<br><br>"+INFO_CTRL_PANEL_DETAILS_THROWABLE.get(msg));
+ }
+ }
+ else if (ex != null)
+ {
+ String msg = ex.getLocalizedMessage();
+ if (msg == null)
+ {
+ msg = ex.toString();
+ }
+ details.append("<br><br>"+INFO_CTRL_PANEL_DETAILS_THROWABLE.get(msg));
+ }
+ details.append("<br><br>"+INFO_CTRL_PANEL_HOW_TO_EDIT_REFERRALS.get());
+ updateErrorPane(errorPane, title, ColorAndFontConstants.errorTitleFont,
+ details.toMessage(), ColorAndFontConstants.defaultFont);
+ }
}
--
Gitblit v1.10.0