@Override protected AbstractNotificationOperation getNextOperation(final IWsdlModelRoot modelRoot) throws Exception { if (inlineNSCommand == null) { final ISchema containingSchema = findSingleSchema(modelRoot, "http://namespace1"); final Collection<ISchema> allReferredSchemas = containingSchema.getAllReferredSchemas(); ISchema schemaToInline = null; for (final ISchema iSchema : allReferredSchemas) { if (XSD1_NS.equals(iSchema.getNamespace())) { schemaToInline = iSchema; break; } } inlineNSCommand = new InlineNamespaceCompositeCommand(modelRoot, schemaToInline); return inlineNSCommand; } if (setTypeCommand == null) { final IElement attribute = getStructureType3(modelRoot).getElements("Attribute2").iterator().next(); final ISchema schema2 = findSingleSchema(modelRoot, "http://namespace3"); final IType typeToBeSet = schema2.getType(false, "SimpleType2"); setTypeCommand = new SetElementTypeCommand(attribute, typeToBeSet); return setTypeCommand; } return null; }
/** * Checks modelObject.getModelRoot() referred schemas, do match modelObject's XSDSchema * * @param modelObject which is supposed to be from referred schema. * @return referred ISchema, or null */ public static ISchema getReferredSchema(final IModelObject modelObject) { if (modelObject == null || !(modelObject.getModelRoot() instanceof IXSDModelRoot)) { return null; } final IXSDModelRoot xsdModelRoot = (IXSDModelRoot) modelObject.getModelRoot(); final ISchema schema = xsdModelRoot.getSchema(); // get referred XSDSchema EObject referredXSDSchema = modelObject.getComponent(); while (referredXSDSchema != null && !(referredXSDSchema instanceof XSDSchema)) { referredXSDSchema = referredXSDSchema.eContainer(); } if (referredXSDSchema != null) { for (final ISchema referredSchema : schema.getAllReferredSchemas()) { if (referredXSDSchema.equals(referredSchema.getComponent())) { return referredSchema; } } } return null; }