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