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 &quot;Service-Component&quot;) 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;
+}
