Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles')
-rw-r--r--bundles/org.eclipse.wst.xsd.ui/META-INF/MANIFEST.MF2
-rw-r--r--bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/commands/UpdateComponentReferenceAndManageDirectivesCommand.java127
2 files changed, 73 insertions, 56 deletions
diff --git a/bundles/org.eclipse.wst.xsd.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.xsd.ui/META-INF/MANIFEST.MF
index a0074ba05d..1eeb1b7cde 100644
--- a/bundles/org.eclipse.wst.xsd.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.xsd.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %_UI_PLUGIN_NAME
Bundle-SymbolicName: org.eclipse.wst.xsd.ui; singleton:=true
-Bundle-Version: 1.1.105.qualifier
+Bundle-Version: 1.1.106.qualifier
Bundle-Activator: org.eclipse.wst.xsd.ui.internal.editor.XSDEditorPlugin
Bundle-Vendor: %Bundle-Vendor.0
Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/commands/UpdateComponentReferenceAndManageDirectivesCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/commands/UpdateComponentReferenceAndManageDirectivesCommand.java
index fcb9b46d38..74b1099a0d 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/commands/UpdateComponentReferenceAndManageDirectivesCommand.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/commands/UpdateComponentReferenceAndManageDirectivesCommand.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2001, 2006 IBM Corporation and others.
+ * Copyright (c) 2001, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -39,72 +39,89 @@ public abstract class UpdateComponentReferenceAndManageDirectivesCommand extends
XSDComponent result = null;
XSDSchema schema = concreteComponent.getSchema();
XSDSchemaDirective directive = null;
- // TODO (cs) handle case where namespace==null
- //
- if (componentNamespace != null)
+
+ // lets see if the element is already visible to our schema
+ result = getDefinedComponent(schema, componentName, componentNamespace);
+ if (result == null)
{
- // lets see if the element is already visible to our schema
- result = getDefinedComponent(schema, componentName, componentNamespace);
- if (result == null)
+ // TODO (cs) we need to provide a separate command to do this part
+ //
+ // apparently the element is not yet visible, we need to add
+ // includes/imports to get to it
+ if (componentNamespace != null && componentNamespace.equals(schema.getTargetNamespace()))
{
- // TODO (cs) we need to provide a separate command to do this part
- //
- // apparently the element is not yet visible, we need to add
- // includes/imports to get to it
- if (componentNamespace.equals(schema.getTargetNamespace()))
- {
- // we need to add an include
- directive = XSDFactory.eINSTANCE.createXSDInclude();
- }
- else
+ // we need to add an include
+ // if the component's namespace is not null and matches the schema's
+ // target namespace
+ directive = XSDFactory.eINSTANCE.createXSDInclude();
+ }
+ else if (componentNamespace == null)
+ {
+ // we need to add an include
+ // if the component's namespace is null, then we can just add it
+ // only if the current namespace is not null
+ directive = XSDFactory.eINSTANCE.createXSDInclude();
+
+ // we have to ensure the schema for schema prefix is NOT null
+ if (schema.getSchemaForSchemaQNamePrefix() == null)
{
- // we need to add an import
- XSDImport xsdImport = XSDFactory.eINSTANCE.createXSDImport();
- xsdImport.setNamespace(componentNamespace);
- directive = xsdImport;
+ String targetNS = schema.getTargetNamespace();
+ if (targetNS == null)
+ targetNS = "";
+ // this will just update the schema for schema prefix to be, say, xsd
+ UpdateNamespaceInformationCommand command = new UpdateNamespaceInformationCommand("", schema, "", targetNS);
+ command.execute();
}
-
- String location = computeNiceLocation(schema.getSchemaLocation(), file);
- directive.setSchemaLocation(location);
- // TODO (cs) we should at the directive 'next' in the list of directives
- // for now I'm just adding as the first thing in the schema :-(
- //
- schema.getContents().add(0, directive);
- XSDSchema resolvedSchema = directive.getResolvedSchema();
- if (resolvedSchema == null)
+ }
+ else
+ {
+ // we need to add an import
+ XSDImport xsdImport = XSDFactory.eINSTANCE.createXSDImport();
+ xsdImport.setNamespace(componentNamespace);
+ directive = xsdImport;
+ }
+
+ String location = computeNiceLocation(schema.getSchemaLocation(), file);
+ directive.setSchemaLocation(location);
+ // TODO (cs) we should at the directive 'next' in the list of directives
+ // for now I'm just adding as the first thing in the schema :-(
+ //
+ schema.getContents().add(0, directive);
+ XSDSchema resolvedSchema = directive.getResolvedSchema();
+ if (resolvedSchema == null)
+ {
+ String platformLocation = "platform:/resource" + file.getFullPath();
+ Resource resource = concreteComponent.eResource().getResourceSet().createResource(URI.createURI(platformLocation));
+ if (resource instanceof XSDResourceImpl)
{
- String platformLocation = "platform:/resource" + file.getFullPath();
- Resource resource = concreteComponent.eResource().getResourceSet().createResource(URI.createURI(platformLocation));
- if (resource instanceof XSDResourceImpl)
+ try
{
- try
- {
- resource.load(null);
- XSDResourceImpl resourceImpl = (XSDResourceImpl) resource;
- resolvedSchema = resourceImpl.getSchema();
- if (resolvedSchema != null)
- {
- directive.setResolvedSchema(resolvedSchema);
- }
- }
- catch (Exception e)
+ resource.load(null);
+ XSDResourceImpl resourceImpl = (XSDResourceImpl) resource;
+ resolvedSchema = resourceImpl.getSchema();
+ if (resolvedSchema != null)
{
+ directive.setResolvedSchema(resolvedSchema);
}
}
+ catch (Exception e)
+ {
+ }
}
- if (resolvedSchema != null)
- {
- result = getDefinedComponent(resolvedSchema, componentName, componentNamespace);
- }
- else
- {
- // TODO (cs) consider setting some error state so that the client can
- // provide a pop-dialog error
- // we should also remove the import/include so save from cluttering
- // the file with bogus directives
- }
+ }
+ if (resolvedSchema != null)
+ {
+ result = getDefinedComponent(resolvedSchema, componentName, componentNamespace);
+ }
+ else
+ {
+ // TODO (cs) consider setting some error state so that the client can
+ // provide a pop-dialog error
+ // we should also remove the import/include so save from cluttering
+ // the file with bogus directives
}
}
+
return result;
}

Back to the top