You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wink.apache.org by ro...@apache.org on 2010/07/22 22:07:09 UTC

svn commit: r966832 - in /incubator/wink/trunk: wink-client-apache-httpclient/src/main/java/org/apache/wink/client/internal/handlers/ wink-client/src/main/java/org/apache/wink/client/ wink-client/src/main/java/org/apache/wink/client/handlers/ wink-clie...

Author: rott
Date: Thu Jul 22 20:07:08 2010
New Revision: 966832

URL: http://svn.apache.org/viewvc?rev=966832&view=rev
Log:
revert WINK-305 per Bryant's suggestion.  End-users will be responsible for providing and maintaining their own properties file for username/pw HTTP Authorization header credentials, if they desire it.

Modified:
    incubator/wink/trunk/wink-client-apache-httpclient/src/main/java/org/apache/wink/client/internal/handlers/ApacheHttpClientConnectionHandler.java
    incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/ClientConfig.java
    incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/handlers/BasicAuthSecurityHandler.java
    incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/internal/handlers/HttpURLConnectionHandler.java
    incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/registry/metadata/AbstractMetadataCollector.java
    incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/registry/metadata/ProviderMetadataCollector.java
    incubator/wink/trunk/wink-common/src/test/java/org/apache/wink/common/internal/registry/metadata/ProviderMetadataCollectorTest.java
    incubator/wink/trunk/wink-server/pom.xml
    incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/DeploymentConfiguration.java
    incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/servlet/RestFilter.java

Modified: incubator/wink/trunk/wink-client-apache-httpclient/src/main/java/org/apache/wink/client/internal/handlers/ApacheHttpClientConnectionHandler.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-client-apache-httpclient/src/main/java/org/apache/wink/client/internal/handlers/ApacheHttpClientConnectionHandler.java?rev=966832&r1=966831&r2=966832&view=diff
==============================================================================
--- incubator/wink/trunk/wink-client-apache-httpclient/src/main/java/org/apache/wink/client/internal/handlers/ApacheHttpClientConnectionHandler.java (original)
+++ incubator/wink/trunk/wink-client-apache-httpclient/src/main/java/org/apache/wink/client/internal/handlers/ApacheHttpClientConnectionHandler.java Thu Jul 22 20:07:08 2010
@@ -24,15 +24,8 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.URI;
-import java.security.KeyManagementException;
-import java.security.NoSuchAlgorithmException;
-import java.security.cert.X509Certificate;
 import java.util.List;
 
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLException;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.SSLSocket;
 import javax.ws.rs.core.MultivaluedMap;
 
 import org.apache.http.Header;
@@ -45,9 +38,6 @@ import org.apache.http.client.methods.Ht
 import org.apache.http.client.methods.HttpRequestBase;
 import org.apache.http.client.params.ClientPNames;
 import org.apache.http.conn.params.ConnRoutePNames;
-import org.apache.http.conn.scheme.Scheme;
-import org.apache.http.conn.ssl.SSLSocketFactory;
-import org.apache.http.conn.ssl.X509HostnameVerifier;
 import org.apache.http.impl.client.DefaultHttpClient;
 import org.apache.http.params.BasicHttpParams;
 import org.apache.http.params.CoreConnectionPNames;
@@ -84,7 +74,7 @@ public class ApacheHttpClientConnectionH
     }
 
     private HttpResponse processRequest(ClientRequest request, HandlerContext context)
-        throws IOException, KeyManagementException, NoSuchAlgorithmException {
+        throws IOException {
         HttpClient client = openConnection(request);
         // TODO: move this functionality to the base class
         NonCloseableOutputStream ncos = new NonCloseableOutputStream();
@@ -133,7 +123,7 @@ public class ApacheHttpClientConnectionH
         return httpRequest;
     }
 
-    private HttpClient openConnection(ClientRequest request) throws NoSuchAlgorithmException, KeyManagementException {
+    private HttpClient openConnection(ClientRequest request) {
         if (this.httpclient != null) {
             return this.httpclient;
         }
@@ -155,33 +145,7 @@ public class ApacheHttpClientConnectionH
             params.setParameter(ConnRoutePNames.DEFAULT_PROXY, new HttpHost(config.getProxyHost(),
                                                                             config.getProxyPort()));
         }
-
         HttpClient httpclient = new DefaultHttpClient(params);
-
-        if (config.getBypassHostnameVerification()) {
-            SSLContext sslcontext = SSLContext.getInstance("TLS");
-            sslcontext.init(null, null, null);
-
-            SSLSocketFactory sf = new SSLSocketFactory(sslcontext);
-            sf.setHostnameVerifier(new X509HostnameVerifier() {
-
-                public boolean verify(String hostname, SSLSession session) {
-                    return true;
-                }
-
-                public void verify(String host, String[] cns, String[] subjectAlts)
-                    throws SSLException {
-                }
-
-                public void verify(String host, X509Certificate cert) throws SSLException {
-                }
-
-                public void verify(String host, SSLSocket ssl) throws IOException {
-                }
-            });
-            httpclient.getConnectionManager().getSchemeRegistry().register(new Scheme("https", sf,
-                                                                                      443));
-        }
         return httpclient;
     }
 

Modified: incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/ClientConfig.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/ClientConfig.java?rev=966832&r1=966831&r2=966832&view=diff
==============================================================================
--- incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/ClientConfig.java (original)
+++ incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/ClientConfig.java Thu Jul 22 20:07:08 2010
@@ -61,7 +61,6 @@ public class ClientConfig implements Clo
     private boolean                   modifiable;
     private boolean                   isAcceptHeaderAutoSet;
     private boolean                   loadWinkApplications               = true;
-    private boolean                   bypassHostnameVerification         = false;
 
     private static final String       WINK_CLIENT_CONNECTTIMEOUT         =
                                                                              "wink.client.connectTimeout"; //$NON-NLS-1$
@@ -484,24 +483,4 @@ public class ClientConfig implements Clo
         this.properties = properties;
     }
 
-    /**
-     * Get whether or not hostname verification will be bypassed for SSL
-     * certificates.
-     * 
-     * @return Whether or not hostname verification will be bypassed for SSL
-     *         certificates
-     */
-    public boolean getBypassHostnameVerification() {
-        return bypassHostnameVerification;
-    }
-
-    /**
-     * Set whether or not hostname verification to bypass hostname verification
-     * for SSL certificates. Default value is false.
-     * 
-     * @param bypassHostnameVerification true to bypass hostname verification
-     */
-    public void setBypassHostnameVerification(boolean bypassHostnameVerification) {
-        this.bypassHostnameVerification = bypassHostnameVerification;
-    }
 }

Modified: incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/handlers/BasicAuthSecurityHandler.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/handlers/BasicAuthSecurityHandler.java?rev=966832&r1=966831&r2=966832&view=diff
==============================================================================
--- incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/handlers/BasicAuthSecurityHandler.java (original)
+++ incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/handlers/BasicAuthSecurityHandler.java Thu Jul 22 20:07:08 2010
@@ -19,11 +19,9 @@
  */
 package org.apache.wink.client.handlers;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.Properties;
+import javax.ws.rs.core.HttpHeaders;
 
+import org.apache.commons.codec.binary.Base64;
 import org.apache.wink.client.ClientAuthenticationException;
 import org.apache.wink.client.ClientRequest;
 import org.apache.wink.client.ClientResponse;
@@ -37,24 +35,24 @@ import org.slf4j.LoggerFactory;
  * <code>
  * Usage:<br/>
  * ClientConfig config = new ClientConfig();<br/>
- * config.handlers(new BasicAuthSecurityHandler());<br/>
+ * BasicAuthSecurityHandler basicAuth = new BasicAuthSecurityHandler();<br/>
+ * basicAuth.setUserName("user1");<br/>
+ * basicAuth.setPassword("password2");<br/>
+ * config.handlers(basicAuth);<br/>
  * // create the rest client instance<br/>
  * RestClient client = new RestClient(config);<br/>
  * // create the resource instance to interact with Resource<br/>
- * resource = client.resource("http://localhost:8080/path/to/resource");<br/>
+ * resource = client.resource("https://localhost:8080/path/to/resource");<br/>
  * </code>
  */
 public class BasicAuthSecurityHandler implements ClientHandler {
 
-    private static Logger    logger          =
-                                                 LoggerFactory
-                                                     .getLogger(BasicAuthSecurityHandler.class);
-
-    final static String      PROPS_FILE_NAME = "wink.client.props";                             //$NON-NLS-1$
-    private Properties       clientProps     = null;
-    private volatile boolean propsLoaded     = false;
-    private volatile String  handlerUsername = null;
-    private volatile String  handlerPassword = null;
+    private static Logger   logger          =
+                                                LoggerFactory
+                                                    .getLogger(BasicAuthSecurityHandler.class);
+
+    private volatile String handlerUsername = null;
+    private volatile String handlerPassword = null;
 
     /**
      * Sets the username to use.
@@ -94,32 +92,11 @@ public class BasicAuthSecurityHandler im
             logger.trace("Status code was not 401 so no need to re-issue request."); //$NON-NLS-1$
             return response;
         } else {
-            // read user id and password from a property
-            // as a start we use java a command line property
-            String userid = System.getProperty("user"); //$NON-NLS-1$
-            String password = System.getProperty("password"); //$NON-NLS-1$
+            String userid = handlerUsername;
+            String password = handlerPassword;
             if (logger.isTraceEnabled()) {
-                logger.trace("The 'user' system property was set to: {}", userid); //$NON-NLS-1$
-                logger.trace("The 'password' system property was set: {}", password != null); //$NON-NLS-1$
-            }
-
-            if (userid == null || userid.equals("") || password == null || password.equals("")) { //$NON-NLS-1$ //$NON-NLS-2$
-                // see if we can load credentials from a properties file
-                String propsFileDir = System.getProperty("wink.client.props.dir"); //$NON-NLS-1$
-                logger
-                    .trace("Could NOT get userid and password from system properties so attempting to look at properties file in {}", propsFileDir); //$NON-NLS-1$
-                if (propsFileDir != null && !propsFileDir.equals("")) { //$NON-NLS-1$
-                    if (!propsLoaded) {
-                        clientProps = loadProps(propsFileDir + File.separator + PROPS_FILE_NAME);
-                    }
-                    userid = clientProps.getProperty("user"); //$NON-NLS-1$
-                    password = clientProps.getProperty("password"); //$NON-NLS-1$
-                } else {
-                    logger
-                        .trace("Could NOT find properties file so checking variables assigned to handler itself", propsFileDir); //$NON-NLS-1$
-                    userid = handlerUsername;
-                    password = handlerPassword;
-                }
+                logger.trace("The 'username' property was set to: {}", userid); //$NON-NLS-1$
+                logger.trace("Was the 'password' property set: {}", password != null); //$NON-NLS-1$
             }
 
             if (!(userid == null || userid.equals("") || password == null || password.equals(""))) { //$NON-NLS-1$ //$NON-NLS-2$
@@ -127,11 +104,10 @@ public class BasicAuthSecurityHandler im
                 // we have a user credential
                 String credential = userid + ":" + password; //$NON-NLS-1$
                 byte[] credBytes = credential.getBytes();
-                byte[] encodedCredBytes =
-                    org.apache.commons.codec.binary.Base64.encodeBase64(credBytes, false);
+                byte[] encodedCredBytes = Base64.encodeBase64(credBytes, false);
                 // id and password needs to be base64 encoded
                 String credEncodedString = "Basic " + new String(encodedCredBytes); //$NON-NLS-1$
-                request.getHeaders().putSingle("Authorization", credEncodedString); //$NON-NLS-1$
+                request.getHeaders().putSingle(HttpHeaders.AUTHORIZATION, credEncodedString);
                 logger.trace("Issuing request again with Authorization header"); //$NON-NLS-1$
                 response = context.doChain(request);
                 if (response.getStatusCode() == 401) {
@@ -153,35 +129,5 @@ public class BasicAuthSecurityHandler im
         } // end if block
     } // end handle
 
-    /**
-     * Loads a properties file that contains user basic authentication
-     * credential.
-     * 
-     * @param propsFileName
-     * @return a Properties object
-     */
-    private synchronized Properties loadProps(String propsFileName) {
-        Properties props = null;
-        FileInputStream fis = null;
-        try {
-            File propsFile = new File(propsFileName);
-            props = new Properties();
-            fis = new FileInputStream(propsFile);
-            props.load(fis);
-            propsLoaded = true;
-        } catch (IOException e) {
-            props = null;
-        } finally {
-            try {
-                if (fis != null) {
-                    fis.close();
-                }
-            } catch (IOException e) {
-                /* do nothing */
-            }
-        }
-        return props;
-    } // end loadProps
-
 } // end class SecurityHandler
 

Modified: incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/internal/handlers/HttpURLConnectionHandler.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/internal/handlers/HttpURLConnectionHandler.java?rev=966832&r1=966831&r2=966832&view=diff
==============================================================================
--- incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/internal/handlers/HttpURLConnectionHandler.java (original)
+++ incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/internal/handlers/HttpURLConnectionHandler.java Thu Jul 22 20:07:08 2010
@@ -29,9 +29,6 @@ import java.net.Proxy;
 import java.net.URL;
 import java.util.List;
 
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLSession;
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
@@ -42,13 +39,9 @@ import org.apache.wink.client.ClientResp
 import org.apache.wink.client.handlers.HandlerContext;
 import org.apache.wink.client.internal.ClientUtils;
 import org.apache.wink.common.internal.WinkConfiguration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class HttpURLConnectionHandler extends AbstractConnectionHandler {
 
-    private static final Logger logger = LoggerFactory.getLogger(HttpURLConnectionHandler.class);
-
     public ClientResponse handle(ClientRequest request, HandlerContext context) throws Exception {
         try {
             HttpURLConnection connection = processRequest(request, context);
@@ -65,28 +58,7 @@ public class HttpURLConnectionHandler ex
         NonCloseableOutputStream ncos = new NonCloseableOutputStream();
         OutputStream os = ncos;
         processRequestHeaders(request, connection);
-        HostnameVerifier hv = null;
-        boolean bypassHostnameVerification =
-            ((ClientConfig)request.getAttribute(WinkConfiguration.class))
-                .getBypassHostnameVerification() && (connection instanceof HttpsURLConnection);
-        if (bypassHostnameVerification) {
-            HttpsURLConnection https = ((HttpsURLConnection)connection);
-            hv = https.getHostnameVerifier();
-            https.setHostnameVerifier(new HostnameVerifier() {
-                public boolean verify(String urlHostName, SSLSession session) {
-                    logger.trace("Bypassing hostname verification: URL host is " + urlHostName
-                        + ", SSLSession host is "
-                        + session.getPeerHost());
-                    return true;
-                }
-            });
-        }
-        try {
-            connection.connect();
-        } finally {
-            if (bypassHostnameVerification)
-                ((HttpsURLConnection)connection).setHostnameVerifier(hv);
-        }
+        connection.connect();
         if (request.getEntity() != null) {
             ncos.setOutputStream(connection.getOutputStream());
             os = adaptOutputStream(ncos, request, context.getOutputStreamAdapters());

Modified: incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/registry/metadata/AbstractMetadataCollector.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/registry/metadata/AbstractMetadataCollector.java?rev=966832&r1=966831&r2=966832&view=diff
==============================================================================
--- incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/registry/metadata/AbstractMetadataCollector.java (original)
+++ incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/registry/metadata/AbstractMetadataCollector.java Thu Jul 22 20:07:08 2010
@@ -59,7 +59,7 @@ public abstract class AbstractMetadataCo
         List<Injectable> injectableFields = metadata.getInjectableFields();
 
         // add fields
-        while (resourceClass != Object.class && resourceClass != null) {
+        while (resourceClass != Object.class) {
             for (Field field : resourceClass.getDeclaredFields()) {
                 Type fieldType = field.getGenericType();
                 Injectable injectable = parseAccessibleObject(field, fieldType);

Modified: incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/registry/metadata/ProviderMetadataCollector.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/registry/metadata/ProviderMetadataCollector.java?rev=966832&r1=966831&r2=966832&view=diff
==============================================================================
--- incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/registry/metadata/ProviderMetadataCollector.java (original)
+++ incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/registry/metadata/ProviderMetadataCollector.java Thu Jul 22 20:07:08 2010
@@ -53,10 +53,6 @@ public class ProviderMetadataCollector e
             return false;
         }
 
-        if (cls.getAnnotation(Provider.class) != null) {
-            return true;
-        }
-        
         if (Modifier.isInterface(cls.getModifiers()) || Modifier.isAbstract(cls.getModifiers())) {
             if (logger.isWarnEnabled()) {
                 logger.warn(Messages.getMessage("providerIsInterfaceOrAbstract", cls)); //$NON-NLS-1$
@@ -64,6 +60,10 @@ public class ProviderMetadataCollector e
             return false;
         }
 
+        if (cls.getAnnotation(Provider.class) != null) {
+            return true;
+        }
+
         Class<?> declaringClass = cls;
 
         while (declaringClass != null && !declaringClass.equals(Object.class)) {

Modified: incubator/wink/trunk/wink-common/src/test/java/org/apache/wink/common/internal/registry/metadata/ProviderMetadataCollectorTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-common/src/test/java/org/apache/wink/common/internal/registry/metadata/ProviderMetadataCollectorTest.java?rev=966832&r1=966831&r2=966832&view=diff
==============================================================================
--- incubator/wink/trunk/wink-common/src/test/java/org/apache/wink/common/internal/registry/metadata/ProviderMetadataCollectorTest.java (original)
+++ incubator/wink/trunk/wink-common/src/test/java/org/apache/wink/common/internal/registry/metadata/ProviderMetadataCollectorTest.java Thu Jul 22 20:07:08 2010
@@ -74,9 +74,9 @@ public class ProviderMetadataCollectorTe
     public void testIsProvider() {
         assertFalse(ProviderMetadataCollector.isProvider(Interface.class));
         assertFalse(ProviderMetadataCollector.isProvider(Class.class));
-        assertTrue(ProviderMetadataCollector.isProvider(ProviderInterface.class));
+        assertFalse(ProviderMetadataCollector.isProvider(ProviderInterface.class));
         assertTrue(ProviderMetadataCollector.isProvider(ProviderInterfaceImpl.class));
-        assertTrue(ProviderMetadataCollector.isProvider(AbstractProvider.class));
+        assertFalse(ProviderMetadataCollector.isProvider(AbstractProvider.class));
         assertTrue(ProviderMetadataCollector.isProvider(ProviderBaseClass.class));
         assertTrue(ProviderMetadataCollector.isProvider(ProviderStandalone.class));
     }

Modified: incubator/wink/trunk/wink-server/pom.xml
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-server/pom.xml?rev=966832&r1=966831&r2=966832&view=diff
==============================================================================
--- incubator/wink/trunk/wink-server/pom.xml (original)
+++ incubator/wink/trunk/wink-server/pom.xml Thu Jul 22 20:07:08 2010
@@ -106,12 +106,6 @@
             <version>2.5.1</version>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.jmock</groupId>
-            <artifactId>jmock-legacy</artifactId>
-            <version>2.5.1</version>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
     <build>
         <plugins>

Modified: incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/DeploymentConfiguration.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/DeploymentConfiguration.java?rev=966832&r1=966831&r2=966832&view=diff
==============================================================================
--- incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/DeploymentConfiguration.java (original)
+++ incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/DeploymentConfiguration.java Thu Jul 22 20:07:08 2010
@@ -97,9 +97,9 @@ public class DeploymentConfiguration imp
     private static final String       VALIDATE_LOCATION_HEADER            =
                                                                               "wink.validateLocationHeader";                 //$NON-NLS-1$
     private static final String       DEFAULT_RESPONSE_CHARSET            =
-                                                                              "wink.response.defaultCharset";                // $NON-NLS-1$
+                                                                              "wink.response.defaultCharset";                // $NON-NLS-1$ //$NON-NLS-1$
     private static final String       USE_ACCEPT_CHARSET                  =
-                                                                              "wink.response.useAcceptCharset";              // $NON-NLS-1$
+                                                                              "wink.response.useAcceptCharset";              // $NON-NLS-1$ //$NON-NLS-1$
     // handler chains
     private RequestHandlersChain      requestHandlersChain;
     private ResponseHandlersChain     responseHandlersChain;

Modified: incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/servlet/RestFilter.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/servlet/RestFilter.java?rev=966832&r1=966831&r2=966832&view=diff
==============================================================================
--- incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/servlet/RestFilter.java (original)
+++ incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/servlet/RestFilter.java Thu Jul 22 20:07:08 2010
@@ -150,7 +150,7 @@ public class RestFilter implements Filte
                 return filterConfig.getServletContext();
             }
 
-            public Enumeration getInitParameterNames() {
+            public Enumeration<?> getInitParameterNames() {
                 return filterConfig.getInitParameterNames();
             }