[jboss-svn-commits] JBL Code SVN: r32164 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/io/impl and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Mar 21 11:03:37 EDT 2010
Author: jervisliu
Date: 2010-03-21 11:03:36 -0400 (Sun, 21 Mar 2010)
New Revision: 32164
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/main/java/org/drools/io/impl/UrlResource.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/URLScannerTest.java
labs/jbossrules/trunk/drools-core/src/test/resources/basic-authentication-sample-agent-config.properties
Log:
Fixed authentication token encoding problem in 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-03-21 04:50:38 UTC (rev 32163)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/HttpClientImpl.java 2010-03-21 15:03:36 UTC (rev 32164)
@@ -42,16 +42,21 @@
}
- public Package fetchPackage(URL url, String username, String password) throws IOException,
+ public Package fetchPackage(URL url, boolean enableBasicAuthentication, String username, String password) throws IOException,
ClassNotFoundException {
URLConnection con = url.openConnection();
HttpURLConnection httpCon = (HttpURLConnection) con;
try {
httpCon.setRequestMethod( "GET" );
- Base64 enc = new Base64();
- String userpassword = username + ":" + password;
- httpCon.setRequestProperty("Authorization", "Basic " + enc.encode(userpassword.getBytes()));
+ if (enableBasicAuthentication) {
+ String userpassword = username + ":" + password;
+ byte[] authEncBytes = Base64.encodeBase64(userpassword
+ .getBytes());
+ httpCon.setRequestProperty("Authorization", "Basic "
+ + new String(authEncBytes));
+ }
+
Object o = DroolsStreamUtils.streamIn( httpCon.getInputStream() );
@@ -71,7 +76,7 @@
LastUpdatedPing ping = cl.checkLastUpdated( url );
- Package p = cl.fetchPackage( url, null, null );
+ Package p = cl.fetchPackage( url, false, 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-03-21 04:50:38 UTC (rev 32163)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/IHttpClient.java 2010-03-21 15:03:36 UTC (rev 32164)
@@ -18,7 +18,7 @@
public LastUpdatedPing checkLastUpdated(URL url) throws IOException;
- public Package fetchPackage(URL url, String username, String password) throws IOException,
+ public Package fetchPackage(URL url, boolean enableBasicAuthentication, 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-03-21 04:50:38 UTC (rev 32163)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleAgent.java 2010-03-21 15:03:36 UTC (rev 32164)
@@ -81,6 +81,7 @@
public static final String CONFIG_NAME = "name"; //name is optional
public static final String USER_NAME = "username";
public static final String PASSWORD = "password";
+ public static final String ENABLE_BASIC_AUTHENTICATION = "enableBasicAuthentication";
//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-03-21 04:50:38 UTC (rev 32163)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/URLScanner.java 2010-03-21 15:03:36 UTC (rev 32164)
@@ -23,7 +23,8 @@
URL[] urls;
String username;
String password;
-
+ boolean enableBasicAuthentication = false;
+
//this is only set if we are using a local cache - only fall back on this
//when URL connection is not available.
FileScanner localCacheFileScanner;
@@ -39,6 +40,7 @@
void configure(Properties config) {
username = config.getProperty( RuleAgent.USER_NAME );
password = config.getProperty( RuleAgent.PASSWORD );
+ enableBasicAuthentication = Boolean.parseBoolean(config.getProperty( RuleAgent.ENABLE_BASIC_AUTHENTICATION ));
List uriList = RuleAgent.list( config.getProperty( RuleAgent.URLS ) );
urls = new URL[uriList.size()];
@@ -150,7 +152,7 @@
}
private Package readPackage(URL u) throws IOException, ClassNotFoundException {
- return httpClient.fetchPackage( u, username, password );
+ return httpClient.fetchPackage( u, enableBasicAuthentication, username, password );
}
private boolean hasChanged(URL u, Map updates) throws IOException {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/UrlResource.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/UrlResource.java 2010-03-21 04:50:38 UTC (rev 32163)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/io/impl/UrlResource.java 2010-03-21 15:03:36 UTC (rev 32164)
@@ -182,10 +182,11 @@
if ( con instanceof HttpURLConnection) {
if ("enabled".equalsIgnoreCase(basicAuthentication)) {
- Base64 enc = new Base64();
String userpassword = username + ":" + password;
+ byte[] authEncBytes = Base64.encodeBase64(userpassword.getBytes());
+
((HttpURLConnection) con).setRequestProperty("Authorization",
- "Basic " + enc.encode(userpassword.getBytes()));
+ "Basic " + new String(authEncBytes));
}
}
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-03-21 04:50:38 UTC (rev 32163)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java 2010-03-21 15:03:36 UTC (rev 32164)
@@ -648,6 +648,8 @@
props.getProperty( RuleAgent.LOCAL_URL_CACHE ) );
assertEquals( "true",
props.getProperty( RuleAgent.NEW_INSTANCE ) );
+ assertEquals( "true",
+ props.getProperty( RuleAgent.ENABLE_BASIC_AUTHENTICATION ) );
assertEquals( "admin",
props.getProperty( RuleAgent.USER_NAME ) );
assertEquals( "admin",
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/URLScannerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/URLScannerTest.java 2010-03-21 04:50:38 UTC (rev 32163)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/URLScannerTest.java 2010-03-21 15:03:36 UTC (rev 32164)
@@ -160,7 +160,7 @@
return ping;
}
- public Package fetchPackage(URL url, String username, String password) throws IOException {
+ public Package fetchPackage(URL url, boolean enableBasicAuthentication, String username, String password) throws IOException {
if ( url.toExternalForm().equals( "http://goo2.ber" ) ) {
return new Package( "goo2.ber" );
} else {
@@ -233,7 +233,7 @@
return ping;
}
- public Package fetchPackage(URL url, String username, String password) throws IOException {
+ public Package fetchPackage(URL url, boolean enableBasicAuthentication, String username, String password) throws IOException {
if ( url.toExternalForm().equals( "http://goo.ber" ) ) {
return new Package( "goo.ber" );
} else {
@@ -276,7 +276,7 @@
return ping;
}
- public Package fetchPackage(URL url, String username, String password) throws IOException {
+ public Package fetchPackage(URL url, boolean enableBasicAuthentication, String username, String password) throws IOException {
throw new IOException( "poo" );
}
@@ -307,7 +307,7 @@
return ping;
}
- public Package fetchPackage(URL url, String username, String password) throws IOException {
+ public Package fetchPackage(URL url, boolean enableBasicAuthentication, String username, String password) throws IOException {
fetchCalled[0] = true;
throw new IOException( "poo" );
}
@@ -357,7 +357,7 @@
throw new IOException();
}
- public Package fetchPackage(URL url, String username, String password) throws IOException {
+ public Package fetchPackage(URL url, boolean enableBasicAuthentication, String username, String password) throws IOException {
throw new IOException();
}
Modified: 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 2010-03-21 04:50:38 UTC (rev 32163)
+++ labs/jbossrules/trunk/drools-core/src/test/resources/basic-authentication-sample-agent-config.properties 2010-03-21 15:03:36 UTC (rev 32164)
@@ -3,5 +3,6 @@
localCacheDir=d:/drools
poll=30
name=XYZAgent
+enableBasicAuthentication=true
username=admin
password=admin
More information about the jboss-svn-commits
mailing list