001 /** 002 * 003 * Copyright 2003-2004 The Apache Software Foundation 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * 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: 355877 $ $Date: 2005-12-10 18:48:27 -0800 (Sat, 10 Dec 2005) $ 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 }