/* * Copyright 2011 the original author or authors. * * Licensed 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 biz.c24.io.spring.source; import java.io.InputStream; import java.io.Reader; import biz.c24.io.api.presentation.Source; import biz.c24.io.api.presentation.XMLSource; /** * @author askogman * @author Andrew Elmore * */ public class XmlSourceFactory implements SourceFactory { private String encoding; private Boolean validationEnabled; private Boolean schemaValidationEnabled; private Boolean schemaFullCheckingEnabled; private Boolean dynamicValidationEnabled; private Boolean externalGeneralEntities; private Boolean externalParameterEntities; private Boolean warnOnDuplicateAttDef; private Boolean warnOnUndeclaredElemDef; private Boolean continueAfterFatalError; private Boolean loadDTDGrammer; private Boolean loadExternalDTD; /** * */ public XmlSourceFactory() { } /** * Creates an XMLSource and sets all the properties on it that was given to * this factory. Encoding is only set if provided. * * @see biz.c24.io.spring.source.SourceFactory#getSource(java.io.Reader) */ public Source getSource(Reader reader) { XMLSource source = new XMLSource(reader); configureSource(source); return source; } /** * Configure the source * * @param source */ final protected void configureSource(XMLSource source) { // Only set the property if a value has been provided to one of the // setters. If not, let the underlying Source retain the default. if (continueAfterFatalError != null) { source.setContinueAfterFatalError(continueAfterFatalError); } if (dynamicValidationEnabled != null) { source.setDynamicValidationEnabled(dynamicValidationEnabled); } if (externalGeneralEntities != null) { source.setExternalGeneralEntities(externalGeneralEntities); } if (externalParameterEntities != null) { source.setExternalParameterEntities(externalParameterEntities); } if (loadDTDGrammer != null) { source.setLoadDTDGrammer(loadDTDGrammer); } if (loadExternalDTD != null) { source.setLoadExternalDTD(loadExternalDTD); } if (schemaFullCheckingEnabled != null) { source.setSchemaFullCheckingEnabled(schemaFullCheckingEnabled); } if (schemaValidationEnabled != null) { source.setSchemaValidationEnabled(schemaValidationEnabled); } if (validationEnabled != null) { source.setValidationEnabled(validationEnabled); } if (warnOnDuplicateAttDef != null) { source.setWarnOnDuplicateAttDef(warnOnDuplicateAttDef); } if (warnOnUndeclaredElemDef != null) { source.setWarnOnUndeclaredElemDef(warnOnUndeclaredElemDef); } if (encoding != null) { source.setEncoding(encoding); } doConfigure(source); } /** * Override this method to provide custom config. * * @param source */ protected void doConfigure(XMLSource source) { } /* * (non-Javadoc) * * @see * biz.c24.io.spring.source.SourceFactory#getSource(java.io.InputStream) */ public Source getSource(InputStream stream) { XMLSource source = new XMLSource(stream); configureSource(source); return source; } public String getEncoding() { return encoding; } public void setEncoding(String encoding) { this.encoding = encoding; } public Boolean getValidationEnabled() { return validationEnabled; } public void setValidationEnabled(Boolean validationEnabled) { this.validationEnabled = validationEnabled; } public Boolean getSchemaValidationEnabled() { return schemaValidationEnabled; } public void setSchemaValidationEnabled(Boolean schemaValidationEnabled) { this.schemaValidationEnabled = schemaValidationEnabled; } public Boolean getSchemaFullCheckingEnabled() { return schemaFullCheckingEnabled; } public void setSchemaFullCheckingEnabled(Boolean schemaFullCheckingEnabled) { this.schemaFullCheckingEnabled = schemaFullCheckingEnabled; } public Boolean getDynamicValidationEnabled() { return dynamicValidationEnabled; } public void setDynamicValidationEnabled(Boolean dynamicValidationEnabled) { this.dynamicValidationEnabled = dynamicValidationEnabled; } public Boolean getExternalGeneralEntities() { return externalGeneralEntities; } public void setExternalGeneralEntities(Boolean externalGeneralEntities) { this.externalGeneralEntities = externalGeneralEntities; } public Boolean getExternalParameterEntities() { return externalParameterEntities; } public void setExternalParameterEntities(Boolean externalParameterEntities) { this.externalParameterEntities = externalParameterEntities; } public Boolean getWarnOnDuplicateAttDef() { return warnOnDuplicateAttDef; } public void setWarnOnDuplicateAttDef(Boolean warnOnDuplicateAttDef) { this.warnOnDuplicateAttDef = warnOnDuplicateAttDef; } public Boolean getWarnOnUndeclaredElemDef() { return warnOnUndeclaredElemDef; } public void setWarnOnUndeclaredElemDef(Boolean warnOnUndeclaredElemDef) { this.warnOnUndeclaredElemDef = warnOnUndeclaredElemDef; } public Boolean getContinueAfterFatalError() { return continueAfterFatalError; } public void setContinueAfterFatalError(Boolean continueAfterFatalError) { this.continueAfterFatalError = continueAfterFatalError; } public Boolean getLoadDTDGrammer() { return loadDTDGrammer; } public void setLoadDTDGrammer(Boolean loadDTDGrammer) { this.loadDTDGrammer = loadDTDGrammer; } public Boolean getLoadExternalDTD() { return loadExternalDTD; } public void setLoadExternalDTD(Boolean loadExternalDTD) { this.loadExternalDTD = loadExternalDTD; } @Override public Source getSource() { XMLSource source = new XMLSource(); configureSource(source); return source; } }