[jboss-svn-commits] JBL Code SVN: r31820 - in labs/jbossrules/trunk/drools-core/src: test/java/org/drools/agent and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Feb 24 06:46:53 EST 2010


Author: jervisliu
Date: 2010-02-24 06:46:53 -0500 (Wed, 24 Feb 2010)
New Revision: 31820

Added:
   labs/jbossrules/trunk/drools-core/src/test/resources/basic-authentication-sample-agent-config.properties
Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/HttpClientImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/IHttpClient.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleAgent.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/URLScanner.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java
Log:
https://jira.jboss.org/jira/browse/GUVNOR-133: Rules Agent provides access to all users' rules without authentication

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/HttpClientImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/HttpClientImpl.java	2010-02-24 10:40:00 UTC (rev 31819)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/HttpClientImpl.java	2010-02-24 11:46:53 UTC (rev 31820)
@@ -9,6 +9,8 @@
 import org.drools.definitions.impl.KnowledgePackageImp;
 import org.drools.rule.Package;
 
+import sun.misc.BASE64Encoder;
+
 public class HttpClientImpl
     implements
     IHttpClient {
@@ -40,13 +42,18 @@
 
     }
 
-    public Package fetchPackage(URL url) throws IOException,
+    public Package fetchPackage(URL url, String username, String password) throws IOException,
                                         ClassNotFoundException {
         URLConnection con = url.openConnection();
         HttpURLConnection httpCon = (HttpURLConnection) con;
         try {
             httpCon.setRequestMethod( "GET" );
 
+            BASE64Encoder enc = new sun.misc.BASE64Encoder();
+            String userpassword = username + ":" + password;
+            String encodedAuthorization = enc.encode( userpassword.getBytes() );
+            httpCon.setRequestProperty("Authorization", "Basic " + encodedAuthorization);
+            
             Object o = DroolsStreamUtils.streamIn( httpCon.getInputStream() );
 
             if ( o instanceof KnowledgePackageImp ) {
@@ -65,7 +72,7 @@
 
         LastUpdatedPing ping = cl.checkLastUpdated( url );
 
-        Package p = cl.fetchPackage( url );
+        Package p = cl.fetchPackage( url, null, null );
 
         System.err.println( ping );
         System.err.println( ping.isError() );

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/IHttpClient.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/IHttpClient.java	2010-02-24 10:40:00 UTC (rev 31819)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/IHttpClient.java	2010-02-24 11:46:53 UTC (rev 31820)
@@ -18,7 +18,7 @@
 
     public LastUpdatedPing checkLastUpdated(URL url) throws IOException;
 
-    public Package fetchPackage(URL url) throws IOException,
+    public Package fetchPackage(URL url, String username, String password) throws IOException,
                                         ClassNotFoundException;
 
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleAgent.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleAgent.java	2010-02-24 10:40:00 UTC (rev 31819)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleAgent.java	2010-02-24 11:46:53 UTC (rev 31820)
@@ -79,7 +79,9 @@
     public static final String    URLS              = "url";
     public static final String    POLL_INTERVAL     = "poll";
     public static final String    CONFIG_NAME       = "name";              //name is optional
-
+    public static final String    USER_NAME       = "username"; 
+    public static final String    PASSWORD       = "password"; 
+   
     //this is needed for cold starting when BRMS is down (ie only for URL).
     public static final String    LOCAL_URL_CACHE   = "localCacheDir";
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/URLScanner.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/URLScanner.java	2010-02-24 10:40:00 UTC (rev 31819)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/URLScanner.java	2010-02-24 11:46:53 UTC (rev 31820)
@@ -21,6 +21,8 @@
 
     //this is the URLs we are managing
     URL[]       urls;
+    String username;
+    String password;
 
     //this is only set if we are using a local cache - only fall back on this
     //when URL connection is not available.
@@ -34,7 +36,10 @@
 
     File        localCacheDir;
 
-    void configure(Properties config) {
+    void configure(Properties config) {   	
+        username = config.getProperty( RuleAgent.USER_NAME );
+        password = config.getProperty( RuleAgent.PASSWORD );
+
         List uriList = RuleAgent.list( config.getProperty( RuleAgent.URLS ) );
         urls = new URL[uriList.size()];
         for ( int i = 0; i < uriList.size(); i++ ) {
@@ -111,7 +116,7 @@
     private PackageChangeInfo getChangeSet() throws IOException, ClassNotFoundException {
     	
     	PackageChangeInfo info = new PackageChangeInfo();
-    	
+
         if ( this.urls == null ) return info;
         
         for ( int i = 0; i < urls.length; i++ ) {
@@ -145,7 +150,7 @@
     }
 
     private Package readPackage(URL u) throws IOException, ClassNotFoundException {
-        return httpClient.fetchPackage( u );
+        return httpClient.fetchPackage( u, username, password );
     }
 
     private boolean hasChanged(URL u, Map updates) throws IOException {

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java	2010-02-24 10:40:00 UTC (rev 31819)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java	2010-02-24 11:46:53 UTC (rev 31820)
@@ -636,6 +636,23 @@
         assertEqualsIgnoreWhitespace( "/foo/bar.pkg /wee/waa.pkg /wee/waa2.pkg",
                                       props.getProperty( RuleAgent.FILES ) );
     }
+    
+    public void testLoadBasicAuthenticationSampleConfig() {
+        RuleAgent ag = new RuleAgent( new RuleBaseConfiguration() );
+        Properties props = ag.loadFromProperties( "/basic-authentication-sample-agent-config.properties" );
+        assertEquals( "30",
+                      props.getProperty( RuleAgent.POLL_INTERVAL ) );
+        assertEquals( "http://localhost:8081/drools-guvnor/org.drools.guvnor.Guvnor/package/defaultPackage/LATEST",
+                props.getProperty( RuleAgent.URLS ) );
+        assertEquals( "d:/drools",
+                      props.getProperty( RuleAgent.LOCAL_URL_CACHE ) );
+        assertEquals( "true",
+                      props.getProperty( RuleAgent.NEW_INSTANCE ) );
+        assertEquals( "admin",
+                props.getProperty( RuleAgent.USER_NAME ) );
+        assertEquals( "admin",
+                props.getProperty( RuleAgent.PASSWORD ) );
+    }
 
     private void assertEqualsIgnoreWhitespace(final String expected,
                                               final String actual) {

Added: labs/jbossrules/trunk/drools-core/src/test/resources/basic-authentication-sample-agent-config.properties
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/resources/basic-authentication-sample-agent-config.properties	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/resources/basic-authentication-sample-agent-config.properties	2010-02-24 11:46:53 UTC (rev 31820)
@@ -0,0 +1,7 @@
+newInstance=true
+url=http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/defaultPackage/LATEST
+localCacheDir=d:/drools
+poll=30
+name=XYZAgent
+username=admin
+password=admin


Property changes on: labs/jbossrules/trunk/drools-core/src/test/resources/basic-authentication-sample-agent-config.properties
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:keywords
   + Rev Date
Name: svn:eol-style
   + native



More information about the jboss-svn-commits mailing list