blob: a4b42594736372f85a539be4cdf78d439a0ec6d1 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.karaf.features.internal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.karaf.features.BundleInfo;
import org.apache.karaf.features.ConfigFileInfo;
import org.apache.karaf.features.Feature;
/**
* A feature
*/
public class FeatureImpl implements Feature {
private String id;
private String name;
private String description;
private String details;
private String version;
private String resolver;
private String install = DEFAULT_INSTALL_MODE;
private List<Feature> dependencies = new ArrayList<Feature>();
private List<BundleInfo> bundles = new ArrayList<BundleInfo>();
private Map<String, Map<String,String>> configs = new HashMap<String, Map<String,String>>();
private List<ConfigFileInfo> configurationFiles = new ArrayList<ConfigFileInfo>();
public static String SPLIT_FOR_NAME_AND_VERSION = "_split_for_name_and_version_";
public static String DEFAULT_VERSION = "0.0.0";
public static String VERSION_PREFIX = "version=";
public FeatureImpl() {
}
public FeatureImpl(String name) {
this(name, DEFAULT_VERSION);
}
public FeatureImpl(String name, String version) {
this.name = name;
this.version = version;
this.id = name + "-" + version;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getDetails() {
return details;
}
public void setDetails(String details) {
this.details = details;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getResolver() {
return resolver;
}
public void setResolver(String resolver) {
this.resolver = resolver;
}
public String getInstall() {
return install;
}
public void setInstall(String install) {
this.install = install;
}
public List<Feature> getDependencies() {
return dependencies;
}
public List<BundleInfo> getBundles() {
return bundles;
}
public Map<String, Map<String, String>> getConfigurations() {
return configs;
}
public List<ConfigFileInfo> getConfigurationFiles() {
return configurationFiles;
}
public void addDependency(Feature dependency) {
dependencies.add(dependency);
}
public void addBundle(BundleInfo bundle) {
bundles.add(bundle);
}
public void addConfig(String name, Map<String,String> properties) {
configs.put(name, properties);
}
public void addConfigurationFile(ConfigFileInfo configurationFileInfo) {
configurationFiles.add(configurationFileInfo);
}
public String toString() {
String ret = getName() + SPLIT_FOR_NAME_AND_VERSION + getVersion();
return ret;
}
public static Feature valueOf(String str) {
if (str.indexOf(SPLIT_FOR_NAME_AND_VERSION) >= 0) {
String strName = str.substring(0, str.indexOf(SPLIT_FOR_NAME_AND_VERSION));
String strVersion = str.substring(str.indexOf(SPLIT_FOR_NAME_AND_VERSION)
+ SPLIT_FOR_NAME_AND_VERSION.length(), str.length());
return new FeatureImpl(strName, strVersion);
} else {
return new FeatureImpl(str);
}
}
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
FeatureImpl feature = (FeatureImpl) o;
if (!name.equals(feature.name)) return false;
if (!version.equals(feature.version)) return false;
return true;
}
public int hashCode() {
int result = name.hashCode();
result = 31 * result + version.hashCode();
return result;
}
}