| | |
| | | * CDDL HEADER END |
| | | * |
| | | * |
| | | * Copyright 2008 Sun Microsystems, Inc. |
| | | * Copyright 2008-2010 Sun Microsystems, Inc. |
| | | */ |
| | | |
| | | package org.opends.guitools.controlpanel.ui; |
| | |
| | | |
| | | 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; |
| | | |
| | | /** |
| | |
| | | { |
| | | 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); |
| | | } |
| | | |
| | |
| | | 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); |
| | | } |
| | | } |