/* (c) 2014 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.csw.store.simple; import javax.xml.namespace.QName; import org.geoserver.csw.util.QNameResolver; import org.geotools.csw.CSW; import org.geotools.filter.visitor.DuplicatingFilterVisitor; import org.opengis.filter.expression.PropertyName; import org.xml.sax.helpers.NamespaceSupport; /** * Replaces references to csw:AnyText to a call to the RecordText filter function * * @author Andrea Aime - GeoSolutions */ public class CSWAnyExpander extends DuplicatingFilterVisitor { QNameResolver resolver = new QNameResolver(); @Override public Object visit(PropertyName expression, Object extraData) { NamespaceSupport nss = expression.getNamespaceContext(); String path = expression.getPropertyName(); if (nss != null) { QName name = resolver.parseQName(expression.getPropertyName(), nss); String uri = name.getNamespaceURI(); if (path.endsWith("AnyText") && (uri == null || "".equals(uri) || CSW.NAMESPACE.equals(uri))) { return new RecordTextFunction(); } } return getFactory(extraData).property(path, nss); } }