javauis/m2g_qt/javasrc/com/nokia/microedition/m2g/connection/M2GUrlTokenizer.java
author hgs
Fri, 29 Oct 2010 11:49:32 +0300
changeset 87 1627c337e51e
parent 56 abc41079b313
permissions -rw-r--r--
v2.2.21_1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
56
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     1
/*
87
1627c337e51e v2.2.21_1
hgs
parents: 56
diff changeset
     2
* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
56
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     3
* All rights reserved.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     8
*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     9
* Initial Contributors:
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    11
*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    12
* Contributors:
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    13
*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    14
* Description:
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    15
*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    16
*/
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    17
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    18
package com.nokia.microedition.m2g.connection;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    19
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    20
import java.io.IOException;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    21
import java.lang.NullPointerException;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    22
import java.lang.IllegalArgumentException;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    23
import com.nokia.mj.impl.utils.Logger;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    24
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    25
/**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    26
 * Connection policy
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    27
 */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    28
public class M2GUrlTokenizer
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    29
{
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    30
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    31
    // STATIC CONSTANTS
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    32
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    33
    public static final String PROTOCOL_SEPARATOR =
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    34
        "://";
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    35
    public static final char PARAMETER_SEPARATOR =
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    36
        '?';
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    37
    public static final char SEPARATOR =
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    38
        '/';
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    39
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    40
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    41
    // VARIABLES
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    42
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    43
    private String iUrl = null;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    44
    private String iBaseUrl = null;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    45
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    46
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    47
    // METHODS
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    48
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    49
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    50
     * Ctor
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    51
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    52
    public M2GUrlTokenizer()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    53
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    54
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    55
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    56
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    57
     * Ctor
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    58
     * @param aUrl Locator
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    59
       * @throws NullPointerException if the locator is null.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    60
       * @throws IllegalArgumentException if the locator is of unsupported type.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    61
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    62
    public M2GUrlTokenizer(String aUrl)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    63
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    64
        setUrl(aUrl);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    65
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    66
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    67
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    68
     * Check if the url begin with slash ('/')
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    69
     * @return true is the url begin with slash
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    70
       */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    71
    public boolean beginWithSlash()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    72
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    73
        if ((iUrl != null) &&
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    74
                (iUrl.indexOf(SEPARATOR) == 0))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    75
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    76
            return true;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    77
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    78
        return false;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    79
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    80
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    81
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    82
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    83
     * Parses the base part of the locator
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    84
     * @return parsed base part
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    85
       */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    86
    public String getBasePart()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    87
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    88
        if (iUrl == null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    89
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    90
            return null;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    91
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    92
        int pos = iUrl.indexOf(PARAMETER_SEPARATOR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    93
        if (pos == -1)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    94
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    95
            pos = iUrl.length();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    96
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    97
        return iUrl.substring(0, pos);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    98
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    99
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   100
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   101
     * Parses the base url
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   102
     * @return parsed base url
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   103
       */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   104
    public String getBaseUrl()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   105
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   106
        return iBaseUrl;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   107
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   108
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   109
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   110
     * Parses the end part of the locator
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   111
     * @return parsed end part
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   112
     * @throws IllegalArgumentException if base part cannot
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   113
     *       be parsed from the locator
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   114
       */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   115
    public String getEndPart()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   116
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   117
        if (iUrl == null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   118
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   119
            return null;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   120
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   121
        int pos = iUrl.lastIndexOf(SEPARATOR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   122
        if (pos == -1)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   123
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   124
            return iUrl;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   125
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   126
        return iUrl.substring(pos, iUrl.length());
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   127
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   128
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   129
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   130
     * Parses the middle part of the locator
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   131
     * @return parsed middle part
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   132
     * @throws IllegalArgumentException if middle part cannot
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   133
     *       be parsed from the locator
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   134
       */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   135
    public String getMiddlePart()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   136
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   137
        if (iUrl == null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   138
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   139
            return null;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   140
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   141
        int pos = iUrl.indexOf(PARAMETER_SEPARATOR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   142
        if (pos == -1)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   143
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   144
            pos = iUrl.length();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   145
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   146
        return iUrl.substring(
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   147
                   getProtocol().length() + PROTOCOL_SEPARATOR.length(), pos);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   148
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   149
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   150
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   151
     * Parses possible parameters of the locator
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   152
     * @return Parsed parameters or null if there are not parameters
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   153
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   154
    public String getParameters()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   155
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   156
        if (iUrl == null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   157
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   158
            return null;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   159
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   160
        int pos = iUrl.indexOf(PARAMETER_SEPARATOR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   161
        String parameters = null;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   162
        if (pos != -1)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   163
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   164
            parameters = iUrl.substring(pos + 1);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   165
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   166
        return parameters;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   167
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   168
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   169
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   170
       * Parses the protocol part of the locator.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   171
       * @see M2GUrlTokenizer#isAbsolutURL()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   172
       * @return Protocol
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   173
       * @throws IllegalArgumentException If the locator is of
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   174
       * unsupported type.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   175
       */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   176
    public String getProtocol()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   177
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   178
        int pos = -1;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   179
        if ((iUrl == null) || ((pos = iUrl.indexOf(PROTOCOL_SEPARATOR)) == -1))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   180
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   181
            throw new IllegalArgumentException("Unable to parse protocol");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   182
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   183
        return iUrl.substring(0, pos);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   184
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   185
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   186
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   187
     * Returns a whole locator string
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   188
     * @return Locator used to create this instance
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   189
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   190
    public String getUrl()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   191
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   192
        return iUrl;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   193
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   194
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   195
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   196
     * Resolve URL according to existing base url and
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   197
     * the given relative url
87
1627c337e51e v2.2.21_1
hgs
parents: 56
diff changeset
   198
     * Should be resolved by using RFC 2396
56
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   199
     * @aRelativeUrl Relative URL.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   200
     * @return Resolved URL
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   201
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   202
    public String resolveUrl(String aRelativeUrl)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   203
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   204
        check(aRelativeUrl);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   205
        if (iBaseUrl != null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   206
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   207
            return (iBaseUrl + aRelativeUrl);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   208
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   209
        else
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   210
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   211
            return aRelativeUrl;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   212
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   213
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   214
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   215
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   216
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   217
     * Set a locator string
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   218
     * @param aUrl Locator
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   219
       * @throws NullPointerException if the locator is null.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   220
       * @throws IllegalArgumentException if the locator is of unsupported type.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   221
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   222
    public void setUrl(String aUrl)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   223
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   224
        check(aUrl);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   225
        iUrl = aUrl;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   226
        int pos = iUrl.lastIndexOf(SEPARATOR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   227
        if (pos == -1)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   228
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   229
            iBaseUrl = null;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   230
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   231
        else
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   232
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   233
            iBaseUrl = iUrl.substring(0, (pos + 1));
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   234
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   235
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   236
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   237
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   238
     * Check url
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   239
     * @param aUrl Locator
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   240
       * @throws NullPointerException if the locator is null.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   241
       * @throws IllegalArgumentException if the locator is of unsupported type.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   242
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   243
    private void check(String aUrl)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   244
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   245
        if (aUrl == null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   246
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   247
            Logger.ELOG(Logger.EJavaUI, "setUrl() - url is null");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   248
            throw new NullPointerException();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   249
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   250
        if (aUrl.length() == 0)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   251
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   252
            Logger.ELOG(Logger.EJavaUI, "setUrl() - url is illegal");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   253
            throw new IllegalArgumentException();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   254
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   255
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   256
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   257
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   258
    // STATIC METHODS
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   259
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   260
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   261
       * Check if contains protocol.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   262
       * An absolute URL contains the name of the scheme being used (<scheme>)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   263
       * followed by a colon (":") and then a string (the <scheme-specific-
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   264
       * // part>) whose interpretation depends on the scheme.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   265
       * Also if the URL begins with a slash character "/" then the URL is treated
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   266
       * as absolute.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   267
       * @param aUrl URL
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   268
       * @return true if URL contains a protocol
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   269
       */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   270
    static public boolean isAbsolutURL(String aUrl)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   271
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   272
        if ((aUrl == null) ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   273
                ((aUrl.indexOf(PROTOCOL_SEPARATOR) == -1) &&
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   274
                 (aUrl.indexOf(SEPARATOR) != 0)))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   275
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   276
            return false;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   277
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   278
        return true;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   279
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   280
}