FELIX-925 Provide the new ComponentConstants (deactivation reason codes)

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@792492 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scr/src/main/java/org/osgi/service/component/ComponentConstants.java b/scr/src/main/java/org/osgi/service/component/ComponentConstants.java
new file mode 100644
index 0000000..2f77ce6
--- /dev/null
+++ b/scr/src/main/java/org/osgi/service/component/ComponentConstants.java
@@ -0,0 +1,122 @@
+/*
+ * $Header: /cvshome/build/org.osgi.service.component/src/org/osgi/service/component/ComponentConstants.java,v 1.14 2006/06/16 16:31:26 hargrave Exp $
+ *
+ * Copyright (c) OSGi Alliance (2004, 2006). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.component;
+
+
+/**
+ * Defines standard names for Service Component constants.
+ *
+ * @version $Revision$
+ */
+public interface ComponentConstants
+{
+    /**
+     * Manifest header (named "Service-Component") specifying the XML
+     * documents within a bundle that contain the bundle's Service Component
+     * descriptions.
+     * <p>
+     * The attribute value may be retrieved from the <code>Dictionary</code>
+     * object returned by the <code>Bundle.getHeaders</code> method.
+     */
+    public static final String SERVICE_COMPONENT = "Service-Component";
+
+    /**
+     * A component property for a component configuration that contains the name
+     * of the component as specified in the <code>name</code> attribute of the
+     * <code>component</code> element. The type of this property must be
+     * <code>String</code>.
+     */
+    public final static String COMPONENT_NAME = "component.name";
+
+    /**
+     * A component property that contains the generated id for a component
+     * configuration. The type of this property must be <code>Long</code>.
+     *
+     * <p>
+     * The value of this property is assigned by the Service Component Runtime
+     * when a component configuration is created. The Service Component Runtime
+     * assigns a unique value that is larger than all previously assigned values
+     * since the Service Component Runtime was started. These values are NOT
+     * persistent across restarts of the Service Component Runtime.
+     */
+    public final static String COMPONENT_ID = "component.id";
+
+    /**
+     * A service registration property for a Component Factory that contains the
+     * value of the <code>factory</code> attribute. The type of this property
+     * must be <code>String</code>.
+     */
+    public final static String COMPONENT_FACTORY = "component.factory";
+
+    /**
+     * The suffix for reference target properties. These properties contain the
+     * filter to select the target services for a reference. The type of this
+     * property must be <code>String</code>.
+     */
+    public final static String REFERENCE_TARGET_SUFFIX = ".target";
+
+    /**
+    * The reason the component instance was deactivated is unspecified.
+    *
+    * @since 1.1
+    */
+    public static final int DEACTIVATION_REASON_UNSPECIFIED = 0;
+
+    /**
+      * The component instance was deactivated because the component was disabled.
+      *
+      * @since 1.1
+      */
+    public static final int DEACTIVATION_REASON_DISABLED = 1;
+
+    /**
+      * The component instance was deactivated because a reference became unsatisfied.
+      *
+      * @since 1.1
+      */
+    public static final int DEACTIVATION_REASON_REFERENCE = 2;
+
+    /**
+     * The component instance was deactivated because its configuration was changed.
+     *
+     * @since 1.1
+     */
+    public static final int DEACTIVATION_REASON_CONFIGURATION_MODIFIED = 3;
+
+    /**
+     * The component instance was deactivated because its configuration was deleted.
+     *
+     * @since 1.1
+     */
+    public static final int DEACTIVATION_REASON_CONFIGURATION_DELETED = 4;
+
+    /**
+     * The component instance was deactivated because the component was disposed.
+     *
+     * @since 1.1
+     */
+    public static final int DEACTIVATION_REASON_DISPOSED = 5;
+
+    /**
+     * The component instance was deactivated because the bundle was stopped.
+     *
+     * @since 1.1
+     */
+    public static final int DEACTIVATION_REASON_BUNDLE_STOPPED = 6;
+}