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/11/13 21:58:31 UTC
svn commit: r1639515 - in /felix/sandbox/pderop/dependencymanager-prototype:
cnf/localrepo/ cnf/localrepo/org.apache.felix.ipojo.api/
cnf/localrepo/org.apache.felix.ipojo.composite/
cnf/localrepo/org.apache.felix.ipojo.gogo/ cnf/localrepo/org.apache.fe...
Author: pderop
Date: Thu Nov 13 20:58:30 2014
New Revision: 1639515
URL: http://svn.apache.org/r1639515
Log:
Added ipojo benchmark, after having followed the suggestion made by Guillaume (only create one PrimitiveComponentType per component class).
The performance seems better, however I believe that some investigation should still be done, either in my test which may be still invalid,
or somewhere else.
See http://www.mail-archive.com/users%40felix.apache.org/msg15447.html
Added:
felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/org.apache.felix.ipojo/
felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/org.apache.felix.ipojo.api/
felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/org.apache.felix.ipojo.api/org.apache.felix.ipojo.api-1.12.0.jar (with props)
felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/org.apache.felix.ipojo.composite/
felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/org.apache.felix.ipojo.composite/org.apache.felix.ipojo.composite-1.12.0.jar (with props)
felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/org.apache.felix.ipojo.gogo/
felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/org.apache.felix.ipojo.gogo/org.apache.felix.ipojo.gogo-1.12.0.jar (with props)
felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/org.apache.felix.ipojo/org.apache.felix.ipojo-1.12.0.jar (with props)
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/ipojo.bnd
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/ipojo/
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/ipojo/Activator.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/ipojo/IpojoScenario.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/ipojo/ScenarioComponentInstance.java
Modified:
felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/index.xml
felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/index.xml.sha
felix/sandbox/pderop/dependencymanager-prototype/cnf/releaserepo/index.xml
felix/sandbox/pderop/dependencymanager-prototype/cnf/releaserepo/index.xml.sha
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/bnd.bnd
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/controller/impl/ScenarioControllerImpl.java
Modified: felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/index.xml
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/index.xml?rev=1639515&r1=1639514&r2=1639515&view=diff
==============================================================================
Binary files - no diff available.
Modified: felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/index.xml.sha
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/index.xml.sha?rev=1639515&r1=1639514&r2=1639515&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/index.xml.sha (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/index.xml.sha Thu Nov 13 20:58:30 2014
@@ -1 +1 @@
-928ec126399e3d77047781c32dfacbf135702a25b2315d74087906102aacb33f
\ No newline at end of file
+a1bfdcceda47c3403337ea0e4159687d3ee0e988c964a3b8875806ceba8ad557
\ No newline at end of file
Added: felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/org.apache.felix.ipojo.api/org.apache.felix.ipojo.api-1.12.0.jar
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/org.apache.felix.ipojo.api/org.apache.felix.ipojo.api-1.12.0.jar?rev=1639515&view=auto
==============================================================================
Binary file - no diff available.
Propchange: felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/org.apache.felix.ipojo.api/org.apache.felix.ipojo.api-1.12.0.jar
------------------------------------------------------------------------------
svn:mime-type = application/zip
Added: felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/org.apache.felix.ipojo.composite/org.apache.felix.ipojo.composite-1.12.0.jar
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/org.apache.felix.ipojo.composite/org.apache.felix.ipojo.composite-1.12.0.jar?rev=1639515&view=auto
==============================================================================
Binary file - no diff available.
Propchange: felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/org.apache.felix.ipojo.composite/org.apache.felix.ipojo.composite-1.12.0.jar
------------------------------------------------------------------------------
svn:mime-type = application/zip
Added: felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/org.apache.felix.ipojo.gogo/org.apache.felix.ipojo.gogo-1.12.0.jar
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/org.apache.felix.ipojo.gogo/org.apache.felix.ipojo.gogo-1.12.0.jar?rev=1639515&view=auto
==============================================================================
Binary file - no diff available.
Propchange: felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/org.apache.felix.ipojo.gogo/org.apache.felix.ipojo.gogo-1.12.0.jar
------------------------------------------------------------------------------
svn:mime-type = application/zip
Added: felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/org.apache.felix.ipojo/org.apache.felix.ipojo-1.12.0.jar
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/org.apache.felix.ipojo/org.apache.felix.ipojo-1.12.0.jar?rev=1639515&view=auto
==============================================================================
Binary file - no diff available.
Propchange: felix/sandbox/pderop/dependencymanager-prototype/cnf/localrepo/org.apache.felix.ipojo/org.apache.felix.ipojo-1.12.0.jar
------------------------------------------------------------------------------
svn:mime-type = application/zip
Modified: felix/sandbox/pderop/dependencymanager-prototype/cnf/releaserepo/index.xml
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/cnf/releaserepo/index.xml?rev=1639515&r1=1639514&r2=1639515&view=diff
==============================================================================
Binary files - no diff available.
Modified: felix/sandbox/pderop/dependencymanager-prototype/cnf/releaserepo/index.xml.sha
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/cnf/releaserepo/index.xml.sha?rev=1639515&r1=1639514&r2=1639515&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/cnf/releaserepo/index.xml.sha (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/cnf/releaserepo/index.xml.sha Thu Nov 13 20:58:30 2014
@@ -1 +1 @@
-ebca8e263dc50b66bf38f211c0615eb96f79fe6384468a74cc36ae9737b97b93
\ No newline at end of file
+8c342facec78371dd0bc0258736dc768ec099dfcf391ac1aadac9532e9d18e6e
\ No newline at end of file
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/bnd.bnd
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/bnd.bnd?rev=1639515&r1=1639514&r2=1639515&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/bnd.bnd (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/bnd.bnd Thu Nov 13 20:58:30 2014
@@ -1,7 +1,10 @@
-buildpath: \
org.apache.felix.dependencymanager;version=latest,\
osgi.core;version=4.2,\
- biz.aQute.bndlib;version=2.2
+ org.apache.felix.ipojo.composite;version=1.12,\
+ org.apache.felix.ipojo;version=1.12,\
+ org.apache.felix.ipojo.api;version=1.12,\
+ osgi.cmpn;version=4.2
-runbundles: \
org.apache.felix.dependencymanager;version=latest,\
org.apache.felix.dependencymanager.shell;version=latest,\
@@ -11,8 +14,11 @@
org.apache.felix.gogo.shell;version=0.10.0,\
org.apache.felix.gogo.runtime;version=0.10.0,\
org.apache.felix.scr;version=1.8.2,\
- org.apache.felix.dependencymanager.benchmark.scenario;version=latest,\
- org.apache.felix.configadmin;version=1.8.0
+ org.apache.felix.configadmin;version=1.8.0,\
+ org.apache.felix.ipojo;version=1.12.0,\
+ org.apache.felix.ipojo.api;version=1.12.0,\
+ org.apache.felix.ipojo.composite;version=1.12.0,\
+ org.apache.felix.ipojo.gogo;version=1.12.0
-runfw: org.apache.felix.framework;version='[4.4.0,4.4.0]'
-sub: \
Added: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/ipojo.bnd
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/ipojo.bnd?rev=1639515&view=auto
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/ipojo.bnd (added)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/ipojo.bnd Thu Nov 13 20:58:30 2014
@@ -0,0 +1,3 @@
+Private-Package: \
+ org.apache.felix.dm.benchmark.ipojo
+Bundle-Activator: org.apache.felix.dm.benchmark.ipojo.Activator
\ No newline at end of file
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/controller/impl/ScenarioControllerImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/controller/impl/ScenarioControllerImpl.java?rev=1639515&r1=1639514&r2=1639515&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/controller/impl/ScenarioControllerImpl.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/controller/impl/ScenarioControllerImpl.java Thu Nov 13 20:58:30 2014
@@ -40,10 +40,10 @@ public class ScenarioControllerImpl impl
* List of bundles to be executed by the benchmark.
*/
final List<String> TESTS = Arrays.asList(
- "org.apache.felix.dependencymanager.benchmark.ipojo",
"org.apache.felix.dependencymanager.benchmark.scr",
"org.apache.felix.dependencymanager.benchmark.dependencymanager",
- "org.apache.felix.dependencymanager.benchmark.dependencymanager.parallel"
+ "org.apache.felix.dependencymanager.benchmark.dependencymanager.parallel",
+ "org.apache.felix.dependencymanager.benchmark.ipojo"
);
/**
Added: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/ipojo/Activator.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/ipojo/Activator.java?rev=1639515&view=auto
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/ipojo/Activator.java (added)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/ipojo/Activator.java Thu Nov 13 20:58:30 2014
@@ -0,0 +1,50 @@
+package org.apache.felix.dm.benchmark.ipojo;
+
+import org.apache.felix.dm.benchmark.controller.ScenarioController;
+import org.apache.felix.dm.benchmark.scenario.Helper;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Filter;
+import org.osgi.framework.ServiceReference;
+import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
+
+public class Activator implements BundleActivator, ServiceTrackerCustomizer {
+ BundleContext m_context;
+ IpojoScenario m_scenario;
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ Helper.debug(() -> Activator.class.getName() + ".start()");
+ m_context = context;
+ // Wait for the ScenarioController, before starting the actual stress test.
+ Filter filter = context.createFilter("(objectClass=" + ScenarioController.class.getName() + ")");
+ ServiceTracker tracker = new ServiceTracker(context, filter, this);
+ tracker.open();
+ }
+
+ @Override
+ public Object addingService(ServiceReference reference) {
+ // At this point, we can create our Component instance
+ ScenarioController controller = (ScenarioController) m_context.getService(reference);
+ m_scenario = new IpojoScenario(m_context);
+ m_scenario.start();
+ return controller;
+ }
+
+ @Override
+ public void modifiedService(ServiceReference reference, Object service) {
+ }
+
+ @Override
+ public void removedService(ServiceReference reference, Object service) {
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ Helper.debug(() -> Activator.class.getName() + ".stop()");
+ if (m_scenario != null) {
+ m_scenario.stop();
+ }
+ }
+}
Added: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/ipojo/IpojoScenario.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/ipojo/IpojoScenario.java?rev=1639515&view=auto
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/ipojo/IpojoScenario.java (added)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/ipojo/IpojoScenario.java Thu Nov 13 20:58:30 2014
@@ -0,0 +1,185 @@
+package org.apache.felix.dm.benchmark.ipojo;
+
+import static org.apache.felix.dm.benchmark.scenario.Artist.ALBUMS;
+import static org.apache.felix.dm.benchmark.scenario.Artist.ARTISTS;
+import static org.apache.felix.dm.benchmark.scenario.Artist.TRACKS;
+
+import java.util.ArrayList;
+import java.util.Dictionary;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.stream.IntStream;
+import java.util.stream.Stream;
+
+import org.apache.felix.dm.benchmark.controller.ScenarioController;
+import org.apache.felix.dm.benchmark.scenario.Album;
+import org.apache.felix.dm.benchmark.scenario.Artist;
+import org.apache.felix.dm.benchmark.scenario.Helper;
+import org.apache.felix.dm.benchmark.scenario.Track;
+import org.apache.felix.dm.benchmark.scenario.impl.AlbumImpl;
+import org.apache.felix.dm.benchmark.scenario.impl.ArtistImpl;
+import org.apache.felix.dm.benchmark.scenario.impl.TrackImpl;
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.api.Dependency;
+import org.apache.felix.ipojo.api.PrimitiveComponentType;
+import org.apache.felix.ipojo.api.Service;
+import org.apache.felix.ipojo.api.ServiceProperty;
+import org.osgi.framework.BundleContext;
+
+/**
+ * Benchark using iPojo.
+ */
+public class IpojoScenario {
+ /**
+ * List of Component instances (Artists, Albums, Tracks).
+ */
+ List<ComponentInstance> m_component = new ArrayList<>();
+
+ /**
+ * Component type for our "Artist" components
+ */
+ final PrimitiveComponentType m_artistType;
+
+ /**
+ * Component type for our "Album" components
+ */
+ final PrimitiveComponentType m_albumType;
+
+ /**
+ * Component type for our "Artist" components
+ */
+ final PrimitiveComponentType m_trackType;
+
+ /**
+ * This is all our created component instances
+ */
+ final List<ScenarioComponentInstance> m_instances = new ArrayList<>();
+
+ public IpojoScenario(BundleContext ctx) {
+ // Create our Artist component type
+ m_artistType = new PrimitiveComponentType()
+ .setBundleContext(ctx)
+ .setClassName(ArtistImpl.class.getName())
+ .setValidateMethod("start")
+ .setInvalidateMethod("stop")
+ .addDependency(new Dependency().setBindMethod("bindController"))
+ .setImmediate(true)
+ .addService(new Service()
+ .setSpecification(Artist.class.getName())
+ .setCreationStrategy(Service.SINGLETON_STRATEGY));
+ // Create the Artist's albums dependencies.
+ IntStream.iterate(0, n -> n+1).limit(ALBUMS).forEach(i -> {
+ m_artistType.addDependency(new Dependency()
+ .setSpecification(Album.class.getName())
+ .setId("album" + i)
+ .setBindMethod("addAlbum"));
+ });
+
+ // Create our Album component type
+ m_albumType = new PrimitiveComponentType()
+ .setBundleContext(ctx)
+ .setValidateMethod("start")
+ .setInvalidateMethod("stop")
+ .setClassName(AlbumImpl.class.getName())
+ .setImmediate(false)
+ .addDependency(new Dependency()
+ .setSpecification(ScenarioController.class.getName())
+ .setBindMethod("bindController"))
+ .addService(new Service()
+ .setSpecification(Album.class.getName())
+ .addProperty(new ServiceProperty().setName("id").setType("string"))
+ .setCreationStrategy(Service.SINGLETON_STRATEGY));
+ // Create the Album's tracks dependencies.
+ IntStream.iterate(0, n -> n+1).limit(TRACKS).forEach(i -> {
+ m_albumType.addDependency(new Dependency()
+ .setSpecification(Track.class.getName())
+ .setId("track" + i)
+ .setBindMethod("addTrack"));
+ });
+
+ // Create our Track component type
+ m_trackType = new PrimitiveComponentType()
+ .setBundleContext(ctx)
+ .setClassName(TrackImpl.class.getName())
+ .setValidateMethod("start")
+ .setInvalidateMethod("stop")
+ .addDependency(new Dependency()
+ .setSpecification(ScenarioController.class.getName())
+ .setBindMethod("bindController"))
+ .addService(new Service()
+ .setSpecification(Track.class.getName())
+ .addProperty(new ServiceProperty().setName("id").setType("string"))
+ .setCreationStrategy(Service.SINGLETON_STRATEGY));
+ }
+
+ /**
+ * Initialize our Artists, Albums/Tracks.
+ */
+ public void start() {
+ try {
+ Helper.debug(() -> "IPojoActivator.start()");
+
+ IntStream.range(0, ARTISTS)
+ .mapToObj(i -> createArtist()).peek(m_instances::add)
+ .flatMap(artist -> createAlbums(artist)).peek(m_instances::add)
+ .flatMap(album -> createTracks(album)).forEach(m_instances::add);
+
+ Helper.debug(() -> "started all ipojo components");
+ }
+
+ catch (Throwable t) {
+ t.printStackTrace();
+ }
+ }
+
+ public void stop() {
+ try {
+ Helper.debug(() -> "IPojoActivator.stop()");
+ m_instances.forEach(scenarioInstance -> scenarioInstance.getComponentInstance().dispose());
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+ }
+
+ private ScenarioComponentInstance createArtist() {
+ // Create one artist with filters on all its albums.
+ String id = String.valueOf(Helper.generateId());
+ Dictionary<String, Object> conf = new Hashtable<>();
+ Dictionary<String, String> confFilters = new Hashtable<>();
+ IntStream.iterate(0, n -> n+1).limit(ALBUMS).forEach(i -> {
+ String filterId = new StringBuilder(id).append("-").append(i).toString();
+ confFilters.put("album" + i, "(id=" + filterId + ")");
+ });
+
+ conf.put("requires.filters", confFilters);
+ return new ScenarioComponentInstance(id, m_artistType, conf);
+ }
+
+ /**
+ * Creates some albums for one given artist component.
+ */
+ private Stream<ScenarioComponentInstance> createAlbums(ScenarioComponentInstance artist) {
+ return IntStream.iterate(0, n -> n+1).limit(ALBUMS).mapToObj(a -> {
+ String albumId = new StringBuilder(artist.getId()).append("-").append(String.valueOf(a)).toString();
+ Dictionary<String, Object> conf = new Hashtable<>();
+ conf.put("id", albumId);
+
+ Dictionary<String, String> confFilters = new Hashtable<>();
+ IntStream.iterate(0, n -> n+1).limit(TRACKS).forEach(t -> {
+ String filterId = new StringBuilder(albumId).append("-").append(t).toString();
+ confFilters.put("track" + t, "(id=" + filterId + ")");
+ });
+
+ return new ScenarioComponentInstance(albumId, m_albumType, conf);
+ });
+ }
+
+ private Stream<ScenarioComponentInstance> createTracks(ScenarioComponentInstance album) {
+ return IntStream.iterate(0, n -> n+1).limit(TRACKS).mapToObj(i -> {
+ String trackId = new StringBuilder(album.getId()).append("-").append(String.valueOf(i)).toString();
+ Dictionary<String, Object> conf = new Hashtable<>();
+ conf.put("id", trackId);
+ return new ScenarioComponentInstance(trackId, m_trackType, conf);
+ });
+ }
+}
Added: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/ipojo/ScenarioComponentInstance.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/ipojo/ScenarioComponentInstance.java?rev=1639515&view=auto
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/ipojo/ScenarioComponentInstance.java (added)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/ipojo/ScenarioComponentInstance.java Thu Nov 13 20:58:30 2014
@@ -0,0 +1,30 @@
+package org.apache.felix.dm.benchmark.ipojo;
+
+import java.util.Dictionary;
+
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.ConfigurationException;
+import org.apache.felix.ipojo.MissingHandlerException;
+import org.apache.felix.ipojo.UnacceptableConfiguration;
+import org.apache.felix.ipojo.api.PrimitiveComponentType;
+
+/**
+ * Holder class for one of the scenario component instance (Artist, ALbum, Track).
+ */
+public class ScenarioComponentInstance {
+ final String m_id;
+ final ComponentInstance m_instance;
+
+ public ScenarioComponentInstance(String id, PrimitiveComponentType type, Dictionary<?,?> conf) {
+ m_id = id;
+ try {
+ m_instance = type.createInstance(conf);
+ } catch (UnacceptableConfiguration | MissingHandlerException | ConfigurationException e) {
+ throw new RuntimeException("Could create component instance", e);
+ }
+ }
+
+ public String getId() { return m_id; }
+ public ComponentInstance getComponentInstance() { return m_instance; }
+}
+