001: //$HeadURL: svn+ssh://rbezema@wald.intevation.org/deegree/base/trunk/src/org/deegree/security/owsrequestvalidator/csw/GetRecordsResponseValidator.java $
002: /*---------------- FILE HEADER ------------------------------------------
003:
004: This file is part of deegree.
005: Copyright (C) 2001-2008 by:
006: EXSE, Department of Geography, University of Bonn
007: http://www.giub.uni-bonn.de/deegree/
008: lat/lon GmbH
009: http://www.lat-lon.de
010:
011: This library is free software; you can redistribute it and/or
012: modify it under the terms of the GNU Lesser General Public
013: License as published by the Free Software Foundation; either
014: version 2.1 of the License, or (at your option) any later version.
015:
016: This library is distributed in the hope that it will be useful,
017: but WITHOUT ANY WARRANTY; without even the implied warranty of
018: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
019: Lesser General Public License for more details.
020:
021: You should have received a copy of the GNU Lesser General Public
022: License along with this library; if not, write to the Free Software
023: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
024:
025: Contact:
026:
027: Andreas Poth
028: lat/lon GmbH
029: Aennchenstr. 19
030: 53177 Bonn
031: Germany
032: E-Mail: poth@lat-lon.de
033:
034: Prof. Dr. Klaus Greve
035: Department of Geography
036: University of Bonn
037: Meckenheimer Allee 166
038: 53115 Bonn
039: Germany
040: E-Mail: greve@giub.uni-bonn.de
041:
042: ---------------------------------------------------------------------------*/
043: package org.deegree.security.owsrequestvalidator.csw;
044:
045: import org.deegree.framework.util.MimeTypeMapper;
046: import org.deegree.ogcwebservices.InvalidParameterValueException;
047: import org.deegree.security.drm.model.User;
048: import org.deegree.security.owsproxy.Request;
049: import org.deegree.security.owsrequestvalidator.Policy;
050: import org.deegree.security.owsrequestvalidator.ResponseValidator;
051:
052: /**
053: *
054: * @author <a href="mailto:poth@lat-lon.de">Andreas Poth </a>
055: * @author last edited by: $Author: wanhoff $
056: *
057: * @version 1.1, $Revision: 6375 $, $Date: 2007-03-26 14:04:38 +0200 (Mo, 26 Mrz 2007) $
058: */
059: class GetRepositoryItemResponseValidator extends ResponseValidator {
060:
061: /**
062: * @param policy
063: */
064: public GetRepositoryItemResponseValidator(Policy policy) {
065: super (policy);
066: }
067:
068: /**
069: * validates the passed object as a response to a OWS request. The validity of the response may
070: * is assigned to specific user rights. If the passed user is <>null this will be evaluated.
071: * <br>
072: * the reponse may contain three valid kinds of objects:
073: * <ul>
074: * <li>a xml encoded exception
075: * <li>a GML document
076: * <li>a XML document
077: * <li>any other kind of document that is valid against the formats defined for GetRecord in
078: * the capabilities
079: * </ul>
080: * Each of these types can be identified by the mime-type of the response that is also passed to
081: * the method. <br>
082: * If something basic went wrong it is possible that not further specified kind of object is
083: * passed as response. In this case the method will throw an
084: * <tt>InvalidParameterValueException</tt> to avoid sending bad responses to the client.
085: *
086: * @param service
087: * service which produced the response (WMS, WFS ...)
088: * @param response
089: * @param mime
090: * mime-type of the response
091: * @param user
092: * @return the response array
093: * @throws InvalidParameterValueException
094: */
095: @Override
096: public byte[] validateResponse(String service, byte[] response,
097: String mime, User user)
098: throws InvalidParameterValueException {
099:
100: Request req = policy.getRequest(service, "GetRecord");
101: // request is valid because no restrictions are made
102: if (req.isAny())
103: return response;
104:
105: // Condition condition = req.getPostConditions();
106:
107: if (MimeTypeMapper.isKnownOGCType(mime)) {
108: // if the mime-type isn't an image type but a known
109: // OGC mime-type it must be an XML document.
110: // probably it is an exception but it also could be
111: // a GML document
112: response = validateXML(response, mime, user);
113: } else if (mime.equals("text/xml")) {
114: // if the mime-type isn't an image type but 'text/xml'
115: // it could be an exception
116: response = validateXML(response, mime, user);
117: } else {
118: throw new InvalidParameterValueException(UNKNOWNMIMETYPE
119: + mime);
120: }
121:
122: return response;
123: }
124:
125: /**
126: * validates the passed byte array to be valid against the policy
127: *
128: * @param xml
129: * @param mime
130: * @param user
131: */
132: private byte[] validateXML(byte[] xml, String mime, User user) {
133: // TODO
134: // define useful post-validation for xml-documents
135: // at the moment everything is valid
136: return xml;
137: }
138:
139: }
|