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));


Reply via email to