[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