blob: 6c81dd4386a922806de9b8ebaeacd256314a455e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2004 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
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.wst.wsdl.ui.internal.xsd;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.eclipse.wst.wsdl.ui.internal.WSDLEditor;
import org.eclipse.wst.wsdl.ui.internal.extension.IModelQueryContributor;
import org.eclipse.wst.wsdl.ui.internal.util.WSDLEditorUtil;
import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQuery;
import org.eclipse.wst.xsd.ui.internal.AbstractXSDDataTypeValueExtension;
import org.eclipse.wst.xsd.ui.internal.AbstractXSDModelQueryContributor;
import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
import org.eclipse.xsd.XSDConcreteComponent;
import org.eclipse.xsd.XSDSchema;
import org.w3c.dom.Element;
public class XSDModelQueryContributor extends AbstractXSDModelQueryContributor implements IModelQueryContributor
{
protected WSDLEditor wsdlEditor;
public XSDModelQueryContributor(WSDLEditor wsdlEditor)
{
this.wsdlEditor = wsdlEditor;
}
public AbstractXSDDataTypeValueExtension createXSDDataTypeValueExtension(ModelQuery modelQuery)
{
return new XSDDataTypeValueExtension(modelQuery);
}
class XSDDataTypeValueExtension extends AbstractXSDDataTypeValueExtension
{
public XSDDataTypeValueExtension(ModelQuery modelQuery)
{
super(modelQuery);
}
public String getId()
{
return "WSDL-XSDDataTypeValueExtension";
}
protected XSDSchema getEnclosingXSDSchema(Element element)
{
XSDSchema result = null;
Object o = WSDLEditorUtil.getInstance().findModelObjectForElement(wsdlEditor.getDefinition(), element);
if (o instanceof XSDConcreteComponent)
{
result = ((XSDConcreteComponent)o).getSchema();
}
return result;
}
protected TypesHelper createTypesHelper(XSDSchema schema)
{
return new TypesHelper(schema)
{
protected List getPrefixesForNamespace(String namespace)
{
List list = super.getPrefixesForNamespace(namespace);
Map map = wsdlEditor.getDefinition().getNamespaces();
for (Iterator i = map.keySet().iterator(); i.hasNext();)
{
String prefix = (String)i.next();
String ns = (String)map.get(prefix);
if (ns != null && ns.equals(namespace))
{
if (!list.contains(prefix))
{
list.add(prefix);
}
}
}
return list;
}
};
}
}
}