< prev index next >
src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/SchemaCache.java
Print this page
*** 1,7 ****
/*
! * 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
--- 1,7 ----
/*
! * Copyright (c) 1997, 2015, 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
*** 23,40 ****
* questions.
*/
package com.sun.tools.internal.xjc;
! import java.net.URL;
!
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.ValidatorHandler;
import com.sun.xml.internal.bind.v2.util.XmlFactory;
import javax.xml.XMLConstants;
import org.xml.sax.SAXException;
import static com.sun.xml.internal.bind.v2.util.XmlFactory.allowExternalAccess;
/**
--- 23,41 ----
* questions.
*/
package com.sun.tools.internal.xjc;
! import javax.xml.transform.Source;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.ValidatorHandler;
import com.sun.xml.internal.bind.v2.util.XmlFactory;
import javax.xml.XMLConstants;
+
+ import org.w3c.dom.ls.LSResourceResolver;
import org.xml.sax.SAXException;
import static com.sun.xml.internal.bind.v2.util.XmlFactory.allowExternalAccess;
/**
*** 46,75 ****
* @author Kohsuke Kawaguchi
*/
public final class SchemaCache {
private Schema schema;
! private final URL source;
! public SchemaCache(URL source) {
this.source = source;
}
public ValidatorHandler newValidator() {
- synchronized(this) {
if(schema==null) {
try {
// do not disable secure processing - these are well-known schemas
SchemaFactory sf = XmlFactory.createSchemaFactory(XMLConstants.W3C_XML_SCHEMA_NS_URI, false);
! schema = allowExternalAccess(sf, "file", false).newSchema(source);
} catch (SAXException e) {
// we make sure that the schema is correct before we ship.
throw new AssertionError(e);
}
}
}
ValidatorHandler handler = schema.newValidatorHandler();
return handler;
}
--- 47,85 ----
* @author Kohsuke Kawaguchi
*/
public final class SchemaCache {
private Schema schema;
+ private Source source;
+ private LSResourceResolver resourceResolver;
! public SchemaCache(Source source) {
! this(source, null);
! }
! public SchemaCache(Source source, LSResourceResolver resourceResolver) {
this.source = source;
+ this.resourceResolver = resourceResolver;
}
public ValidatorHandler newValidator() {
if(schema==null) {
+ synchronized (this) {
+ if (schema == null) {
try {
// do not disable secure processing - these are well-known schemas
SchemaFactory sf = XmlFactory.createSchemaFactory(XMLConstants.W3C_XML_SCHEMA_NS_URI, false);
! SchemaFactory schemaFactory = allowExternalAccess(sf, "file", false);
! schemaFactory.setResourceResolver(resourceResolver);
! schema = schemaFactory.newSchema(source);
} catch (SAXException e) {
// we make sure that the schema is correct before we ship.
throw new AssertionError(e);
}
}
}
+ }
ValidatorHandler handler = schema.newValidatorHandler();
return handler;
}
< prev index next >