< prev index next >

src/java.base/share/classes/java/net/URI.java

Print this page

   1 /*
   2  * Copyright (c) 2000, 2023, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any

3684                 if (at(p + 1, n, ':'))
3685                     break;              // "::"
3686                 p++;
3687                 q = scan(p, n, L_HEX, H_HEX);
3688                 if (q <= p)
3689                     failExpecting("digits for an IPv6 address", p);
3690                 if (at(q, n, '.')) {    // Beginning of IPv4 address
3691                     p--;
3692                     break;
3693                 }
3694                 if (q > p + 4)
3695                     fail("IPv6 hexadecimal digit sequence too long", p);
3696                 ipv6byteCount += 2;
3697                 p = q;
3698             }
3699 
3700             return p;
3701         }
3702 
3703     }

3704     static {





3705         SharedSecrets.setJavaNetUriAccess(
3706             new JavaNetUriAccess() {
3707                 public URI create(String scheme, String path) {
3708                     return new URI(scheme, path);
3709                 }
3710             }
3711         );
3712     }
3713 }

   1 /*
   2  * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any

3684                 if (at(p + 1, n, ':'))
3685                     break;              // "::"
3686                 p++;
3687                 q = scan(p, n, L_HEX, H_HEX);
3688                 if (q <= p)
3689                     failExpecting("digits for an IPv6 address", p);
3690                 if (at(q, n, '.')) {    // Beginning of IPv4 address
3691                     p--;
3692                     break;
3693                 }
3694                 if (q > p + 4)
3695                     fail("IPv6 hexadecimal digit sequence too long", p);
3696                 ipv6byteCount += 2;
3697                 p = q;
3698             }
3699 
3700             return p;
3701         }
3702 
3703     }
3704 
3705     static {
3706         runtimeSetup();
3707     }
3708 
3709     // Called from JVM when loading an AOT cache
3710     private static void runtimeSetup() {
3711         SharedSecrets.setJavaNetUriAccess(
3712             new JavaNetUriAccess() {
3713                 public URI create(String scheme, String path) {
3714                     return new URI(scheme, path);
3715                 }
3716             }
3717         );
3718     }
3719 }
< prev index next >