--- old/src/java.xml.bind/share/classes/com/sun/xml/internal/bind/api/impl/NameConverter.java 2018-01-30 20:30:34.000000000 -0500
+++ /dev/null 2018-01-30 20:30:34.000000000 -0500
@@ -1,269 +0,0 @@
-/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.xml.internal.bind.api.impl;
-
-import javax.lang.model.SourceVersion;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.StringTokenizer;
-
-/**
- * Converts aribitrary strings into Java identifiers.
- *
- * @author
- * Kohsuke KAWAGUCHI
- */
-public interface NameConverter
-{
- /**
- * converts a string into an identifier suitable for classes.
- *
- * In general, this operation should generate "NamesLikeThis".
- */
- String toClassName( String token );
-
- /**
- * converts a string into an identifier suitable for interfaces.
- *
- * In general, this operation should generate "NamesLikeThis".
- * But for example, it can prepend every interface with 'I'.
- */
- String toInterfaceName( String token );
-
- /**
- * converts a string into an identifier suitable for properties.
- *
- * In general, this operation should generate "NamesLikeThis",
- * which will be used with known prefixes like "get" or "set".
- */
- String toPropertyName( String token );
-
- /**
- * converts a string into an identifier suitable for constants.
- *
- * In the standard Java naming convention, this operation should
- * generate "NAMES_LIKE_THIS".
- */
- String toConstantName( String token );
-
- /**
- * Converts a string into an identifier suitable for variables.
- *
- * In general it should generate "namesLikeThis".
- */
- String toVariableName( String token );
-
- /**
- * Converts a namespace URI into a package name.
- * This method should expect strings like
- * "http://foo.bar.zot/org", "urn:abc:def:ghi" "", or even "###"
- * (basically anything) and expected to return a package name,
- * liks "org.acme.foo".
- *
- */
- String toPackageName( String namespaceUri );
-
- /**
- * The name converter implemented by Code Model.
- *
- * This is the standard name conversion for JAXB.
- */
- public static final NameConverter standard = new Standard();
-
- static class Standard extends NameUtil implements NameConverter {
- public String toClassName(String s) {
- return toMixedCaseName(toWordList(s), true);
- }
- public String toVariableName(String s) {
- return toMixedCaseName(toWordList(s), false);
- }
- public String toInterfaceName( String token ) {
- return toClassName(token);
- }
- public String toPropertyName(String s) {
- String prop = toClassName(s);
- // property name "Class" with collide with Object.getClass,
- // so escape this.
- if(prop.equals("Class"))
- prop = "Clazz";
- return prop;
- }
- public String toConstantName( String token ) {
- return super.toConstantName(token);
- }
- /**
- * Computes a Java package name from a namespace URI,
- * as specified in the spec.
- *
- * @return
- * null if it fails to derive a package name.
- */
- public String toPackageName( String nsUri ) {
- // remove scheme and :, if present
- // spec only requires us to remove 'http' and 'urn'...
- int idx = nsUri.indexOf(':');
- String scheme = "";
- if(idx>=0) {
- scheme = nsUri.substring(0,idx);
- if( scheme.equalsIgnoreCase("http") || scheme.equalsIgnoreCase("urn") )
- nsUri = nsUri.substring(idx+1);
- }
-
- // tokenize string
- ArrayList tokens = tokenize( nsUri, "/: " );
- if( tokens.size() == 0 ) {
- return null;
- }
-
- // remove trailing file type, if necessary
- if( tokens.size() > 1 ) {
- // for uri's like "www.foo.com" and "foo.com", there is no trailing
- // file, so there's no need to look at the last '.' and substring
- // otherwise, we loose the "com" (which would be wrong)
- String lastToken = tokens.get( tokens.size()-1 );
- idx = lastToken.lastIndexOf( '.' );
- if( idx > 0 ) {
- lastToken = lastToken.substring( 0, idx );
- tokens.set( tokens.size()-1, lastToken );
- }
- }
-
- // tokenize domain name and reverse. Also remove :port if it exists
- String domain = tokens.get( 0 );
- idx = domain.indexOf(':');
- if( idx >= 0) domain = domain.substring(0, idx);
- ArrayList r = reverse( tokenize( domain, scheme.equals("urn")?".-":"." ) );
- if( r.get( r.size()-1 ).equalsIgnoreCase( "www" ) ) {
- // remove leading www
- r.remove( r.size()-1 );
- }
-
- // replace the domain name with tokenized items
- tokens.addAll( 1, r );
- tokens.remove( 0 );
-
- // iterate through the tokens and apply xml->java name algorithm
- for( int i = 0; i < tokens.size(); i++ ) {
-
- // get the token and remove illegal chars
- String token = tokens.get( i );
- token = removeIllegalIdentifierChars( token );
-
- // this will check for reserved keywords
- if (SourceVersion.isKeyword(token.toLowerCase())) {
- token = '_' + token;
- }
-
- tokens.set( i, token.toLowerCase() );
- }
-
- // concat all the pieces and return it
- return combine( tokens, '.' );
- }
-
-
- private static String removeIllegalIdentifierChars(String token) {
- StringBuilder newToken = new StringBuilder(token.length() + 1); // max expected length
- for( int i = 0; i < token.length(); i++ ) {
- char c = token.charAt( i );
- if (i == 0 && !Character.isJavaIdentifierStart(c)) { // c can't be used as FIRST char
- newToken.append('_');
- }
- if (!Character.isJavaIdentifierPart(c)) { // c can't be used
- newToken.append('_');
- } else {
- newToken.append(c); // c is valid
- }
- }
- return newToken.toString();
- }
-
-
- private static ArrayList tokenize( String str, String sep ) {
- StringTokenizer tokens = new StringTokenizer(str,sep);
- ArrayList r = new ArrayList();
-
- while(tokens.hasMoreTokens())
- r.add( tokens.nextToken() );
-
- return r;
- }
-
- private static ArrayList reverse( List a ) {
- ArrayList r = new ArrayList();
-
- for( int i=a.size()-1; i>=0; i-- )
- r.add( a.get(i) );
-
- return r;
- }
-
- private static String combine( List r, char sep ) {
- StringBuilder buf = new StringBuilder(r.get(0).toString());
-
- for( int i=1; i