| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| <html> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You 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. |
| --> |
| |
| <head> |
| <title>Apache Felix - Using iPOJO introspection API</title> |
| <link rel="icon" href="/res/favicon.ico"> |
| |
| <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <meta name="description" content="The most powerful component model for OSGi"> |
| |
| |
| <link href="/ipojo/web/bootstrap/css/bootstrap-cerulean.css" rel="stylesheet"> |
| <link href="/ipojo/web/bootstrap/css/bootstrap-responsive.css" rel="stylesheet"> |
| <link href="/ipojo/web/bootstrap/css/font-awesome.min.css" rel="stylesheet"> |
| <link href="/ipojo/web/style.css" rel="stylesheet"> |
| |
| <!-- Overide alert's colors --> |
| <link href="/ipojo/web/bootstrap/css/alert.css" rel="stylesheet"> |
| |
| <link rel="stylesheet" href="/ipojo/web/github.css" type="text/css" media="all"> |
| |
| |
| <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> |
| <script src="/ipojo/web/bootstrap/js/bootstrap.min.js"></script> |
| |
| </head> |
| |
| <body data-spy="scroll" data-target=".subnav"> |
| <div class="navbar navbar-fixed-top navbar-inverse"> |
| <div class="navbar-inner"> |
| <div class="container"> |
| <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| </a> |
| <a class="brand" href="/documentation/subprojects/apache-felix-ipojo.html">Apache Felix iPOJO</a> |
| |
| <div class="nav-collapse" id="main-menu"> |
| <ul class="nav" id="main-menu-left"> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/ipojo-news.html">News</a></li> |
| <li><a href="http://felix.apache.org/downloads.cgi">Downloads</a></li> |
| |
| <li class="dropdown"> |
| <a class="dropdown-toggle" data-toggle="dropdown" href="#">Tutorials <b class="caret"></b></a> |
| <ul class="dropdown-menu" id="tutorials-menu"> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-why-choose-ipojo.html">Why choose iPOJO</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-successstories.html">Success stories</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-feature-overview.html">Features</a></li> |
| <li class="divider"></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-in-10-minutes.html">iPOJO in 10 minutes</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/how-to-use-ipojo-annotations.html">Using Annotations</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-hello-word-maven-based-tutorial.html">Maven tutorial</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-advanced-tutorial.html">Advanced tutorial</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/apache-felix-ipojo-dosgi.html">Using Distributed OSGi</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-composition-tutorial.html">Application Composition</a></li> |
| </ul> |
| </li> |
| |
| <li class="dropdown"> |
| <a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation <b class="caret"></b></a> |
| <ul class="dropdown-menu" id="user-guide-menu"> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/service-requirement-handler.html">Requiring a service</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/providing-osgi-services.html">Providing a service</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/lifecycle-callback-handler.html">Lifecycle management</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/configuration-handler.html">Configuration</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/architecture-handler.html">Introspection</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/controller-lifecycle-handler.html">Impacting the lifecycle</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/injecting-bundle-context.html">Accessing the Bundle Context</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/apache-felix-ipojo-instances.html">Creating instances</a></li> |
| <li class="divider"></li> |
| <li class="dropdown-submenu"> |
| <a tabindex="-1" href="#">External <em>handlers</em></a> |
| <ul class="dropdown-menu"> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/event-admin-handlers.html">Asynchronous communication</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/ipojo-jmx-handler.html">JMX management</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/extender-pattern-handler.html">Extender pattern</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/white-board-pattern-handler.html">Whiteboard pattern</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/temporal-service-dependency.html">Temporal dependencies</a></li> |
| </ul> |
| </li> |
| <li class="dropdown-submenu"> |
| <a tabindex="-1" href="#">Configuration Admin & Factories</a> |
| <ul class="dropdown-menu"> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/combining-ipojo-and-configuration-admin.html">iPOJO and config admin</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/ipojo-factory-service.html">Using the iPOJO Factory service</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/how-to-use-ipojo-factories.html">Factories and Instances</a></li> |
| </ul> |
| </li> |
| <li class="divider"></li> |
| <li class="dropdown-submenu"> |
| <a tabindex="-1" href="#">Advanced topics</a> |
| <ul class="dropdown-menu"> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/instance-vs-service-controller.html">Instance vs. Service Controllers</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/service-binding-interceptors.html">Service Binding Interceptors</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/using-xml-schemas.html">XML Schemas</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/apache-felix-ipojo-api.html">Using the iPOJO API</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/constructing-pojo-objects-with-factory-methods.html">Constructing service objects with factory methods</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/using-ipojo-introspection-api.html">Using the introspection API</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-testing-components.html">Testing components</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/using-stereotypes.html">Using @Stereotypes</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-eclipse-integration.html">Eclipse Integration</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/ipojo-extender-configuration.html">Configuring iPOJO's Extender</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-faq.html">FAQ</a></li> |
| <li class="divider"></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-devguide/how-to-write-your-own-handler.html">Handler development</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-devguide/how-to-use-ipojo-manipulation-metadata.html">Manipulation Metadata </a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-devguide/dive-into-the-ipojo-manipulation-depths.html">Dive into the iPOJO Manipulation depths</a></li> |
| <li><a href="http://felix.apache.org/ipojo/api/1.12.1">Javadoc</a></li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| |
| <li class="dropdown" id="tools-menu"> |
| <a class="dropdown-toggle" data-toggle="dropdown" href="#">Tools <b class="caret"></b></a> |
| <ul class="dropdown-menu" id="swatch-menu"> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-ant-task.html">Ant Task</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-maven-plug-in.html">Maven Plugin</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-arch-command.html">Architecture commands</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/apache-felix-ipojo-online-manipulator.html">Online Manipulator</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-webconsole-plugin.html">Webconsole plugin</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-karaf-feature.html">Apache Karaf Features</a></li> |
| </ul> |
| </li> |
| |
| <li class="dropdown" id="community-menu"> |
| <a class="dropdown-toggle" data-toggle="dropdown" href="#">Community <b class="caret"></b></a> |
| <ul class="dropdown-menu" id="swatch-menu"> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/ipojo-support.html">Support</a></li> |
| <li><a href="http://www.apache.org/">ASF</a></li> |
| <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li> |
| <li><a href="http://www.apache.org/foundation/thanks.html">Sponsors</a></li> |
| </ul> |
| </li> |
| |
| <li class="dropdown" id="misc-menu"> |
| <a class="dropdown-toggle" data-toggle="dropdown" href="#">Misc <b class="caret"></b></a> |
| <ul class="dropdown-menu" id="swatch-menu"> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-supportedvms.html">Supported JVMs</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-supportedosgi.html">Supported OSGi Implementations</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/articles-and-presentations.html">Article & Presentations</a></li> |
| <li><a href="/documentation/subprojects/apache-felix-ipojo/developing-camel-mediators-with-ipojo.html">Developping Camel mediators with iPOJO</a></li> |
| </ul> |
| </li> |
| </ul> |
| <ul class="nav pull-right" id="main-menu-right"> |
| <li><a rel="tooltip" target="_blank" href="http://felix.apache.org">Apache Felix <i class="icon-share-alt"></i></a></li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| <div class="container"> |
| <div class="content"> |
| <style type="text/css"> |
| /* The following code is added by mdx_elementid.py |
| It was originally lifted from http://subversion.apache.org/style/site.css */ |
| /* |
| * Hide class="elementid-permalink", except when an enclosing heading |
| * has the :hover property. |
| */ |
| .headerlink, .elementid-permalink { |
| visibility: hidden; |
| } |
| h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style> |
| <h1 id="introspecting-instances">Introspecting instances<a class="headerlink" href="#introspecting-instances" title="Permanent link">¶</a></h1> |
| <p><em>iPOJO provides mechanisms to introspect and reconfigure instances. Those features are available from the instance description. Currently, only the reconfiguration of primitive instances is supported.</em></p> |
| <div class="toc"> |
| <ul> |
| <li><a href="#introspecting-instances">Introspecting instances</a><ul> |
| <li><a href="#getting-instance-descriptions">Getting instance descriptions</a></li> |
| <li><a href="#introspecting-primitive-instances">Introspecting primitive instances</a></li> |
| <li><a href="#manipulating-dependencies">Manipulating dependencies</a></li> |
| <li><a href="#manipulating-provided-services">Manipulating provided services</a></li> |
| <li><a href="#manipulating-configuration-properties">Manipulating configuration properties</a></li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| <h2 id="getting-instance-descriptions">Getting instance descriptions<a class="headerlink" href="#getting-instance-descriptions" title="Permanent link">¶</a></h2> |
| <p>There is two way to get the instance description: |
| <em> By using the <code>architecture</code> service exposed by an instance providing introspection support. |
| </em> By calling the <code>getInstanceDescription()</code> method on a ComponentInstance object (that you create thanks to a Factory)</p> |
| <div class="codehilite"><pre><span class="cm">/**</span> |
| <span class="cm"> * Returns the instance description.</span> |
| <span class="cm"> * @return the instance description of the current instance</span> |
| <span class="cm"> */</span> |
| <span class="n">InstanceDescription</span> <span class="nf">getInstanceDescription</span><span class="o">();</span> |
| </pre></div> |
| |
| |
| <h2 id="introspecting-primitive-instances">Introspecting primitive instances<a class="headerlink" href="#introspecting-primitive-instances" title="Permanent link">¶</a></h2> |
| <p>Once you get the object, cast it in (be sure that it is really a primitive instance). |
| Then, you have access to every primitive instance aspects:</p> |
| <ul> |
| <li>service dependencies</li> |
| <li>provided services</li> |
| <li>configuration properties</li> |
| <li>get created implementation objects</li> |
| </ul> |
| <p> </p> |
| <div class="codehilite"><pre><span class="cm">/**</span> |
| <span class="cm"> * Gets the list of object created by the described instance.</span> |
| <span class="cm"> * @return the created objects.</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="n">String</span><span class="o">[]</span> <span class="nf">getCreatedObjects</span><span class="o">()</span> <span class="o">{</span> |
| <span class="o">...</span> |
| <span class="o">}</span> |
| |
| <span class="cm">/**</span> |
| <span class="cm"> * Gets the instance service dependencies.</span> |
| <span class="cm"> * @return the set of dependency description or an empty array if</span> |
| <span class="cm"> * no dependencies.</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="n">DependencyDescription</span><span class="o">[]</span> <span class="nf">getDependencies</span><span class="o">()</span> <span class="o">{</span> |
| <span class="o">...</span> |
| <span class="o">}</span> |
| |
| <span class="cm">/**</span> |
| <span class="cm"> * Gets the instance service dependency matching with the given service specification or id.</span> |
| <span class="cm"> * @param specification the service specification of the looked specification.</span> |
| <span class="cm"> * @return the dependency description matching with the given service specification or id.</span> |
| <span class="cm"> * <code>null</code> is not found.</span> |
| <span class="cm"> * no dependencies.</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="n">DependencyDescription</span> <span class="nf">getDependency</span><span class="o">(</span><span class="n">String</span> <span class="n">specification</span><span class="o">)</span> <span class="o">{</span> |
| <span class="o">...</span> |
| <span class="o">}</span> |
| |
| <span class="cm">/**</span> |
| <span class="cm"> * Gets the instance provided service matching with the given service specification.</span> |
| <span class="cm"> * @param specification the provided specification of the looked provided service.</span> |
| <span class="cm"> * @return the provided service description matching with the given service specification.</span> |
| <span class="cm"> * <code>null</code> is not found.</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="n">ProvidedServiceDescription</span> <span class="nf">getProvidedService</span><span class="o">(</span><span class="n">String</span> <span class="n">specification</span><span class="o">)</span> <span class="o">{</span> |
| <span class="o">...</span> |
| <span class="o">}</span> |
| |
| <span class="cm">/**</span> |
| <span class="cm"> * Gets the instance provided service.</span> |
| <span class="cm"> * @return the set of provided service description or an empty array if</span> |
| <span class="cm"> * no provided services.</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="n">ProvidedServiceDescription</span><span class="o">[]</span> <span class="nf">getProvidedServices</span><span class="o">()</span> <span class="o">{</span> |
| <span class="o">...</span> |
| <span class="o">}</span> |
| |
| <span class="cm">/**</span> |
| <span class="cm"> * Gets the instance properties.</span> |
| <span class="cm"> * @return the set of property descriptions or an empty array if</span> |
| <span class="cm"> * no properties.</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="n">PropertyDescription</span><span class="o">[]</span> <span class="nf">getProperties</span><span class="o">()</span> <span class="o">{</span> |
| <span class="o">...</span> |
| <span class="o">}</span> |
| </pre></div> |
| |
| |
| <h2 id="manipulating-dependencies">Manipulating dependencies<a class="headerlink" href="#manipulating-dependencies" title="Permanent link">¶</a></h2> |
| <p>You can get service dependencies from the <code>PrimitiveInstanceDescription</code>. Once you get the dependency (<code>DependencyDescription</code> object that you want to manipulate you can call one of those method on it:</p> |
| <div class="codehilite"><pre><span class="kd">public</span> <span class="kt">boolean</span> <span class="nf">isMultiple</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="kd">public</span> <span class="kt">boolean</span> <span class="nf">isOptional</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="kd">public</span> <span class="n">String</span> <span class="nf">getFilter</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="kd">public</span> <span class="n">String</span> <span class="nf">getInterface</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="kd">public</span> <span class="kt">int</span> <span class="nf">getState</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="kd">public</span> <span class="n">String</span> <span class="nf">getId</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="kd">public</span> <span class="kt">boolean</span> <span class="nf">supportsNullable</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="kd">public</span> <span class="n">String</span> <span class="nf">getDefaultImplementation</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="kd">public</span> <span class="kt">int</span> <span class="nf">getPolicy</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="kd">public</span> <span class="n">String</span> <span class="nf">getComparator</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="kd">public</span> <span class="kt">boolean</span> <span class="nf">isFrozen</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="cm">/**</span> |
| <span class="cm"> * Gets the service reference list.</span> |
| <span class="cm"> * @return the list of matching service reference,</span> |
| <span class="cm"> * <code>null</code> if no service reference.</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="n">List</span> <span class="nf">getServiceReferences</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="cm">/**</span> |
| <span class="cm"> * Gets the service reference if only one service reference is used.</span> |
| <span class="cm"> * @return the ServiceReference (only if the cardinality could be 1),</span> |
| <span class="cm"> * or <code>null</code> if no service reference.</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="n">ServiceReference</span> <span class="nf">getServiceReference</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="cm">/**</span> |
| <span class="cm"> * Gets the used service set.</span> |
| <span class="cm"> * @return the list [service reference]() containing the used services,</span> |
| <span class="cm"> * <code>null</code> if no providers are used</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="n">List</span> <span class="nf">getUsedServices</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="cm">/**</span> |
| <span class="cm"> * Sets the dependency comparator.</span> |
| <span class="cm"> * The reference set will be sort at the next usage.</span> |
| <span class="cm"> * @param cmp the comparator</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="kt">void</span> <span class="nf">setComparator</span><span class="o">(</span><span class="n">Comparator</span> <span class="n">cmp</span><span class="o">)</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="cm">/**</span> |
| <span class="cm"> * Sets the dependency filter.</span> |
| <span class="cm"> * @param filter the new LDAP filter</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="kt">void</span> <span class="nf">setFilter</span><span class="o">(</span><span class="n">Filter</span> <span class="n">filter</span><span class="o">)</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="cm">/**</span> |
| <span class="cm"> * Sets the dependency cardinality.</span> |
| <span class="cm"> * @param isAgg if <code>true</code> sets the dependency to aggregate,</span> |
| <span class="cm"> * if <code>false</code> sets the dependency to scalar.</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="kt">void</span> <span class="nf">setAggregate</span><span class="o">(</span><span class="kt">boolean</span> <span class="n">isAgg</span><span class="o">)</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="cm">/**</span> |
| <span class="cm"> * Sets the dependency optionality.</span> |
| <span class="cm"> * @param isOpt if <code>true</code> sets the dependency to optional,</span> |
| <span class="cm"> * if <code>false</code> sets the dependency to mandatory.</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="kt">void</span> <span class="nf">setOptional</span><span class="o">(</span><span class="kt">boolean</span> <span class="n">isOpt</span><span class="o">)</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="cm">/**</span> |
| <span class="cm"> * Gets the required service specification name.</span> |
| <span class="cm"> * @return the required service specification class name.</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="n">String</span> <span class="nf">getSpecification</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| </pre></div> |
| |
| |
| <p>These methods allows getting the dependency state as well as reconfiguring the dependency by setting a new filter... </p> |
| <p>There is a slightly difference between the <code>getServiceReference(s)</code> methods and the <code>getUsedServices</code> method. The first ones returns the list of matching provider. The second one returns the list of currently used providers. </p> |
| <h2 id="manipulating-provided-services">Manipulating provided services<a class="headerlink" href="#manipulating-provided-services" title="Permanent link">¶</a></h2> |
| <p>You also can manipulate provided services . </p> |
| <div class="codehilite"><pre><span class="cm">/**</span> |
| <span class="cm"> * Gets the list of provided service specifications.</span> |
| <span class="cm"> * @return the provided contract name.</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="n">String</span><span class="o">[]</span> <span class="nf">getServiceSpecifications</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="cm">/**</span> |
| <span class="cm"> * Gets the list of properties.</span> |
| <span class="cm"> * A copy of the actual property set is returned.</span> |
| <span class="cm"> * @return the properties.</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="n">Properties</span> <span class="nf">getProperties</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="cm">/**</span> |
| <span class="cm"> * Adds and Updates service properties.</span> |
| <span class="cm"> * Existing properties are updated. </span> |
| <span class="cm"> * New ones are added.</span> |
| <span class="cm"> * @param props the new properties</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="kt">void</span> <span class="nf">addProperties</span><span class="o">(</span><span class="n">Dictionary</span> <span class="n">props</span><span class="o">)</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="cm">/**</span> |
| <span class="cm"> * Removes service properties.</span> |
| <span class="cm"> * @param props the properties to remove</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="kt">void</span> <span class="nf">removeProperties</span><span class="o">(</span><span class="n">Dictionary</span> <span class="n">props</span><span class="o">)</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="cm">/**</span> |
| <span class="cm"> * Gets provided service state.</span> |
| <span class="cm"> * @return the state of the provided service (UNREGISTERED | REGISTRED).</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="kt">int</span> <span class="nf">getState</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="cm">/**</span> |
| <span class="cm"> * Gets the service reference.</span> |
| <span class="cm"> * @return the service reference (null if the service is unregistered).</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="n">ServiceReference</span> <span class="nf">getServiceReference</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="cm">/**</span> |
| <span class="cm"> * Gets the 'main' service object.</span> |
| <span class="cm"> * @return the 'main' service object or <code>null</code></span> |
| <span class="cm"> * if no service object are created.</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="n">Object</span> <span class="nf">getService</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="kd">public</span> <span class="n">Object</span><span class="o">[]</span> <span class="nf">getServices</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| </pre></div> |
| |
| |
| <p>Thanks to these method, you can get service objects, get the registered services, and manipulate service properties.</p> |
| <h2 id="manipulating-configuration-properties">Manipulating configuration properties<a class="headerlink" href="#manipulating-configuration-properties" title="Permanent link">¶</a></h2> |
| <p>The last think that you can do from the <code>PrimitiveInstanceDescription</code> is to get configuration properties (<code>PropertyDescription</code>). </p> |
| <div class="codehilite"><pre><span class="cm">/**</span> |
| <span class="cm"> * Gets the current property name.</span> |
| <span class="cm"> * @return the property name.</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="n">String</span> <span class="nf">getName</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="cm">/**</span> |
| <span class="cm"> * Gets the current property type.</span> |
| <span class="cm"> * @return the property type.</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="n">String</span> <span class="nf">getType</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="cm">/**</span> |
| <span class="cm"> * Gets the current property value.</span> |
| <span class="cm"> * @return the default value for the property,</span> |
| <span class="cm"> * <code>null</code> if the property hasn't a value..</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="n">String</span> <span class="nf">getValue</span><span class="o">()</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| |
| <span class="cm">/**</span> |
| <span class="cm"> * Sets the property value.</span> |
| <span class="cm"> * This method can only be called on 'living' property</span> |
| <span class="cm"> * (properties with a {@link Property} object).</span> |
| <span class="cm"> * @param value the new value.</span> |
| <span class="cm"> */</span> |
| <span class="kd">public</span> <span class="kt">void</span> <span class="nf">setValue</span><span class="o">(</span><span class="n">Object</span> <span class="n">value</span><span class="o">)</span> <span class="o">{</span> <span class="o">...</span> <span class="o">}</span> |
| </pre></div> |
| |
| |
| <p>With these methods you can get a property object and update its value dynamically. </p> |
| </div> |
| </div> |
| |
| <hr/> |
| |
| <div class="container"> |
| <footer id="footer"> |
| <div class="row"> |
| <div class="trademarkFooter span7"> |
| Apache Felix, Felix, Apache, the Apache feather logo, and the Apache Felix project |
| logo are trademarks of The Apache Software Foundation. All other marks mentioned |
| may be trademarks or registered trademarks of their respective owners. |
| </div> |
| <div class="timestamp span3 offset2"> |
| Rev. 1700393 by cziegeler on Tue, 1 Sep 2015 06:04:06 +0000 |
| </div> |
| </div> |
| </footer> |
| </div> |
| </body> |
| |
| <script type="text/javascript"> |
| var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); |
| document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); |
| </script> |
| |
| <script type="text/javascript"> |
| try{ |
| var pageTracker = _gat._getTracker("UA-1518442-4"); |
| pageTracker._trackPageview(); |
| } catch(err) {} |
| </script> |
| |
| </html> |