felix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From fmesc...@apache.org
Subject svn commit: r1421893 [13/24] - in /felix/site/trunk/content: ./ documentation/ documentation/community/ documentation/development/ documentation/faqs/ documentation/subprojects/ documentation/subprojects/apache-felix-commons/ documentation/subprojects/...
Date Fri, 14 Dec 2012 14:30:22 GMT
Added: felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/using-ipojo-introspection-api.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/using-ipojo-introspection-api.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/using-ipojo-introspection-api.mdtext (added)
+++ felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/using-ipojo-introspection-api.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,265 @@
+Title: Using iPOJO introspection API
+
+{include:apache-felix-ipojo-header}
+
+<div class="content">
+
+# Introspecting instances
+
+*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.*
+
+## Getting instance descriptions
+
+There is two way to get the instance description:
+* By using the `architecture` service exposed by an instance providing introspection support.
+* By calling the getInstanceDescription() method on a ComponentInstance object (that you create thanks to a Factory)
+
+{code:java|Getting the instance description from the ComponentInstance object}
+    /**
+     * Returns the instance description.
+     * @return the instance description of the current instance
+     */
+    InstanceDescription getInstanceDescription();
+
+    
+    h2. Introspecting primitive instances
+    
+    Once you get the {{InstanceDescription}} object, cast it in {{PrimitiveInstanceDescription}} (be sure that it is really a primitive instance).
+    Then, you have access to every primitive instance aspects:
+    service dependencies
+    provided services
+    configuration properties
+    get created implementation objects
+    
+    {code:java|title=Primitive Instance Description methods}
+        /**
+         * Gets the list of object created by the described instance.
+         * @return the created objects.
+         */
+        public String[] getCreatedObjects() {
+            ...
+        }
+        
+        /**
+         * Gets the instance service dependencies.
+         * @return the set of dependency description or an empty array if
+         * no dependencies.
+         */
+        public DependencyDescription[] getDependencies() {
+            ...
+        }
+        
+        /**
+         * Gets the instance service dependency matching with the given service specification or id.
+         * @param specification the service specification of the looked specification.
+         * @return the dependency description matching with the given service specification or id.
+         * <code>null</code> is not found.
+         * no dependencies.
+         */
+        public DependencyDescription getDependency(String specification) {
+            ...
+        }
+        
+        /**
+         * Gets the instance provided service matching with the given service specification.
+         * @param specification the provided specification of the looked provided service.
+         * @return the provided service description matching with the given service specification.
+         * <code>null</code> is not found.
+         */
+        public ProvidedServiceDescription getProvidedService(String specification) {
+            ...
+        }
+        
+        /**
+         * Gets the instance provided service.
+         * @return the set of provided service description or an empty array if
+         * no provided services.
+         */
+        public ProvidedServiceDescription[] getProvidedServices() {
+            ...
+        }
+        
+        /**
+         * Gets the instance properties.
+         * @return the set of property descriptions or an empty array if
+         * no properties.
+         */
+        public PropertyDescription[] getProperties() {
+            ...
+        }
+    
+
+## Manipulating dependencies
+
+You can get service dependencies from the `PrimitiveInstanceDescription`. Once you get the dependency (`DependencyDescription` object that you want to manipulate you can call one of those method on it:
+{code:java}
+    public boolean isMultiple() { ... }
+
+    public boolean isOptional() { ... }
+
+    public String getFilter() { ... }
+
+    public String getInterface() { ... }
+
+    public int getState() { ... }
+    
+    public String getId() { ... }
+    
+    public boolean supportsNullable() { ... }
+    
+    public String getDefaultImplementation() { ... }
+    
+    public int getPolicy() { ... }
+    
+    public String getComparator() { ... }
+    
+    public boolean isFrozen() { ... }
+
+    /**
+     * Gets the service reference list.
+     * @return the list of matching service reference,
+     * <code>null</code> if no service reference.
+     */
+    public List getServiceReferences() { ... }
+
+    /**
+     * Gets the service reference if only one service reference is used.
+     * @return the ServiceReference (only if the cardinality could be 1),
+     * or <code>null</code> if no service reference.
+     */
+    public ServiceReference getServiceReference() { ... }
+
+    /**
+     * Gets the used service set.
+     * @return the list [service reference]({{ refs.service-reference.path }}) containing the used services,
+     * <code>null</code> if no providers are used
+     */
+    public List getUsedServices() { ... }
+    
+    /**
+     * Sets the dependency comparator.
+     * The reference set will be sort at the next usage.
+     * @param cmp the comparator
+     */
+    public void setComparator(Comparator cmp) { ... }
+    
+    /**
+     * Sets the dependency filter.
+     * @param filter the new LDAP filter
+     */
+    public void setFilter(Filter filter) { ... }
+    
+    /**
+     * Sets the dependency cardinality.
+     * @param isAgg if <code>true</code> sets the dependency to aggregate,
+     * if <code>false</code> sets the dependency to scalar.
+     */
+    public void setAggregate(boolean isAgg) { ... }
+    
+    /**
+     * Sets the dependency optionality.
+     * @param isOpt if <code>true</code> sets the dependency to optional,
+     * if <code>false</code> sets the dependency to mandatory.
+     */
+    public void setOptional(boolean isOpt) { ... }
+
+    /**
+     * Gets the required service specification name.
+     * @return the required service specification class name.
+     */
+    public String getSpecification() { ... }
+
+    
+    These methods allows getting the dependency state as well as reconfiguring the dependency by setting a new filter... 
+    
+    There is a slightly difference between the {{getServiceReference(s)}} methods and the {{getUsedServices}} method. The first ones returns the list of matching provider. The second one returns the list of currently used providers. 
+    
+    h2. Manipulating provided services
+    You also can manipulate provided services {{ProvidedServiceDescription}}. 
+    {code:java}
+    /**
+         * Gets the list of provided service specifications.
+         * @return the provided contract name.
+         */
+        public String[] getServiceSpecifications() { ... }
+    
+        /**
+         * Gets the list of properties.
+         * A copy of the actual property set is returned.
+         * @return the properties.
+         */
+        public Properties getProperties() { ... }
+        
+        /**
+         * Adds and Updates service properties.
+         * Existing properties are updated. 
+         * New ones are added.
+         * @param props the new properties
+         */
+        public void addProperties(Dictionary props) { ... }
+        
+        /**
+         * Removes service properties.
+         * @param props the properties to remove
+         */
+        public void removeProperties(Dictionary props) { ...  }
+    
+        /**
+         * Gets provided service state.
+         * @return the state of the provided service (UNREGISTERED | REGISTRED).
+         */
+        public int getState() { ... }
+    
+        /**
+         * Gets the service reference.
+         * @return the service reference (null if the service is unregistered).
+         */
+        public ServiceReference getServiceReference() { ... }
+        
+        /**
+         * Gets the 'main' service object.
+         * @return the 'main' service object or <code>null</code>
+         * if no service object are created.
+         */
+        public Object getService() { ... }
+        
+        public Object[] getServices() { ... }
+
+
+Thanks to these method, you can get service objects, get the registered services, and manipulate service properties.
+H2. Manipulating configuration properties
+The last think that you can do from the `PrimitiveInstanceDescription` is to get configuration properties (`PropertyDescription`). 
+{code:java}
+ /**
+     * Gets the current property name.
+     * @return the property name.
+     */
+    public String getName() { ... }
+
+    /**
+     * Gets the current property type.
+     * @return the property type.
+     */
+    public String getType() { ... }
+
+    /**
+     * Gets the current property value.
+     * @return the default value for the property,
+     * <code>null</code> if the property hasn't a value..
+     */
+    public String getValue() { ... }
+    
+    /**
+     * Sets the property value.
+     * This method can only be called on 'living' property
+     * (properties with a {@link Property} object).
+     * @param value the new value.
+     */
+    public void setValue(Object value) { ... }
+
+
+    
+    With these methods you can get a property object and update its value dynamically. 
+    \\
+    \\
+    {include:apache-felix-ipojo-footer}
\ No newline at end of file

Added: felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-faq.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-faq.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-faq.mdtext (added)
+++ felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-faq.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,301 @@
+Title: iPOJO FAQ
+
+{include:apache-felix-ipojo-header}
+
+<div class="content">
+
+
+# Apache Felix iPOJO FAQ
+
+{div:class=toc}
+[TOC]
+{div}
+
+## Injecting the bundle context in a POJO
+
+It is sometimes useful to inject the bundle context in your POJO. Then, your POJO is able to deal with the OSGi environment as *regular* OSGi applications. It is possible to a POJO to get its `BundleContext`. A POJO can receive its bundle context as an argument of its constructor. The next code snippet shows an example:
+{code:java}
+public class ASimplePOJO{
+	private BundleContext context;
+	public ASimplePOJO(BundleContext bc) {
+		context = bc;
+		// do something...
+	}}
+
+    As you see on the previous snippet, the bundle context is injected in the POJO. Then the POJO can use it as a 'normal' bundle context. The POJO code can:
+    * load classes
+    * register / unregister services
+    * discover, track and use services
+    
+    However, all these interactions are no more managed by the iPOJO container. So, be careful to manage the dynamism, synchronization, listeners...
+    
+    h2. Accessing services inside inner and anonymous classes
+    
+    An inner class is a class defined inside another class.  This mechanism is useful in order to avoid creating a bunch of small files. So, it is common when creating threads, Swing listeners ... Generally speaking, inner classes are regular classes treated as separate classes. However this is an oversimplification. Some of the information about an inner class is not in its class file.  See section 4.7.5 for further details:
+    [http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html]
+    
+    
+    An inner class can access fields of its outer class. Since the iPOJO 1.0.0 version, fields managed by iPOJO, such as a service dependencies and properties, are also available from the inner class. Indeed, iPOJO manipulation also manipulates inner and nested classes, and accesses to outer class fields are correctly managed.
+    
+    h2. Using a different version of the manipulator during the manipulation
+    
+    You can configure the version of the manipulator that you want to use when you're using the maven-ipojo-plugin or the iPOJO ant task. This allows to benefit latest improvements.
+    
+    For Maven, Just declare a dependency on the manipulator that you want to use in the maven-ipojo-plugin plugin section:
+    {code:xml|title=Maven}
+    <plugin>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>maven-ipojo-plugin</artifactId>
+            <executions>
+              <execution>
+                <goals>
+                  <goal>ipojo-bundle</goal>
+                </goals>
+              </execution>
+            </executions>
+            <dependencies>
+            	<dependency>
+            		<groupId>org.apache.felix</groupId>
+            		<artifactId>org.apache.felix.ipojo.manipulator</artifactId>
+            		<version>1.6.2</version>
+            	</dependency>
+            </dependencies>
+          </plugin>
+
+
+For Ant, just configure the classpath of the iPOJO ant task with the Manipulator that you want to use:
+{code:xml|title=Ant}
+<taskdef name="ipojo"
+        classname="org.apache.felix.ipojo.task.IPojoTask"
+                classpath="../ipojo/manipulator/org.apache.felix.ipojo.manipulator-1.7.0-SNAPSHOT.jar; lib/org.apache.felix.ipojo.ant-1.7.0-SNAPSHOT.jar;" />
+ />
+
+    
+    
+    h2. Callbacks order.
+    
+    A lot of handlers define callbacks to notify the implementation class. The 'core' callbacks are called in the following order:
+    {code:java}
+    @Component
+    @Provides
+    public class CallbacksOrder implements MyService {
+    
+    	public CallbacksOrder() {
+    		System.out.println("1 Constructor");
+    	}
+    
+    	@Bind
+    	public void bind(LogService log) {
+    		System.out.println("2 Bind " + log);
+    	}
+    
+    	@Property(name="prop")
+    	public void setProp(String v) {
+    		System.out.println("3 Set prop " + v);
+    	}
+    
+    
+    	@Validate
+    	public void validate() {
+    		System.out.println("4 Validate");
+    	}
+    
+    	@PostRegistration
+    	public void registered(ServiceReference ref) {
+    		System.out.println("5 Registered");
+    	}
+    
+    	// --- On Service Departure ---
+    
+    	@Unbind
+    	public void unbind(LogService log) {
+    		System.out.println("6 Unbind " + log);
+    	}
+    
+    	// Remaining of the flow
+    
+    
+    	@PostUnregistration
+    	public void unregistered(ServiceReference ref) {
+    		System.out.println("7 Unregistered");
+    	}
+    
+    	@Invalidate
+    	public void invalidate() {
+    		System.out.println("8 Invalidate");
+    	}
+    
+            // --- End of the callback order
+    
+    	public void doNothing() {
+    		// Do nothing...
+    	}
+    
+    }
+
+
+## Disabling proxies in iPOJO 1.6\+
+
+iPOJO 1.6.0 has generalized the proxy usage. However this mechanism can be disabled.
+
+To disable the proxies on the entire framework, just set the property `ipojo.proxy` to `disabled` (this set the default 'proxy' value). This property is either a system property (`\-Dipojo.proxy=disabled` in the command line) or a framework property (given to the framework during its initialization).
+
+You can also disable proxies for specific dependencies by using the `proxy` attribute:
+{code:java}
+@Requires(proxy=false)
+private LogService log
+
+    or
+    {code:xml}
+    <requires field="log" proxy="false"/>
+
+
+The default value of the `proxy` attribute is the value of the `ipojo.proxy` property.
+
+## Use dynamic proxies instead of smart proxies
+
+Smart proxies are generated on the fly using bytecode generation. However this mechanism may not be always supported by the VM (like Dalvik (Android)). To disabled smart proxies (used by default) and use dynamic proxy instead, set the property `ipojo.proxy.type` to `dynamic-proxy`. This property is either a system property or a framework property.
+
+## Can I use iPOJO with other OSGi implementations?
+
+iPOJO relies on the OSGi R4.1 specification, so works on any compliant implementation. Moreover, iPOJO is weekly tested on Apache Felix, Eclipse Equinox and Knopflerfish..
+For further information, refer to the [supported OSGi implementations]({{ refs.apache-felix-ipojo-supportedosgi.path }}) page and on this [blog|http://ipojo-dark-side.blogspot.com/2008/11/lessons-learned-from-ipojo-testing.html] post.
+
+## Detecting optional service unavailability
+
+Sometimes it is useful to check if an optional service dependency is fulfilled or not. In order to propose a pretty simple development model, iPOJO injects proxies by default which avoid such check (Because proxies hide such details). By disabling proxies, you can easily check to unavailability.
+
+* First, disable the proxy injection:
+{code:java}
+@Requires(proxy=false)
+private LogService log;
+
+    
+    * The injected object will be a direct reference. By default, iPOJO injects a {{Nullable}} object, on which you can call service method without checking for {{null}}. To detect Nullable objects, just use {{instanceof}}
+    {code:java}
+    @Requires(proxy=false)
+    private LogService log;
+    
+    public void doSomething() {
+        if (log instanceof Nullable) {
+            // Service unavailable
+        } else {
+           // Service available
+        }
+    }
+
+
+* If you prefer injecting `null` instead of a `Nullable`, just disable Nullable injection too. However, be care to check for `null` before each invocation.
+{code:java}
+@Requires(proxy=false, nullable=false)
+private LogService log;
+
+public void doSomething() {
+    if (log == null) {
+        // Service unavailable
+    } else {
+       // Service available
+    }
+}
+
+    
+    h2. Setting the iPOJO log level
+    
+    By default, iPOJO logs only warning and error messages. There are two different methods to configure the log level. First, you can set the global log level by setting the _ipojo.log.level_ system property. This replaces the default log level (warning). All iPOJO instances will be impacted.  However, each bundle containing component types can specify a different log level. To set this level, add the _ipojo-log-level_ header in your manifest. The possible values for these two properties are:
+    * info
+    * debug
+    * warning (default)
+    * error
+    
+    h2. Installing iPOJO in Service Mix Kernel
+    
+    You can use iPOJO in Service Mix Kernel. To deploy and start it, just execute the following command line in the ServiceMix Kernel Shell.
+    {code:xml}
+    osgi install -s mvn:org.apache.felix/org.apache.felix.ipojo/1.2.0
+
+
+The iPOJO bundle is downloaded from the central maven repository.
+
+## iPOJO and File Install
+
+Thanks to File install you can create, disposed and reconfigure instances from *cfg* files. You can also reconfiguring a creatged instance (configured to expose a [ManagedService](http://felix.apache.org/site/configuration-handler.html#ConfigurationHandler-ExposingaManagedService)) with *cfg* files too. More information about this topic is available [here|http://ipojo-dark-side.blogspot.com/2009/04/ipojo-and-file-install-configuring.html].
+
+## iPOJO handler *start* level
+
+iPOJO Handlers have a *start* level. This is *not* the `OSGi Start Level`. This level is used to determine in which order handler are configured, started and stopped. Handlers with a low level are configured and started before handlers with a high level. Moreover they are stopped after handlers with a high level. By default, handlers have no level. It means that they have the maximum level (`Integer.MAX`).
+
+Here are the levels of core handlers:
+* Service Dependency: 0 (minimum level)
+* Lifecycle Callback: 1
+* Configuration Properties: 1
+* Service Providing: 3
+* Controller Handler: no level (Integer.MAX)
+* Architecture Handler: no level (Integer.MAX)
+
+From these levels, we can see that bind methods will be called before set methods from configuration properties. So, when a POJO objects, callback are called in this order:
+1. bind methods
+1. validate method
+1. setter methods from instance configuration
+
+<div class="info" markdown="1">
+**Changes in the 1.3.0-SNAPSHOT**
+iPOJO 1.3.0-SNAPSHOT sets the lifecycle callback handler level to 2. So, setter methods from instance properties are called before the validate method.
+</div>
+
+## Why does my bundle import unused packages?
+
+If you check iPOJO bundle imported packages, you will see that some packages where added:
+* org.apache.felix.ipojo;version= 1.2.0
+* org.apache.felix.ipojo.architecture;version= 1.2.0
+* org.osgi.service.cm;version=1.2
+* org.osgi.service.log;version=1.3
+
+The `org.apache.felix.ipojo` package is the main iPOJO package. Manipulated class use it to get access to injected values. The `org.apache.felix.ipojo.architecture` package is used to expose *Architecture* service (allowing instance introspection). This service is exposed with the bundle context from the bundle declaring the component type.
+The `org.osgi.service.cm` package is imported to publish *ManagedService* and *ManagedServiceFactory* with the bundle context from the bundle declaring the component type. So, if you look for services exposed by a bundle declaring component types, you will see *ManagedServiceFactory* services.
+Finally, the `org.osgi.service.log` is imported because iPOJO delegates log to a log service (if available). This service is get from the bundle context from the bundle declaring the component type. So, to get this service, the package of the service interface is imported.  Then, according to implementations, log services may get the bundle logging the message.
+
+## How does iPOJO compare to Declarative Services or Blueprint?
+
+The following table highlights some of the features of each system, it does not attempt to highlight every feature of each.
+
+| Dependency injection | Declarative Services | Blueprint | iPOJO |
+|--|--|--|--|
+| Callback injection | Yes | Yes (public method only) | Yes |
+| Constructor injection | No | Yes | Yes |
+| Field injection | No | No | Yes |
+| Setter injection | Yes | Yes | Yes |
+| Proxy injection | No | Yes | Yes |
+| List injection | No | Yes | Yes |
+| Nullable injection | No | No | Yes |
+| Lifecycle | Declarative Services | Blueprint | iPOJO |
+|--|--|--|--|
+| Callbacks (activate/deactivate) | Yes | Yes | Yes |
+| Factory pattern | Yes | Yes | Yes |
+| Lazy initialization | Yes | Yes | Yes |
+| Damping | No | Yes | Yes |
+| Field synchronization | No | No | Yes |
+| Component lifecycle control | Yes | Partial | Yes |
+| Service lifecycle control | No | No | Yes |
+| Configuration | Declarative Services | Blueprint | iPOJO |
+|--|--|--|--|
+| Property configuration | No | Yes | Yes |
+| Field configuration | No | No | Yes |
+| Configuration Admin | Yes | No | Yes |
+| Services | Declarative Services | Blueprint | iPOJO |
+|--|--|--|--|
+| Custom attribute type | No | Yes | Yes |
+| Lazy initialization | Yes | Yes | Yes |
+| Composite services | No | No | Yes |
+| Component description | Declarative Services | Blueprint | iPOJO |
+|--|--|--|--|
+| XML | Yes | Yes | Yes |
+| Java annotations | No | No | Yes |
+| API | No | No | Yes |
+| Nonfunctional | Declarative Services | Blueprint | iPOJO |
+|--|--|--|--|
+| Multiple providers | Yes | Yes | No |
+  
+  
+  
+  
+{include:apache-felix-ipojo-footer}
\ No newline at end of file

Added: felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/using-xml-schemas.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/using-xml-schemas.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/using-xml-schemas.mdtext (added)
+++ felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/using-xml-schemas.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,65 @@
+Title: Using XML Schemas
+
+{include:apache-felix-ipojo-header}
+
+<div class="content">
+
+
+# Using XML Schemas
+
+*iPOJO provides XML schemas to check iPOJO descriptors (i.e. metadata.xml).  Several schemas are provided in order to describe the core syntax, compositions and external handlers.*
+
+{center}
+| Schema | URL | 
+|--|--|
+| iPOJO Core | [http://felix.apache.org/ipojo/schemas/CURRENT/core.xsd](http://felix.apache.org/ipojo/schemas/CURRENT/core.xsd) |
+| iPOJO Composite | [http://felix.apache.org/ipojo/schemas/CURRENT/composite.xsd](http://felix.apache.org/ipojo/schemas/CURRENT/composite.xsd) |
+| Temporal Dependency Handler | [http://felix.apache.org/ipojo/schemas/CURRENT/temporal.xsd](http://felix.apache.org/ipojo/schemas/CURRENT/temporal.xsd) |
+| Whiteboard pattern handler | [http://felix.apache.org/ipojo/schemas/CURRENT/whiteboard-pattern.xsd](http://felix.apache.org/ipojo/schemas/CURRENT/whiteboard-pattern.xsd) |
+| Extender pattern handler | [http://felix.apache.org/ipojo/schemas/CURRENT/extender-pattern.xsd](http://felix.apache.org/ipojo/schemas/CURRENT/extender-pattern.xsd) |
+| Event Admin handlers | [http://felix.apache.org/ipojo/schemas/CURRENT/event-admin.xsd](http://felix.apache.org/ipojo/schemas/CURRENT/event-admin.xsd) |
+| JMX handler | [http://felix.apache.org/ipojo/schemas/CURRENT/jmx.xsd](http://felix.apache.org/ipojo/schemas/CURRENT/jmx.xsd) |
+{center}
+
+*Note:* the schemas are also provided inside implicated bundles.
+*Note:* to use the 'dev' schemas, replace `CURRENT` by `SNAPSHOT` in the URL.
+To use those schemas you have to declares those schemas in your metadata.xml file such as in the next snippet using the iPOJO core XML-schema:
+
+    <ipojo 
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/CURRENT/core.xsd" 
+        xmlns="org.apache.felix.ipojo">
+        <component classname="..." ....>
+        </component>
+    </ipojo>
+
+First, declares the 'XMLSChema-instance' namespace. Then, declares used namespaces and schemas in the 'xsi:schemaLocation' attribute. This attribute contains pairs 'namespace url' separated by spaces. Finally, declares the default namespace to "org.apache.felix.ipojo". 
+You can also use several schemas in the same descriptor by using a header like:
+
+    <ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    	xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/CURRENT/core.xsd
+    	    org.apache.felix.ipojo.extender http://felix.apache.org/ipojo/schemas/CURRENT/extender-pattern.xsd"
+    	xmlns="org.apache.felix.ipojo"
+    	xmlns:extender="org.apache.felix.ipojo.extender">
+    	<component
+    		classname="org.apache.felix.ipojo.junit4osgi.impl.JunitExtender">
+    		<extender:extender extension="Test-Suite"
+    			onArrival="onBundleArrival" onDeparture="onBundleDeparture" />
+    		<callback transition="invalidate" method="stopping" />
+    		<callback transition="validate" method="starting" />
+    		<provides />
+    	</component>
+    	<instance
+    		component="org.apache.felix.ipojo.junit4osgi.impl.JunitExtender" />
+    </ipojo>
+
+The only difference is contained in the 'schemaLocation' attribute, which contains several pairs. You also need to declare the namespace of the used external handler.
+If you declare schemas, the iPOJO manipulator automatically checks the validity of the descriptor against the declared schemas. Moreover, if you use 'advanced' XML Editor supporting schemas, editing iPOJO descriptors should be eased with auto-completion features.
+
+## Avoid downloading XML Schemas during the build process
+The manipulator embeds the iPOJO XML Schemas to avoid using a network connection to download them during the validation process. Keep the same url, the manipulator will just resolve the URL differently to use embedded schemas. You can also skipped this shortcut thanks the the `ignoreEmbeddedSchemas` parameter (refer to the [ant task guide]({{ refs.ipojo-ant-task.path }}) and to the [maven plugin guide|iPOJO Maven Plug-in] for further information about configuration).
+  
+  
+  
+  
+{include:apache-felix-ipojo-footer}
\ No newline at end of file

Added: felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-why-choose-ipojo.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-why-choose-ipojo.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-why-choose-ipojo.mdtext (added)
+++ felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-why-choose-ipojo.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,71 @@
+Title: apache-felix-ipojo-why-choose-ipojo
+
+{include:apache-felix-ipojo-header}
+
+<div class="content">
+
+
+# Why choose iPOJO?
+
+*The OSGi Service Platform provides an excellent foundation for building dynamically extensible Java-based applications. However, such power and flexibility does not come without cost. In addition to new APIs and packaging formats, OSGi developers must shift their thinking to be able to design highly dynamic applications. Early efforts, such as the Service Binder and Service Tracker, attempted to alleviate some of these issues, as well as more recent efforts, such as Declarative Services and Spring Dynamic Modules. iPOJO is another such effort in this area. It is a service-oriented component model created *specifically* for the OSGi Service Platform.*
+
+*The purpose behind iPOJO is twofold. The first goal is to simplify OSGi development to the bare necessities. This means that providing services, using services, and dealing with dynamism should require as little effort as possible from the developer. The second goal is to push beyond support for basic OSGi mechanisms and try to more seamlessly incorporate advanced features, including component configuration, synchronization, and composition. This page summaries the key point of iPOJO.*
+
+## Simplicity
+Trying to create an OSGi-based application with services is challenging. The OSGi API is complex and a lot of knowledge about internal mechanisms has to be known to avoid synchronization issues. iPOJO provides a very simple development model; let's look:
+{code:java|Providing a service}
+@Component
+@Provides
+public class MyServiceImplementation implements MyService {
+ 	//....
+}
+
+    \\
+    {code:java|Requiring a service}
+    @Component
+    public class MyServiceConsumer {
+     	@Requires
+    	private MyService myservice;
+    
+    	// Just use your required service as any regular field !
+    }
+
+Isn't that easy? Providing and requiring OSGi services have never been so simple.
+
+## Power
+Supporting OSGi services is not the only feature of iPOJO. iPOJO provides many other features that to simplify developing sophisticated applications.  For example, iPOJO supports configuring components with Configuration Admin, sending/receiving events with the Event Admin, remote configuration with JMX, and more.
+
+## Flexibility
+Is iPOJO missing a feature you need? No problem. iPOJO provides an extensibility mechanism that allows you to mange other (custom) requirements. You can easily adapt iPOJO for your own needs. Creating an extension does not require modifications to the core, you only need to implement a custom *handler* that will be plugged on your instance. Your handlers can also use any of the other iPOJO features.
+
+## Portability
+iPOJO works on any R4.1 OSGi implementation. It also works on many Java virtual machines such as Oracle JRockit, JamVM, Dalvik (Android), and Mika. iPOJO only requires a *J2ME Foundation 1.1* virtual machine. So, iPOJO can be embedded inside mobile phone applications or inside your washing machine.
+
+## Performance
+Being powerful is great, but what about footprint and performances? iPOJO is small and was designed to stay small. The core size of iPOJO is approximately *205k* (compared to 816k for Guice-Peaberry and 2112k for the minimal Spring-DM configuration). In addition to the core, you only deploy the features you require. For example, if you need proxy injection, just deploy the temporal dependency  bundle (less than 70Kb).
+
+The run-time overhead of iPOJO is also small. On the [Peaberry benchmark](http://code.google.com/p/peaberry/wiki/Benchmarks), iPOJO has very good performance:
+{div:class=shell}
+Guice-Peaberry:	                     276.00 ns/call
+{color:#ff0000}iPOJO Service Dependency:            118.00 ns/call{color}
+Spring-DM:                          2384.00 ns/call
+{color:#ff0000}iPOJO Temporal Dependency:           159.00 ns/call{color}
+{color:#ff0000}iPOJO Temporal Dependency w/ proxy:  173.00 ns/call{color}
+{div}
+For French readers, you can find additional benchmarks in chapter 10 of [iPOJO - A flexible service-oriented component model for dynamic systems](http://clement.plop-plop.net/thesis/These%20-%20FINAL.pdf)
+
+## Development support
+Developing OSGi applications can quickly become a nightmare, when things are working as expected. iPOJO helps you debug your application (and it often happen). For starters, you can debug iPOJO components as normal OSGi applications (stack traces and line number are not modified). But thanks to iPOJO's introspection mechanisms, you can also know the structure of your application (which instance uses which service...), so you easily understand why a service dependency is not fulfilled, the value of properties, etc.
+
+## Design support
+iPOJO also provides an architecture description language to design applications in a flexible and hierarchic manner. Designed applications are expressed in terms of services and are natively dynamic, meaning they support implementation evolution and substitution. Moreover, iPOJO supports service isolation to get your own private service.
+
+## Conclusion
+[Give it a try\!]({{ refs.ipojo-in-10-minutes.path }}).
+
+For any questions or feedback, send an email on the [mailto:users@felix.apache.org]({{ refs.mailto-users-felix-apache-org.path }}) mailing list (send a mail to [mailto:users-subscribe@felix.apache.org] to subscribe).
+  
+  
+  
+  
+{include:apache-felix-ipojo-footer}
\ No newline at end of file

Added: felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/article-presentations.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/article-presentations.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/article-presentations.mdtext (added)
+++ felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/article-presentations.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,31 @@
+Title: Article & Presentations
+
+{include:apache-felix-ipojo-header}
+
+<div class="content">
+
+# Presentations
+
+* "iPOJO : This Simple Life", OSGi Community Event 2008, Berlin, Germany. [Download](http://felix.apache.org/site/presentations.data/ipojo-berlin-20080611.pdf)
+
+* "iPOJO : A flexible service-oriented component model for dynamic systems", PHD Defense, December 2008, Grenoble, France . [Download]({{ refs.-ipojo-defense-final-pdf.path }})
+
+# Articles on iPOJO Core features
+
+* Clement Escoffier, Richard S. Hall and Philippe Lalanda, iPOJO An extensible service-oriented component framework IEEE Service Computing Conference 2007 (SCC 2007) July 2007, Salt Lake City, Utah (USA)
+
+* Clement Escoffier and Richard S. Hall, Dynamically Adaptable Applications with iPOJO Service Components ([pdf](http://www-adele.imag.fr/Les.Publications/intConferences/SC2007Esc.pdf)) 6th International Symposium on Software Composition (SC 2007) March 2007, Braga, Portugal
+
+
+# Articles using iPOJO
+*  Clement Escoffier, Johann Bourcier, Philippe Lalanda, Towards a Home Application Server 5th Consumer Communications and Networking Conference (CCNC 2008) January 2008, Las Vegas, Nevada (USA)
+
+* André Bottaro, Johann Bourcier, Clément Escoffier and Philippe Lalanda, Autonomic Context-Aware Service Composition ([pdf](http://www-adele.imag.fr/Les.Publications/intConferences/ICPS2007Bot.pdf)) 2nd IEEE International Conference on Pervasive Services (ICPS'07) July 2007, Istanbul, Turkey
+
+* André Bottaro, Johann Bourcier, Clément Escoffier, Didier Donsez and Philippe Lalanda, A Multi-Protocol Service-Oriented Platform for Home Control Applications ([pdf](http://www-adele.imag.fr/Les.Publications/intConferences/CCNC2007Bot.pdf)) Demonstration at IEEE Consumer Communications and Networking Conference (CCNC 2007) January 2007, Las Vegas, Nevada (USA)
+
+* J. Bourcier, C. Escoffier, P. Lalanda, Implementing home-control applications on service platform ([pdf](http://www-adele.imag.fr/Les.Publications/intConferences/CCNC2007Bou.pdf)) 4th IEEE Consumer Communications and Networking Conference (CCNC 2007) January 2007, Las Vegas, Nevada (USA)
+
+* J. Bourcier, C. Escoffier, M. Desertot, C. Marin and A. Chazalet, A Dynamic SOA Home Control Gateway ([pdf](http://www-adele.imag.fr/Les.Publications/intConferences/ISCCC2006Bou.pdf)) International Service Computing Conference Contest, September 2006, Chicago, USA
+
+{include:apache-felix-ipojo-footer}
\ No newline at end of file

Added: felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/developing-camel-mediators-with-ipojo.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/developing-camel-mediators-with-ipojo.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/developing-camel-mediators-with-ipojo.mdtext (added)
+++ felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/developing-camel-mediators-with-ipojo.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,180 @@
+Title: Developing Camel mediators with iPOJO
+
+{include:apache-felix-ipojo-header}
+
+<div class="content">
+
+# Developing Camel mediators with iPOJO
+*The [Camel OSGi tutorial ]({{ refs.-http-activemq-apache-org-camel-tutorial-osgi-camel-part1-html.path }}) provides a very simple and neat overview of Camel. This article mentions the usage of iPOJO to implement the mediator. This document provides this implementation.*
+
+## Step 1 : Initial project setup
+Instead of using the 'spring-osgi-bundle-archetype' maven archetype, we will use the iPOJO one to create the iPOJO bundle.
+To create the simple iPOJO service project, execute the following command in your Unix/Dos console.
+
+    mvn archetype:create -DarchetypeGroupId=org.apache.felix -DarchetypeArtifactId=maven-ipojo-plugin -DarchetypeVersion=1.0.0 -DgroupId=demo -DartifactId=demo.service-ipojo-bundle -Dversion=0.1
+
+## Step 2 : Develop the interface
+So now, it is time to create the interface that we will use in the project. Create a new folder "service" in `src/main/java/demo` tree. Add the interface `TransformService.java` and copy paste the code below:
+{code:java|title=TransformService.java}
+package demo.service;
+public interface TransformService {
+    public Object transform(Object obj);
+}
+
+    h2. Step 3 : Create the class implementing the interface
+    Next, we will create the class {{TransformServiceImpl}} implementing the interface {{TransformService}}.
+    Create the class {{TransformServiceImpl.java}} in the folder {{src/main/java/demo/service/}}
+    {code:java|title=TransformServiceImpl.java}
+    package demo.service;
+    
+    import java.util.Date;
+    
+    import org.apache.commons.logging.Log;
+    import org.apache.commons.logging.LogFactory;
+    
+    public class TransformServiceImpl implements TransformService {
+        private static final transient Log LOG = LogFactory.getLog(TransformServiceImpl.class);
+        private boolean verbose = true;
+        private String prefix = "MyTransform";
+    
+        public Object transform(Object body) {
+            String answer = prefix + " set body:  " + new Date();
+            if (verbose) {
+                System.out.println(">> call >> " + answer);
+            }
+            LOG.info(">> call >>" + answer);
+            return answer;
+        }
+    
+        public boolean isVerbose() {
+            return verbose;
+        }
+    
+        public void setVerbose(boolean verbose) {
+            this.verbose = verbose;
+        }
+    
+        public String getPrefix() {
+            return prefix;
+        }
+    
+        public void setPrefix(String prefix) {
+            this.prefix = prefix;
+        }
+    }
+
+## Step 4 : Create the iPOJO configuration files
+The next step concerns the creation of the iPOJO configuration file who will allow the registration of the `TranformService` as an OSGi service.
+Create or edit the file metadata.xml in the folder src/main/resources/
+{code:xml|title=metadata.xml}
+<?xml version="1.0" encoding="UTF-8"?>
+<ipojo>
+	<component classname="demo.service.TransformServiceImpl" name="my-ipojo-transformer">
+   		<provides/>
+	</component>
+	<instance component="my-ipojo-transformer"/>
+</ipojo>
+
+    h2. Step 5 : Generate the bundle
+    Before generating the bundle, we need to edit the {{pom.xml}} file to describe our bundle.
+    {code:xml|title=pom.xml}
+    <project>
+      <modelVersion>4.0.0</modelVersion>
+      <packaging>bundle</packaging>
+      <groupId>demo</groupId>
+      <artifactId>demo.service-ipojo-bundle</artifactId>
+      <version>0.1</version>
+      <name>demo.service-ipojo-bundle</name>
+      
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>maven-bundle-plugin</artifactId>
+            <version>1.4.2</version>
+            <extensions>true</extensions>
+            <configuration>
+              <instructions>
+                <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+                <Import-Package>*</Import-Package>
+                <Export-Package>*</Export-Package>
+              </instructions>
+            </configuration>
+          </plugin>
+          <plugin>
+    	      <groupId>org.apache.felix</groupId>
+    	      <artifactId>maven-ipojo-plugin</artifactId>
+    		  <executions>
+              	<execution>
+                	<goals>
+    	              <goal>ipojo-bundle</goal>
+                   </goals>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+      
+      <dependencies>
+    	  <dependency>
+              <groupId>org.slf4j</groupId>
+              <artifactId>com.springsource.slf4j.org.apache.commons.logging</artifactId>
+              <version>1.5.0</version>
+              <scope>provided</scope>
+            </dependency>
+            <dependency>
+              <groupId>org.slf4j</groupId>
+              <artifactId>com.springsource.slf4j.api</artifactId>
+              <version>1.5.0</version>
+              <scope>provided</scope>
+            </dependency>
+            <dependency>
+              <groupId>org.slf4j</groupId>
+              <artifactId>com.springsource.slf4j.log4j</artifactId>
+              <version>1.5.0</version>
+              <scope>provided</scope>
+              <exclusions>
+                <exclusion>
+                    <groupId>log4j</groupId>
+                    <artifactId>log4j</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.log4j</groupId>
+                    <artifactId>com.springsource.org.apache.log4j</artifactId>
+                </exclusion>
+              </exclusions>
+            </dependency>
+        </dependencies>
+    </project>
+
+## Step 6 & 7: Create the Camel context file and the bundle
+These steps are exactly the same as into the OSGi Camel Tutorial. So refer to the step 6 and 7 of the [article](http://activemq.apache.org/camel/tutorial-osgi-camel-part1.html).
+## Step 8: Deploy the bundles
+We will see how to execute the Canel route on ServiceMix Kernel.
+As mentioned in the documentation, [Apache ServiceMix Kernel]({{ refs.-http-servicemix-apache-org-smx4knl-index-html.path }}) is a small OSGi based runtime which provides a lightweight container onto which various components and applications can be deployed. Moreover, the server provides administration, security, logging and provisioning features that will help you during the deployment and administration steps.
+If this is not yet done, download ServiceMix Kernel 1.0.0 server and install it. Launch the server by executing the command in the bin folder:
+
+    /Users/clement/apache-servicemix-kernel-1.0.0/bin>servicemix
+
+If this is the first time Servicemix is started, then you will see that a new data folder is created. Notes that this application requires Java 6.
+In order to allow our bundles to work with Camel, execute the following commands to download and install the 'Camel and iPOJO bundles':
+
+    servicemix> osgi install -s mvn:org.springframework/spring-tx/2.5.5
+    servicemix> osgi install -s mvn:org.apache.camel/camel-core/1.5.0
+    servicemix> osgi install -s mvn:org.apache.camel/camel-spring/1.5.0
+    servicemix> osgi install -s mvn:org.apache.camel/camel-osgi/1.5.0
+    servicemix> osgi install -s mvn:org.apache.felix/org.apache.felix.ipojo/1.0.0
+
+
+Next, copy the two jar files into the deploy folder, first the iPOJO service and next the Camel bundle. After a few seconds, you should see on the Servicemix log console the following text:
+
+    servicemix> >> call >> MyTransform set body:  Sat Dec 27 19:29:16 CET 2008
+
+Remarks :
+    * In case of trouble, use the command: osgi list to see if all the deployed bundles are installed correctly and have their status equals to active
+    * To see the log of ServiceMix, use the command: log d
+  
+  
+  
+  
+{include:apache-felix-ipojo-footer}
\ No newline at end of file

Added: felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/download.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/download.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/download.mdtext (added)
+++ felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/download.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,64 @@
+Title: Download
+
+{include:apache-felix-ipojo-header}
+
+<div class="content">
+
+
+# Download iPOJO
+
+*The actual iPOJO version is the *1.8.x*. This page contains links to download iPOJO binaries and sources of the latest version.*
+
+
+## Binaries files
+
+| Bundle or Jar file | Version | Link | Details |
+|--|--|--|--|
+| Core | 1.8.4 | [Download](http://repo1.maven.org/maven2/org/apache/felix/org.apache.felix.ipojo/1.8.4/org.apache.felix.ipojo-1.8.4.jar) | To use iPOJO, you must install and start this bundle on your OSGi runtime |
+| Architecture Command for Felix Shell | 1.6.0 | [Download](http://repo1.maven.org/maven2/org/apache/felix/org.apache.felix.ipojo.arch/1.6.0/org.apache.felix.ipojo.arch-1.6.0.jar) | This bundle allows displaying information on created instances (only instances publishing their architecture). This bundle provides a Felix command (named arch), displaying this information. |
+| Architecture Command for Gogo | 1.0.1 | [Download](http://repo1.maven.org/maven2/org/apache/felix/org.apache.felix.ipojo.arch.gogo/1.0.1/org.apache.felix.ipojo.arch.gogo-1.0.1.jar) | This bundle allows displaying information on created instances (only instances publishing their architecture). This bundle provides a Gogo commands, displaying this information. |
+| Annotations | 1.8.4 | [Download](http://repo1.maven.org/maven2/org/apache/felix/org.apache.felix.ipojo.annotations/1.8.4/org.apache.felix.ipojo.annotations-1.8.4.jar) | The iPOJO annotations allows describing components using Java annotations. iPOJO provides a set of annotations to describe component types using standard features. More details about these annotations are available [here|How to use iPOJO Annotations]. |
+| Ant Task | 1.8.6 | [Download](http://repo1.maven.org/maven2/org/apache/felix/org.apache.felix.ipojo.ant/1.8.6/org.apache.felix.ipojo.ant-1.8.6.jar) | The iPOJO Ant task allows you to create iPOJO bundle with Ant. |
+| BND Plugin | 1.8.6 | [Download](http://repo1.maven.org/maven2/org/apache/felix/bnd-ipojo-plugin/1.8.6/bnd-ipojo-plugin-1.8.6.jar) | The iPOJO BND plugin allows you to create iPOJO bundles using BND directly |
+  
+  
+| Maven Plug-in | 1.8.6 | Automatic download from the Maven repository | The iPOJO Maven plug-in allow creating iPOJO bundle with Maven. Using this plug-in requires that you configure your POM file correctly as explained [here]({{ refs.ipojo-maven-plug-in.path }}). This [tutorial |iPOJO Hello Word (Maven-Based) tutorial]demonstrates how to use this plug-in to build iPOJO bundle (both for individual project and multi-module project). |
+  
+  
+  
+  
+  
+  
+| Extender Pattern Handler | 1.4.0 | [Download](http://repo1.maven.org/maven2/org/apache/felix/org.apache.felix.ipojo.handler.extender/1.4.0/org.apache.felix.ipojo.handler.extender-1.4.0.jar) | This handler simplifies the development of extender patterns by managing bundle tracking. More info [here|Extender Pattern Handler] |
+| White-Board Pattern Handler | 1.6.0 | [Download](http://repo1.maven.org/maven2/org/apache/felix/org.apache.felix.ipojo.handler.whiteboard/1.6.0/org.apache.felix.ipojo.handler.whiteboard-1.6.0.jar) | This handler simplifies the development of white-board patterns by managing service tracking. More info [here|White Board Pattern Handler] |
+| Temporal Dependency Handler | 1.6.0 | [Download](http://repo1.maven.org/maven2/org/apache/felix/org.apache.felix.ipojo.handler.temporal/1.6.0/org.apache.felix.ipojo.handler.temporal-1.6.0.jar) | This handler proposes a new way to handle service dependencies allowing a thread to wait for a provider. More info [here|Temporal Service Dependency] |
+| JMX Handler | 1.4.0 | [Download](http://repo1.maven.org/maven2/org/apache/felix/org.apache.felix.ipojo.handler.jmx/1.4.0/org.apache.felix.ipojo.handler.jmx-1.4.0.jar) | This handler allows remote instance introspection and reconfiguration via JMX. More info [here|iPOJO JMX Handler] |
+| Event Admin Handlers | 1.8.0 | [Download](http://repo1.maven.org/maven2/org/apache/felix/org.apache.felix.ipojo.handler.eventadmin/1.8.0/org.apache.felix.ipojo.handler.eventadmin-1.8.0.jar) | This handler avoids the burden when dealing with the Event Admin |
+
+## Sources
+
+iPOJO Sources are available on the Apache Felix Project source trunk. To download iPOJO sources, use the following command:
+{code:html}
+svn checkout https://svn.apache.org/repos/asf/felix/trunk/ipojo
+
+    Once downloaded, you can compile iPOJO with:
+    {code:html}
+    mvn clean install
+
+To compile iPOJO examples, use the following command:
+{code:html}
+mvn clean install -Pexamples
+
+    To compile iPOJO tests, use the following command:
+    {code:html}
+    mvn clean install -Ptests,integration-tests
+
+
+## Executing iPOJO tests
+
+iPOJO Tests use the `junit4osgi` framework and `pax exam`. To execute tests, just compile them (with the `mvn clean install` from the `tests` directory) and then execute the integration tests by executing the `mvn clean integration-test` command from the `tests/integration-tests` folder.
+  
+  
+  
+  
+{include:apache-felix-ipojo-footer}
\ No newline at end of file

Added: felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/future-ideas.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/future-ideas.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/future-ideas.mdtext (added)
+++ felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/future-ideas.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,20 @@
+Title: Future Ideas
+
+{include:apache-felix-ipojo-header}
+
+<div class="content">
+
+# iPOJO Future Ideas
+
+This page documents various ideas to be considered in the future, but not currently on the road map.
+
+## Service Property Injection
+
+Access to service properties is sometimes necessary to gain access to service configuration or as a way to defer service object creation. Currently, the only way to access service properties is via a service callback method that accepts a `ServiceReference` object. The downside of this approach is that it ties your component to the OSGi API. Other possibilities include adding support for:
+
+1. Service property injection into component fields.
+  
+  
+  
+  
+{include:apache-felix-ipojo-footer}
\ No newline at end of file

Added: felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/handlers-proposition.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/handlers-proposition.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/handlers-proposition.mdtext (added)
+++ felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/handlers-proposition.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,17 @@
+Title: Handlers Proposition
+
+This page gathers *future* handlers for iPOJO. Some handlers are planned or are under study.
+
+## Component Binding
+
+* WireAdmin : this handler allows components to push or to receive data via the Wire Admin. Either the component will be connected to an existing wire, either a new wire will be created.
+* SCA Wire : this handler allows simply to create a static binding between 2 components.
+
+## Component Management
+
+* Dependency Manager : this handler will implement the dependency manager interfaces. It will allow to add/remove provided service and service depednency dynamically.
+
+## Misc
+
+* CronService : this handler allows a component to be notified *periodically* via a Cron Service.
+* MonitorAdmin
\ No newline at end of file

Added: felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/ipojo-news.mdtext
URL: http://svn.apache.org/viewvc/felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/ipojo-news.mdtext?rev=1421893&view=auto
==============================================================================
--- felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/ipojo-news.mdtext (added)
+++ felix/site/trunk/content/documentation/subprojects/apache-felix-ipojo/ipojo-news.mdtext Fri Dec 14 14:29:22 2012
@@ -0,0 +1,48 @@
+Title: iPOJO-news
+Excerpt:  * *iPOJO Core, Composite and Annotations 1.8.4 are now available* : iPOJO Runtime (Core), the composite support and the annotations are now available from the [Download|download] section and the Maven Central repository. (2012-11-06) * *iPOJO Manipulator 1.8.6 is now available* : The new manipulator, the iPOJO Ant task, Maven and BND plugin are now available from the [Download|download] section and the Maven Central repository. (2012-11-06) * *iPOJO Core, Composite and Annotations 1.8.2 are now available* : iPOJO Runtime (Core), the composite support and the annotations are now available from the [Download|download] section and the Maven Central repository. (2012-05-14) * *iPOJO Manipulator 1.8.4 is now available* : The new manipulator, the iPOJO Ant task, Maven and BND plugin are now available from the [Download|download] section and the Maven Central repository. (2012-04-06) * *iPOJO Manipulator 1.8.2 is now available* : The new manipulator, the iPOJO Ant task, M
 aven and BND plugin are now available from the [Download|download] section and the Maven Central repository. (2011-12-18) * *iPOJO Whiteboard Pattern Handler 1.6.0 available* : The whiteboard pattern handler 1.6.0 is now available from [Download|download], Maven Central and Felix OBR. (2011-07-03) * *iPOJO Event Admin Handler 1.8.0 available* : The iPOJO Event Admin Handler 1.8.0 is now available from [Download|download], Maven Central and Felix OBR. (2011-05-19) * *iPOJO Composite 1.8.0 available* : The iPOJO Composite 1.8.0 is now available from [Download|download], Maven Central and Felix OBR. (2011-02-27) * *iPOJO Web Console Plugin 1.6.0 available* : The web console plugin adding iPOJO informations is now available from [Download|download], Maven Central and Felix OBR. (2011-02-05) * *maven-ipojo-plugin 1.8.0 available* : The maven-ipojo-plugin 1.8.0 is now available from Maven Central. Enjoy ! (2011-01-28) * *iPOJO Core,Annotations, Manipulator and Ant Task 1.8.0 avail
 able* : The 1.8.0 version of these projects are now available from [Download|download]. Enjoy ! (2011-01-22) * *iPOJO Core 1.6.8 available* : The iPOJO Core 1.6.8 is now available from [Download|download] and Felix OBR.  Enjoy ! (2010-12-05) * *iPOJO Core 1.6.6 available* : The iPOJO Core 1.6.6 is now available from [Download|download] and Felix OBR.  Enjoy ! (2010-10-24) * *iPOJO Arch command for gogo 1.0.1 available* : The Gogo command to introspect iPOJO instances and factories compatible with the latest Gogo is now available from [Download|download] page and from the Apache Felix OBR. Enjoy ! (2010-10-02) * *iPOJO Core, Annotations and Manipulator 1.6.4 available* : New (bug-fix) version available of the core, annotations and manipulator. Enjoy ! (2010-09-03) * *iPOJO Arch command for gogo 1.0.0 available* : The Gogo command to introspect iPOJO instances and factories is now available from [Download|download] page and from the Apache Felix OBR. Enjoy ! (2010-07-24) * *iP
 OJO Temporal handler and event admin handler 1.6.0 available* : iPOJO Event Admin handler and Temporal dependency handler 1.6.0 are now available from [Download|download] page and from the Apache Felix OBR. Enjoy ! (2010-05-27)
+
+{include:apache-felix-ipojo-header}
+
+<div class="content">
+
+
+# What's hot ? 
+
+
+* *iPOJO Core, Composite and Annotations 1.8.4 are now available* : iPOJO Runtime (Core), the composite support and the annotations are now available from the [Download]({{ refs.download.path }}) section and the Maven Central repository. (2012-11-06)
+* *iPOJO Manipulator 1.8.6 is now available* : The new manipulator, the iPOJO Ant task, Maven and BND plugin are now available from the [Download]({{ refs.download.path }}) section and the Maven Central repository. (2012-11-06)
+* *iPOJO Core, Composite and Annotations 1.8.2 are now available* : iPOJO Runtime (Core), the composite support and the annotations are now available from the [Download]({{ refs.download.path }}) section and the Maven Central repository. (2012-05-14)
+* *iPOJO Manipulator 1.8.4 is now available* : The new manipulator, the iPOJO Ant task, Maven and BND plugin are now available from the [Download]({{ refs.download.path }}) section and the Maven Central repository. (2012-04-06)
+* *iPOJO Manipulator 1.8.2 is now available* : The new manipulator, the iPOJO Ant task, Maven and BND plugin are now available from the [Download]({{ refs.download.path }}) section and the Maven Central repository. (2011-12-18)
+* *iPOJO Whiteboard Pattern Handler 1.6.0 available* : The whiteboard pattern handler 1.6.0 is now available from [Download]({{ refs.download.path }}), Maven Central and Felix OBR. (2011-07-03)
+* *iPOJO Event Admin Handler 1.8.0 available* : The iPOJO Event Admin Handler 1.8.0 is now available from [Download]({{ refs.download.path }}), Maven Central and Felix OBR. (2011-05-19)
+* *iPOJO Composite 1.8.0 available* : The iPOJO Composite 1.8.0 is now available from [Download]({{ refs.download.path }}), Maven Central and Felix OBR. (2011-02-27)
+* *iPOJO Web Console Plugin 1.6.0 available* : The web console plugin adding iPOJO informations is now available from [Download]({{ refs.download.path }}), Maven Central and Felix OBR. (2011-02-05)
+* *maven-ipojo-plugin 1.8.0 available* : The maven-ipojo-plugin 1.8.0 is now available from Maven Central. Enjoy ! (2011-01-28)
+* *iPOJO Core,Annotations, Manipulator and Ant Task 1.8.0 available* : The 1.8.0 version of these projects are now available from [Download]({{ refs.download.path }}). Enjoy ! (2011-01-22)
+* *iPOJO Core 1.6.8 available* : The iPOJO Core 1.6.8 is now available from [Download]({{ refs.download.path }}) and Felix OBR.  Enjoy ! (2010-12-05)
+* *iPOJO Core 1.6.6 available* : The iPOJO Core 1.6.6 is now available from [Download]({{ refs.download.path }}) and Felix OBR.  Enjoy ! (2010-10-24)
+* *iPOJO Arch command for gogo 1.0.1 available* : The Gogo command to introspect iPOJO instances and factories compatible with the latest Gogo is now available from [Download]({{ refs.download.path }}) page and from the Apache Felix OBR. Enjoy ! (2010-10-02)
+* *iPOJO Core, Annotations and Manipulator 1.6.4 available* : New (bug-fix) version available of the core, annotations and manipulator. Enjoy ! (2010-09-03)
+* *iPOJO Arch command for gogo 1.0.0 available* : The Gogo command to introspect iPOJO instances and factories is now available from [Download]({{ refs.download.path }}) page and from the Apache Felix OBR. Enjoy ! (2010-07-24)
+* *iPOJO Temporal handler and event admin handler 1.6.0 available* : iPOJO Event Admin handler and Temporal dependency handler 1.6.0 are now available from [Download]({{ refs.download.path }}) page and from the Apache Felix OBR. Enjoy ! (2010-05-27)
+* *iPOJO 1.6.2 available* : iPOJO 1.6.2 is now available from [Download]({{ refs.download.path }}) page and from the Apache Felix OBR. Enjoy ! (2010-05-27)
+* *iPOJO 1.6.0 available* : iPOJO 1.6.0 is now available from the [Download]({{ refs.download.path }}) page and from Apache Felix OBR. Enjoy ! (2010-04-25)
+* *iPOJO Web Console Plugin 1.4.4 available* : new webconsole plugin available to get iPOJO metadata [Download]({{ refs.download.path }}) page and from Apache Felix OBR (2009-09-18)
+* *iPOJO Manipulator 1.4.2 available* : the manipulator now supports Windows directory manipulation. It's available from the [Download]({{ refs.download.path }}) page and from Apache Felix OBR (2009-09-11)
+* *iPOJO 1.4.0 available!* : iPOJO 1.4.0 is now available from the [Download]({{ refs.download.path }}) page and from Apache Felix OBR. Enjoy ! (2009-07-29)
+* *New web site... and some issues* : the iPOJO web site has changed. Enjoy! However, we're still setting everything correctly, it should be done shortly. (2009-07-08)
+
+* *iPOJO And Distributed Services* : New tutorial about Distributed OSGi and iPOJO available. (2009-07-05)
+
+* *iPOJO web console plugin is now available* : Manages your iPOJO system with the Apache Felix Web Console. More info [here]({{ refs.ipojo-webconsole-plugin.path }}) (2009-06-30)
+* *iPOJO online manipulator is now available* : It allows to avoid offline manipulation! More info [here]({{ refs.apache-felix-ipojo-online-manipulator.path }}) (2009-04-22)
+* *iPOJO API is now in the iPOJO Trunk* : The iPOJO API is now available from the iPOJO Trunk (2009-02-09)
+* *Integrating iPOJO inside Eclipse* : [How to don't break your compile & run cycle]({{ refs.apache-felix-ipojo-eclipse-integration.path }}) (2009-02-05)
+* *Towards iPOJO 1.2.0* : The release process has began (2009-01-15)
+* *Release of the Apache Felix iPOJO 1.0.0* : iPOJO 1.0.0 is available in the [download section]({{ refs.download.path }}), Enjoy! (2008-10-22)
+  
+  
+  
+  
+{include:apache-felix-ipojo-footer}
\ No newline at end of file



Mime
View raw message