001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 package org.apache.geronimo.deployment.plugin;
019
020 import java.io.OutputStream;
021 import java.io.InputStream;
022 import java.io.IOException;
023
024 import javax.enterprise.deploy.spi.DeploymentConfiguration;
025 import javax.enterprise.deploy.spi.DConfigBeanRoot;
026 import javax.enterprise.deploy.spi.exceptions.ConfigurationException;
027 import javax.enterprise.deploy.spi.exceptions.BeanNotFoundException;
028 import javax.enterprise.deploy.model.DeployableObject;
029 import javax.enterprise.deploy.model.DDBeanRoot;
030
031 import org.apache.xmlbeans.XmlException;
032
033 /**
034 *
035 *
036 * @version $Rev: 476049 $ $Date: 2006-11-16 23:35:17 -0500 (Thu, 16 Nov 2006) $
037 */
038 public abstract class DeploymentConfigurationSupport implements DeploymentConfiguration {
039 private final DeployableObject deployable;
040
041 protected DConfigBeanRootSupport dConfigRoot;
042
043 public DeploymentConfigurationSupport(DeployableObject deployable, DConfigBeanRootSupport dConfigRoot) {
044 this.deployable = deployable;
045 this.dConfigRoot = dConfigRoot;
046 }
047
048 public DeployableObject getDeployableObject() {
049 return deployable;
050 }
051
052 public DConfigBeanRoot getDConfigBeanRoot(DDBeanRoot bean) throws ConfigurationException {
053 if (getDeployableObject().getDDBeanRoot().equals(bean)) {
054 return dConfigRoot;
055 }
056 return null;
057 }
058
059 public void removeDConfigBean(DConfigBeanRoot bean) throws BeanNotFoundException {
060 }
061
062 public void save(OutputStream outputArchive) throws ConfigurationException {
063 try {
064 dConfigRoot.toXML(outputArchive);
065 outputArchive.flush();
066 } catch (IOException e) {
067 throw (ConfigurationException) new ConfigurationException("Unable to save configuration").initCause(e);
068 }
069 }
070
071 public void restore(InputStream inputArchive) throws ConfigurationException {
072 try {
073 dConfigRoot.fromXML(inputArchive);
074 } catch (IOException e) {
075 throw (ConfigurationException) new ConfigurationException("Error reading configuration input").initCause(e);
076 } catch (XmlException e) {
077 throw (ConfigurationException) new ConfigurationException("Error parsing configuration input").initCause(e);
078 }
079 }
080
081 public void saveDConfigBean(OutputStream outputArchive, DConfigBeanRoot bean) throws ConfigurationException {
082 try {
083 ((DConfigBeanRootSupport)bean).toXML(outputArchive);
084 outputArchive.flush();
085 } catch (IOException e) {
086 throw (ConfigurationException) new ConfigurationException("Unable to save configuration").initCause(e);
087 }
088 }
089
090 //todo figure out how to implement this.
091 public DConfigBeanRoot restoreDConfigBean(InputStream inputArchive, DDBeanRoot bean) throws ConfigurationException {
092 return null;
093 }
094 }