/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.camel.processor.validation;
import java.io.InputStream;
import java.io.Reader;
import org.w3c.dom.ls.LSInput;
import org.w3c.dom.ls.LSResourceResolver;
import org.xml.sax.InputSource;
import org.apache.xml.resolver.tools.CatalogResolver;
public class CatalogLSResourceResolver implements LSResourceResolver {
CatalogResolver catalogResolver;
public CatalogLSResourceResolver() {
}
public CatalogLSResourceResolver(CatalogResolver catalogResolver) {
this.catalogResolver = catalogResolver;
}
public CatalogResolver getCatalogResolver() {
return catalogResolver;
}
public void setCatalogResolver(CatalogResolver catalogResolver) {
this.catalogResolver = catalogResolver;
}
@Override
public LSInput resolveResource(String type, String namespaceURI, String publicId, String systemId, String baseURI) {
return new LSInputSource(namespaceURI, publicId, systemId, baseURI);
}
class LSInputSource implements LSInput {
private InputSource inputSource;
private String publicId;
private String systemId;
private String baseURI;
LSInputSource(String namespaceURI, String publicId, String systemId, String baseURI) {
if (publicId == null) {
publicId = namespaceURI;
}
this.publicId = publicId;
this.systemId = systemId;
this.baseURI = baseURI;
if (catalogResolver == null) {
throw new IllegalStateException("catalogResolver must be provided");
}
this.inputSource = catalogResolver.resolveEntity(publicId, systemId);
}
public Reader getCharacterStream() {
return null;
}
public void setCharacterStream(Reader characterStream) {
// noop
}
public InputStream getByteStream() {
return inputSource != null ? inputSource.getByteStream() : null;
}
public void setByteStream(InputStream byteStream) {
if (inputSource != null) {
inputSource.setByteStream(byteStream);
}
}
public String getStringData() {
return null;
}
public void setStringData(String stringData) {
// noop
}
public String getSystemId() {
if (inputSource != null) {
return inputSource.getSystemId();
}
return systemId;
}
public void setSystemId(String systemId) {
if (inputSource != null) {
inputSource.setSystemId(systemId);
}
}
public String getPublicId() {
if (inputSource != null) {
return inputSource.getPublicId();
}
return publicId;
}
public void setPublicId(String publicId) {
if (inputSource != null) {
inputSource.setPublicId(publicId);
} else {
this.publicId = publicId;
}
}
public String getBaseURI() {
return baseURI;
}
public void setBaseURI(String baseURI) {
// noop
}
public String getEncoding() {
if (inputSource != null) {
return inputSource.getEncoding();
}
return null;
}
public void setEncoding(String encoding) {
if (inputSource != null) {
inputSource.setEncoding(encoding);
}
}
public boolean getCertifiedText() {
return true;
}
public void setCertifiedText(boolean certifiedText) {
// noop
}
}
}