1 /*
2 * Copyright (c) 1997, 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
504 };
505 }
506
507 /*
508 * Creates a master pseudo schema importing all WSDL schema fragments with
509 * different tns+pseudo schema for same tns.
510 * <xsd:schema targetNamespace="urn:x-jax-ws-master">
511 * <xsd:import schemaLocation="Y1" namespace="X1"/>
512 * <xsd:import schemaLocation="Y2" namespace="X2"/>
513 * </xsd:schema>
514 *
515 * @param pseudo a map(tns-->systemId) of schema documents
516 * @return Source of pseudo schema that can be used multiple times
517 */
518 private Source createMasterPseudoSchema(Map<String, String> docs) {
519 final StringBuilder sb = new StringBuilder("<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema' targetNamespace='urn:x-jax-ws-master'>\n");
520 for(Map.Entry<String, String> e : docs.entrySet()) {
521 String systemId = e.getValue();
522 String ns = e.getKey();
523 sb.append("<xsd:import schemaLocation='").append(systemId).append("'");
524 if (!"".equals(ns)) {
525 sb.append(" namespace='").append(ns).append("'");
526 }
527 sb.append("/>\n");
528 }
529 sb.append("</xsd:schema>");
530 if (LOGGER.isLoggable(Level.FINE)) {
531 LOGGER.log(Level.FINE, "Master Pseudo Schema = {0}", sb);
532 }
533
534 // override getReader() so that the same source can be used multiple times
535 return new StreamSource("file:x-jax-ws-master-doc") {
536 @Override
537 public Reader getReader() {
538 return new StringReader(sb.toString());
539 }
540 };
541 }
542
543 protected void doProcess(Packet packet) throws SAXException {
544 getValidator().reset();
|
1 /*
2 * Copyright (c) 1997, 2013, 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
504 };
505 }
506
507 /*
508 * Creates a master pseudo schema importing all WSDL schema fragments with
509 * different tns+pseudo schema for same tns.
510 * <xsd:schema targetNamespace="urn:x-jax-ws-master">
511 * <xsd:import schemaLocation="Y1" namespace="X1"/>
512 * <xsd:import schemaLocation="Y2" namespace="X2"/>
513 * </xsd:schema>
514 *
515 * @param pseudo a map(tns-->systemId) of schema documents
516 * @return Source of pseudo schema that can be used multiple times
517 */
518 private Source createMasterPseudoSchema(Map<String, String> docs) {
519 final StringBuilder sb = new StringBuilder("<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema' targetNamespace='urn:x-jax-ws-master'>\n");
520 for(Map.Entry<String, String> e : docs.entrySet()) {
521 String systemId = e.getValue();
522 String ns = e.getKey();
523 sb.append("<xsd:import schemaLocation='").append(systemId).append("'");
524 if (ns != null && !("".equals(ns))) {
525 sb.append(" namespace='").append(ns).append("'");
526 }
527 sb.append("/>\n");
528 }
529 sb.append("</xsd:schema>");
530 if (LOGGER.isLoggable(Level.FINE)) {
531 LOGGER.log(Level.FINE, "Master Pseudo Schema = {0}", sb);
532 }
533
534 // override getReader() so that the same source can be used multiple times
535 return new StreamSource("file:x-jax-ws-master-doc") {
536 @Override
537 public Reader getReader() {
538 return new StringReader(sb.toString());
539 }
540 };
541 }
542
543 protected void doProcess(Packet packet) throws SAXException {
544 getValidator().reset();
|