Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkchong2007-08-24 19:30:46 +0000
committerkchong2007-08-24 19:30:46 +0000
commit412cffc40afc7096a4686dc9f8c30458a196707d (patch)
tree38778b08b593dbe65f6f4d121fe44fcd226352e9
parente48a76dc29a5f200398f8a6a88ee8e48a1c5bdd9 (diff)
downloadwebtools.sourceediting-412cffc40afc7096a4686dc9f8c30458a196707d.tar.gz
webtools.sourceediting-412cffc40afc7096a4686dc9f8c30458a196707d.tar.xz
webtools.sourceediting-412cffc40afc7096a4686dc9f8c30458a196707d.zip
[no bug] Prevent recursive model group references
-rw-r--r--bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/commands/AddXSDModelGroupDefinitionCommand.java14
-rw-r--r--bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/properties/sections/XSDModelGroupDefinitionSection.java15
2 files changed, 26 insertions, 3 deletions
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/commands/AddXSDModelGroupDefinitionCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/commands/AddXSDModelGroupDefinitionCommand.java
index 8e0596defc..7fa85eac9a 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/commands/AddXSDModelGroupDefinitionCommand.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/commands/AddXSDModelGroupDefinitionCommand.java
@@ -61,11 +61,19 @@ public class AddXSDModelGroupDefinitionCommand extends BaseCommand
XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle();
particle.setContent(def);
List list = parent.getSchema().getModelGroupDefinitions();
- if (list.size() > 0)
+ int length = list.size();
+ if (length > 1)
{
- def.setResolvedModelGroupDefinition((XSDModelGroupDefinition) list.get(0));
+ for (int i = 0; i < length; i++)
+ {
+ XSDModelGroupDefinition gr = (XSDModelGroupDefinition) list.get(i);
+ if (gr.getModelGroup() != parent)
+ {
+ def.setResolvedModelGroupDefinition(gr);
+ }
+ }
}
- else
+ else if (length <= 1)
{
XSDModelGroupDefinition newGroupDef = createXSDModelGroupDefinition();
def.setResolvedModelGroupDefinition(newGroupDef);
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/properties/sections/XSDModelGroupDefinitionSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/properties/sections/XSDModelGroupDefinitionSection.java
index 4e2a0557d6..fd989a19cc 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/properties/sections/XSDModelGroupDefinitionSection.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/properties/sections/XSDModelGroupDefinitionSection.java
@@ -32,6 +32,7 @@ import org.eclipse.wst.xsd.ui.internal.common.commands.UpdateNameCommand;
import org.eclipse.wst.xsd.ui.internal.common.util.Messages;
import org.eclipse.wst.xsd.ui.internal.editor.XSDEditorCSHelpIds;
import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
+import org.eclipse.xsd.XSDConcreteComponent;
import org.eclipse.xsd.XSDModelGroupDefinition;
import org.eclipse.xsd.XSDNamedComponent;
import org.eclipse.xsd.util.XSDConstants;
@@ -220,6 +221,20 @@ public class XSDModelGroupDefinitionSection extends MultiplicitySection
TypesHelper helper = new TypesHelper(xsdSchema);
List items = new ArrayList();
items = helper.getModelGroups();
+ if (input instanceof XSDModelGroupDefinition)
+ {
+ XSDModelGroupDefinition group = (XSDModelGroupDefinition) input;
+ XSDConcreteComponent parent = group.getContainer();
+ while (parent != null)
+ {
+ if (parent instanceof XSDModelGroupDefinition)
+ {
+ items.remove(((XSDModelGroupDefinition)parent).getQName());
+ break;
+ }
+ parent = parent.getContainer();
+ }
+ }
items.add(0, ""); //$NON-NLS-1$
componentNameCombo.setItems((String [])items.toArray(new String[0]));
}

Back to the top