use of org.eclipse.xsd.util.XSDResourceImpl in project webtools.sourceediting by eclipse.
the class BaseTestCase method getXSDSchema.
protected XSDSchema getXSDSchema(String path) {
URI uri = URI.createFileURI(path);
ResourceSet resourceSet = new ResourceSetImpl();
XSDResourceImpl resource = (XSDResourceImpl) resourceSet.getResource(uri, true);
XSDSchema schema = resource.getSchema();
assertNotNull(schema);
return schema;
}
use of org.eclipse.xsd.util.XSDResourceImpl in project webtools.sourceediting by eclipse.
the class UpdateComponentReferenceAndManageDirectivesCommand method computeComponent.
protected XSDComponent computeComponent() {
XSDComponent result = null;
XSDSchema schema = concreteComponent.getSchema();
XSDSchemaDirective directive = null;
// lets see if the element is already visible to our schema
result = getDefinedComponent(schema, componentName, componentNamespace);
if (result == null) {
// includes/imports to get to it
if (componentNamespace != null && componentNamespace.equals(schema.getTargetNamespace())) {
// 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) {
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();
}
} 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) {
try {
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
}
}
return result;
}
Aggregations