Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "JFace Data Binding/PojoBindable/PojoBindableSVN"
(→Pojo Bindable & SVN projects) |
(→Pojo Bindable & SVN projects) |
||
Line 120: | Line 120: | ||
</li> | </li> | ||
<li>[http://dynaresume.googlecode.com/svn/trunk/JFace-Pojo-Bindable/examples/org.eclipse.core.examples.databinding.pojo.bindable/ org.eclipse.core.examples.databinding.pojo.bindable]: Pojo Bindable bundle.</li> | <li>[http://dynaresume.googlecode.com/svn/trunk/JFace-Pojo-Bindable/examples/org.eclipse.core.examples.databinding.pojo.bindable/ org.eclipse.core.examples.databinding.pojo.bindable]: Pojo Bindable bundle.</li> | ||
+ | <li>TODO other bundles (see screenshot). | ||
+ | </li> | ||
+ | [[Image:PojoBindableSVN_OSGiContext_Projects.png]] | ||
+ | <li>Import the bundle org.eclipse.osgi as binary project | ||
+ | [[Image:PojoBindableSVN_OSGiContext_ImportOrgEclipseOsiBundle.png]] | ||
</ol> | </ol> | ||
</li> | </li> | ||
</ol> | </ol> | ||
− | + | ||
+ | TODO : explain each bundles. | ||
== Pojo Bindable & EclipseLink == | == Pojo Bindable & EclipseLink == |
Revision as of 07:55, 12 April 2010
Contents
Pojo Bindable SVN
For the last version of Pojo Bindable you can (for the moment) get it from the SVN on Dynaresume project. You can find the whole Pojo bindable project at http://dynaresume.googlecode.com/svn/trunk/JFace-Pojo-Bindable/ :
- dependencies. This folder contains the ASM bundles required by Pojo Bindable :
- com.springsource.org.objectweb.asm : ASM bundle "org.objectweb.asm" version of 3.2.0 getted from SpringSource Enterprise Bundle Repository.
- com.springsource.org.objectweb.asm.commons : ASM Commons bundle "org.objectweb.asm" version of 3.2.0 getted from SpringSource Enterprise Bundle Repository.
- com.springsource.org.objectweb.asm.tree: ASM Tree bundle "org.objectweb.asm" version of 3.2.0 getted from SpringSource Enterprise Bundle Repository. This bundle is not required for Pojo Bindable but just required for com.springsource.org.objectweb.asm.commons bundle.
- org.eclipse.core.databinding.pojo.bindable: Pojo Bindable bundle project.
- examples. This folder contains Java Agent/OSGi examples with Pojo Bindable.
- osgi-equinox. This folder contains OSGi bundles required to use Pojo Bindable into OSGi context.
- tests. This folder contains tests with pojo Bindable.
Pojo Bindable into OSGi context
You can find a basic sample with Pojo bindable into org.eclipse.core.examples.databinding.pojo.bindable.equinox bundle. This bundle has an Activator which create a basic PojoPerson coming from another bundle org.eclipse.core.examples.databinding.pojo.bindable.model:
package org.eclipse.core.examples.databinding.pojo.bindable.model; public class PojoPerson { String name = "HelloWorld"; public String getName() { return name; } public void setName(String name) { this.name = name; } }
and add it a PropertyChangeListener listener :
public class Activator implements BundleActivator { /* * (non-Javadoc) * * @see * org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext * ) */ public void start(BundleContext context) throws Exception { // Create Pojo instance PojoPerson person = new PojoPerson(); PropertyChangeListener listener = new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent event) { System.out.println("---------- Property User changed --------"); System.out.println(" PropertyName=" + event.getPropertyName()); System.out.println(" OldValue=" + event.getOldValue()); System.out.println(" NewValue=" + event.getNewValue()); System.out .println("------------------------------------------"); } }; // Add Listener try { Method m = person.getClass().getMethod("addPropertyChangeListener", String.class, PropertyChangeListener.class); m.invoke(person, "name", listener); } catch (Exception e) { e.printStackTrace(); } // Change name property. person.setName("New name"); } ... }
When bundle is started, you will see on console :
---------- Property User changed -------- PropertyName=name OldValue=HelloWorld NewValue=New name ------------------------------------------
You can notice that there is no dependencies to Pojo Bindable in this code. If Pojo Bindable is well configured into OSGi context, when PojoPersonn Class is used, the bytecode is updated when Class is loaded to add PropertyChangeSupport.
Pojo Bindable works into OSGi context only with Equinox. Indead Pojo bindable provides an OSGi fragment org.eclipse.core.databinding.pojo.bindable.equinox.weaving which is linked to org.eclipse.osgi and use Adaptor Hook.
Pojo Bindable & SVN projects
To test the bundle org.eclipse.core.examples.databinding.pojo.bindable.equinox, you must :
- import from SVN the projects :
- the 3 ASM projects stored into dependencies :
- com.springsource.org.objectweb.asm : ASM bundle "org.objectweb.asm" version of 3.2.0 getted from SpringSource Enterprise Bundle Repository.
- com.springsource.org.objectweb.asm.commons : ASM Commons bundle "org.objectweb.asm" version of 3.2.0 getted from SpringSource Enterprise Bundle Repository.
- com.springsource.org.objectweb.asm.tree: ASM Tree bundle "org.objectweb.asm" version of 3.2.0 getted from SpringSource Enterprise Bundle Repository. This bundle is not required for Pojo Bindable but just required for com.springsource.org.objectweb.asm.commons bundle.
- org.eclipse.core.examples.databinding.pojo.bindable: Pojo Bindable bundle.
- TODO other bundles (see screenshot).
- Import the bundle org.eclipse.osgi as binary project
- the 3 ASM projects stored into dependencies :
TODO : explain each bundles.
Pojo Bindable & EclipseLink
EclipseLink provider Dynamic Weaving Fragment for Equinox into org.eclipse.persistence.jpa.equinox.weaving fragment to transform bytecode.
- Download org.eclipse.persistence.jpa.equinox.weaving
- Download org.eclipse.persistence.jpa.equinox.bindable. This bundle require a OSGi Fragment to configure Bindable properties (packages, debug mode...). You can find an example into fragment org.eclipse.persistence.examples.jpa.equinox.bindable.fragment which contains bindable.properties.