Added: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/ComponentContext.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/ComponentContext.java?rev=1689973&view=auto
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/ComponentContext.java
 (added)
+++ 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/ComponentContext.java
 Wed Jul  8 22:10:14 2015
@@ -0,0 +1,183 @@
+/*
+ * Copyright (c) OSGi Alliance (2004, 2014). 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;
+
+import java.util.Dictionary;
+import org.osgi.annotation.versioning.ProviderType;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * A Component Context object is used by a component instance to interact with
+ * its execution context including locating services by reference name. Each
+ * component instance has a unique Component Context.
+ * 
+ * <p>
+ * A component instance may obtain its Component Context object through its
+ * activate, modified, and deactivate methods.
+ * 
+ * @ThreadSafe
+ * @author $Id: 5499691841bcfbb0d35222564785af1a5a530c7f $
+ */
+@ProviderType
+public interface ComponentContext {
+       /**
+        * Returns the component properties for this Component Context.
+        * 
+        * @return The properties for this Component Context. The Dictionary is 
read
+        *         only and cannot be modified.
+        */
+       public Dictionary<String, Object> getProperties();
+
+       /**
+        * Returns the service object for the specified reference name.
+        * 
+        * <p>
+        * If the cardinality of the reference is {@code 0..n} or {@code 1..n} 
and
+        * multiple services are bound to the reference, the service with the
+        * highest ranking (as specified in its {@code 
Constants.SERVICE_RANKING}
+        * property) is returned. If there is a tie in ranking, the service 
with the
+        * lowest service id (as specified in its {@code Constants.SERVICE_ID}
+        * property); that is, the service that was registered first is 
returned.
+        * 
+        * @param name The name of a reference as specified in a {@code 
reference}
+        *        element in this component's description.
+        * @return A service object for the referenced service or {@code null} 
if
+        *         the reference cardinality is {@code 0..1} or {@code 0..n} 
and no
+        *         bound service is available.
+        * @throws ComponentException If Service Component Runtime catches an
+        *         exception while activating the bound service.
+        */
+       public Object locateService(String name);
+
+       /**
+        * Returns the service object for the specified reference name and
+        * {@code ServiceReference}.
+        * 
+        * @param <S> Type of Service.
+        * @param name The name of a reference as specified in a {@code 
reference}
+        *        element in this component's description.
+        * @param reference The {@code ServiceReference} to a bound service. 
This
+        *        must be a {@code ServiceReference} provided to the component 
via
+        *        the bind or unbind method for the specified reference name.
+        * @return A service object for the referenced service or {@code null} 
if
+        *         the specified {@code ServiceReference} is not a bound 
service for
+        *         the specified reference name.
+        * @throws ComponentException If Service Component Runtime catches an
+        *         exception while activating the bound service.
+        */
+       public <S> S locateService(String name, ServiceReference<S> reference);
+
+       /**
+        * Returns the service objects for the specified reference name.
+        * 
+        * @param name The name of a reference as specified in a {@code 
reference}
+        *        element in this component's description.
+        * @return An array of service objects for the referenced service or
+        *         {@code null} if the reference cardinality is {@code 0..1} or
+        *         {@code 0..n} and no bound service is available. If the 
reference
+        *         cardinality is {@code 0..1} or {@code 1..1} and a bound 
service
+        *         is available, the array will have exactly one element.
+        * @throws ComponentException If Service Component Runtime catches an
+        *         exception while activating a bound service.
+        */
+       public Object[] locateServices(String name);
+
+       /**
+        * Returns the {@code BundleContext} of the bundle which contains this
+        * component.
+        * 
+        * @return The {@code BundleContext} of the bundle containing this
+        *         component.
+        */
+       public BundleContext getBundleContext();
+
+       /**
+        * If the component instance is registered as a service using the
+        * {@code servicescope="bundle"} or {@code servicescope="prototype"}
+        * attribute, then this method returns the bundle using the service 
provided
+        * by the component instance.
+        * <p>
+        * This method will return {@code null} if:
+        * <ul>
+        * <li>The component instance is not a service, then no bundle can be 
using
+        * it as a service.</li>
+        * <li>The component instance is a service but did not specify the
+        * {@code servicescope="bundle"} or {@code servicescope="prototype"}
+        * attribute, then all bundles using the service provided by the 
component
+        * instance will share the same component instance.</li>
+        * <li>The service provided by the component instance is not currently 
being
+        * used by any bundle.</li>
+        * </ul>
+        * 
+        * @return The bundle using the component instance as a service or
+        *         {@code null}.
+        */
+       public Bundle getUsingBundle();
+
+       /**
+        * Returns the Component Instance object for the component instance
+        * associated with this Component Context.
+        * 
+        * @return The Component Instance object for the component instance.
+        */
+       public ComponentInstance getComponentInstance();
+
+       /**
+        * Enables the specified component name. The specified component name 
must
+        * be in the same bundle as this component.
+        * 
+        * <p>
+        * This method must return after changing the enabled state of the 
specified
+        * component name. Any actions that result from this, such as 
activating or
+        * deactivating a component configuration, must occur asynchronously to 
this
+        * method call.
+        * 
+        * @param name The name of a component or {@code null} to indicate all
+        *        components in the bundle.
+        */
+       public void enableComponent(String name);
+
+       /**
+        * Disables the specified component name. The specified component name 
must
+        * be in the same bundle as this component.
+        * 
+        * <p>
+        * This method must return after changing the enabled state of the 
specified
+        * component name. Any actions that result from this, such as 
activating or
+        * deactivating a component configuration, must occur asynchronously to 
this
+        * method call.
+        * 
+        * @param name The name of a component.
+        */
+       public void disableComponent(String name);
+
+       /**
+        * If the component instance is registered as a service using the
+        * {@code service} element, then this method returns the service 
reference
+        * of the service provided by this component instance.
+        * <p>
+        * This method will return {@code null} if the component instance is not
+        * registered as a service.
+        * 
+        * @return The {@code ServiceReference} object for the component 
instance or
+        *         {@code null} if the component instance is not registered as a
+        *         service.
+        */
+       public ServiceReference<?> getServiceReference();
+}

Added: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/ComponentException.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/ComponentException.java?rev=1689973&view=auto
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/ComponentException.java
 (added)
+++ 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/ComponentException.java
 Wed Jul  8 22:10:14 2015
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) OSGi Alliance (2004, 2014). 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;
+
+/**
+ * Unchecked exception which may be thrown by Service Component Runtime.
+ * 
+ * @author $Id: 6b47774608ff37a2076b9f58090509093314a67a $
+ */
+public class ComponentException extends RuntimeException {
+       static final long       serialVersionUID        = -7438212656298726924L;
+
+       /**
+        * Construct a new ComponentException with the specified message and 
cause.
+        * 
+        * @param message The message for the exception.
+        * @param cause The cause of the exception. May be {@code null}.
+        */
+       public ComponentException(String message, Throwable cause) {
+               super(message, cause);
+       }
+
+       /**
+        * Construct a new ComponentException with the specified message.
+        * 
+        * @param message The message for the exception.
+        */
+       public ComponentException(String message) {
+               super(message);
+       }
+
+       /**
+        * Construct a new ComponentException with the specified cause.
+        * 
+        * @param cause The cause of the exception. May be {@code null}.
+        */
+       public ComponentException(Throwable cause) {
+               super(cause);
+       }
+
+       /**
+        * Returns the cause of this exception or {@code null} if no cause was 
set.
+        * 
+        * @return The cause of this exception or {@code null} if no cause was 
set.
+        */
+       @Override
+       public Throwable getCause() {
+               return super.getCause();
+       }
+
+       /**
+        * Initializes the cause of this exception to the specified value.
+        * 
+        * @param cause The cause of this exception.
+        * @return This exception.
+        * @throws IllegalArgumentException If the specified cause is this
+        *         exception.
+        * @throws IllegalStateException If the cause of this exception has 
already
+        *         been set.
+        */
+       @Override
+       public Throwable initCause(Throwable cause) {
+               return super.initCause(cause);
+       }
+}

Added: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/ComponentFactory.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/ComponentFactory.java?rev=1689973&view=auto
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/ComponentFactory.java
 (added)
+++ 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/ComponentFactory.java
 Wed Jul  8 22:10:14 2015
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) OSGi Alliance (2004, 2014). 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;
+
+import java.util.Dictionary;
+import org.osgi.annotation.versioning.ProviderType;
+
+/**
+ * When a component is declared with the {@code factory} attribute on its
+ * {@code component} element, Service Component Runtime will register a
+ * Component Factory service to allow new component configurations to be 
created
+ * and activated rather than automatically creating and activating component
+ * configuration as necessary.
+ * 
+ * @ThreadSafe
+ * @author $Id: a6422fc517a31533b1188d5ab9d9ee95a7a52c8a $
+ */
+@ProviderType
+public interface ComponentFactory {
+       /**
+        * Create and activate a new component configuration. Additional 
properties
+        * may be provided for the component configuration.
+        * 
+        * @param properties Additional properties for the component 
configuration
+        *        or {@code null} if there are no additional properties.
+        * @return A {@code ComponentInstance} object encapsulating the 
component
+        *         instance of the component configuration. The component
+        *         configuration has been activated and, if the component 
specifies
+        *         a {@code service} element, the component instance has been
+        *         registered as a service.
+        * @throws ComponentException If Service Component Runtime is unable to
+        *         activate the component configuration.
+        */
+       public ComponentInstance newInstance(Dictionary<String, ?> properties);
+}

Added: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/ComponentInstance.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/ComponentInstance.java?rev=1689973&view=auto
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/ComponentInstance.java
 (added)
+++ 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/ComponentInstance.java
 Wed Jul  8 22:10:14 2015
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) OSGi Alliance (2004, 2013). 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;
+
+import org.osgi.annotation.versioning.ProviderType;
+
+/**
+ * A ComponentInstance encapsulates a component instance of an activated
+ * component configuration. ComponentInstances are created whenever a component
+ * configuration is activated.
+ * 
+ * <p>
+ * ComponentInstances are never reused. A new ComponentInstance object will be
+ * created when the component configuration is activated again.
+ * 
+ * @ThreadSafe
+ * @author $Id: 8078babdd771f18831a54bfaa407e4edd2781552 $
+ */
+@ProviderType
+public interface ComponentInstance {
+       /**
+        * Dispose of the component configuration for this component instance. 
The
+        * component configuration will be deactivated. If the component
+        * configuration has already been deactivated, this method does nothing.
+        */
+       public void dispose();
+
+       /**
+        * Returns the component instance of the activated component 
configuration.
+        * 
+        * @return The component instance or {@code null} if the component
+        *         configuration has been deactivated.
+        */
+       public Object getInstance();
+}

Added: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/ComponentServiceObjects.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/ComponentServiceObjects.java?rev=1689973&view=auto
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/ComponentServiceObjects.java
 (added)
+++ 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/ComponentServiceObjects.java
 Wed Jul  8 22:10:14 2015
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) OSGi Alliance (2012, 2014). 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;
+
+import org.osgi.annotation.versioning.ProviderType;
+import org.osgi.framework.Constants;
+import org.osgi.framework.ServiceObjects;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * Allows multiple service objects for a service to be obtained.
+ * 
+ * <p>
+ * A component instance can receive a {@code ComponentServiceObjects} object 
via
+ * a reference that is typed {@code ComponentServiceObjects}.
+ * 
+ * <p>
+ * For services with {@link Constants#SCOPE_PROTOTYPE prototype} scope, 
multiple
+ * service objects for the service can be obtained. For services with
+ * {@link Constants#SCOPE_SINGLETON singleton} or {@link Constants#SCOPE_BUNDLE
+ * bundle} scope, only one, use-counted service object is available.
+ * 
+ * <p>
+ * Any unreleased service objects obtained from this
+ * {@code ComponentServiceObjects} object are automatically released by Service
+ * Component Runtime when the service becomes unbound.
+ * 
+ * @param <S> Type of Service
+ * @ThreadSafe
+ * @since 1.3
+ * @see ServiceObjects
+ * @author $Id: 49fc5e86384324c73b412d8b733f715f8b55d4d6 $
+ */
+@ProviderType
+public interface ComponentServiceObjects<S> {
+       /**
+        * Returns a service object for the {@link #getServiceReference()
+        * associated} service.
+        * 
+        * <p>
+        * This method will always return {@code null} when the associated 
service
+        * has been become unbound.
+        * 
+        * @return A service object for the associated service or {@code null} 
if
+        *         the service is unbound, the customized service object 
returned by
+        *         a {@code ServiceFactory} does not implement the classes under
+        *         which it was registered or the {@code ServiceFactory} threw 
an
+        *         exception.
+        * @throws IllegalStateException If the associated service has been 
become
+        *         unbound.
+        * @see #ungetService(Object)
+        */
+       public S getService();
+
+       /**
+        * Releases a service object for the {@link #getServiceReference()
+        * associated} service.
+        * 
+        * <p>
+        * The specified service object must no longer be used and all 
references to
+        * it should be destroyed after calling this method.
+        * 
+        * @param service A service object previously provided by this
+        *        {@code ComponentServiceObjects} object.
+        * @throws IllegalStateException If the associated service has been 
become
+        *         unbound.
+        * @throws IllegalArgumentException If the specified service object was 
not
+        *         provided by this {@code ComponentServiceObjects} object.
+        * @see #getService()
+        */
+       public void ungetService(S service);
+
+       /**
+        * Returns the {@link ServiceReference} for the service associated with 
this
+        * {@code ComponentServiceObjects} object.
+        * 
+        * @return The {@link ServiceReference} for the service associated with 
this
+        *         {@code ComponentServiceObjects} object.
+        */
+       public ServiceReference<S> getServiceReference();
+}

Added: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/package-info.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/package-info.java?rev=1689973&view=auto
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/package-info.java
 (added)
+++ 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/package-info.java
 Wed Jul  8 22:10:14 2015
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) OSGi Alliance (2010, 2013). 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.
+ */
+
+/**
+ * Service Component Package Version 1.3.
+ *
+ * <p>
+ * Bundles wishing to use this package must list the package in the
+ * Import-Package header of the bundle's manifest. This package has two types 
of
+ * users: the consumers that use the API in this package and the providers that
+ * implement the API in this package.
+ *
+ * <p>
+ * Example import for consumers using the API in this package:
+ * <p>
+ * {@code  Import-Package: org.osgi.service.component; version="[1.3,2.0)"}
+ * <p>
+ * Example import for providers implementing the API in this package:
+ * <p>
+ * {@code  Import-Package: org.osgi.service.component; version="[1.3,1.4)"}
+ *
+ * @author $Id: 9c158e8fb0f0512b3fbfb759fc06ed54afc0d8b0 $
+ */
+
+@Version("1.3")
+package org.osgi.service.component;
+
+import org.osgi.annotation.versioning.Version;
+

Added: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/ServiceComponentRuntime.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/ServiceComponentRuntime.java?rev=1689973&view=auto
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/ServiceComponentRuntime.java
 (added)
+++ 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/ServiceComponentRuntime.java
 Wed Jul  8 22:10:14 2015
@@ -0,0 +1,165 @@
+/*
+ * Copyright (c) OSGi Alliance (2013, 2014). 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.runtime;
+
+import java.util.Collection;
+import org.osgi.annotation.versioning.ProviderType;
+import org.osgi.framework.Bundle;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.runtime.dto.ComponentConfigurationDTO;
+import org.osgi.service.component.runtime.dto.ComponentDescriptionDTO;
+import org.osgi.util.promise.Promise;
+
+/**
+ * The {@code ServiceComponentRuntime} service represents the Declarative
+ * Services actor, known as Service Component Runtime (SCR), that manages the
+ * service components and their life cycle. The {@code ServiceComponentRuntime}
+ * service allows introspection of the components managed by Service Component
+ * Runtime.
+ * 
+ * <p>
+ * This service differentiates between a {@link ComponentDescriptionDTO} and a
+ * {@link ComponentConfigurationDTO}. A {@link ComponentDescriptionDTO} is a
+ * representation of a declared component description. A
+ * {@link ComponentConfigurationDTO} is a representation of an actual instance
+ * of a declared component description parameterized by component properties.
+ * <p>
+ * 
+ * Access to this service requires the
+ * {@code ServicePermission[ServiceComponentRuntime, GET]} permission. It is
+ * intended that only administrative bundles should be granted this permission
+ * to limit access to the potentially intrusive methods provided by this
+ * service.
+ * 
+ * @ThreadSafe
+ * @since 1.3
+ * @author $Id: 59760dcd57f2162574cfd0c7f3a393825566e78f $
+ */
+@ProviderType
+public interface ServiceComponentRuntime {
+
+       /**
+        * Returns the component descriptions declared by the specified active
+        * bundles.
+        * 
+        * <p>
+        * Only component descriptions from active bundles are returned. If the
+        * specified bundles have no declared components or are not active, an 
empty
+        * collection is returned.
+        * 
+        * @param bundles The bundles whose declared component descriptions are 
to
+        *        be returned. Specifying no bundles, or the equivalent of an 
empty
+        *        {@code Bundle} array, will return the declared component
+        *        descriptions from all active bundles.
+        * @return The declared component descriptions of the specified active
+        *         {@code bundles}. An empty collection is returned if there 
are no
+        *         component descriptions for the specified active bundles.
+        */
+       Collection<ComponentDescriptionDTO> 
getComponentDescriptionDTOs(Bundle... bundles);
+
+       /**
+        * Returns the {@link ComponentDescriptionDTO} declared with the 
specified name
+        * by the specified bundle.
+        * 
+        * <p>
+        * Only component descriptions from active bundles are returned.
+        * {@code null} if no such component is declared by the given {@code 
bundle}
+        * or the bundle is not active.
+        * 
+        * @param bundle The bundle declaring the component description. Must 
not be
+        *        {@code null}.
+        * @param name The name of the component description. Must not be
+        *        {@code null}.
+        * @return The declared component description or {@code null} if the
+        *         specified bundle is not active or does not declare a 
component
+        *         description with the specified name.
+        */
+       ComponentDescriptionDTO getComponentDescriptionDTO(Bundle bundle, 
String name);
+
+       /**
+        * Returns the component configurations for the specified component
+        * description.
+        * 
+        * @param description The component description. Must not be {@code 
null}.
+        * @return A collection containing a snapshot of the current component
+        *         configurations for the specified component description. An 
empty
+        *         collection is returned if there are none.
+        */
+       Collection<ComponentConfigurationDTO> 
getComponentConfigurationDTOs(ComponentDescriptionDTO description);
+
+       /**
+        * Returns whether the specified component description is currently 
enabled.
+        * 
+        * <p>
+        * The enabled state of a component description is initially set by the
+        * {@link ComponentDescriptionDTO#defaultEnabled enabled} attribute of 
the
+        * component description.
+        * 
+        * @param description The component description. Must not be {@code 
null}.
+        * @return {@code true} if the specified component description is 
currently
+        *         enabled. Otherwise, {@code false}.
+        * @see #enableComponent(ComponentDescriptionDTO)
+        * @see #disableComponent(ComponentDescriptionDTO)
+        * @see ComponentContext#disableComponent(String)
+        * @see ComponentContext#enableComponent(String)
+        */
+       boolean isComponentEnabled(ComponentDescriptionDTO description);
+
+       /**
+        * Enables the specified component description.
+        * 
+        * <p>
+        * If the specified component description is currently enabled, this 
method
+        * has no effect.
+        * 
+        * <p>
+        * This method must return after changing the enabled state of the 
specified
+        * component description. Any actions that result from this, such as
+        * activating or deactivating a component configuration, must occur
+        * asynchronously to this method call.
+        * 
+        * @param description The component description to enable. Must not be
+        *        {@code null}.
+        * @return A promise that will be resolved when the actions that result 
from
+        *         changing the enabled state of the specified component have
+        *         completed.
+        * @see #isComponentEnabled(ComponentDescriptionDTO)
+        */
+       Promise<Void> enableComponent(ComponentDescriptionDTO description);
+
+       /**
+        * Disables the specified component description.
+        * 
+        * <p>
+        * If the specified component description is currently disabled, this 
method
+        * has no effect.
+        * 
+        * <p>
+        * This method must return after changing the enabled state of the 
specified
+        * component description. Any actions that result from this, such as
+        * activating or deactivating a component configuration, must occur
+        * asynchronously to this method call.
+        * 
+        * @param description The component description to disable. Must not be
+        *        {@code null}.
+        * @return A promise that will be resolved when the actions that result 
from
+        *         changing the enabled state of the specified component have
+        *         completed.
+        * @see #isComponentEnabled(ComponentDescriptionDTO)
+        */
+       Promise<Void> disableComponent(ComponentDescriptionDTO description);
+}

Propchange: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/ServiceComponentRuntime.java
------------------------------------------------------------------------------
    svn:executable = *

Added: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/ComponentConfigurationDTO.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/ComponentConfigurationDTO.java?rev=1689973&view=auto
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/ComponentConfigurationDTO.java
 (added)
+++ 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/ComponentConfigurationDTO.java
 Wed Jul  8 22:10:14 2015
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) OSGi Alliance (2013, 2014). 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.runtime.dto;
+
+import java.util.Map;
+import org.osgi.dto.DTO;
+import org.osgi.service.component.ComponentContext;
+
+/**
+ * A representation of an actual instance of a declared component description
+ * parameterized by component properties.
+ * 
+ * @since 1.3
+ * @NotThreadSafe
+ * @author $Id: a3e98bbac97a1d79805f9be0ed7f2ae811f112d0 $
+ */
+public class ComponentConfigurationDTO extends DTO {
+       /**
+        * The component configuration is unsatisfied due to a missing required
+        * configuration.
+        */
+       public static final int                 UNSATISFIED_CONFIGURATION       
= 1;
+
+       /**
+        * The component configuration is unsatisfied due to an unsatisfied
+        * reference.
+        */
+       public static final int                 UNSATISFIED_REFERENCE           
= 2;
+
+       /**
+        * The component configuration is satisfied.
+        * 
+        * <p>
+        * Any {@link ComponentDescriptionDTO#serviceInterfaces services} 
declared
+        * by the component description are registered.
+        */
+       public static final int                 SATISFIED                       
                = 4;
+
+       /**
+        * The component configuration is active.
+        * 
+        * <p>
+        * This is the normal operational state of a component configuration.
+        */
+       public static final int                 ACTIVE                          
                = 8;
+
+       /**
+        * The representation of the component configuration's component
+        * description.
+        */
+       public ComponentDescriptionDTO  description;
+
+       /**
+        * The current state of the component configuration.
+        * 
+        * <p>
+        * This is one of {@link #UNSATISFIED_CONFIGURATION},
+        * {@link #UNSATISFIED_REFERENCE}, {@link #SATISFIED} or {@link 
#ACTIVE}.
+        */
+       public int                                                      state;
+
+       /**
+        * The id of the component configuration.
+        * 
+        * <p>
+        * The id is a non-persistent, unique value assigned at runtime. The id 
is
+        * also available as the {@code component.id} component property. The 
value
+        * of this field is unspecified if the state of this component 
configuration
+        * is unsatisfied.
+        */
+       public long                                                     id;
+
+       /**
+        * The component properties for the component configuration.
+        * 
+        * @see ComponentContext#getProperties()
+        */
+       public Map<String, Object>      properties;
+
+       /**
+        * The satisfied references.
+        * 
+        * <p>
+        * Each {@link SatisfiedReferenceDTO} in the array represents a 
satisfied
+        * reference of the component configuration. The array must be empty if 
the
+        * component configuration has no satisfied references.
+        */
+       public SatisfiedReferenceDTO[]          satisfiedReferences;
+
+       /**
+        * The unsatisfied references.
+        * 
+        * <p>
+        * Each {@link UnsatisfiedReferenceDTO} in the array represents an
+        * unsatisfied reference of the component configuration. The array must 
be
+        * empty if the component configuration has no unsatisfied references.
+        */
+       public UnsatisfiedReferenceDTO[]        unsatisfiedReferences;
+}

Propchange: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/ComponentConfigurationDTO.java
------------------------------------------------------------------------------
    svn:executable = *

Added: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/ComponentDescriptionDTO.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/ComponentDescriptionDTO.java?rev=1689973&view=auto
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/ComponentDescriptionDTO.java
 (added)
+++ 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/ComponentDescriptionDTO.java
 Wed Jul  8 22:10:14 2015
@@ -0,0 +1,171 @@
+/*
+ * Copyright (c) OSGi Alliance (2013, 2014). 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.runtime.dto;
+
+import java.util.Map;
+import org.osgi.dto.DTO;
+import org.osgi.framework.dto.BundleDTO;
+
+/**
+ * A representation of a declared component description.
+ * 
+ * @since 1.3
+ * @NotThreadSafe
+ * @author $Id: 9f098a6edef3359b4dbd21e1e58bbad01b89b995 $
+ */
+public class ComponentDescriptionDTO extends DTO {
+       /**
+        * The name of the component.
+        * 
+        * <p>
+        * This is declared in the {@code name} attribute of the {@code 
component}
+        * element. This must be the default name if the component description 
does
+        * not declare a name.
+        */
+       public String                           name;
+
+       /**
+        * The bundle declaring the component description.
+        */
+       public BundleDTO                        bundle;
+
+       /**
+        * The component factory name.
+        * 
+        * <p>
+        * This is declared in the {@code factory} attribute of the
+        * {@code component} element. This must be {@code null} if the component
+        * description is not declared as a component factory.
+        */
+       public String                           factory;
+
+       /**
+        * The service scope.
+        * 
+        * <p>
+        * This is declared in the {@code scope} attribute of the {@code 
service}
+        * element. This must be {@code null} if the component description does 
not
+        * declare any service interfaces.
+        */
+       public String                           scope;
+
+       /**
+        * The fully qualified name of the implementation class.
+        * 
+        * <p>
+        * This is declared in the {@code class} attribute of the
+        * {@code implementation} element.
+        */
+       public String                           implementationClass;
+
+       /**
+        * The initial enabled state.
+        * 
+        * <p>
+        * This is declared in the {@code enabled} attribute of the
+        * {@code component} element.
+        */
+       public boolean                          defaultEnabled;
+
+       /**
+        * The immediate state.
+        * 
+        * <p>
+        * This is declared in the {@code immediate} attribute of the
+        * {@code component} element.
+        */
+       public boolean                          immediate;
+
+       /**
+        * The fully qualified names of the service interfaces.
+        * 
+        * <p>
+        * These are declared in the {@code interface} attribute of the
+        * {@code provide} elements. The array must be empty if the component
+        * description does not declare any service interfaces.
+        */
+       public String[]                         serviceInterfaces;
+
+       /**
+        * The declared component properties.
+        * 
+        * <p>
+        * These are declared in the {@code property} and {@code properties}
+        * elements.
+        */
+       public Map<String, Object>      properties;
+
+       /**
+        * The referenced services.
+        * 
+        * <p>
+        * These are declared in the {@code reference} elements. The array must 
be
+        * empty if the component description does not declare references to any
+        * services.
+        */
+       public ReferenceDTO[]                   references;
+
+       /**
+        * The name of the activate method.
+        * 
+        * <p>
+        * This is declared in the {@code activate} attribute of the
+        * {@code component} element. This must be {@code null} if the component
+        * description does not declare an activate method name.
+        */
+       public String                           activate;
+
+       /**
+        * The name of the deactivate method.
+        * 
+        * <p>
+        * This is declared in the {@code deactivate} attribute of the
+        * {@code component} element. This must be {@code null} if the component
+        * description does not declare a deactivate method name.
+        */
+       public String                           deactivate;
+
+       /**
+        * The name of the modified method.
+        * 
+        * <p>
+        * This is declared in the {@code modified} attribute of the
+        * {@code component} element. This must be {@code null} if the component
+        * description does not declare a modified method name.
+        */
+       public String                           modified;
+
+       /**
+        * The configuration policy.
+        * 
+        * <p>
+        * This is declared in the {@code configuration-policy} attribute of the
+        * {@code component} element. This must be the default configuration 
policy
+        * if the component description does not declare a configuration policy.
+        */
+       public String                           configurationPolicy;
+
+       /**
+        * The configuration pids.
+        * 
+        * <p>
+        * These are declared in the {@code configuration-pid} attribute of the
+        * {@code component} element. This must contain the default 
configuration
+        * pid if the component description does not declare a configuration 
pid.
+        */
+       public String[]                         configurationPid;
+}

Propchange: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/ComponentDescriptionDTO.java
------------------------------------------------------------------------------
    svn:executable = *

Added: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/ReferenceDTO.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/ReferenceDTO.java?rev=1689973&view=auto
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/ReferenceDTO.java
 (added)
+++ 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/ReferenceDTO.java
 Wed Jul  8 22:10:14 2015
@@ -0,0 +1,148 @@
+/*
+ * Copyright (c) OSGi Alliance (2013, 2015). 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.runtime.dto;
+
+import org.osgi.dto.DTO;
+
+/**
+ * A representation of a declared reference to a service.
+ * 
+ * @since 1.3
+ * @NotThreadSafe
+ * @author $Id: fca2413271fcded16b4ebe3c6628fe8660e2575e $
+ */
+public class ReferenceDTO extends DTO {
+
+       /**
+        * The name of the reference.
+        * 
+        * <p>
+        * This is declared in the {@code name} attribute of the {@code 
reference}
+        * element. This must be the default name if the component description 
does
+        * not declare a name for the reference.
+        */
+       public String   name;
+
+       /**
+        * The service interface of the reference.
+        * 
+        * <p>
+        * This is declared in the {@code interface} attribute of the
+        * {@code reference} element.
+        */
+       public String   interfaceName;
+
+       /**
+        * The cardinality of the reference.
+        * 
+        * <p>
+        * This is declared in the {@code cardinality} attribute of the
+        * {@code reference} element. This must be the default cardinality if 
the
+        * component description does not declare a cardinality for the 
reference.
+        */
+       public String   cardinality;
+
+       /**
+        * The policy of the reference.
+        * 
+        * <p>
+        * This is declared in the {@code policy} attribute of the {@code 
reference}
+        * element. This must be the default policy if the component description
+        * does not declare a policy for the reference.
+        */
+       public String   policy;
+
+       /**
+        * The policy option of the reference.
+        * 
+        * <p>
+        * This is declared in the {@code policy-option} attribute of the
+        * {@code reference} element. This must be the default policy option if 
the
+        * component description does not declare a policy option for the 
reference.
+        */
+       public String   policyOption;
+
+       /**
+        * The target of the reference.
+        * 
+        * <p>
+        * This is declared in the {@code target} attribute of the {@code 
reference}
+        * element. This must be {@code null} if the component description does 
not
+        * declare a target for the reference.
+        */
+       public String   target;
+
+       /**
+        * The name of the bind method of the reference.
+        * 
+        * <p>
+        * This is declared in the {@code bind} attribute of the {@code 
reference}
+        * element. This must be {@code null} if the component description does 
not
+        * declare a bind method for the reference.
+        */
+       public String   bind;
+
+       /**
+        * The name of the unbind method of the reference.
+        * 
+        * <p>
+        * This is declared in the {@code unbind} attribute of the {@code 
reference}
+        * element. This must be {@code null} if the component description does 
not
+        * declare an unbind method for the reference.
+        */
+       public String   unbind;
+
+       /**
+        * The name of the updated method of the reference.
+        * 
+        * <p>
+        * This is declared in the {@code updated} attribute of the
+        * {@code reference} element. This must be {@code null} if the component
+        * description does not declare an updated method for the reference.
+        */
+       public String   updated;
+
+       /**
+        * The name of the field of the reference.
+        * 
+        * <p>
+        * This is declared in the {@code field} attribute of the {@code 
reference}
+        * element. This must be {@code null} if the component description does 
not
+        * declare a field for the reference.
+        */
+       public String   field;
+
+       /**
+        * The field option of the reference.
+        * 
+        * <p>
+        * This is declared in the {@code field-option} attribute of the
+        * {@code reference} element. This must be {@code null} if the component
+        * description does not declare a field for the reference.
+        */
+       public String   fieldOption;
+
+       /**
+        * The scope of the reference.
+        * 
+        * <p>
+        * This is declared in the {@code scope} attribute of the {@code 
reference}
+        * element. This must be the default scope if the component description 
does
+        * not declare a scope for the reference.
+        */
+       public String   scope;
+}

Propchange: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/ReferenceDTO.java
------------------------------------------------------------------------------
    svn:executable = *

Added: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/SatisfiedReferenceDTO.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/SatisfiedReferenceDTO.java?rev=1689973&view=auto
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/SatisfiedReferenceDTO.java
 (added)
+++ 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/SatisfiedReferenceDTO.java
 Wed Jul  8 22:10:14 2015
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) OSGi Alliance (2013, 2014). 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.runtime.dto;
+
+import org.osgi.dto.DTO;
+import org.osgi.framework.dto.ServiceReferenceDTO;
+
+/**
+ * A representation of a satisfied reference.
+ * 
+ * @since 1.3
+ * @NotThreadSafe
+ * @author $Id: 20de229ef78ffbfd603b62d4534721e2f2b17922 $
+ */
+public class SatisfiedReferenceDTO extends DTO {
+       /**
+        * The name of the declared reference.
+        * 
+        * <p>
+        * This is declared in the {@code name} attribute of the {@code 
reference}
+        * element of the component description.
+        * 
+        * @see ReferenceDTO#name
+        */
+       public String                                   name;
+
+       /**
+        * The target property of the satisfied reference.
+        * 
+        * <p>
+        * This is the value of the {@link ComponentConfigurationDTO#properties
+        * component property} whose name is the concatenation of the
+        * {@link ReferenceDTO#name declared reference name} and
+        * &quot;.target&quot;. This must be {@code null} if no target property 
is
+        * set for the reference.
+        */
+       public String                                   target;
+
+       /**
+        * The bound services.
+        * 
+        * <p>
+        * Each {@link ServiceReferenceDTO} in the array represents a service 
bound
+        * to the satisfied reference. The array must be empty if there are no 
bound
+        * services.
+        */
+       public ServiceReferenceDTO[]    boundServices;
+}

Propchange: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/SatisfiedReferenceDTO.java
------------------------------------------------------------------------------
    svn:executable = *

Added: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/UnsatisfiedReferenceDTO.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/UnsatisfiedReferenceDTO.java?rev=1689973&view=auto
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/UnsatisfiedReferenceDTO.java
 (added)
+++ 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/UnsatisfiedReferenceDTO.java
 Wed Jul  8 22:10:14 2015
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) OSGi Alliance (2013, 2014). 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.runtime.dto;
+
+import org.osgi.dto.DTO;
+import org.osgi.framework.dto.ServiceReferenceDTO;
+
+/**
+ * A representation of an unsatisfied reference.
+ * 
+ * @since 1.3
+ * @NotThreadSafe
+ * @author $Id: 20ce77a3dbc307be592c86bf7b5eddacfe77e21b $
+ */
+public class UnsatisfiedReferenceDTO extends DTO {
+       /**
+        * The name of the declared reference.
+        * 
+        * <p>
+        * This is declared in the {@code name} attribute of the {@code 
reference}
+        * element of the component description.
+        * 
+        * @see ReferenceDTO#name
+        */
+       public String                                   name;
+
+       /**
+        * The target property of the unsatisfied reference.
+        * 
+        * <p>
+        * This is the value of the {@link ComponentConfigurationDTO#properties
+        * component property} whose name is the concatenation of the
+        * {@link ReferenceDTO#name declared reference name} and
+        * &quot;.target&quot;. This must be {@code null} if no target property 
is
+        * set for the reference.
+        */
+       public String                                   target;
+
+       /**
+        * The target services.
+        * 
+        * <p>
+        * Each {@link ServiceReferenceDTO} in the array represents a target 
service
+        * for the reference. The array must be empty if there are no target
+        * services. The upper bound on the number of target services in the 
array
+        * is the upper bound on the {@link ReferenceDTO#cardinality 
cardinality} of
+        * the reference.
+        */
+       public ServiceReferenceDTO[]    targetServices;
+}

Added: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/package-info.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/package-info.java?rev=1689973&view=auto
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/package-info.java
 (added)
+++ 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/dto/package-info.java
 Wed Jul  8 22:10:14 2015
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) OSGi Alliance (2014). 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.
+ */
+
+/**
+ * Service Component Runtime Data Transfer Objects Package Version 1.3.
+ *
+ * <p>
+ * Bundles wishing to use this package must list the package in the
+ * Import-Package header of the bundle's manifest. This package has two types 
of
+ * users: the consumers that use the API in this package and the providers that
+ * implement the API in this package.
+ *
+ * <p>
+ * Example import for consumers using the API in this package:
+ * <p>
+ * {@code  Import-Package: org.osgi.service.component.runtime.dto; 
version="[1.3,2.0)"}
+ * <p>
+ * Example import for providers implementing the API in this package:
+ * <p>
+ * {@code  Import-Package: org.osgi.service.component.runtime.dto; 
version="[1.3,1.4)"}
+ *
+ * @author $Id: d7d82da09d67a3ce4274ad8554966c1952a2b4de $
+ */
+
+@Version("1.3")
+package org.osgi.service.component.runtime.dto;
+
+import org.osgi.annotation.versioning.Version;
+

Added: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/package-info.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/package-info.java?rev=1689973&view=auto
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/package-info.java
 (added)
+++ 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/service/component/runtime/package-info.java
 Wed Jul  8 22:10:14 2015
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) OSGi Alliance (2013). 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.
+ */
+
+/**
+ * Service Component Runtime Package Version 1.3.
+ *
+ * <p>
+ * Bundles wishing to use this package must list the package in the
+ * Import-Package header of the bundle's manifest. This package has two types 
of
+ * users: the consumers that use the API in this package and the providers that
+ * implement the API in this package.
+ *
+ * <p>
+ * Example import for consumers using the API in this package:
+ * <p>
+ * {@code  Import-Package: org.osgi.service.component.runtime; 
version="[1.3,2.0)"}
+ * <p>
+ * Example import for providers implementing the API in this package:
+ * <p>
+ * {@code  Import-Package: org.osgi.service.component.runtime; 
version="[1.3,1.4)"}
+ *
+ * @author $Id: 3d4fa42ce33a4682cbaeee3f094b558e6ea6080f $
+ */
+
+@Version("1.3")
+package org.osgi.service.component.runtime;
+
+import org.osgi.annotation.versioning.Version;
+

Added: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/function/Function.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/function/Function.java?rev=1689973&view=auto
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/function/Function.java
 (added)
+++ 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/function/Function.java
 Wed Jul  8 22:10:14 2015
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) OSGi Alliance (2014). 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.util.function;
+
+import org.osgi.annotation.versioning.ConsumerType;
+
+/**
+ * A function that accepts a single argument and produces a result.
+ *
+ * <p>
+ * This is a functional interface and can be used as the assignment target for 
a
+ * lambda expression or method reference.
+ * 
+ * @param <T> The type of the function input.
+ * @param <R> The type of the function output.
+ * 
+ * @ThreadSafe
+ * @author $Id: 5d812f75c0b4f88f01083189babb3ef7476b5ced $
+ */
+@ConsumerType
+public interface Function<T, R> {
+       /**
+        * Applies this function to the specified argument.
+        * 
+        * @param t The input to this function.
+        * @return The output of this function.
+        */
+       R apply(T t);
+}

Added: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/function/Predicate.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/function/Predicate.java?rev=1689973&view=auto
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/function/Predicate.java
 (added)
+++ 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/function/Predicate.java
 Wed Jul  8 22:10:14 2015
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) OSGi Alliance (2014). 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.util.function;
+
+import org.osgi.annotation.versioning.ConsumerType;
+
+/**
+ * A predicate that accepts a single argument and produces a boolean result.
+ *
+ * <p>
+ * This is a functional interface and can be used as the assignment target for 
a
+ * lambda expression or method reference.
+ * 
+ * @param <T> The type of the predicate input.
+ * 
+ * @ThreadSafe
+ * @author $Id: 0c2c61f78bede4e2afc4278af4f5e4b873769347 $
+ */
+@ConsumerType
+public interface Predicate<T> {
+       /**
+        * Evaluates this predicate on the specified argument.
+        * 
+        * @param t The input to this predicate.
+        * @return {@code true} if the specified argument is accepted by this
+        *         predicate; {@code false} otherwise.
+        */
+       boolean test(T t);
+}

Added: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/function/package-info.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/function/package-info.java?rev=1689973&view=auto
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/function/package-info.java
 (added)
+++ 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/function/package-info.java
 Wed Jul  8 22:10:14 2015
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) OSGi Alliance (2014). 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.
+ */
+
+/**
+ * Function Package Version 1.0.
+ * 
+ * <p>
+ * Bundles wishing to use this package must list the package in the
+ * Import-Package header of the bundle's manifest.
+ * 
+ * <p>
+ * Example import for consumers using the API in this package:
+ * <p>
+ * {@code  Import-Package: org.osgi.util.function; version="[1.0,2.0)"}
+ * <p>
+ * Example import for providers implementing the API in this package:
+ * <p>
+ * {@code  Import-Package: org.osgi.util.function; version="[1.0,1.1)"}
+ * 
+ * @author $Id: 899d786b27012f55ed87b4c872a6ab2087a20a39 $
+ */
+
+@Version("1.0")
+package org.osgi.util.function;
+
+import org.osgi.annotation.versioning.Version;
+

Added: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/promise/Deferred.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/promise/Deferred.java?rev=1689973&view=auto
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/promise/Deferred.java
 (added)
+++ 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/promise/Deferred.java
 Wed Jul  8 22:10:14 2015
@@ -0,0 +1,142 @@
+/*
+ * Copyright (c) OSGi Alliance (2014). 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.util.promise;
+
+import static org.osgi.util.promise.PromiseImpl.requireNonNull;
+
+/**
+ * A Deferred Promise resolution.
+ * 
+ * <p>
+ * Instances of this class can be used to create a {@link Promise} that can be
+ * resolved in the future. The {@link #getPromise() associated} Promise can be
+ * successfully resolved with {@link #resolve(Object)} or resolved with a
+ * failure with {@link #fail(Throwable)}. It can also be resolved with the
+ * resolution of another promise using {@link #resolveWith(Promise)}.
+ * 
+ * <p>
+ * The associated Promise can be provided to any one, but the Deferred object
+ * should be made available only to the party that will responsible for
+ * resolving the Promise.
+ * 
+ * @param <T> The value type associated with the created Promise.
+ * 
+ * @Immutable
+ * @author $Id: b12288b7edc994f615dc1305d6aeaeeb56208df7 $
+ */
+public class Deferred<T> {
+       private final PromiseImpl<T>    promise;
+
+       /**
+        * Create a new Deferred with an associated Promise.
+        */
+       public Deferred() {
+               promise = new PromiseImpl<T>();
+       }
+
+       /**
+        * Returns the Promise associated with this Deferred.
+        * 
+        * @return The Promise associated with this Deferred.
+        */
+       public Promise<T> getPromise() {
+               return promise;
+       }
+
+       /**
+        * Successfully resolve the Promise associated with this Deferred.
+        * 
+        * <p>
+        * After the associated Promise is resolved with the specified value, 
all
+        * registered {@link Promise#onResolve(Runnable) callbacks} are called 
and
+        * any {@link Promise#then(Success, Failure) chained} Promises are 
resolved.
+        * 
+        * <p>
+        * Resolving the associated Promise <i>happens-before</i> any registered
+        * callback is called. That is, in a registered callback,
+        * {@link Promise#isDone()} must return {@code true} and
+        * {@link Promise#getValue()} and {@link Promise#getFailure()} must not
+        * block.
+        * 
+        * @param value The value of the resolved Promise.
+        * @throws IllegalStateException If the associated Promise was already
+        *         resolved.
+        */
+       public void resolve(T value) {
+               promise.resolve(value, null);
+       }
+
+       /**
+        * Fail the Promise associated with this Deferred.
+        * 
+        * <p>
+        * After the associated Promise is resolved with the specified failure, 
all
+        * registered {@link Promise#onResolve(Runnable) callbacks} are called 
and
+        * any {@link Promise#then(Success, Failure) chained} Promises are 
resolved.
+        * 
+        * <p>
+        * Resolving the associated Promise <i>happens-before</i> any registered
+        * callback is called. That is, in a registered callback,
+        * {@link Promise#isDone()} must return {@code true} and
+        * {@link Promise#getValue()} and {@link Promise#getFailure()} must not
+        * block.
+        * 
+        * @param failure The failure of the resolved Promise. Must not be
+        *        {@code null}.
+        * @throws IllegalStateException If the associated Promise was already
+        *         resolved.
+        */
+       public void fail(Throwable failure) {
+               promise.resolve(null, requireNonNull(failure));
+       }
+
+       /**
+        * Resolve the Promise associated with this Deferred with the specified
+        * Promise.
+        * 
+        * <p>
+        * If the specified Promise is successfully resolved, the associated 
Promise
+        * is resolved with the value of the specified Promise. If the specified
+        * Promise is resolved with a failure, the associated Promise is 
resolved
+        * with the failure of the specified Promise.
+        * 
+        * <p>
+        * After the associated Promise is resolved with the specified Promise, 
all
+        * registered {@link Promise#onResolve(Runnable) callbacks} are called 
and
+        * any {@link Promise#then(Success, Failure) chained} Promises are 
resolved.
+        * 
+        * <p>
+        * Resolving the associated Promise <i>happens-before</i> any registered
+        * callback is called. That is, in a registered callback,
+        * {@link Promise#isDone()} must return {@code true} and
+        * {@link Promise#getValue()} and {@link Promise#getFailure()} must not
+        * block.
+        * 
+        * @param with A Promise whose value or failure will be used to resolve 
the
+        *        associated Promise. Must not be {@code null}.
+        * @return A Promise that is resolved only when the associated Promise 
is
+        *         resolved by the specified Promise. The returned Promise will 
be
+        *         successfully resolved, with the value {@code null}, if the
+        *         associated Promise was resolved by the specified Promise. The
+        *         returned Promise will be resolved with a failure of
+        *         {@link IllegalStateException} if the associated Promise was
+        *         already resolved when the specified Promise was resolved.
+        */
+       public Promise<Void> resolveWith(Promise<? extends T> with) {
+               return promise.resolveWith(with);
+       }
+}

Added: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/promise/FailedPromisesException.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/promise/FailedPromisesException.java?rev=1689973&view=auto
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/promise/FailedPromisesException.java
 (added)
+++ 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/promise/FailedPromisesException.java
 Wed Jul  8 22:10:14 2015
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) OSGi Alliance (2014). 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.util.promise;
+
+import java.util.Collection;
+import java.util.Collections;
+
+/**
+ * Promise failure exception for a collection of failed Promises.
+ * 
+ * @author $Id: 95546abe53fcca0c3daa3d2847a915fe94b9cef8 $
+ */
+public class FailedPromisesException extends RuntimeException {
+       private static final long                               
serialVersionUID        = 1L;
+       private final Collection<Promise<?>>    failed;
+
+       /**
+        * Create a new FailedPromisesException with the specified Promises.
+        * 
+        * @param failed A collection of Promises that have been resolved with a
+        *        failure. Must not be {@code null}, must not be empty and all 
of
+        *        the elements in the collection must not be {@code null}.
+        * @param cause The cause of this exception. This is typically the 
failure
+        *        of the first Promise in the specified collection.
+        */
+       public FailedPromisesException(Collection<Promise<?>> failed, Throwable 
cause) {
+               super(cause);
+               this.failed = Collections.unmodifiableCollection(failed);
+       }
+
+       /**
+        * Returns the collection of Promises that have been resolved with a
+        * failure.
+        * 
+        * @return The collection of Promises that have been resolved with a
+        *         failure. The returned collection is unmodifiable.
+        */
+       public Collection<Promise<?>> getFailedPromises() {
+               return failed;
+       }
+}

Added: 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/promise/Failure.java
URL: 
http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/promise/Failure.java?rev=1689973&view=auto
==============================================================================
--- 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/promise/Failure.java
 (added)
+++ 
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/src/org/osgi/util/promise/Failure.java
 Wed Jul  8 22:10:14 2015
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) OSGi Alliance (2014). 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.util.promise;
+
+import org.osgi.annotation.versioning.ConsumerType;
+
+/**
+ * Failure callback for a Promise.
+ * 
+ * <p>
+ * A Failure callback is registered with a {@link Promise} using the
+ * {@link Promise#then(Success, Failure)} method and is called if the Promise 
is
+ * resolved with a failure.
+ * 
+ * <p>
+ * This is a functional interface and can be used as the assignment target for 
a
+ * lambda expression or method reference.
+ * 
+ * @ThreadSafe
+ * @author $Id: a4bd1ef9948a4abb9fc01a140bd9562be0beb9aa $
+ */
+@ConsumerType
+public interface Failure {
+       /**
+        * Failure callback for a Promise.
+        * 
+        * <p>
+        * This method is called if the Promise with which it is registered 
resolves
+        * with a failure.
+        * 
+        * <p>
+        * In the remainder of this description we will refer to the Promise
+        * returned by {@link Promise#then(Success, Failure)} when this Failure
+        * callback was registered as the chained Promise.
+        * 
+        * <p>
+        * If this methods completes normally, the chained Promise will be 
failed
+        * with the same exception which failed the resolved Promise. If this 
method
+        * throws an exception, the chained Promise will be failed with the 
thrown
+        * exception.
+        * 
+        * @param resolved The failed resolved {@link Promise}.
+        * @throws Exception The chained Promise will be failed with the thrown
+        *         exception.
+        */
+       void fail(Promise<?> resolved) throws Exception;
+}


Reply via email to