2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.controller.configpusherfeature.internal;
10 import com.google.common.base.Preconditions;
11 import java.util.LinkedHashSet;
12 import java.util.List;
13 import javax.xml.bind.JAXBException;
14 import org.apache.karaf.features.BundleInfo;
15 import org.apache.karaf.features.Conditional;
16 import org.apache.karaf.features.ConfigFileInfo;
17 import org.apache.karaf.features.ConfigInfo;
18 import org.apache.karaf.features.Dependency;
19 import org.apache.karaf.features.Feature;
20 import org.slf4j.Logger;
21 import org.slf4j.LoggerFactory;
24 * Wrap a Feature for the purposes of extracting the FeatureConfigSnapshotHolders from
25 * its underlying ConfigFileInfo's
27 * Delegates the the contained feature and provides additional methods.
29 public class AbstractFeatureWrapper implements Feature {
30 private static final Logger LOG = LoggerFactory.getLogger(AbstractFeatureWrapper.class);
31 protected Feature feature = null;
33 protected AbstractFeatureWrapper() {
34 // prevent instantiation without Feature
38 * @param f Feature to wrap
40 public AbstractFeatureWrapper(final Feature f) {
41 Preconditions.checkNotNull(f,"FeatureWrapper requires non-null Feature in constructor");
46 * Get FeatureConfigSnapshotHolders appropriate to feed to the config subsystem
47 * from the underlying Feature Config files
49 public LinkedHashSet<FeatureConfigSnapshotHolder> getFeatureConfigSnapshotHolders() throws Exception {
50 final LinkedHashSet <FeatureConfigSnapshotHolder> snapShotHolders = new LinkedHashSet<FeatureConfigSnapshotHolder>();
51 for(final ConfigFileInfo c: getConfigurationFiles()) {
53 snapShotHolders.add(new FeatureConfigSnapshotHolder(c,this));
54 } catch (final JAXBException e) {
55 LOG.debug("{} is not a config subsystem config file",c.getFinalname());
58 return snapShotHolders;
62 public int hashCode() {
65 result = prime * result + ((feature == null) ? 0 : feature.hashCode());
70 public boolean equals(final Object obj) {
77 if (getClass() != obj.getClass()) {
80 final AbstractFeatureWrapper other = (AbstractFeatureWrapper) obj;
81 if (feature == null) {
82 if (other.feature != null) {
85 } else if (!feature.equals(other.feature)) {
92 public String toString() {
93 return feature.getName();
98 * @see org.apache.karaf.features.Feature#getId()
101 public String getId() {
102 return feature.getId();
107 * @see org.apache.karaf.features.Feature#getName()
110 public String getName() {
111 return feature.getName();
116 * @see org.apache.karaf.features.Feature#getDescription()
119 public String getDescription() {
120 return feature.getDescription();
125 * @see org.apache.karaf.features.Feature#getDetails()
128 public String getDetails() {
129 return feature.getDetails();
134 * @see org.apache.karaf.features.Feature#getVersion()
137 public String getVersion() {
138 return feature.getVersion();
143 * @see org.apache.karaf.features.Feature#hasVersion()
146 public boolean hasVersion() {
147 return feature.hasVersion();
152 * @see org.apache.karaf.features.Feature#getResolver()
155 public String getResolver() {
156 return feature.getResolver();
161 * @see org.apache.karaf.features.Feature#getInstall()
164 public String getInstall() {
165 return feature.getInstall();
170 * @see org.apache.karaf.features.Feature#getDependencies()
173 public List<Dependency> getDependencies() {
174 return feature.getDependencies();
179 * @see org.apache.karaf.features.Feature#getBundles()
182 public List<BundleInfo> getBundles() {
183 return feature.getBundles();
188 * @see org.apache.karaf.features.Feature#getConfigurations()
191 public List<ConfigInfo> getConfigurations() {
192 return feature.getConfigurations();
197 * @see org.apache.karaf.features.Feature#getConfigurationFiles()
200 public List<ConfigFileInfo> getConfigurationFiles() {
201 return feature.getConfigurationFiles();
206 * @see org.apache.karaf.features.Feature#getConditional()
209 public List<? extends Conditional> getConditional() {
210 return feature.getConditional();
215 * @see org.apache.karaf.features.Feature#getStartLevel()
218 public int getStartLevel() {
219 return feature.getStartLevel();
224 * @see org.apache.karaf.features.Feature#getRegion()
227 public String getRegion() {
228 return feature.getRegion();