package org.codehaus.mojo.xmlbeans; /* * 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. */ import java.io.IOException; import org.apache.maven.artifact.DependencyResolutionRequiredException; import org.apache.xml.resolver.CatalogManager; import org.apache.xml.resolver.tools.CatalogResolver; import org.apache.xmlbeans.impl.tool.SchemaCompiler; import org.xml.sax.EntityResolver; import org.xml.sax.InputSource; import org.xml.sax.SAXException; /** * @author <a href="mailto:kris.bravo@corridor-software.us">Kris Bravo</a> * @version $Id$ */ public final class ParameterAdapter { /** * Creates a new instance of ParameterAdapter. */ private ParameterAdapter() { } /** * Returns a parameter set appropriate for the SchemaCompiler. * * @param properties XML Bean Plugin properties. * @return Parameters for the schema compiler * @throws DependencyResolutionRequiredException * Maven Dependencies were * not resolved. * @number MXMLBEANS-3 * @throws XmlBeansException if we cannot translate the compiler parameters */ static SchemaCompiler.Parameters getCompilerParameters( final PluginProperties properties ) throws DependencyResolutionRequiredException, XmlBeansException { SchemaCompiler.Parameters params = new SchemaCompiler.Parameters(); params.setBaseDir( properties.getBaseDir() ); params.setXsdFiles( properties.getXsdFiles() ); params.setWsdlFiles( properties.getWsdlFiles() ); params.setJavaFiles( properties.getJavaFiles() ); params.setConfigFiles( properties.getConfigFiles() ); params.setClasspath( properties.getClasspath() ); params.setOutputJar( properties.getOutputJar() ); params.setName( properties.getName() ); params.setSrcDir( properties.getGeneratedSourceDirectory() ); params.setClassesDir( properties.getGeneratedClassesDirectory() ); params.setCompiler( properties.getCompiler() ); params.setMemoryInitialSize( properties.getMemoryInitialSize() ); params.setMemoryMaximumSize( properties.getMemoryMaximumSize() ); params.setNojavac( properties.isNoJavac() ); params.setQuiet( properties.isQuiet() ); params.setVerbose( properties.isVerbose() ); params.setDownload( properties.isDownload() ); params.setNoUpa( properties.isNoUpa() ); params.setNoPvr( properties.isNoPvr() ); params.setNoAnn( properties.isNoAnn() ); params.setNoVDoc( properties.isNoVDoc() ); params.setDebug( properties.isDebug() ); if ( properties.hasCatalogFile() ) { CatalogManager catalogManager = CatalogManager.getStaticManager(); catalogManager.setCatalogFiles( properties.getCatalogFile() ); EntityResolver entityResolver = new CatalogResolver(); entityResolver = new PassThroughResolver( entityResolver ); params.setEntityResolver( entityResolver ); } params.setErrorListener( properties.getErrorListeners() ); params.setRepackage( properties.getRepackage() ); params.setExtensions( properties.getExtensions() ); params.setMdefNamespaces( properties.getMdefNamespaces() ); params.setJavaSource( properties.getJavaSource() ); return params; } private static class PassThroughResolver implements EntityResolver { private final EntityResolver delegate; public PassThroughResolver( EntityResolver delegate ) { this.delegate = delegate; } public InputSource resolveEntity( String publicId, String systemId ) throws SAXException, IOException { if ( delegate != null ) { InputSource is = delegate.resolveEntity( publicId, systemId ); if ( is != null ) { return is; } } System.out.println( "Could not resolve publicId: " + publicId + ", systemId: " + systemId + " from catalog, looking in current directory" ); return new InputSource( systemId ); } } }