You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pd...@apache.org on 2014/10/11 17:53:01 UTC
svn commit: r1631069 - in /felix/sandbox/pderop/dependencymanager-prototype:
org.apache.felix.dependencymanager.runtime/.settings/
org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/
org.apache.felix.dependencymanager/src/org/ap...
Author: pderop
Date: Sat Oct 11 15:53:01 2014
New Revision: 1631069
URL: http://svn.apache.org/r1631069
Log:
Moved org/apache/felix/dm/impl/DependencyImpl.java to org/apache/felix/dm/context/AbstractDependency.java.
Now, any external/custom DM Dependencies can extend the AbstractDependency class, instead of implementing
all the methods from the DependencyContext interface.
(see org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/ToggleServiceDependency.java
for example, which is now simpler).
Added:
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/AbstractDependency.java
- copied, changed from r1629079, felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/DependencyImpl.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/SimpleServiceDependency.java
Removed:
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/DependencyImpl.java
Modified:
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.runtime/.settings/org.eclipse.jdt.core.prefs
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.runtime/.settings/org.eclipse.jdt.ui.prefs
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/ToggleServiceDependency.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/DependencyContext.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/BundleDependencyImpl.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ConfigurationDependencyImpl.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ResourceDependencyImpl.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceDependencyImpl.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/ComponentTest.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/ConcurrencyTest.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/ConfigurationTest.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/ServiceRaceTest.java
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.runtime/.settings/org.eclipse.jdt.core.prefs
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.runtime/.settings/org.eclipse.jdt.core.prefs?rev=1631069&r1=1631068&r2=1631069&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.runtime/.settings/org.eclipse.jdt.core.prefs (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.runtime/.settings/org.eclipse.jdt.core.prefs Sat Oct 11 15:53:01 2014
@@ -45,18 +45,18 @@ org.eclipse.jdt.core.formatter.blank_lin
org.eclipse.jdt.core.formatter.blank_lines_before_package=0
org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line_on_wrap
org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=next_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line_on_wrap
org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line_on_wrap
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
org.eclipse.jdt.core.formatter.comment.format_block_comments=false
@@ -89,7 +89,7 @@ org.eclipse.jdt.core.formatter.indent_em
org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
org.eclipse.jdt.core.formatter.indentation.size=4
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
@@ -101,11 +101,11 @@ org.eclipse.jdt.core.formatter.insert_ne
org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.runtime/.settings/org.eclipse.jdt.ui.prefs
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.runtime/.settings/org.eclipse.jdt.ui.prefs?rev=1631069&r1=1631068&r2=1631069&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.runtime/.settings/org.eclipse.jdt.ui.prefs (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.runtime/.settings/org.eclipse.jdt.ui.prefs Sat Oct 11 15:53:01 2014
@@ -1,3 +1,3 @@
eclipse.preferences.version=1
-formatter_profile=_Apache Felix Eclipse Template
+formatter_profile=_Apache Dependency Manager
formatter_settings_version=12
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/ToggleServiceDependency.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/ToggleServiceDependency.java?rev=1631069&r1=1631068&r2=1631069&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/ToggleServiceDependency.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/ToggleServiceDependency.java Sat Oct 11 15:53:01 2014
@@ -18,18 +18,11 @@
*/
package org.apache.felix.dm.runtime;
-import java.util.Collection;
import java.util.Dictionary;
-import java.util.Map;
-import java.util.Set;
-import org.apache.felix.dm.ComponentDependencyDeclaration;
-import org.apache.felix.dm.Dependency;
-import org.apache.felix.dm.context.ComponentContext;
+import org.apache.felix.dm.context.AbstractDependency;
import org.apache.felix.dm.context.DependencyContext;
import org.apache.felix.dm.context.Event;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
/**
* This is a custom DependencyManager Dependency, allowing to take control of
@@ -39,12 +32,7 @@ import org.osgi.framework.BundleContext;
*
* @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
-public class ToggleServiceDependency implements Dependency, ComponentDependencyDeclaration, DependencyContext {
- private volatile boolean m_isAvailable;
- protected volatile ComponentContext m_component;
- protected boolean m_instanceBound;
- private volatile boolean m_isStarted; // volatile because accessed by getState method
-
+public class ToggleServiceDependency extends AbstractDependency<ToggleServiceDependency> {
public static class ToggleEvent implements Event {
@Override
public boolean equals(Object e) {
@@ -53,12 +41,12 @@ public class ToggleServiceDependency imp
}
return false;
}
-
+
@Override
public int hashCode() {
return ToggleEvent.class.hashCode();
}
-
+
@Override
public int compareTo(Object o) {
return 0;
@@ -74,20 +62,22 @@ public class ToggleServiceDependency imp
}
@Override
- public Dictionary getProperties()
- {
+ public Dictionary getProperties() {
return null;
}
}
-
+
public ToggleServiceDependency() {
+ super.setRequired(true);
+ }
+
+ public ToggleServiceDependency(ToggleServiceDependency prototype) {
+ super(prototype);
}
- public ToggleServiceDependency(ToggleServiceDependency other) {
- m_component = other.m_component;
- m_instanceBound = other.m_instanceBound;
- m_isAvailable = other.m_isAvailable;
- m_isStarted = other.m_isStarted;
+ @Override
+ public DependencyContext createCopy() {
+ return new ToggleServiceDependency(this);
}
public void activate(boolean active) {
@@ -97,159 +87,14 @@ public class ToggleServiceDependency imp
remove(new ToggleEvent());
}
}
-
- @Override
- public void setAvailable(boolean available) {
- m_isAvailable = available;
- }
-
- @Override
- public void invokeAdd(Event e) {
- }
-
- @Override
- public void invokeChange(Event e) {
- }
-
- @Override
- public void invokeRemove(Event e) {
- }
-
- public void invokeSwap(Event event, Event newEvent) {
- }
-
- @Override
- public void add(final Event e) {
- m_component.getExecutor().execute(new Runnable() {
- @Override
- public void run() {
- m_component.handleAdded(ToggleServiceDependency.this, e);
- }
- });
- }
-
- @Override
- public void change(Event e) {
- }
-
- @Override
- public void remove(final Event e) {
- m_component.getExecutor().execute(new Runnable() {
- @Override
- public void run() {
- m_component.handleRemoved(ToggleServiceDependency.this, e);
- }
- });
- }
-
- @Override
- public void setComponentContext(ComponentContext component) {
- m_component = component;
- }
-
- @Override
- public void start() {
- m_isStarted = true;
- }
-
- @Override
- public void stop() {
- m_isStarted = false;
- }
-
- @Override
- public boolean isAvailable() {
- return m_isAvailable;
- }
-
- @Override
- public boolean isRequired() {
- return true;
- }
-
- @Override
- public boolean isInstanceBound() {
- return m_instanceBound;
- }
-
- @Override
- public void setInstanceBound(boolean instanceBound) {
- m_instanceBound = instanceBound;
- }
-
- @Override
- public boolean needsInstance() {
- return false;
- }
-
- @Override
- public Class getAutoConfigType() {
- return null;
- }
-
- @Override
- public Event getService() {
- return null;
- }
-
- @Override
- public void copyToCollection(Collection to) {
- }
-
- @Override
- public boolean isAutoConfig() {
- return false;
- }
-
- @Override
- public String getAutoConfigName() {
- return null;
- }
-
- @Override
- public DependencyContext createCopy() {
- return new ToggleServiceDependency(this);
- }
-
- @Override
- public boolean isPropagated() {
- return false;
- }
-
- @Override
- public Dictionary getProperties() {
- return null;
- }
@Override
public String getName() {
- return "" + m_isAvailable;
+ return "" + isAvailable();
}
@Override
public String getType() {
return "toggle";
}
-
- @Override
- public int getState() {
- if (m_isStarted) {
- return (isAvailable() ? 1 : 0) + (isRequired() ? 2 : 0);
- }
- else {
- return isRequired() ? ComponentDependencyDeclaration.STATE_REQUIRED
- : ComponentDependencyDeclaration.STATE_OPTIONAL;
- }
- }
-
- @Override
- public boolean isStarted()
- {
- return m_isStarted;
- }
-
- @Override
- public void copyToMap(Map<Object, Dictionary> map)
- {
- }
}
Copied: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/AbstractDependency.java (from r1629079, felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/DependencyImpl.java)
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/AbstractDependency.java?p2=felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/AbstractDependency.java&p1=felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/DependencyImpl.java&r1=1629079&r2=1631069&rev=1631069&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/DependencyImpl.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/AbstractDependency.java Sat Oct 11 15:53:01 2014
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.felix.dm.impl;
+package org.apache.felix.dm.context;
import java.util.Collection;
import java.util.Dictionary;
@@ -26,98 +26,164 @@ import java.util.Set;
import org.apache.felix.dm.ComponentDependencyDeclaration;
import org.apache.felix.dm.Dependency;
-import org.apache.felix.dm.context.ComponentContext;
-import org.apache.felix.dm.context.DependencyContext;
-import org.apache.felix.dm.context.Event;
+import org.apache.felix.dm.impl.EventImpl;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
-public class DependencyImpl<T extends Dependency> implements Dependency, DependencyContext {
- protected volatile ComponentContext m_component;
- protected volatile boolean m_available; // volatile because accessed by getState method
- protected boolean m_instanceBound;
- protected volatile boolean m_required; // volatile because accessed by getState method
- protected String m_add;
- protected String m_change;
- protected String m_remove;
- protected boolean m_autoConfig;
- protected String m_autoConfigInstance;
- protected boolean m_autoConfigInvoked;
- private volatile boolean m_isStarted; // volatile because accessed by getState method
- private Object m_callbackInstance;
+/**
+ * Abstract class for implementing Dependencies
+ *
+ * @param <T> The type of the interface representing a Dependency Manager Dependency (must extends the Dependency interface).
+ */
+public abstract class AbstractDependency<T extends Dependency> implements Dependency, DependencyContext, ComponentDependencyDeclaration
+{
+ protected volatile ComponentContext m_component;
+ protected volatile boolean m_available; // volatile because accessed by getState method
+ protected boolean m_instanceBound;
+ protected volatile boolean m_required; // volatile because accessed by getState method
+ protected String m_add;
+ protected String m_change;
+ protected String m_remove;
+ protected boolean m_autoConfig;
+ protected String m_autoConfigInstance;
+ protected boolean m_autoConfigInvoked;
+ protected volatile boolean m_isStarted; // volatile because accessed by getState method
+ protected Object m_callbackInstance;
protected volatile boolean m_propagate;
protected volatile Object m_propagateCallbackInstance;
protected volatile String m_propagateCallbackMethod;
protected final BundleContext m_context;
protected final Bundle m_bundle;
+ private final static Dictionary EMPTY_PROPERTIES = new Hashtable<>(0);
- public DependencyImpl() {
+ public AbstractDependency() {
this(true, null);
- }
+ }
- public DependencyImpl(boolean autoConfig, BundleContext bc) {
+ public AbstractDependency(boolean autoConfig, BundleContext bc) {
m_autoConfig = autoConfig;
m_context = bc;
m_bundle = m_context != null ? m_context.getBundle() : null;
- }
-
- public DependencyImpl(DependencyImpl<T> prototype) {
- m_component = prototype.m_component;
- m_instanceBound = prototype.m_instanceBound;
- m_required = prototype.m_required;
- m_add = prototype.m_add;
- m_change = prototype.m_change;
- m_remove = prototype.m_remove;
- m_autoConfig = prototype.m_autoConfig;
- m_autoConfigInstance = prototype.m_autoConfigInstance;
- m_autoConfigInvoked = prototype.m_autoConfigInvoked;
- m_callbackInstance = prototype.m_callbackInstance;
+ }
+
+ public AbstractDependency(AbstractDependency<T> prototype) {
+ m_component = prototype.m_component;
+ m_instanceBound = prototype.m_instanceBound;
+ m_required = prototype.m_required;
+ m_add = prototype.m_add;
+ m_change = prototype.m_change;
+ m_remove = prototype.m_remove;
+ m_autoConfig = prototype.m_autoConfig;
+ m_autoConfigInstance = prototype.m_autoConfigInstance;
+ m_autoConfigInvoked = prototype.m_autoConfigInvoked;
+ m_callbackInstance = prototype.m_callbackInstance;
m_propagate = prototype.m_propagate;
m_propagateCallbackInstance = prototype.m_propagateCallbackInstance;
m_propagateCallbackMethod = prototype.m_propagateCallbackMethod;
m_context = prototype.m_context;
m_bundle = prototype.m_bundle;
- }
-
- public void add(final Event e) {
- // since this method can be invoked by anyone from any thread, we need to
- // pass on the event to a runnable that we execute using the component's
- // executor
- m_component.getExecutor().execute(new Runnable() {
- @Override
- public void run() {
- m_component.handleAdded(DependencyImpl.this, e);
- }
- });
- }
-
- public void change(final Event e) {
- // since this method can be invoked by anyone from any thread, we need to
- // pass on the event to a runnable that we execute using the component's
- // executor
- m_component.getExecutor().execute(new Runnable() {
- @Override
- public void run() {
- m_component.handleChanged(DependencyImpl.this, e);
- }
- });
- }
-
- public void remove(final Event e) {
- // since this method can be invoked by anyone from any thread, we need to
- // pass on the event to a runnable that we execute using the component's
- // executor
- m_component.getExecutor().execute(new Runnable() {
- @Override
- public void run() {
- try {
- m_component.handleRemoved(DependencyImpl.this, e);
- } finally {
- e.close();
- }
- }
- });
- }
+ }
+
+ // ----------------------- Dependency interface -----------------------------
+
+ @Override
+ public boolean isRequired() {
+ return m_required;
+ }
+
+ @Override
+ public boolean isAvailable() {
+ return m_available;
+ }
+
+ @Override
+ public boolean isAutoConfig() {
+ return m_autoConfig;
+ }
+
+ @Override
+ public String getAutoConfigName() {
+ return m_autoConfigInstance;
+ }
+
+ @Override
+ public boolean isPropagated() {
+ return m_propagate;
+ }
+
+ @Override
+ public Dictionary getProperties() {
+ return EMPTY_PROPERTIES;
+ }
+
+ // -------------- DependencyContext -----------------------------------------------
+
+ @Override
+ public void invokeAdd(Event e) {
+ if (m_add != null) {
+ invoke(m_add, e);
+ }
+ }
+
+ @Override
+ public void invokeChange(Event e) {
+ if (m_change != null) {
+ invoke(m_change, e);
+ }
+ }
+
+ @Override
+ public void invokeRemove(Event e) {
+ if (m_remove != null) {
+ invoke(m_remove, e);
+ }
+ }
+
+ @Override
+ public void invokeSwap(Event event, Event newEvent) {
+ // Has to be implemented by sub classes
+ throw new IllegalStateException("This method must be implemented by the class " + getClass().getName());
+ }
+
+ public void add(final Event e) {
+ // since this method can be invoked by anyone from any thread, we need to
+ // pass on the event to a runnable that we execute using the component's
+ // executor
+ m_component.getExecutor().execute(new Runnable() {
+ @Override
+ public void run() {
+ m_component.handleAdded(AbstractDependency.this, e);
+ }
+ });
+ }
+
+ public void change(final Event e) {
+ // since this method can be invoked by anyone from any thread, we need to
+ // pass on the event to a runnable that we execute using the component's
+ // executor
+ m_component.getExecutor().execute(new Runnable() {
+ @Override
+ public void run() {
+ m_component.handleChanged(AbstractDependency.this, e);
+ }
+ });
+ }
+
+ public void remove(final Event e) {
+ // since this method can be invoked by anyone from any thread, we need to
+ // pass on the event to a runnable that we execute using the component's
+ // executor
+ m_component.getExecutor().execute(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ m_component.handleRemoved(AbstractDependency.this, e);
+ } finally {
+ e.close();
+ }
+ }
+ });
+ }
public void swap(final Event event, final Event newEvent) {
// since this method can be invoked by anyone from any thread, we need to
@@ -127,7 +193,7 @@ public class DependencyImpl<T extends De
@Override
public void run() {
try {
- m_component.handleSwapped(DependencyImpl.this, event, newEvent);
+ m_component.handleSwapped(AbstractDependency.this, event, newEvent);
} finally {
event.close();
}
@@ -136,31 +202,36 @@ public class DependencyImpl<T extends De
}
@Override
- public void setComponentContext(ComponentContext component) {
- m_component = component;
- }
-
- @Override
- public void start() {
- if (! m_isStarted) {
- startTracking();
- m_isStarted = true;
- }
- }
-
- @Override
- public void stop() {
- if (m_isStarted) {
- stopTracking();
- m_isStarted = false;
- }
- }
-
- @Override
- public boolean isAvailable() {
- return m_available;
- }
-
+ public void setComponentContext(ComponentContext component) {
+ m_component = component;
+ }
+
+ @Override
+ public void start() {
+ if (!m_isStarted) {
+ startTracking();
+ m_isStarted = true;
+ }
+ }
+
+ @Override
+ public void stop() {
+ if (m_isStarted) {
+ stopTracking();
+ m_isStarted = false;
+ }
+ }
+
+ @Override
+ public boolean isStarted() {
+ return m_isStarted;
+ }
+
+ @Override
+ public void setAvailable(boolean available) {
+ m_available = available;
+ }
+
public T setPropagate(boolean propagate) {
ensureNotActive();
m_propagate = propagate;
@@ -173,144 +244,83 @@ public class DependencyImpl<T extends De
m_propagateCallbackMethod = method;
return (T) this;
}
-
- @Override
- public void setAvailable(boolean available) {
- m_available = available;
- }
-
- @Override
- public boolean isRequired() {
- return m_required;
- }
-
- public boolean isInstanceBound() {
- return m_instanceBound;
- }
-
- public void setInstanceBound(boolean instanceBound) {
- m_instanceBound = instanceBound;
- }
-
- public T setCallbacks(String add, String remove) {
- return setCallbacks(add, null, remove);
- }
-
- public T setCallbacks(String add, String change, String remove) {
- return setCallbacks(null, add, change, remove);
- }
-
- public T setCallbacks(Object instance, String add, String remove) {
- return setCallbacks(instance, add, null, remove);
- }
-
- public T setCallbacks(Object instance, String add, String change, String remove) {
+
+ public boolean isInstanceBound() {
+ return m_instanceBound;
+ }
+
+ public void setInstanceBound(boolean instanceBound) {
+ m_instanceBound = instanceBound;
+ }
+
+ public T setCallbacks(String add, String remove) {
+ return setCallbacks(add, null, remove);
+ }
+
+ public T setCallbacks(String add, String change, String remove) {
+ return setCallbacks(null, add, change, remove);
+ }
+
+ public T setCallbacks(Object instance, String add, String remove) {
+ return setCallbacks(instance, add, null, remove);
+ }
+
+ public T setCallbacks(Object instance, String add, String change, String remove) {
if ((add != null || change != null || remove != null) && !m_autoConfigInvoked) {
setAutoConfig(false);
}
m_callbackInstance = instance;
- m_add = add;
- m_change = change;
- m_remove = remove;
- return (T) this;
- }
-
- @Override
- public void invokeAdd(Event e) {
- if (m_add != null) {
- invoke(m_add, e);
- }
- }
-
- @Override
- public void invokeChange(Event e) {
- if (m_change != null) {
- invoke(m_change, e);
- }
- }
-
- @Override
- public void invokeRemove(Event e) {
- if (m_remove != null) {
- invoke(m_remove, e);
- }
- }
-
- @Override
- public void invokeSwap(Event event, Event newEvent) {
- // Has to be implemented by sub classes
- throw new IllegalStateException("This method must be implemented by the class " + getClass().getName());
+ m_add = add;
+ m_change = change;
+ m_remove = remove;
+ return (T) this;
}
-
- public Object[] getInstances() {
+
+ public Object[] getInstances() {
if (m_callbackInstance == null) {
- return m_component.getInstances();
+ return m_component.getInstances();
} else {
- return new Object[]{m_callbackInstance};
+ return new Object[] { m_callbackInstance };
}
- }
+ }
+
+ public void invoke(String method, Event e, Object[] instances) {
+ // specific for this type of dependency
+ m_component.invokeCallbackMethod(instances, method, new Class[][] { {} }, new Object[][] { {} });
+ }
+
+ public void invoke(String method, Event e) {
+ invoke(method, e, getInstances());
+ }
+
+ public T setRequired(boolean required) {
+ m_required = required;
+ return (T) this;
+ }
- public void invoke(String method, Event e, Object[] instances) {
- // specific for this type of dependency
- m_component.invokeCallbackMethod(instances, method, new Class[][] {{}}, new Object[][] {{}});
- }
-
- public void invoke(String method, Event e) {
- invoke(method, e, getInstances());
- }
-
- public T setRequired(boolean required) {
- m_required = required;
- return (T) this;
- }
-
@Override
public boolean needsInstance() {
return false;
}
-
+
@Override
public Class<?> getAutoConfigType() {
- return null; // must be implemented by subclasses
- }
-
- @Override
- public boolean isAutoConfig() {
- return m_autoConfig;
- }
-
- @Override
- public String getAutoConfigName() {
- return m_autoConfigInstance;
+ return null; // must be implemented by subclasses if autoconfig mode is enabled
}
-
+
public T setAutoConfig(boolean autoConfig) {
m_autoConfig = autoConfig;
m_autoConfigInvoked = true;
return (T) this;
}
-
+
public T setAutoConfig(String instanceName) {
m_autoConfig = (instanceName != null);
m_autoConfigInstance = instanceName;
m_autoConfigInvoked = true;
return (T) this;
}
-
- @Override
- public DependencyContext createCopy() {
- return new DependencyImpl(this);
- }
-
- public int getState() { // Can be called from any threads, but our class attributes are volatile
- if (m_isStarted) {
- return (isAvailable() ? 1 : 0) + (isRequired() ? 2 : 0);
- }
- else {
- return isRequired() ? ComponentDependencyDeclaration.STATE_REQUIRED : ComponentDependencyDeclaration.STATE_OPTIONAL;
- }
- }
-
+
@Override
public Event getService() {
Event event = m_component.getDependencyEvent(this);
@@ -322,7 +332,7 @@ public class DependencyImpl<T extends De
}
return event;
}
-
+
@Override
public void copyToCollection(Collection<Object> services) {
Set<Event> events = m_component.getDependencyEvents(this);
@@ -337,7 +347,7 @@ public class DependencyImpl<T extends De
}
}
}
-
+
@Override
public void copyToMap(Map<Object, Dictionary> map) {
Set<Event> events = m_component.getDependencyEvents(this);
@@ -352,40 +362,45 @@ public class DependencyImpl<T extends De
}
}
}
-
- @Override
- public boolean isStarted() {
- return m_isStarted;
+
+ public ComponentContext getComponentContext() {
+ return m_component;
}
- @Override
- public boolean isPropagated() {
- return m_propagate;
- }
-
- @Override
- public Dictionary getProperties() {
- // specific for this type of dependency
- return null;
- }
-
- public ComponentContext getComponentContext() {
- return m_component;
- }
-
protected Object getDefaultService() {
return null;
}
-
+
protected void ensureNotActive() {
if (isStarted()) {
throw new IllegalStateException("Cannot modify state while active.");
}
}
-
+
protected void startTracking() {
}
-
+
protected void stopTracking() {
}
+
+ @Override
+ public abstract DependencyContext createCopy();
+
+ // -------------- DependencyContext -----------------------------------------------
+
+ @Override
+ public abstract String getName();
+
+ @Override
+ public abstract String getType();
+
+ @Override
+ public int getState() { // Can be called from any threads, but our class attributes are volatile
+ if (m_isStarted) {
+ return (isAvailable() ? 1 : 0) + (isRequired() ? 2 : 0);
+ } else {
+ return isRequired() ? ComponentDependencyDeclaration.STATE_REQUIRED
+ : ComponentDependencyDeclaration.STATE_OPTIONAL;
+ }
+ }
}
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/DependencyContext.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/DependencyContext.java?rev=1631069&r1=1631068&r2=1631069&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/DependencyContext.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/DependencyContext.java Sat Oct 11 15:53:01 2014
@@ -22,8 +22,10 @@ import java.util.Collection;
import java.util.Dictionary;
import java.util.Map;
+import org.apache.felix.dm.Dependency;
-public interface DependencyContext {
+
+public interface DependencyContext extends Dependency {
public void invokeAdd(Event e);
public void invokeChange(Event e);
public void invokeRemove(Event e);
@@ -39,11 +41,8 @@ public interface DependencyContext {
public void stop();
public boolean isStarted();
- public boolean isAvailable();
public void setAvailable(boolean available);
-
- public boolean isRequired();
-
+
public boolean isInstanceBound();
public void setInstanceBound(boolean instanceBound);
@@ -54,9 +53,5 @@ public interface DependencyContext {
public Event getService();
public void copyToCollection(Collection<Object> coll);
public void copyToMap(Map<Object, Dictionary> map);
- public boolean isAutoConfig();
- public String getAutoConfigName();
public DependencyContext createCopy();
- public boolean isPropagated();
- public Dictionary getProperties();
}
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/BundleDependencyImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/BundleDependencyImpl.java?rev=1631069&r1=1631068&r2=1631069&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/BundleDependencyImpl.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/BundleDependencyImpl.java Sat Oct 11 15:53:01 2014
@@ -26,6 +26,7 @@ import java.util.Set;
import org.apache.felix.dm.BundleDependency;
import org.apache.felix.dm.ComponentDependencyDeclaration;
import org.apache.felix.dm.context.DependencyContext;
+import org.apache.felix.dm.context.AbstractDependency;
import org.apache.felix.dm.context.Event;
import org.apache.felix.dm.tracker.BundleTracker;
import org.apache.felix.dm.tracker.BundleTrackerCustomizer;
@@ -39,7 +40,7 @@ import org.osgi.service.log.LogService;
/**
* @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
-public class BundleDependencyImpl extends DependencyImpl<BundleDependency> implements BundleDependency, BundleTrackerCustomizer, ComponentDependencyDeclaration {
+public class BundleDependencyImpl extends AbstractDependency<BundleDependency> implements BundleDependency, BundleTrackerCustomizer, ComponentDependencyDeclaration {
private BundleTracker m_tracker;
private int m_stateMask = Bundle.INSTALLED | Bundle.RESOLVED | Bundle.ACTIVE;
private Bundle m_bundleInstance;
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ConfigurationDependencyImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ConfigurationDependencyImpl.java?rev=1631069&r1=1631068&r2=1631069&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ConfigurationDependencyImpl.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ConfigurationDependencyImpl.java Sat Oct 11 15:53:01 2014
@@ -26,6 +26,7 @@ import java.util.concurrent.atomic.Atomi
import org.apache.felix.dm.ConfigurationDependency;
import org.apache.felix.dm.PropertyMetaData;
import org.apache.felix.dm.context.DependencyContext;
+import org.apache.felix.dm.context.AbstractDependency;
import org.apache.felix.dm.context.Event;
import org.apache.felix.dm.impl.metatype.MetaTypeProviderImpl;
import org.osgi.framework.BundleContext;
@@ -34,7 +35,7 @@ import org.osgi.framework.ServiceRegistr
import org.osgi.service.cm.ConfigurationException;
import org.osgi.service.cm.ManagedService;
-public class ConfigurationDependencyImpl extends DependencyImpl<ConfigurationDependency> implements ConfigurationDependency, ManagedService {
+public class ConfigurationDependencyImpl extends AbstractDependency<ConfigurationDependency> implements ConfigurationDependency, ManagedService {
private Dictionary<?,?> m_settings;
private String m_callback = "updated";
private final Logger m_logger;
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ResourceDependencyImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ResourceDependencyImpl.java?rev=1631069&r1=1631068&r2=1631069&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ResourceDependencyImpl.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ResourceDependencyImpl.java Sat Oct 11 15:53:01 2014
@@ -30,6 +30,7 @@ import org.apache.felix.dm.ComponentDepe
import org.apache.felix.dm.ResourceDependency;
import org.apache.felix.dm.ResourceHandler;
import org.apache.felix.dm.context.DependencyContext;
+import org.apache.felix.dm.context.AbstractDependency;
import org.apache.felix.dm.context.Event;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
@@ -38,7 +39,7 @@ import org.osgi.service.log.LogService;
/**
* @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
-public class ResourceDependencyImpl extends DependencyImpl<ResourceDependency> implements ResourceDependency, ResourceHandler, ComponentDependencyDeclaration {
+public class ResourceDependencyImpl extends AbstractDependency<ResourceDependency> implements ResourceDependency, ResourceHandler, ComponentDependencyDeclaration {
private volatile ServiceRegistration m_registration;
private volatile String m_resourceFilter;
private volatile URL m_trackedResource;
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceDependencyImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceDependencyImpl.java?rev=1631069&r1=1631068&r2=1631069&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceDependencyImpl.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceDependencyImpl.java Sat Oct 11 15:53:01 2014
@@ -23,9 +23,7 @@ import java.lang.reflect.Proxy;
import java.util.AbstractMap;
import java.util.Arrays;
import java.util.Dictionary;
-import java.util.HashMap;
import java.util.HashSet;
-import java.util.Hashtable;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
@@ -33,18 +31,18 @@ import java.util.Set;
import org.apache.felix.dm.Component;
import org.apache.felix.dm.ComponentDeclaration;
import org.apache.felix.dm.ServiceDependency;
+import org.apache.felix.dm.context.AbstractDependency;
import org.apache.felix.dm.context.DependencyContext;
import org.apache.felix.dm.context.Event;
import org.apache.felix.dm.tracker.ServiceTracker;
import org.apache.felix.dm.tracker.ServiceTrackerCustomizer;
-import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.framework.ServiceReference;
import org.osgi.service.log.LogService;
-public class ServiceDependencyImpl extends DependencyImpl<ServiceDependency> implements ServiceDependency, ServiceTrackerCustomizer {
+public class ServiceDependencyImpl extends AbstractDependency<ServiceDependency> implements ServiceDependency, ServiceTrackerCustomizer {
protected volatile ServiceTracker m_tracker;
private final Logger m_logger;
protected String m_swap;
@@ -291,11 +289,7 @@ public class ServiceDependencyImpl exten
{new ServicePropertiesMap(se.getReference()), se.getEvent()}}
);
}
-
- public void invoke(String method, Event e) {
- invoke(method, e, getInstances());
- }
-
+
@Override
public Class<?> getAutoConfigType() {
return m_trackedServiceName;
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/ComponentTest.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/ComponentTest.java?rev=1631069&r1=1631068&r2=1631069&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/ComponentTest.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/ComponentTest.java Sat Oct 11 15:53:01 2014
@@ -22,8 +22,8 @@ import org.apache.felix.dm.Component;
import org.apache.felix.dm.ComponentState;
import org.apache.felix.dm.ComponentStateListener;
import org.apache.felix.dm.Dependency;
+import org.apache.felix.dm.context.AbstractDependency;
import org.apache.felix.dm.impl.ComponentImpl;
-import org.apache.felix.dm.impl.DependencyImpl;
import org.apache.felix.dm.impl.EventImpl;
import org.junit.Assert;
import org.junit.Test;
@@ -73,7 +73,7 @@ public class ComponentTest {
@Test
public void testAddDependencyFromInitCallback() {
final Ensure e = new Ensure();
- final DependencyImpl d = new DependencyImpl();
+ final AbstractDependency d = new SimpleServiceDependency();
d.setRequired(true);
ComponentImpl c = new ComponentImpl();
c.setImplementation(new Object() {
@@ -104,9 +104,9 @@ public class ComponentTest {
@Test
public void testAddAvailableDependencyFromInitCallback() {
final Ensure e = new Ensure();
- final DependencyImpl d = new DependencyImpl();
+ final AbstractDependency d = new SimpleServiceDependency();
d.setRequired(true);
- final DependencyImpl d2 = new DependencyImpl();
+ final AbstractDependency d2 = new SimpleServiceDependency();
d2.setRequired(true);
ComponentImpl c = new ComponentImpl();
c.setImplementation(new Object() {
@@ -143,10 +143,10 @@ public class ComponentTest {
@Test
public void testAtomicallyAddMultipleDependenciesFromInitCallback() {
final Ensure e = new Ensure();
- final DependencyImpl d = new DependencyImpl();
+ final AbstractDependency d = new SimpleServiceDependency();
d.setRequired(true);
- final DependencyImpl d2 = new DependencyImpl();
+ final AbstractDependency d2 = new SimpleServiceDependency();
d2.setRequired(true);
ComponentImpl c = new ComponentImpl();
@@ -184,7 +184,7 @@ public class ComponentTest {
public void createComponentAddDependencyAndStartComponent() {
ComponentImpl c = new ComponentImpl();
c.setImplementation(MyComponent.class);
- DependencyImpl d = new DependencyImpl();
+ AbstractDependency d = new SimpleServiceDependency();
d.setRequired(true);
c.add(d);
c.start();
@@ -197,7 +197,7 @@ public class ComponentTest {
public void createComponentStartItAndAddDependency() {
ComponentImpl c = new ComponentImpl();
c.setImplementation(MyComponent.class);
- DependencyImpl d = new DependencyImpl();
+ AbstractDependency d = new SimpleServiceDependency();
d.setRequired(true);
c.start();
Assert.assertEquals("should be available when started", true, c.isAvailable());
@@ -212,7 +212,7 @@ public class ComponentTest {
public void createComponentStartItAddDependencyAndMakeDependencyAvailable() {
ComponentImpl c = new ComponentImpl();
c.setImplementation(MyComponent.class);
- DependencyImpl d = new DependencyImpl();
+ AbstractDependency d = new SimpleServiceDependency();
d.setRequired(true);
c.start();
c.add(d);
@@ -231,7 +231,7 @@ public class ComponentTest {
public void createComponentStartItAddDependencyAndListenerMakeDependencyAvailableAndUnavailableImmediately() {
ComponentImpl c = new ComponentImpl();
c.setImplementation(MyComponent.class);
- final DependencyImpl d = new DependencyImpl();
+ final AbstractDependency d = new SimpleServiceDependency();
d.setRequired(true);
ComponentStateListener l = new ComponentStateListener() {
@Override
@@ -262,9 +262,9 @@ public class ComponentTest {
public void createComponentAddTwoDependenciesMakeBothAvailableAndUnavailable() {
ComponentImpl c = new ComponentImpl();
c.setImplementation(MyComponent.class);
- DependencyImpl d1 = new DependencyImpl();
+ AbstractDependency d1 = new SimpleServiceDependency();
d1.setRequired(true);
- DependencyImpl d2 = new DependencyImpl();
+ AbstractDependency d2 = new SimpleServiceDependency();
d2.setRequired(true);
c.start();
c.add(d1);
@@ -298,7 +298,7 @@ public class ComponentTest {
e.step(3);
}
});
- DependencyImpl d1 = new DependencyImpl();
+ AbstractDependency d1 = new SimpleServiceDependency();
d1.setCallbacks("add", "remove");
d1.setRequired(true);
// add the dependency to the component
@@ -329,7 +329,7 @@ public class ComponentTest {
e.step(3);
}
});
- DependencyImpl d1 = new DependencyImpl();
+ AbstractDependency d1 = new SimpleServiceDependency();
d1.setCallbacks("add", "remove");
d1.setRequired(true);
// start the ComponentImpl (it should become available)
@@ -361,10 +361,10 @@ public class ComponentTest {
e.step();
}
});
- DependencyImpl d1 = new DependencyImpl();
+ AbstractDependency d1 = new SimpleServiceDependency();
d1.setCallbacks("add", "remove");
d1.setRequired(true);
- DependencyImpl d2 = new DependencyImpl();
+ AbstractDependency d2 = new SimpleServiceDependency();
d2.setCallbacks("add", "remove");
d2.setRequired(true);
// start the component, which should become active because there are no
@@ -409,10 +409,10 @@ public class ComponentTest {
});
// start the component, it should become available
c.start();
- DependencyImpl d1 = new DependencyImpl();
+ AbstractDependency d1 = new SimpleServiceDependency();
d1.setCallbacks("add", "remove");
d1.setRequired(true);
- DependencyImpl d2 = new DependencyImpl();
+ AbstractDependency d2 = new SimpleServiceDependency();
d2.setCallbacks("add", "remove");
d2.setRequired(true);
// add the first dependency, ComponentImpl should be unavailable
@@ -452,10 +452,10 @@ public class ComponentTest {
});
// start component
c.start();
- DependencyImpl d1 = new DependencyImpl();
+ AbstractDependency d1 = new SimpleServiceDependency();
d1.setCallbacks("add", "remove");
d1.setRequired(true);
- DependencyImpl d2 = new DependencyImpl();
+ AbstractDependency d2 = new SimpleServiceDependency();
d2.setCallbacks("add", "remove");
d2.setRequired(true);
c.add(d1);
@@ -506,7 +506,7 @@ public class ComponentTest {
e.step(5);
}
});
- DependencyImpl d1 = new DependencyImpl();
+ AbstractDependency d1 = new SimpleServiceDependency();
d1.setCallbacks("add", "change", "remove");
d1.setRequired(true);
// add the dependency to the component
@@ -543,7 +543,7 @@ public class ComponentTest {
e.step(5);
}
});
- DependencyImpl d1 = new DependencyImpl();
+ AbstractDependency d1 = new SimpleServiceDependency();
d1.setCallbacks("add", "change", "remove");
d1.setRequired(false);
// add the dependency to the component
@@ -581,10 +581,10 @@ public class ComponentTest {
e.step();
}
});
- DependencyImpl d1 = new DependencyImpl();
+ AbstractDependency d1 = new SimpleServiceDependency();
d1.setCallbacks("add", "remove");
d1.setRequired(false);
- DependencyImpl d2 = new DependencyImpl();
+ AbstractDependency d2 = new SimpleServiceDependency();
d2.setCallbacks("add", "remove");
d2.setRequired(true);
// add the dependencies to the component
@@ -632,7 +632,7 @@ public class ComponentTest {
e.step(5);
}
});
- DependencyImpl d = new DependencyImpl();
+ AbstractDependency d = new SimpleServiceDependency();
d.setCallbacks("add", "remove");
d.setRequired(true);
// add the dependency to the component
@@ -675,7 +675,7 @@ public class ComponentTest {
}
};
- DependencyImpl d = new DependencyImpl();
+ AbstractDependency d = new SimpleServiceDependency();
d.setCallbacks(callbackInstance, "add", "remove");
d.setRequired(true);
// add the dependency to the component
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/ConcurrencyTest.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/ConcurrencyTest.java?rev=1631069&r1=1631068&r2=1631069&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/ConcurrencyTest.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/ConcurrencyTest.java Sat Oct 11 15:53:01 2014
@@ -27,8 +27,8 @@ import org.apache.felix.dm.Component;
import org.apache.felix.dm.ComponentState;
import org.apache.felix.dm.ComponentStateListener;
import org.apache.felix.dm.Dependency;
+import org.apache.felix.dm.context.AbstractDependency;
import org.apache.felix.dm.impl.ComponentImpl;
-import org.apache.felix.dm.impl.DependencyImpl;
import org.apache.felix.dm.impl.EventImpl;
import org.junit.Assert;
import org.junit.Test;
@@ -43,9 +43,9 @@ public class ConcurrencyTest {
public void createComponentAddDependencyAndListenerAndAddAnotherDependencyInAParallelThread() {
final Semaphore s = new Semaphore(0);
final ComponentImpl c = new ComponentImpl();
- final DependencyImpl d = new DependencyImpl();
+ final AbstractDependency d = new SimpleServiceDependency();
d.setRequired(true);
- final DependencyImpl d2 = new DependencyImpl();
+ final AbstractDependency d2 = new SimpleServiceDependency();
d2.setRequired(true);
final Thread t = new Thread() {
public void run() {
@@ -103,7 +103,7 @@ public class ConcurrencyTest {
e.execute(new Runnable() {
@Override
public void run() {
- DependencyImpl d = new DependencyImpl();
+ AbstractDependency d = new SimpleServiceDependency();
d.setRequired(true);
c.add(d);
// d.changed(new EventImpl(true));
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/ConfigurationTest.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/ConfigurationTest.java?rev=1631069&r1=1631068&r2=1631069&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/ConfigurationTest.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/ConfigurationTest.java Sat Oct 11 15:53:01 2014
@@ -23,9 +23,9 @@ import java.util.Hashtable;
import org.apache.felix.dm.Component;
import org.apache.felix.dm.Dependency;
+import org.apache.felix.dm.context.AbstractDependency;
import org.apache.felix.dm.impl.ComponentImpl;
import org.apache.felix.dm.impl.ConfigurationDependencyImpl;
-import org.apache.felix.dm.impl.DependencyImpl;
import org.apache.felix.dm.impl.EventImpl;
import org.junit.Test;
import org.osgi.service.cm.ConfigurationException;
@@ -39,7 +39,7 @@ public class ConfigurationTest extends T
final ConfigurationDependencyImpl conf = new ConfigurationDependencyImpl();
// Create another required dependency
- final DependencyImpl requiredDependency = new DependencyImpl();
+ final AbstractDependency requiredDependency = new SimpleServiceDependency();
requiredDependency.setRequired(true);
requiredDependency.setCallbacks("addDep", null);
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/ServiceRaceTest.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/ServiceRaceTest.java?rev=1631069&r1=1631068&r2=1631069&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/ServiceRaceTest.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/ServiceRaceTest.java Sat Oct 11 15:53:01 2014
@@ -28,10 +28,10 @@ import org.apache.felix.dm.Component;
import org.apache.felix.dm.ComponentState;
import org.apache.felix.dm.ComponentStateListener;
import org.apache.felix.dm.Dependency;
+import org.apache.felix.dm.context.AbstractDependency;
import org.apache.felix.dm.context.Event;
import org.apache.felix.dm.impl.ComponentImpl;
import org.apache.felix.dm.impl.ConfigurationDependencyImpl;
-import org.apache.felix.dm.impl.DependencyImpl;
import org.apache.felix.dm.impl.EventImpl;
import org.junit.Assert;
import org.junit.Test;
@@ -95,9 +95,9 @@ public class ServiceRaceTest extends Tes
client.setImplementation(theClient);
// Create client service dependencies
- final DependencyImpl[] dependencies = new DependencyImpl[DEPENDENCIES];
+ final AbstractDependency[] dependencies = new AbstractDependency[DEPENDENCIES];
for (int i = 0; i < DEPENDENCIES; i++) {
- dependencies[i] = new DependencyImpl();
+ dependencies[i] = new SimpleServiceDependency();
dependencies[i].setRequired(true);
dependencies[i].setCallbacks("add", "remove");
client.add(dependencies[i]);
@@ -140,7 +140,7 @@ public class ServiceRaceTest extends Tes
// We *must* do this after having started the component (in a reality, the dependencies can be
// injected only one the tracker has been opened ...
for (int i = 0; i < DEPENDENCIES; i++) {
- final DependencyImpl dep = dependencies[i];
+ final AbstractDependency dep = dependencies[i];
final Event added = new EventImpl(i);
m_threadpool.execute(new Runnable() {
public void run() {
@@ -161,7 +161,7 @@ public class ServiceRaceTest extends Tes
// Stop the client and all dependencies concurrently.
for (int i = 0; i < DEPENDENCIES; i++) {
- final DependencyImpl dep = dependencies[i];
+ final AbstractDependency dep = dependencies[i];
final Event removed = new EventImpl(i);
m_threadpool.execute(new Runnable() {
public void run() {
Added: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/SimpleServiceDependency.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/SimpleServiceDependency.java?rev=1631069&view=auto
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/SimpleServiceDependency.java (added)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/test/test/SimpleServiceDependency.java Sat Oct 11 15:53:01 2014
@@ -0,0 +1,22 @@
+package test;
+
+import org.apache.felix.dm.Dependency;
+import org.apache.felix.dm.context.AbstractDependency;
+import org.apache.felix.dm.context.DependencyContext;
+
+public class SimpleServiceDependency extends AbstractDependency<Dependency> {
+ @Override
+ public String getType() {
+ return "SimpleServiceDependency";
+ }
+
+ @Override
+ public String getName() {
+ return "SimpleServiceDependency";
+ }
+
+ @Override
+ public DependencyContext createCopy() {
+ return new SimpleServiceDependency();
+ }
+}