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 }