use of org.eclipse.wst.xml.core.internal.contentmodel.modelquery.extension.ModelQueryExtension in project webtools.sourceediting by eclipse.
the class ModelQueryExtensionManagerImpl method filterAvailableElementContent.
public void filterAvailableElementContent(List cmnodes, Element element, CMElementDeclaration ed, int includeOptions) {
String contentTypeId = getContentTypeId(element);
String parentNamespace = element.getNamespaceURI();
List modelQueryExtensions = modelQueryExtensionRegistry.getApplicableExtensions(contentTypeId, parentNamespace);
if ((includeOptions & ModelQuery.INCLUDE_CHILD_NODES) > 0) {
for (Iterator j = cmnodes.iterator(); j.hasNext(); ) {
CMNode cmNode = (CMNode) j.next();
String namespace = getNamespace(cmNode);
String name = cmNode.getNodeName();
boolean include = true;
for (int k = 0; k < modelQueryExtensions.size() && include; k++) {
{
ModelQueryExtension extension = (ModelQueryExtension) modelQueryExtensions.get(k);
include = extension.isApplicableChildElement(element, namespace, name);
if (!include) {
// remove the cmNode from the list
j.remove();
}
}
}
}
}
// add MQE-provided content
for (int k = 0; k < modelQueryExtensions.size(); k++) {
ModelQueryExtension extension = (ModelQueryExtension) modelQueryExtensions.get(k);
cmnodes.addAll(Arrays.asList(extension.getAvailableElementContent(element, parentNamespace, includeOptions)));
}
}
use of org.eclipse.wst.xml.core.internal.contentmodel.modelquery.extension.ModelQueryExtension in project webtools.sourceediting by eclipse.
the class ModelQueryExtensionRegistry method getApplicableExtensions.
public List getApplicableExtensions(String contentTypeId, String namespace) {
List list = new ArrayList();
if (contentTypeId != null) {
ensureExtensionsLoaded();
for (Iterator i = descriptors.iterator(); i.hasNext(); ) {
ModelQueryExtensionDescriptor descriptor = (ModelQueryExtensionDescriptor) i.next();
final String[] contentTypeIds = StringUtils.unpack(descriptor.getContentTypeId());
for (int j = 0; j < contentTypeIds.length; j++) {
if (contentTypeId.equals(contentTypeIds[j])) {
if (descriptor.getNamespace() == null || descriptor.getNamespace().equals(namespace)) {
try {
ModelQueryExtension extension = descriptor.createModelQueryExtension();
list.add(extension);
} catch (CoreException e) {
// $NON-NLS-1$
Logger.logException("problem creating model query extension", e);
}
}
break;
}
}
}
}
return list;
}
use of org.eclipse.wst.xml.core.internal.contentmodel.modelquery.extension.ModelQueryExtension in project webtools.sourceediting by eclipse.
the class ModelQueryExtensionManagerImpl method getDataTypeValues.
public List getDataTypeValues(Element element, CMNode cmNode) {
List list = new ArrayList();
String contentTypeId = getContentTypeId(element);
String namespace = getNamespace(cmNode);
String name = cmNode.getNodeName();
for (Iterator i = modelQueryExtensionRegistry.getApplicableExtensions(contentTypeId, namespace).iterator(); i.hasNext(); ) {
ModelQueryExtension extension = (ModelQueryExtension) i.next();
String[] values = null;
if (cmNode.getNodeType() == CMNode.ATTRIBUTE_DECLARATION) {
values = extension.getAttributeValues(element, namespace, name);
} else {
values = extension.getElementValues(element, namespace, name);
}
if (values != null) {
list.addAll(Arrays.asList(values));
}
}
return list;
}
Aggregations