Hi Nicolas,

I am confused. I am using the Spatialite datastore with OJ r4620 for reading my 
existing Spatialite databases with good success and I am sure that I do not 
have mod_spatialite nor the dependencies in my OJ installation.

Where does you code try to find mod_spatialite and the dll files, from /lib/ext 
or somewhere else? With which Spatialite binaries have you been testing? Are 
you sure that mod_spatialite gets loaded, for example, can you run datastore 
query “select transform(geometry,4326) from my_table” with Spatialite datastore 
connection? If you can I must believe that mod_spatialite is loaded because 
standard SQLite does not have the Transform function.

I was able to make Spatialite datastore to work on one computer with r4620 but 
not with another one. The problematic PC gives just ClassNotFound messages 
about org.sqlite.SQLiteConfig for me and I haven’t found yet what is the 
difference between these two installations.

-Jukka Rahkonen-


Nicolas Ribot wrote:

Some notes concerning Sqlite/Spatialite support.

My primary goal was to support *spatialite*, ie, as you said, with a valid 
spatialite installation for the target platform (mod_spatialite available).
The main reason is I wanted the mechanism to be as close as possible from other 
Spatial databases support, that rely more or less on OGC SFSQL. For that, 2 
conditions are searched:
1) spatial tables metadata (geometr_columns, all_sdo_geom_metadata
2) spatial functions/indexes, that are used by spatialDatabases framework to 
query bbox, to use index, etc.

DB Query is already super strong at supporting many flavours of SQLite spatial 
columns.

Current code tries to load mod_spatialite and report an error in the log if not 
found.
SQL queries won't be built if no spatialite extension is found. I only test it 
on my platform, where mod_spatialite is installed.

I didn't know about GeoPackage. I will look at it.

Nicolas


On 13 December 2015 at 23:59, Rahkonen Jukka (MML) 
<jukka.rahko...@maanmittauslaitos.fi<mailto:jukka.rahko...@maanmittauslaitos.fi>>
 wrote:
Works now but SQLite jdbc driver must still be in \lib. Using 
\lib\ext\dbdatastore gives ClassNotFound error.

Nico can confirm but I suppose that use of native SpatiaLite binaries is not 
supported. DB Query has the support but user should give the name of the 
extension to be loaded (.dll or .so) and connection with SQLite should be made 
in  a bit different way by running SELECT load_extension('mod_spatialite').
Perhaps there could be another file browser in the SpatiaLite Add connection 
dialog for the Extension file. If the selection is not empty the connection 
would be created with SELECT load_extension('given_extension'). Use of 
extensions is error prone because architecture must match with the jre that OJ 
is running on (32-bit or 64-bit) and it is not enough to find the extension but 
all dependencies referred from the extension must be found also and similarly 
they must me 32-bit or 64-bit.

DB Query code can also parse geometry blobs encoded according to GeoPackage 
standard. For adding GPKG support through datastore it should be made to 
resolve the GeoPackage metadata. Metadata tables are well defined in the 
standard and they are rather close to other SQL metadata schemas 
https://portal.opengeospatial.org/files/?artifact_id=63378.

Perhaps the name of the datastore could be SQLite datastore instead of 
SpatiaLite datastore because it can read geometries also from plain SQLite 
database files which do not know anything about SpatiaLite.

-Jukka Rahkonen-



edgar.soldin wrote:

looks like a problem w/ my reflection code. please try r4620.

1.
it should have a folder lib/ext/dbdatastore/ to put your jdbc jars into.

2.
if spatialite still won't work please send a short step-by-step plus example 
file for me to directly work it out

i assume you remember to put the dll(s) into lib/native/x##/ automatically. 
remind me please. it works w/o the dll's but with them you get some sql macros 
you wouldn't have otherwise, right?

..ede

On 13.12.2015 22:19, Rahkonen Jukka (MML) wrote:
> Hi,
>
> Spatialite store appears on the list and I can create a store with the file 
> browser. For making the connection I had to copy sqlite-jdbc-3.8.6.jar from 
> \lib\ext into \lib. However, even now the connection fails with exception:
>
> java.lang.NoSuchMethodException: 
> org.sqlite.SQLiteConfig.enableLoadExtension(java.lang.Boolean)
>       at java.lang.Class.getMethod(Unknown Source)
>       at 
> com.vividsolutions.jump.datastore.spatialite.SpatialiteDataStoreDriver.createConnection(SpatialiteDataStoreDriver.java:63)
>       at 
> com.vividsolutions.jump.workbench.datastore.ConnectionDescriptor.createConnection(ConnectionDescriptor.java:75)
>       at 
> com.vividsolutions.jump.workbench.datastore.ConnectionManager.getOpenConnection(ConnectionManager.java:75)
>       at 
> com.vividsolutions.jump.workbench.ui.plugin.datastore.PasswordPrompter.getOpenConnection(PasswordPrompter.java:36)
>       at 
> com.vividsolutions.jump.workbench.ui.plugin.datastore.AddDatastoreLayerPanel.loadDatasetList(AddDatastoreLayerPanel.java:270)
>       at 
> com.vividsolutions.jump.workbench.ui.plugin.datastore.AddDatastoreLayerPanel.populateDatasetTree(AddDatastoreLayerPanel.java:197)
>       at 
> com.vividsolutions.jump.workbench.ui.plugin.datastore.AddDatastoreLayerPanel.getDatasetOutline(AddDatastoreLayerPanel.java:164)
>       at 
> com.vividsolutions.jump.workbench.ui.plugin.datastore.AddDatastoreLayerPanel.access$100(AddDatastoreLayerPanel.java:39)
>       at 
> com.vividsolutions.jump.workbench.ui.plugin.datastore.AddDatastoreLayerPanel$2.actionPerformed(AddDatastoreLayerPanel.java:67)
>       at javax.swing.JComboBox.fireActionEvent(Unknown Source)
>       at javax.swing.JComboBox.setSelectedItem(Unknown Source)
>       at javax.swing.JComboBox.setSelectedIndex(Unknown Source)
>       at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(Unknown 
> Source)
>       at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
>       at java.awt.Component.processMouseEvent(Unknown Source)
>       at javax.swing.JComponent.processMouseEvent(Unknown Source)
>       at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(Unknown 
> Source)
>       at java.awt.Component.processEvent(Unknown Source)
>       at java.awt.Container.processEvent(Unknown Source)
>       at java.awt.Component.dispatchEventImpl(Unknown Source)
>       at java.awt.Container.dispatchEventImpl(Unknown Source)
>       at java.awt.Component.dispatchEvent(Unknown Source)
>       at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
>       at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
>       at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
>       at java.awt.Container.dispatchEventImpl(Unknown Source)
>       at java.awt.Window.dispatchEventImpl(Unknown Source)
>       at java.awt.Component.dispatchEvent(Unknown Source)
>       at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
>       at java.awt.EventQueue.access$200(Unknown Source)
>       at java.awt.EventQueue$3.run(Unknown Source)
>       at java.awt.EventQueue$3.run(Unknown Source)
>       at java.security.AccessController.doPrivileged(Native Method)
>       at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown 
> Source)
>       at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown 
> Source)
>       at java.awt.EventQueue$4.run(Unknown Source)
>       at java.awt.EventQueue$4.run(Unknown Source)
>       at java.security.AccessController.doPrivileged(Native Method)
>       at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown 
> Source)
>       at java.awt.EventQueue.dispatchEvent(Unknown Source)
>       at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
>       at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
>       at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
>       at java.awt.WaitDispatchSupport$2.run(Unknown Source)
>       at java.awt.WaitDispatchSupport$4.run(Unknown Source)
>       at java.security.AccessController.doPrivileged(Native Method)
>       at java.awt.WaitDispatchSupport.enter(Unknown Source)
>       at java.awt.Dialog.show(Unknown Source)
>       at java.awt.Component.show(Unknown Source)
>       at java.awt.Component.setVisible(Unknown Source)
>       at java.awt.Window.setVisible(Unknown Source)
>       at java.awt.Dialog.setVisible(Unknown Source)
>       at 
> org.openjump.core.ui.plugin.file.OpenWizardPlugIn.execute(OpenWizardPlugIn.java:98)
>       at 
> com.vividsolutions.jump.workbench.plugin.AbstractPlugIn$1.actionPerformed(AbstractPlugIn.java:342)
>       at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
>       at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
>       at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
>       at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
>       at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown 
> Source)
>       at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
>       at java.awt.Component.processMouseEvent(Unknown Source)
>       at javax.swing.JComponent.processMouseEvent(Unknown Source)
>       at java.awt.Component.processEvent(Unknown Source)
>       at java.awt.Container.processEvent(Unknown Source)
>       at java.awt.Component.dispatchEventImpl(Unknown Source)
>       at java.awt.Container.dispatchEventImpl(Unknown Source)
>       at java.awt.Component.dispatchEvent(Unknown Source)
>       at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
>       at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
>       at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
>       at java.awt.Container.dispatchEventImpl(Unknown Source)
>       at java.awt.Window.dispatchEventImpl(Unknown Source)
>       at java.awt.Component.dispatchEvent(Unknown Source)
>       at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
>       at java.awt.EventQueue.access$200(Unknown Source)
>       at java.awt.EventQueue$3.run(Unknown Source)
>       at java.awt.EventQueue$3.run(Unknown Source)
>       at java.security.AccessController.doPrivileged(Native Method)
>       at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown 
> Source)
>       at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown 
> Source)
>       at java.awt.EventQueue$4.run(Unknown Source)
>       at java.awt.EventQueue$4.run(Unknown Source)
>       at java.security.AccessController.doPrivileged(Native Method)
>       at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown 
> Source)
>       at java.awt.EventQueue.dispatchEvent(Unknown Source)
>       at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
>       at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
>       at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
>       at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
>       at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
>       at java.awt.EventDispatchThread.run(Unknown Source)
>
>
> -----Alkuperäinen viesti-----
> Lähettäjä: edgar.sol...@web.de<mailto:edgar.sol...@web.de> 
> [mailto:edgar.sol...@web.de<mailto:edgar.sol...@web.de>]
> Lähetetty: 13. joulukuuta 2015 21:40
> Vastaanottaja: 
> jump-pilot-devel@lists.sourceforge.net<mailto:jump-pilot-devel@lists.sourceforge.net>
> Aihe: Re: [JPP-Devel] Adding other spatial databases support in OJ
> core
>
> Jukka,
>
> please try r4614 PLUS.. ede
>
> On 13.12.2015 19:00, Rahkonen Jukka (MML) wrote:
>> Very interesting. Unfortunately r4609 did not build 
>> http://vorboss.dl.sourceforge.net/project/jump-pilot/OpenJUMP_snapshots/OpenJUMP-20151213-r4609.log.
>>
>>
>>
>> -Jukka Rahkonen-
>>
>>
>>
>> Nicolas Ribot wrote:
>>
>>
>>
>> Hi,
>>
>>
>>
>> I made a commit (r4609) adding Spatial databases support for MySQL/MariaDB 
>> and Spatialite.
>>
>>
>>
>> Some points concerning this commit:
>>
>>
>>
>> . FilterQuery and Adhoc queries are supported for all spatial
>> databases
>>
>> . When a wrong WHERE clause is added to a datasource, SQL error is
>> displayed and layer is removed from Panel(*)
>>
>> . Added some icons according to connection type and status:
>>
>>
>>
>> Inline images 1
>>
>>
>>
>> . MariaDB: supports WKB and natives binary types, (thanks to code
>> from Larry Reeder)
>>
>> . Spatialite: supports Spatialite binary type, WKB and WKT, supports several 
>> geometry_column metadata table layout.
>>
>> . Spatialite database file can be choosen with a FileChooser instead of 
>> classic server/dbname/user/pwd fields, as they are not relevant for 
>> Spatialite:
>>
>>
>>
>> Inline images 2
>>
>>
>>
>> Microsoft® SQL Server support should come soon.
>>
>>
>>
>> (*) Michaël & ede: To manage SQL errors when adding a database layer, I 
>> modified ImageCacheRenderer: this is actually here the error is detected 
>> (and by default, only a warning is issued, which is fine: sometime, 
>> FeatureCollection returns a NoSuchFeatureException because of an extent 
>> error, and in this case, the layer should be added to the LayerPanel).
>>
>>
>>
>> AFAIU, when choosing a layer from a datastore, the OJ Layer is added to the 
>> panel, then a separate thread tries to load the Features. This thread 
>> triggers the actual SQL code for the layer.
>>
>> Instead of testing the layer each time a WHERE clause is added/modified, I 
>> chose to catch the SQLException in ImageCacheRenderer thread, then I remove 
>> the layer from the Panel. In case of other error types, layer is added to 
>> the Panel.
>>
>>
>>
>> Nicolas
>>
>>
>>
>>
>>
>>
>>
>> On 13 December 2015 at 12:20, 
>> <edgar.sol...@web.de<mailto:edgar.sol...@web.de> 
>> <mailto:edgar.sol...@web.de<mailto:edgar.sol...@web.de>>> wrote:
>>
>>     the functionally correct approach of course would be adding the layer 
>> only after the request went trough fine. you can create layers and feature 
>> collections and throw them away if it wont work out.
>>
>>     ..ede
>>
>>     On 13.12.2015 00:17, Nicolas Ribot wrote:
>>     > Yes good idea, I will add a test before loading a layer.
>>     >
>>     > Nicolas
>>     >
>>     > On 12 December 2015 at 20:22, Michaël Michaud 
>> <m.michael.mich...@orange.fr<mailto:m.michael.mich...@orange.fr> 
>> <mailto:m.michael.mich...@orange.fr<mailto:m.michael.mich...@orange.fr>> 
>> <mailto:m.michael.mich...@orange.fr<mailto:m.michael.mich...@orange.fr> 
>> <mailto:m.michael.mich...@orange.fr<mailto:m.michael.mich...@orange.fr>>>> 
>> wrote:
>>     >
>>     >     Hi Nicolas,
>>     >
>>     >     Thanks for your answer.
>>     >
>>     >     Just one idea about the problem Jukka has mentionned :
>>     >     Maybe the query should be tested before the Layer is created.
>>     >     A way to do that would be to add (or replace)  the LIMIT clause 
>> with value 0 to have a lightweight query
>>     >     giving the opportunity to catch a SQLException.
>>     >     May not be the cleanest way to solve the problem though (several 
>> classes to patch).
>>     >
>>     >     Michaël
>>     >
>>     >     Le 12/12/2015 16:31, Nicolas Ribot a écrit :
>>     >>     Hi Michaël,
>>     >>
>>     >>     Thanks for the insight.
>>     >>
>>     >>     I'm currently refactoring a bit the SpatialDatabases code.
>>     >>     The error you pointed out showed me some problems with current 
>> code, and as you noted, I have to instantiate a correct, concrete class for 
>> each detected DSConnection.
>>     >>
>>     >>     I'm finalising my todo list, but right now, FilterQuery and 
>> AdhocQuery can be ran on Postgis, Oracle, MySQL and Spatialite databases the 
>> same way.
>>     >>
>>     >>     I'm currently finishing the support for Spatialite, that can be 
>> tricky: geometry column can contain WKT, WKB or native Spatialite binary 
>> format. Still have to correct the ValueConvert to correctly detect and 
>> convert each type.
>>     >>
>>     >>     MySQL support is added with support for both WKB storage, 
>> internal binary storage (code from DBQuery).
>>     >>     Layer extent is now correctly retrieved but has to be tested on 
>> big datasets (it merely uses a textual aggregation of all geometries to 
>> build the resulting envelope).
>>     >>
>>     >>     I think I will be able to commit fixes soon.
>>     >>
>>     >>     I'm stuck, though, on the problem Jukka mentioned: if you add a 
>> wrong where clause to the layer to load, error is detected in the 
>> com.vividsolutions.jump.workbench.ui.renderer.ImageCachingRenderer( line 90) 
>> where the error message is displayed in Window toolbar.
>>     >>     I can display an ErrorDialog with SQL error, but do not know how 
>> to cleanly remove the layer from the panel.
>>     >>
>>     >>     Nicolas
>>     >>
>>     >>
>>     >>     On 12 December 2015 at 15:29, Michaël Michaud 
>> <m.michael.mich...@orange.fr<mailto:m.michael.mich...@orange.fr> 
>> <mailto:m.michael.mich...@orange.fr<mailto:m.michael.mich...@orange.fr>> 
>> <mailto:m.michael.mich...@orange.fr<mailto:m.michael.mich...@orange.fr> 
>> <mailto:m.michael.mich...@orange.fr<mailto:m.michael.mich...@orange.fr>>>> 
>> wrote:
>>     >>
>>     >>         Hi Nicolas,
>>     >>
>>     >>         I had a look but did not find an easy way to fix the problem.
>>     >>
>>     >>         In SpatialDatabasesDSConnection you added a comment that it 
>> is no more necessary to subclass to PostGIS...
>>     >>
>>     >>         On the other hand,
>>     >>         - SpatialDatabasesDSConnection instantiates
>>     >>         - SpatialDatabasesResultSetConverter which in turn 
>> instantiates
>>     >>         - SpatialDatabasesFeatureInputStream which instantiates
>>     >>         - SpatialDatabasesResultSetConverter  which instiates a new
>>     >>         - SpatialDatabasesValueConverterFactory
>>     >>
>>     >>         The getConverter method of the later just return null which 
>> seems the root cause
>>     >>         of my NPE.
>>     >>
>>     >>         Seems like the concrete class should still be a subclass of 
>> SpatialDatabasesDSConnection.
>>     >>         What do you think ?
>>     >>
>>     >>         Another (maybe related) question : In the component to 
>> connect a new database, there
>>     >>         is a combobox with a single value "PostGIS".  Should we add 
>> other drivers in order to
>>     >>         instantiate proper connection for each driver. There is 
>> commented code from you in
>>     >>         JumpConfiguration class showing that you already have 
>> implemented such a solution
>>     >>         in the past)
>>     >>
>>     >>         Michaël
>>     >>
>>     >>
>>     >>         Le 08/12/2015 10:30, Nicolas Ribot a écrit :
>>     >>>         Hi Michaël,
>>     >>>
>>     >>>         I will look at it.
>>     >>>
>>     >>>         Nicolas
>>     >>>
>>
>>     >>>         On 7 December 2015 at 23:12, Michaël Michaud 
>> <<mailto:m.michael.mich...@orange.fr<mailto:m.michael.mich...@orange.fr> 
>> <mailto:m.michael.mich...@orange.fr<mailto:m.michael.mich...@orange.fr>>>m.michael.mich...@orange.fr<mailto:m.michael.mich...@orange.fr>
>>  <mailto:m.michael.mich...@orange.fr<mailto:m.michael.mich...@orange.fr>> 
>> <mailto:m.michael.mich...@orange.fr<mailto:m.michael.mich...@orange.fr> 
>> <mailto:m.michael.mich...@orange.fr<mailto:m.michael.mich...@orange.fr>>>> 
>> wrote:
>>     >>>
>>     >>>             Hi
>>     >>>
>>     >>>             Waw, thanks for this refactoring Nicolas !
>>     >>>
>>     >>>             Just noticed the following regression
>>     >>>
>>     >>>             in the File > Execute Query plugin
>>     >>>             If I try to query a postgis table as I did before, I get 
>> the following NPE :
>>     >>>             java.lang.NullPointerException
>>     >>>                 at 
>> com.vividsolutions.jump.datastore.spatialdatabases.SpatialDatabasesResultSetConverter.init(SpatialDatabasesResultSetConverter.java:72)
>>     >>>
>>     >>>             The same NPE occurs with the read/write postgis driver
>>     >>>
>>     >>>             Any idea ?
>>     >>>
>>     >>>             Michaël
>>     >>>
>>     >>>
>>     >>>             Le 07/12/2015 18:16, Nicolas Ribot a écrit :
>>     >>>>             Hi,
>>     >>>>
>>     >>>>             Oracle Spatial support has been added to OJ core 
>> (read-only).
>>     >>>>             It works the same way as Postgis support: define a DB 
>> connection to Oracle and choose spatial layers from the list of found layers 
>> to display them in OJ
>>     >>>>
>>     >>>>             Oracle 9i -> 12c supported (though only tested recently 
>> with Oracle 11i and 12c).
>>     >>>>
>>     >>>>             The SpatialDatabases plugin also contains code to 
>> support MariaDB/MySQL and Spatialite. (SQL Server in the pipe...)
>>     >>>>
>>     >>>>             I was thinking about adding this code to the core, too.
>>     >>>>             What do you think ?
>>     >>>>
>>     >>>>             Nicolas
>>     >>>>
>>     >>>>
>>     >>>>
>>     >>>>
>>     >>>>             
>> ------------------------------------------------------------------------------
>>     >>>>             Go from Idea to Many App Stores Faster with Intel(R) XDK
>>     >>>>             Give your users amazing mobile app experiences with 
>> Intel(R) XDK.
>>     >>>>             Use one codebase in this all-in-one HTML5 development 
>> environment.
>>     >>>>             Design, debug & build mobile apps & 2D/3D high-impact 
>> games for multiple OSs.
>>     >>>>             
>> http://pubads.g.doubleclick.net/gampad/clk?id=254741911&iu=/4140
>>     >>>>
>>     >>>>
>>     >>>>             _______________________________________________
>>     >>>>             Jump-pilot-devel mailing list
>>
>>     >>>>             
>> Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>
>>  
>> <mailto:Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>>
>>  
>> <mailto:Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>
>>  
>> <mailto:Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>>>
>>     >>>>             
>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>     >>>
>>     >>>
>>     >>>             
>> ------------------------------------------------------------------------------
>>     >>>             Go from Idea to Many App Stores Faster with Intel(R) XDK
>>     >>>             Give your users amazing mobile app experiences with 
>> Intel(R) XDK.
>>     >>>             Use one codebase in this all-in-one HTML5 development 
>> environment.
>>     >>>             Design, debug & build mobile apps & 2D/3D high-impact 
>> games for multiple OSs.
>>     >>>             
>> http://pubads.g.doubleclick.net/gampad/clk?id=254741911&iu=/4140
>>     >>>             _______________________________________________
>>     >>>             Jump-pilot-devel mailing list
>>     >>>             
>> Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>
>>  
>> <mailto:Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>>
>>  
>> <mailto:Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>
>>  
>> <mailto:Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>>>
>>     >>>             
>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>     >>>
>>     >>>
>>     >>>
>>     >>>
>>     >>>         
>> ------------------------------------------------------------------------------
>>     >>>         Go from Idea to Many App Stores Faster with Intel(R) XDK
>>     >>>         Give your users amazing mobile app experiences with Intel(R) 
>> XDK.
>>     >>>         Use one codebase in this all-in-one HTML5 development 
>> environment.
>>     >>>         Design, debug & build mobile apps & 2D/3D high-impact games 
>> for multiple OSs.
>>     >>>         
>> http://pubads.g.doubleclick.net/gampad/clk?id=254741911&iu=/4140
>>     >>>
>>     >>>
>>     >>>         _______________________________________________
>>     >>>         Jump-pilot-devel mailing list
>>     >>>         
>> Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>
>>  
>> <mailto:Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>>
>>  
>> <mailto:Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>
>>  
>> <mailto:Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>>>
>>     >>>         https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>     >>
>>     >>
>>     >>         
>> ------------------------------------------------------------------------------
>>     >>
>>     >>         _______________________________________________
>>     >>         Jump-pilot-devel mailing list
>>     >>         
>> Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>
>>  
>> <mailto:Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>>
>>  
>> <mailto:Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>
>>  
>> <mailto:Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>>>
>>     >>         https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>     >>
>>     >>
>>     >>
>>     >>
>>     >>     
>> ------------------------------------------------------------------------------
>>     >>
>>     >>
>>     >>     _______________________________________________
>>     >>     Jump-pilot-devel mailing list
>>     >>     
>> Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>
>>  
>> <mailto:Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>>
>>  
>> <mailto:Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>
>>  
>> <mailto:Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>>>
>>     >>     https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>     >
>>     >
>>     >     
>> ------------------------------------------------------------------------------
>>     >
>>     >     _______________________________________________
>>     >     Jump-pilot-devel mailing list
>>     >     
>> Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>
>>  
>> <mailto:Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>>
>>  
>> <mailto:Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>
>>  
>> <mailto:Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>>>
>>
>>     >     https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>     >
>>     >
>>     >
>>     >
>>     > 
>> ------------------------------------------------------------------------------
>>     >
>>     >
>>     >
>>     > _______________________________________________
>>     > Jump-pilot-devel mailing list
>>     > 
>> Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>
>>  
>> <mailto:Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>>
>>     > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>     >
>>
>>     
>> ------------------------------------------------------------------------------
>>     _______________________________________________
>>     Jump-pilot-devel mailing list
>>     
>> Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>
>>  
>> <mailto:Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>>
>>     https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> ---------
>>
>>
>>
>> _______________________________________________
>> Jump-pilot-devel mailing list
>> Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>
>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>
>
> ----------------------------------------------------------------------
> -------- _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>
> ----------------------------------------------------------------------
> -------- _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>

------------------------------------------------------------------------------
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

------------------------------------------------------------------------------
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

------------------------------------------------------------------------------
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to