From 856c767ca70efd70e6b4b7ed226890c753343fe0 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 28 Apr 2016 07:50:01 +0000
Subject: [PATCH] OPENDJ-2970 control-panel throws NPE when adding AttributeType
---
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewAttributePanel.java | 62 +++++++++++--------------------
1 files changed, 22 insertions(+), 40 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewAttributePanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewAttributePanel.java
index 7caf285..3ca9534 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewAttributePanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewAttributePanel.java
@@ -97,18 +97,18 @@
lApproximate, lEquality, lOrdering, lSubstring, lType };
private final JTextField name = Utilities.createMediumTextField();
- private final JComboBox parent = Utilities.createComboBox();
+ private final JComboBox<AttributeType> parent = Utilities.createComboBox();
private final JTextField oid = Utilities.createMediumTextField();
private final JTextField aliases = Utilities.createLongTextField();
private final JTextField description = Utilities.createLongTextField();
private final JTextField origin = Utilities.createLongTextField();
private final JTextField file = Utilities.createLongTextField();
private final JComboBox<AttributeUsage> usage = Utilities.createComboBox();
- private final JComboBox syntax = Utilities.createComboBox();
- private final JComboBox approximate = Utilities.createComboBox();
- private final JComboBox equality = Utilities.createComboBox();
- private final JComboBox ordering = Utilities.createComboBox();
- private final JComboBox substring = Utilities.createComboBox();
+ private final JComboBox<Syntax> syntax = Utilities.createComboBox();
+ private final JComboBox<MatchingRule> approximate = Utilities.createComboBox();
+ private final JComboBox<MatchingRule> equality = Utilities.createComboBox();
+ private final JComboBox<MatchingRule> ordering = Utilities.createComboBox();
+ private final JComboBox<MatchingRule> substring = Utilities.createComboBox();
private final JCheckBox nonModifiable = Utilities.createCheckBox(
INFO_CTRL_PANEL_ATTRIBUTE_NON_MODIFIABLE_LABEL.get());
private final JCheckBox singleValued = Utilities.createCheckBox(INFO_CTRL_PANEL_ATTRIBUTE_SINGLE_VALUED_LABEL.get());
@@ -193,7 +193,7 @@
{
newSyntaxes.add(syntaxNameMap.get(key));
}
- updateComboBoxModel(newSyntaxes, (DefaultComboBoxModel) syntax.getModel());
+ updateComboBoxModel(newSyntaxes, (DefaultComboBoxModel<Syntax>) syntax.getModel());
Map<String, AttributeType> attributeNameMap = new HashMap<>();
for (AttributeType attr : schema.getAttributeTypes())
@@ -208,7 +208,7 @@
newParents.add(attributeNameMap.get(key));
}
newParents.add(0, NO_PARENT);
- updateComboBoxModel(newParents, (DefaultComboBoxModel) parent.getModel());
+ updateComboBoxModel(newParents, (DefaultComboBoxModel<AttributeType>) parent.getModel());
final List<MatchingRule> availableMatchingRules = new ArrayList<>();
final Map<String, MatchingRule> matchingRuleNameMap = new HashMap<>();
@@ -254,7 +254,7 @@
{
for (int i = 0; i < syntax.getModel().getSize(); i++)
{
- Syntax syn = (Syntax) syntax.getModel().getElementAt(i);
+ Syntax syn = syntax.getModel().getElementAt(i);
if ("DirectoryString".equals(syn.getName()))
{
syntax.setSelectedIndex(i);
@@ -485,7 +485,7 @@
gbc.anchor = GridBagConstraints.WEST;
gbc.insets.bottom = 0;
- JComboBox[] comboBoxes = { parent, syntax, approximate, equality, ordering, substring };
+ JComboBox<?>[] comboBoxes = { parent, syntax, approximate, equality, ordering, substring };
LocalizableMessage[] defaultValues =
{ NO_PARENT, LocalizableMessage.EMPTY, NO_MATCHING_RULE, NO_MATCHING_RULE, NO_MATCHING_RULE, NO_MATCHING_RULE };
SchemaElementComboBoxCellRenderer renderer = new SchemaElementComboBoxCellRenderer(syntax);
@@ -590,7 +590,7 @@
{
MatchingRule[] rules = { syn.getApproximateMatchingRule(), syn.getSubstringMatchingRule(),
syn.getEqualityMatchingRule(), syn.getOrderingMatchingRule() };
- JComboBox[] combos = { approximate, substring, equality, ordering };
+ JComboBox<?>[] combos = { approximate, substring, equality, ordering };
for (int i = 0; i < rules.length; i++)
{
DefaultComboBoxModel model = (DefaultComboBoxModel) combos[i].getModel();
@@ -657,31 +657,11 @@
return (AttributeType) o;
}
- private MatchingRule getApproximateMatchingRule()
- {
- return getMatchingRule(approximate);
- }
-
- private MatchingRule getEqualityMatchingRule()
- {
- return getMatchingRule(equality);
- }
-
- private MatchingRule getSubstringMatchingRule()
- {
- return getMatchingRule(substring);
- }
-
- private MatchingRule getOrderingMatchingRule()
- {
- return getMatchingRule(ordering);
- }
-
- private MatchingRule getMatchingRule(JComboBox comboBox)
+ private String getMatchingRuleOID(JComboBox<MatchingRule> comboBox)
{
if (comboBox.getSelectedIndex() != 0)
{
- return (MatchingRule) comboBox.getSelectedItem();
+ return ((MatchingRule) comboBox.getSelectedItem()).getOID();
}
return null;
}
@@ -711,16 +691,18 @@
private AttributeType getAttribute()
{
+ AttributeType superior = getSuperior();
+ Syntax selectedSyntax = (Syntax) syntax.getSelectedItem();
return new SchemaBuilder().buildAttributeType(getOID())
.names(getAllNames())
.description(getDescription())
- .superiorType(getSuperior().getNameOrOID())
- .syntax(((Syntax) syntax.getSelectedItem()).getOID())
- .approximateMatchingRule(getApproximateMatchingRule().getOID())
- .equalityMatchingRule(getEqualityMatchingRule().getOID())
- .orderingMatchingRule(getOrderingMatchingRule().getOID())
- .substringMatchingRule(getSubstringMatchingRule().getOID())
- .usage((AttributeUsage)usage.getSelectedItem())
+ .superiorType(superior != null ? superior.getNameOrOID() : null)
+ .syntax(selectedSyntax != null ? selectedSyntax.getOID() : null)
+ .approximateMatchingRule(getMatchingRuleOID(approximate))
+ .equalityMatchingRule(getMatchingRuleOID(equality))
+ .orderingMatchingRule(getMatchingRuleOID(ordering))
+ .substringMatchingRule(getMatchingRuleOID(substring))
+ .usage((AttributeUsage) usage.getSelectedItem())
.collective(collective.isSelected())
.obsolete(obsolete.isSelected())
.noUserModification(nonModifiable.isSelected())
--
Gitblit v1.10.0