All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.ws.jaxme.impl.Configuration Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2003, 2004  The Apache Software Foundation
 * 
 * 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 org.apache.ws.jaxme.impl;

import java.util.HashMap;
import java.util.Map;

import javax.xml.bind.JAXBException;
import javax.xml.namespace.QName;

import org.apache.ws.jaxme.JMManager;
import org.apache.ws.jaxme.xs.xml.XsQName;
import org.xml.sax.SAXException;



/** 

An instance of this class represents a config file. * A JAXBContext requires an associated Configuration which * is located through the classpath.

* * @author Jochen Wiedmann * @version $Id: Configuration.java 232067 2005-03-10 11:14:08 +0100 (Thu, 10 Mar 2005) jochen $ */ public class Configuration { JAXBContextImpl context; Manager currentManager; Map managers = new HashMap(); private Class jmMarshallerClass = JMMarshallerImpl.class; private Class jmUnmarshallerClass = JMUnmarshallerImpl.class; private Class jmValidatorClass = JMValidatorImpl.class; public Configuration(JAXBContextImpl pContext) { context = pContext; } public class Manager implements JMManager { public class Property { private String managerName; private String value; public String getName() { return managerName; } public void setName(String pName) { managerName = pName; } public String getValue() { return value; } public void setValue(String pValue) { value = pValue; } public void finish() throws SAXException { if (managerName == null) { throw new NullPointerException("Missing 'name' attribute in 'property' element."); } if (value == null) { throw new NullPointerException("Missing 'value' attribute in 'property' element."); } if (properties == null) { properties = new HashMap(); } if (properties.put(managerName, value) != null) { throw new IllegalStateException("The property " + managerName + " was specified more than once."); } } } private QName name; private Class elementInterface; private Class elementClass; private Class handlerClass; private Class driverClass; private Class pmClass; private String prefix; private Map properties; public String getPrefix() { return prefix; } /** Sets the suggested prefix for the elements namespace. */ public void setPrefix(String prefix) { this.prefix = prefix; } public void setQName(QName pName) { name = pName; } public QName getQName() { return name; } public void setElementClass(String pElementClass) throws ClassNotFoundException { elementClass = context.getClassLoader().loadClass(pElementClass); } public Class getElementClass() { return elementClass; } public void setElementInterface(String pElementInterface) throws ClassNotFoundException { elementInterface = context.getClassLoader().loadClass(pElementInterface); } public Class getElementInterface() { return elementInterface; } public Class getHandlerClass() { return handlerClass; } public void setHandlerClass(String pHandlerClass) throws ClassNotFoundException { handlerClass = context.getClassLoader().loadClass(pHandlerClass); if (!JMSAXElementParser.class.isAssignableFrom(handlerClass)) { throw new IllegalStateException("The class " + handlerClass.getName() + " is not implementing " + JMSAXElementParser.class.getName()); } } public void setDriverClass(String pMarshallerClass) throws ClassNotFoundException { driverClass = context.getClassLoader().loadClass(pMarshallerClass); if (!JMSAXDriver.class.isAssignableFrom(driverClass)) { throw new IllegalStateException("The class " + driverClass.getName() + " is not implementing " + JMSAXDriver.class.getName()); } } public Class getDriverClass() { return driverClass; } public JMSAXDriver getDriver() throws SAXException { try { return (JMSAXDriver) driverClass.newInstance(); } catch (InstantiationException e) { throw new SAXException("Unable to instantiate driver class " + driverClass.getName(), e); } catch (IllegalAccessException e) { throw new SAXException("Illegal access to driver class " + driverClass.getName(), e); } } /** Sets the persistence manager class. */ public void setPmClass(String pPersistencyClass) throws ClassNotFoundException { pmClass = context.getClassLoader().loadClass(pPersistencyClass); } public Class getPmClass() { return pmClass; } public JAXBContextImpl getFactory() { return context; } public Property createProperty() { return new Property(); } public String getProperty(String pName) { if (pName == null) { throw new IllegalArgumentException("The property name must not be null."); } if (properties == null) { return null; } return (String) properties.get(pName); } public void finish() throws SAXException { if (currentManager != this) { throw new IllegalStateException("currentManager != this"); } try { if (prefix != null) { name = new QName(name.getNamespaceURI(), name.getLocalPart(), prefix); } context.addManager(currentManager); currentManager = null; } catch (Exception e) { throw new SAXException(e.getMessage(), e); } } public JMSAXElementParser getHandler() throws SAXException { try { return (JMSAXElementParser) handlerClass.newInstance(); } catch (InstantiationException e) { throw new SAXException("Unable to instantiate handler class " + jmUnmarshallerClass.getName(), e); } catch (IllegalAccessException e) { throw new SAXException("Illegal access to handler class " + jmUnmarshallerClass.getName(), e); } } public Object getElementJ() throws JAXBException { try { return elementClass.newInstance(); } catch (InstantiationException e) { throw new JAXBException("Unable to instantiate handler class " + jmUnmarshallerClass.getName(), e); } catch (IllegalAccessException e) { throw new JAXBException("Illegal access to handler class " + jmUnmarshallerClass.getName(), e); } } public Object getElementS() throws SAXException { try { return elementClass.newInstance(); } catch (InstantiationException e) { throw new SAXException("Unable to instantiate handler class " + jmUnmarshallerClass.getName(), e); } catch (IllegalAccessException e) { throw new SAXException("Illegal access to handler class " + jmUnmarshallerClass.getName(), e); } } } /**

Creates a new Manager.

*/ public Manager createManager() { if (currentManager != null) { throw new IllegalStateException("currentManager != null"); } currentManager = new Manager(); return currentManager; } /**

Sets the JMMarshaller class.

*/ public void setJMMarshallerClass(Class pJMMarshallerClass) { jmMarshallerClass = pJMMarshallerClass; } /**

Returns the JMMarshaller class.

*/ public Class getJMMarshallerClass() { return jmMarshallerClass; } /**

Sets the JMUnmarshaller class.

*/ public void setJMUnmarshallerClass(Class pJMUnmarshallerClass) { jmUnmarshallerClass = pJMUnmarshallerClass; } /**

Returns the JMUnmarshaller class.

*/ public Class getJMUnmarshallerClass() { return jmUnmarshallerClass; } /**

Sets the JMValidator class.

*/ public void setJMValidatorClass(Class pJMValidatorClass) { jmValidatorClass = pJMValidatorClass; } public Class getJMValidatorClass() { return jmValidatorClass; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy