Clover Coverage Report
Coverage timestamp: Sun Mar 23 2008 08:24:39 GMT
28   111   9   9.33
8   50   0.39   3
3     3.67  
1    
 
 
  WebDAVURLHandler       Line # 62 28 9 12.8% 0.12820514
 
No Tests
 
1    /*
2    * Copyright (c) 2006-7, University of Kent
3    * All rights reserved.
4    *
5    * Redistribution and use in source and binary forms, with or without
6    * modification, are permitted provided that the following conditions are met:
7    *
8    * Redistributions of source code must retain the above copyright notice, this
9    * list of conditions and the following disclaimer.
10    *
11    * Redistributions in binary form must reproduce the above copyright notice,
12    * this list of conditions and the following disclaimer in the documentation
13    * and/or other materials provided with the distribution.
14    *
15    * 1. Neither the name of the University of Kent nor the names of its
16    * contributors may be used to endorse or promote products derived from this
17    * software without specific prior written permission.
18    *
19    * 2. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
20    * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21    * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22    * PURPOSE ARE DISCLAIMED.
23    *
24    * 3. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25    * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26    * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27    * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28    * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29    * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30    * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31    * POSSIBILITY OF SUCH DAMAGE.
32    *
33    * 4. YOU AGREE THAT THE EXCLUSIONS IN PARAGRAPHS 2 AND 3 ABOVE ARE REASONABLE
34    * IN THE CIRCUMSTANCES. IN PARTICULAR, YOU ACKNOWLEDGE (1) THAT THIS
35    * SOFTWARE HAS BEEN MADE AVAILABLE TO YOU FREE OF CHARGE, (2) THAT THIS
36    * SOFTWARE IS NOT "PRODUCT" QUALITY, BUT HAS BEEN PRODUCED BY A RESEARCH
37    * GROUP WHO DESIRE TO MAKE THIS SOFTWARE FREELY AVAILABLE TO PEOPLE WHO WISH
38    * TO USE IT, AND (3) THAT BECAUSE THIS SOFTWARE IS NOT OF "PRODUCT" QUALITY
39    * IT IS INEVITABLE THAT THERE WILL BE BUGS AND ERRORS, AND POSSIBLY MORE
40    * SERIOUS FAULTS, IN THIS SOFTWARE.
41    *
42    * 5. This license is governed, except to the extent that local laws
43    * necessarily apply, by the laws of England and Wales.
44    */
45   
46    package issrg.pba.rbac;
47   
48    import issrg.utils.repository.*;
49    import issrg.security.SecurityException;
50    import issrg.saml.SAMLSecurity;
51   
52    import java.net.*;
53   
54    import org.apache.log4j.*;
55   
56    /**
57    * This class handles WebDAV URL's, with SSL client authentication details.
58    *
59    * @author Sean Antony
60    * @version 13/03/2007
61    */
 
62    public class WebDAVURLHandler extends URLHandler {
63   
64    private static Logger logger = Logger.getLogger(WebDAVURLHandler.class.getName());
65    private String protocol = null;
66   
 
67  2 toggle public WebDAVURLHandler(int defaultPort, String protocolIn) {
68  2 super(protocolIn.toLowerCase(), defaultPort);
69  2 this.protocol = protocolIn.toLowerCase();
70    }
71   
 
72  0 toggle public issrg.utils.repository.AttributeRepository getRepository(String url) throws BadURLException {
73  0 if (getProtocolName(url).compareToIgnoreCase(HTTPS_PROTOCOL) == 0) {
74  0 logger.debug("a SSL connection is required");
75  0 try {
76  0 SAMLSecurity security = new SAMLSecurity();
77  0 security.login(3);//login with keystore
78  0 URL up = new URL(url);
79  0 String host = up.getHost();
80  0 int port = up.getPort();
81  0 if (port!=-1) defaultPort = port;
82  0 return new WebDAVRepository(host, defaultPort, security);
83    } catch (MalformedURLException me) {
84  0 throw new BadURLException("Wrong URL syntax: "+url+" is encountered");
85    } catch (SecurityException se) {
86  0 throw new BadURLException("security object error: "+se);
87    } catch (Exception e) {
88  0 throw new BadURLException("login error: "+e);
89    }
90   
91  0 } else if (getProtocolName(url).compareToIgnoreCase(HTTP_PROTOCOL) == 0) {
92  0 logger.debug("non-SSL connection is required");
93  0 try {
94  0 URL up = new URL(url);
95  0 String host = up.getHost();
96  0 int port = up.getPort();
97  0 if (port!=-1) defaultPort = port;
98  0 return new WebDAVRepository(host, defaultPort);
99    } catch (MalformedURLException me) {
100  0 throw new BadURLException("Wrong URL syntax: "+url+" is encountered");
101    }
102    } else {
103  0 throw new BadURLException("Wrong URL Handler: "+url);
104    }
105    }
106   
 
107  2 toggle public String getProtocol(){
108  2 return this.protocol;
109    }
110   
111    }