/* * 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.felix.scrplugin.helper; import java.util.LinkedHashMap; import java.util.Map; import org.apache.felix.scrplugin.description.ClassDescription; import org.apache.felix.scrplugin.description.ComponentDescription; import org.apache.felix.scrplugin.description.PropertyDescription; import org.apache.felix.scrplugin.description.ReferenceDescription; import org.apache.felix.scrplugin.description.ServiceDescription; /** * A <code>ComponentContainer</code> contains all relevant information * about a component: * - the class descriptor * - the component descriptor * - the service descriptor * - reference descriptors * - property descriptors */ public class ComponentContainer { /** The class description. */ private final ClassDescription classDescription; /** The component description. */ private final ComponentDescription componentDescription; /** The service description (optional). */ private ServiceDescription serviceDescription; /** All references. */ private final Map<String, ReferenceDescription> allReferences = new LinkedHashMap<String, ReferenceDescription>(); /** All properties. */ private final Map<String, PropertyDescription> allProperties = new LinkedHashMap<String, PropertyDescription>(); /** Metatype container. */ private MetatypeContainer metatype; /** * Create a new component container * @param classDescription Class description * @param componentDescription Component description */ public ComponentContainer(final ClassDescription classDescription, final ComponentDescription componentDescription) { this.classDescription = classDescription; this.componentDescription = componentDescription; } /** * Get the class description * @return The class description */ public ClassDescription getClassDescription() { return this.classDescription; } /** * Get the component description * @return The component description */ public ComponentDescription getComponentDescription() { return this.componentDescription; } /** * Get all references. * The references are put into the map by name. * This map can be modified by clients. * @return The map of references */ public Map<String, ReferenceDescription> getReferences() { return this.allReferences; } /** * Get all properties. * The properties are put into the map by name. * This map can be modified by clients. * @return The map of properties */ public Map<String, PropertyDescription> getProperties() { return this.allProperties; } /** * Get the service description. * @return The service description or <code>null</code> */ public ServiceDescription getServiceDescription() { return serviceDescription; } /** * Set the service description * @param serviceDescription The new service description */ public void setServiceDescription(final ServiceDescription serviceDescription) { this.serviceDescription = serviceDescription; } @Override public String toString() { return "ComponentContainer [classDescription=" + classDescription + ", componentDescription=" + componentDescription + ", serviceDescription=" + serviceDescription + ", allReferences=" + allReferences + ", allProperties=" + allProperties + "]"; } public MetatypeContainer getMetatypeContainer() { return this.metatype; } public void setMetatypeContainer(final MetatypeContainer ocd) { this.metatype = ocd; } }