1 /*
2 * Copyright (c) 2015, 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
55 CatalogMessages.reportNPEOnNull("systemIdStartString", systemIdStartString);
56 this.systemIdStartString = Normalizer.normalizeURI(systemIdStartString);
57 }
58
59 /**
60 * Set the rewritePrefix attribute. If the value of the rewritePrefix attribute
61 * is relative, it must be made absolute with respect to the base URI currently in effect.
62 * @param rewritePrefix The rewritePrefix attribute value.
63 */
64 public void setRewritePrefix(String rewritePrefix) {
65 this.rewritePrefix = verifyURI("setRewritePrefix", baseURI, rewritePrefix);
66 }
67
68 /**
69 * Get the systemIdStartString attribute.
70 * @return The systemIdStartString
71 */
72 public String getSystemIdStartString () {
73 return systemIdStartString;
74 }
75 /**
76 * Get the rewritePrefix attribute.
77 * @return The rewritePrefix attribute value.
78 */
79 public URL getRewritePrefix() {
80 return rewritePrefix;
81 }
82
83
84 /**
85 * Try to match the specified systemId with the entry. Return the match if it
86 * is successful and the length of the systemIdStartString is longer than the
87 * longest of any previous match.
88 *
89 * @param systemId The systemId to be matched.
90 * @param currentMatch The length of systemIdStartString of previous match if any.
91 * @return The replacement URI if the match is successful, null if not.
92 */
93 public String match(String systemId, int currentMatch) {
94 if (systemIdStartString.length() <= systemId.length() &&
95 systemIdStartString.equals(systemId.substring(0, systemIdStartString.length()))) {
96 if (currentMatch < systemIdStartString.length()) {
97 String prefix = rewritePrefix.toExternalForm();
98 if (!prefix.endsWith(SLASH) && !systemId.startsWith(SLASH)) {
99 return prefix + SLASH + systemId.substring(systemIdStartString.length());
100 } else {
101 return prefix + systemId.substring(systemIdStartString.length());
102 }
103 }
104 }
105 return null;
106 }
107
108 /**
109 * Try to match the specified systemId with the entry.
110 *
111 * @param systemId The systemId to be matched.
112 * @return The replacement URI if the match is successful, null if not.
113 */
114 @Override
115 public String match(String systemId) {
116 return match(systemId, 0);
117 }
118 }
|
1 /*
2 * Copyright (c) 2016, 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
55 CatalogMessages.reportNPEOnNull("systemIdStartString", systemIdStartString);
56 this.systemIdStartString = Normalizer.normalizeURI(systemIdStartString);
57 }
58
59 /**
60 * Set the rewritePrefix attribute. If the value of the rewritePrefix attribute
61 * is relative, it must be made absolute with respect to the base URI currently in effect.
62 * @param rewritePrefix The rewritePrefix attribute value.
63 */
64 public void setRewritePrefix(String rewritePrefix) {
65 this.rewritePrefix = verifyURI("setRewritePrefix", baseURI, rewritePrefix);
66 }
67
68 /**
69 * Get the systemIdStartString attribute.
70 * @return The systemIdStartString
71 */
72 public String getSystemIdStartString () {
73 return systemIdStartString;
74 }
75
76 /**
77 * Get the rewritePrefix attribute.
78 * @return The rewritePrefix attribute value.
79 */
80 public URL getRewritePrefix() {
81 return rewritePrefix;
82 }
83
84 /**
85 * Try to match the specified systemId with the entry. Return the match if it
86 * is successful and the length of the systemIdStartString is longer than the
87 * longest of any previous match.
88 *
89 * @param systemId The systemId to be matched.
90 * @param currentMatch The length of systemIdStartString of previous match if any.
91 * @return The replacement URI if the match is successful, null if not.
92 */
93 public String match(String systemId, int currentMatch) {
94 if (systemIdStartString.length() < systemId.length() &&
95 systemIdStartString.equals(systemId.substring(0, systemIdStartString.length()))) {
96 if (currentMatch < systemIdStartString.length()) {
97 String prefix = rewritePrefix.toExternalForm();
98 String sysId;
99 if (systemIdStartString.endsWith(SLASH)) {
100 sysId = systemId.substring(systemIdStartString.length());
101 } else {
102 sysId = systemId.substring(systemIdStartString.length() + 1);
103 }
104 if (prefix.endsWith(SLASH)) {
105 return prefix + sysId;
106 } else {
107 return prefix + SLASH + sysId;
108 }
109 }
110 }
111 return null;
112 }
113
114 /**
115 * Try to match the specified systemId with the entry.
116 *
117 * @param systemId The systemId to be matched.
118 * @return The replacement URI if the match is successful, null if not.
119 */
120 @Override
121 public String match(String systemId) {
122 return match(systemId, 0);
123 }
124 }
|