Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.wst.wsi/wsivalidate/org/eclipse/wst/wsi/internal/URIEncoder.java')
-rw-r--r--bundles/org.eclipse.wst.wsi/wsivalidate/org/eclipse/wst/wsi/internal/URIEncoder.java205
1 files changed, 0 insertions, 205 deletions
diff --git a/bundles/org.eclipse.wst.wsi/wsivalidate/org/eclipse/wst/wsi/internal/URIEncoder.java b/bundles/org.eclipse.wst.wsi/wsivalidate/org/eclipse/wst/wsi/internal/URIEncoder.java
deleted file mode 100644
index a18af8037..000000000
--- a/bundles/org.eclipse.wst.wsi/wsivalidate/org/eclipse/wst/wsi/internal/URIEncoder.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * Licensed Material - Property of IBM
- * (C) Copyright IBM Corp. 2002 - All Rights Reserved.
- * US Government Users Restricted Rights - Use, duplication or disclosure
- * restricted by GSA ADP Schedule Contract with IBM Corp.
- *
- * plugins/com.ibm.etools.xmlutility/src/com/ibm/etools/xmlutility/uri/URIEncoder.java, com.ibm.etools.xmlutility, wsa.xml.v51, 20030718_1605.o
- *
- * @version 1.3 7/18/03
- */
-
-package org.eclipse.wst.wsi.internal;
-
-import java.io.BufferedWriter;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.util.BitSet;
-
-/**
- * This class is a modified version of java.lang.URLEncoder.
- */
-public class URIEncoder
-{
- static BitSet dontNeedEncoding;
- static final int caseDiff = ('a' - 'A');
- static String dfltEncName = null;
-
- static {
- dontNeedEncoding = new BitSet(256);
- int i;
- for (i = 'a'; i <= 'z'; i++)
- {
- dontNeedEncoding.set(i);
- }
- for (i = 'A'; i <= 'Z'; i++)
- {
- dontNeedEncoding.set(i);
- }
- for (i = '0'; i <= '9'; i++)
- {
- dontNeedEncoding.set(i);
- }
-
- //dontNeedEncoding.set(' '); // cs.. removed so that space character will be replaced by %20
- dontNeedEncoding.set('-');
- dontNeedEncoding.set('_');
- dontNeedEncoding.set('.');
- dontNeedEncoding.set('*');
- dontNeedEncoding.set(':'); // cs.. added
- dontNeedEncoding.set('/');
- // cs.. added so that slashes don't get encoded as %2F
-
- // dfltEncName = (String)AccessController.doPrivileged(new GetPropertyAction("file.encoding"));
- // As discussed with Sandy, we should encode URIs with UTF8
- dfltEncName = "UTF8";
- //System.out.println("dfltEncName " + dfltEncName);
- }
-
- /**
- * You can't call the constructor.
- */
- private URIEncoder()
- {
- }
-
- /**
- * Translates a string into <code>x-www-form-urlencoded</code>
- * format. This method uses the platform's default encoding
- * as the encoding scheme to obtain the bytes for unsafe characters.
- *
- * @param s <code>String</code> to be translated.
- * @return the translated <code>String</code>.
- */
- public static String encode(String s)
- {
- String str = null;
- try
- {
- str = encode(s, dfltEncName);
- }
- catch (UnsupportedEncodingException e)
- {
- // The system should always have the platform default
- }
- return str;
- }
-
- /**
- * Translates a string into <code>application/x-www-form-urlencoded</code>
- * format using a specific encoding scheme. This method uses the
- * supplied encoding scheme to obtain the bytes for unsafe
- * characters.
- * <p>
- * <em><strong>Note:</strong> The <a href=
- * "http://www.w3.org/TR/html40/appendix/notes.html#non-ascii-chars">
- * World Wide Web Consortium Recommendation</a> states that
- * UTF-8 should be used. Not doing so may introduce
- * incompatibilites.</em>
- *
- * @param s <code>String</code> to be translated.
- * @param enc The name of a supported
- * <a href="../lang/package-summary.html#charenc">character
- * encoding</a>.
- * @return the translated <code>String</code>.
- * @exception UnsupportedEncodingException
- * If the named encoding is not supported
- * @see URLDecoder#decode(java.lang.String, java.lang.String)
- */
- public static String encode(String s, String enc)
- throws UnsupportedEncodingException
- {
- boolean needToChange = false;
- boolean wroteUnencodedChar = false;
- int maxBytesPerChar = 10; // rather arbitrary limit, but safe for now
- StringBuffer out = new StringBuffer(s.length());
- ByteArrayOutputStream buf = new ByteArrayOutputStream(maxBytesPerChar);
- BufferedWriter writer =
- new BufferedWriter(new OutputStreamWriter(buf, enc));
-
- for (int i = 0; i < s.length(); i++)
- {
- int c = (int) s.charAt(i);
- //System.out.println("Examining character: " + c);
- if (dontNeedEncoding.get(c))
- {
- //if (c == ' ')
- //{
- // c = '+';
- // needToChange = true;
- //}
- //System.out.println("Storing: " + c);
- out.append((char) c);
- wroteUnencodedChar = true;
- }
- else
- {
- // convert to external encoding before hex conversion
- try
- {
- if (wroteUnencodedChar)
- { // Fix for 4407610
- writer = new BufferedWriter(new OutputStreamWriter(buf, enc));
- wroteUnencodedChar = false;
- }
- writer.write(c);
-
- // If this character represents the start of a Unicode
- // surrogate pair, then pass in two characters. It's not
- // clear what should be done if a bytes reserved in the
- // surrogate pairs range occurs outside of a legal
- // surrogate pair. For now, just treat it as if it were
- // any other character.
- //
- if (c >= 0xD800 && c <= 0xDBFF)
- {
- // System.out.println(Integer.toHexString(c) + " is high surrogate");
- if ((i + 1) < s.length())
- {
- int d = (int) s.charAt(i + 1);
- // System.out.println("\tExamining " + Integer.toHexString(d));
- if (d >= 0xDC00 && d <= 0xDFFF)
- {
- // System.out.println("\t" + Integer.toHexString(d) + " is low surrogate");
- writer.write(d);
- i++;
- }
- }
- }
- writer.flush();
- }
- catch (IOException e)
- {
- buf.reset();
- continue;
- }
- byte[] ba = buf.toByteArray();
-
- for (int j = 0; j < ba.length; j++)
- {
- out.append('%');
- char ch = Character.forDigit((ba[j] >> 4) & 0xF, 16);
- // converting to use uppercase letter as part of
- // the hex value if ch is a letter.
- if (Character.isLetter(ch))
- {
- ch -= caseDiff;
- }
- out.append(ch);
- ch = Character.forDigit(ba[j] & 0xF, 16);
- if (Character.isLetter(ch))
- {
- ch -= caseDiff;
- }
- out.append(ch);
- }
- buf.reset();
- needToChange = true;
- }
- }
- return (needToChange ? out.toString() : s);
- }
-}

Back to the top