001 //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/tags/2.1/src/org/deegree/ogcwebservices/wass/was/operation/DescribeUserHandler.java $ 002 /*---------------- FILE HEADER ------------------------------------------ 003 This file is part of deegree. 004 Copyright (C) 2001-2006 by: 005 Department of Geography, University of Bonn 006 http://www.giub.uni-bonn.de/deegree/ 007 lat/lon GmbH 008 http://www.lat-lon.de 009 This library is free software; you can redistribute it and/or 010 modify it under the terms of the GNU Lesser General Public 011 License as published by the Free Software Foundation; either 012 version 2.1 of the License, or (at your option) any later version. 013 This library is distributed in the hope that it will be useful, 014 but WITHOUT ANY WARRANTY; without even the implied warranty of 015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 016 Lesser General Public License for more details. 017 You should have received a copy of the GNU Lesser General Public 018 License along with this library; if not, write to the Free Software 019 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 020 Contact: 021 Andreas Poth 022 lat/lon GmbH 023 Aennchenstraße 19 024 53177 Bonn 025 Germany 026 E-Mail: poth@lat-lon.de 027 Jens Fitzke 028 lat/lon GmbH 029 Aennchenstraße 19 030 53177 Bonn 031 Germany 032 E-Mail: jens.fitzke@uni-bonn.de 033 ---------------------------------------------------------------------------*/ 034 package org.deegree.ogcwebservices.wass.was.operation; 035 036 import java.io.IOException; 037 038 import org.deegree.framework.log.ILogger; 039 import org.deegree.framework.log.LoggerFactory; 040 import org.deegree.framework.xml.XMLParsingException; 041 import org.deegree.i18n.Messages; 042 import org.deegree.ogcwebservices.OGCWebServiceException; 043 import org.deegree.ogcwebservices.wass.common.WASSSecurityManager; 044 import org.deegree.security.GeneralSecurityException; 045 import org.deegree.security.drm.SecurityAccessManager; 046 import org.deegree.security.drm.model.User; 047 import org.deegree.security.session.MemoryBasedSessionManager; 048 import org.deegree.security.session.Session; 049 import org.deegree.security.session.SessionStatusException; 050 import org.xml.sax.SAXException; 051 052 /** 053 * <code>DescribeUserHandler</code> is the handler class for the deegree specific DescribeUser 054 * operation. 055 * 056 * @author <a href="mailto:schmitz@lat-lon.de">Andreas Schmitz</a> 057 * @author last edited by: $Author: aschmitz $ 058 * 059 * @version 2.0, $Revision: 7341 $, $Date: 2007-05-29 14:03:14 +0200 (Di, 29 Mai 2007) $ 060 * 061 * @since 2.0 062 */ 063 064 public class DescribeUserHandler { 065 066 private WASSSecurityManager manager; 067 068 private MemoryBasedSessionManager sessionManager; 069 070 private static final ILogger LOG = LoggerFactory.getLogger( DescribeUserHandler.class ); 071 072 /** 073 * Constructs new handler with the specified manager as its data source. 074 * 075 * @param manager the source of the user data 076 */ 077 public DescribeUserHandler( WASSSecurityManager manager ) { 078 this.manager = manager; 079 this.sessionManager = MemoryBasedSessionManager.getInstance(); 080 } 081 082 /** 083 * Handles a DescribeUser request. 084 * 085 * @param request the request to handle 086 * @throws OGCWebServiceException 087 * @throws GeneralSecurityException 088 * @return an XML document containing the requested information 089 */ 090 public DescribeUserResponse handleRequest( DescribeUser request ) 091 throws OGCWebServiceException, GeneralSecurityException { 092 SecurityAccessManager sam = manager.getSecurityAccessManager(); 093 Session session = null; 094 try { 095 session = sessionManager.getSessionByID( request.getSessionID() ); 096 } catch ( SessionStatusException e ) { 097 LOG.logError( e.getLocalizedMessage(), e ); 098 throw new OGCWebServiceException( "DescribeUserHandler: ", Messages.getMessage( "WASS_ERROR_INVALID_SESSION", "WASS" ) ); 099 } 100 101 if( session == null ) throw new OGCWebServiceException( "DescribeUserHandler: ", 102 Messages.getMessage( "WASS_ERROR_INVALID_SESSION", "WASS" ) ); 103 104 if( ! session.isAlive() ) throw new OGCWebServiceException( "DescribeUserHandler: ", 105 Messages.getMessage( "WASS_ERROR_SESSION_EXPIRED", "WASS" ) ); 106 107 String username = session.getUser(); 108 109 User user = sam.getUserByName( username ); 110 111 DescribeUserResponse response = null; 112 113 try{ 114 response = new DescribeUserResponse( user, request.getSessionID() ); 115 } catch ( SAXException saxe ) { 116 LOG.logError( saxe.getLocalizedMessage(), saxe ); 117 throw new OGCWebServiceException( "DescribeUserHandler: ", 118 Messages.getMessage( "WASS_" + 119 "ERROR_RESOURCE_WRONG_FORMAT", 120 DescribeUserResponse.XML_TEMPLATE ) ); 121 } catch ( IOException ioe ) { 122 LOG.logError( ioe.getLocalizedMessage(), ioe ); 123 throw new OGCWebServiceException( "DescribeUserHandler: ", 124 Messages.getMessage( "WASS_" + 125 "ERROR_RESOURCE_NOT_FOUND", 126 DescribeUserResponse.XML_TEMPLATE ) ); 127 } catch ( XMLParsingException xmlpe ) { 128 LOG.logError( xmlpe.getLocalizedMessage(), xmlpe ); 129 throw new OGCWebServiceException( "DescribeUserHandler: ", 130 Messages.getMessage( "WASS_" + 131 "ERROR_RESOURCE_WRONG_FORMAT", 132 DescribeUserResponse.XML_TEMPLATE ) ); 133 } 134 135 return response; 136 } 137 138 }