< 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

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

3708     static {





3709         SharedSecrets.setJavaNetUriAccess(
3710             new JavaNetUriAccess() {
3711                 public URI create(String scheme, String path) {
3712                     return new URI(scheme, path);
3713                 }
3714             }
3715         );
3716     }
3717 }

   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

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