You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@river.apache.org by pe...@apache.org on 2012/07/14 13:26:56 UTC

svn commit: r1361523 - in /river/jtsk/trunk/src: com/sun/jini/fiddler/ net/jini/security/ org/apache/river/api/security/

Author: peter_firmstone
Date: Sat Jul 14 11:26:55 2012
New Revision: 1361523

URL: http://svn.apache.org/viewvc?rev=1361523&view=rev
Log:
Revert one Thread.yield() call in FiddlerImpl

Fix URI issues with URIGrant on MS Windows platforms by cleaning up URI strings prior to instantiation and adding leading forward slashes missing from file path strings.

Modified:
    river/jtsk/trunk/src/com/sun/jini/fiddler/FiddlerImpl.java
    river/jtsk/trunk/src/net/jini/security/GrantPermission.java
    river/jtsk/trunk/src/org/apache/river/api/security/DefaultPolicyParser.java
    river/jtsk/trunk/src/org/apache/river/api/security/URIGrant.java
    river/jtsk/trunk/src/org/apache/river/api/security/UriString.java

Modified: river/jtsk/trunk/src/com/sun/jini/fiddler/FiddlerImpl.java
URL: http://svn.apache.org/viewvc/river/jtsk/trunk/src/com/sun/jini/fiddler/FiddlerImpl.java?rev=1361523&r1=1361522&r2=1361523&view=diff
==============================================================================
--- river/jtsk/trunk/src/com/sun/jini/fiddler/FiddlerImpl.java (original)
+++ river/jtsk/trunk/src/com/sun/jini/fiddler/FiddlerImpl.java Sat Jul 14 11:26:55 2012
@@ -2430,13 +2430,7 @@ class FiddlerImpl implements ServerProxy
                 /* Unexport only if there are no pending or in-progress calls*/
                 while(!unexported && (System.currentTimeMillis() < endTime)) {
                     unexported = serverExporter.unexport(false);
-                    if(!unexported) try {
-                        // Thread.yield();
-                    Thread.sleep(MAX_UNEXPORT_DELAY / 4);
-                } catch (InterruptedException ex) {
-                    // Reset the interrupt
-                    Thread.currentThread().interrupt();
-                }
+                    if(!unexported) Thread.yield();
                 }//end loop
             if(!unexported) {//Not yet unexported. Forcibly unexport
                 serverExporter.unexport(true);

Modified: river/jtsk/trunk/src/net/jini/security/GrantPermission.java
URL: http://svn.apache.org/viewvc/river/jtsk/trunk/src/net/jini/security/GrantPermission.java?rev=1361523&r1=1361522&r2=1361523&view=diff
==============================================================================
--- river/jtsk/trunk/src/net/jini/security/GrantPermission.java (original)
+++ river/jtsk/trunk/src/net/jini/security/GrantPermission.java Sat Jul 14 11:26:55 2012
@@ -792,7 +792,7 @@ public final class GrantPermission exten
 	
 	public synchronized boolean implies(Permission p) {
 	    return implier.implies(p);
-	}
+        }
 
 	public synchronized void setReadOnly() {
 	    super.setReadOnly();

Modified: river/jtsk/trunk/src/org/apache/river/api/security/DefaultPolicyParser.java
URL: http://svn.apache.org/viewvc/river/jtsk/trunk/src/org/apache/river/api/security/DefaultPolicyParser.java?rev=1361523&r1=1361522&r2=1361523&view=diff
==============================================================================
--- river/jtsk/trunk/src/org/apache/river/api/security/DefaultPolicyParser.java (original)
+++ river/jtsk/trunk/src/org/apache/river/api/security/DefaultPolicyParser.java Sat Jul 14 11:26:55 2012
@@ -267,7 +267,7 @@ class DefaultPolicyParser implements Pol
     Segment segment(String s, Properties p) throws ExpansionFailedException{
         final String ARRAY_START_MARK = "${{";
         final String ARRAY_END_MARK = "}}";
-        final String ARRAY_SEPARATOR = ":";
+        final String ARRAY_SEPARATOR = p.getProperty("path.separator");
         final String START_MARK = "${"; //$NON-NLS-1$
         final String END_MARK = "}"; //$NON-NLS-1$
         Segment primary = new Segment(s, null);

Modified: river/jtsk/trunk/src/org/apache/river/api/security/URIGrant.java
URL: http://svn.apache.org/viewvc/river/jtsk/trunk/src/org/apache/river/api/security/URIGrant.java?rev=1361523&r1=1361522&r2=1361523&view=diff
==============================================================================
--- river/jtsk/trunk/src/org/apache/river/api/security/URIGrant.java (original)
+++ river/jtsk/trunk/src/org/apache/river/api/security/URIGrant.java Sat Jul 14 11:26:55 2012
@@ -199,7 +199,7 @@ class URIGrant extends CertificateGrant 
      * @return {@code true} if the argument code source is implied by this
      *         {@code CodeSource}, otherwise {@code false}.
      */
-    private static boolean implies(URI grant, URI implied) {
+    private final boolean implies(URI grant, URI implied) {
         //
         // Here, javadoc:N refers to the appropriate item in the API spec for 
         // the CodeSource.implies()

Modified: river/jtsk/trunk/src/org/apache/river/api/security/UriString.java
URL: http://svn.apache.org/viewvc/river/jtsk/trunk/src/org/apache/river/api/security/UriString.java?rev=1361523&r1=1361522&r2=1361523&view=diff
==============================================================================
--- river/jtsk/trunk/src/org/apache/river/api/security/UriString.java (original)
+++ river/jtsk/trunk/src/org/apache/river/api/security/UriString.java Sat Jul 14 11:26:55 2012
@@ -17,6 +17,7 @@
 
 package org.apache.river.api.security;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
@@ -30,11 +31,12 @@ import java.util.Map;
 class UriString {
     
     private final static Map<Character,String> escaped = new HashMap<Character,String>();
-    
+    private final static Collection<Character> alpha;
     
         // Allowed
-    private static char [] lowalpha = "abcdefghijklmnopqrstuvwxyz".toCharArray();
-    private static char [] upalpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
+    private static final char [] lowalpha = "abcdefghijklmnopqrstuvwxyz".toCharArray();
+    private static final char [] upalpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
+    private static char [] numeric = "0123456789".toCharArray();
     private static char [] reserved = {';','/','?',':','@','&','=','+','$',','};
     private static char [] mark = "-_.!~*'()".toCharArray();
     private static char escape = '%';
@@ -71,6 +73,9 @@ class UriString {
         escaped.put(space, spaceEsc);
         escapes(delims, delimEsc);
         escapes(unwise, unwiseEsc);
+        alpha = new ArrayList<Character>(lowalpha.length + upalpha.length);
+        addArrayToCollection(alpha, lowalpha);
+        addArrayToCollection(alpha, upalpha);
     }
     
     static void escapes(Character [] unicode, String[] escape){
@@ -81,15 +86,25 @@ class UriString {
         }
     }
     
+    static void addArrayToCollection(Collection<Character> col, char [] chars){
+        int l = chars.length;
+        for ( int i = 0; i < l; i++){
+            col.add(chars[i]);
+        }
+    }
+    
     static String escapeIllegalCharacters(String url){
+        boolean isFile = url.startsWith("file:");
         char [] u = url.toCharArray();
         int l = u.length;
-//        for (int i = 0; i < l; i++){
-//            // Don't escape if already escaped.
-//            if (u[i] == escape) return url;
-//        }
         StringBuilder sb = new StringBuilder();
         for (int i=0; i<l; i++){
+            if (isFile && i == 5 && url.startsWith(":", 6 )) {
+                //Windows drive letter without leading slashes.
+                if ( alpha.contains(u[i])){
+                    sb.append("///");
+                }
+            }
             Character c = Character.valueOf(u[i]);
             if (escaped.keySet().contains(c)){
                 sb.append(escaped.get(c));