package org.geotools.wcs.bindings; import javax.xml.namespace.QName; import net.opengis.wcs20.ExtensionItemType; import net.opengis.wcs20.ExtensionType; import net.opengis.wcs20.Wcs20Factory; import org.eclipse.emf.common.util.EList; import org.geotools.wcs.v2_0.WCS; import org.geotools.xml.AbstractComplexBinding; import org.geotools.xml.ElementInstance; import org.geotools.xml.Node; /** * Custom binding for the open ended WCS:Extension element * * @author Andrea Aime - GeoSolutions * */ public class ExtensionTypeBinding extends AbstractComplexBinding { public QName getTarget() { return WCS.ExtensionType; } public Class getType() { return ExtensionType.class; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * * @generated modifiable */ public Object parse(ElementInstance instance, Node node, Object value) throws Exception { ExtensionType et = Wcs20Factory.eINSTANCE.createExtensionType(); EList<ExtensionItemType> contents = et.getContents(); for(Object o : node.getChildren()) { Node child = (Node) o; String name = child.getComponent().getName(); String namespace = child.getComponent().getNamespace(); Object v = child.getValue(); ExtensionItemType item = Wcs20Factory.eINSTANCE.createExtensionItemType(); item.setName(name); item.setNamespace(namespace); if(v instanceof String) { item.setSimpleContent((String) v); } else { item.setObjectContent(v); } contents.add(item); } return et; } /* * (non-Javadoc) * * @see org.geotools.xml.AbstractComplexBinding#getExecutionMode() */ @Override public int getExecutionMode() { return OVERRIDE; } }