gvSIG bugs #3966

No se inicializan en el orden adecuado las dependencias de una libreria.

Added by Joaquín del Cerro Murciano over 8 years ago. Updated over 8 years ago.

Status:Closed% Done:

0%

Priority:NormalSpent time:-
Assignee:Joaquín del Cerro Murciano
Category:-
Target version:2.3.0-2414 (rev. org.gvsig.desktop-2.0.120)
Severity:Critical Add-on version:
gvSIG version:2.3.0 Add-on build:
gvSIG build:2413 Add-on resolve version:
Operative System: Add-on resolve build:
Keywords: Proyecto:
Has patch: Hito:
Add-on name:Unknown

Description

Se trata de un error dificil de relacionar con lo que el usuario ve.

Al arrancar presentaba en el log el mensaje:

INFO main org.gvsig.tools.library.AbstractLibrary - Can't postinitialize library 'org.gvsig.fmap.dal.store.jdbc.JDBCLibrary'.
Error importing classes from file at line 36 column 87. Can't locate DynClass 'Persistence:DBResourceParameters. Look at the extends tag.
    at org.gvsig.tools.dynobject.impl.DynClassImportHelper.importDynClass(DynClassImportHelper.java:319)
    at org.gvsig.tools.dynobject.impl.DynClassImportHelper.importDefinitions(DynClassImportHelper.java:189)
    at org.gvsig.tools.dynobject.impl.DynClassImportHelper.importDefinitions(DynClassImportHelper.java:94)
    at org.gvsig.tools.dynobject.impl.DefaultDynObjectManager.importDynClassDefinitions(DefaultDynObjectManager.java:649)
    at org.gvsig.tools.persistence.impl.AbstractPersistenceManager.addDefinition(AbstractPersistenceManager.java:387)
    at org.gvsig.fmap.dal.store.db.DBHelper.registerParametersDefinition(DBHelper.java:49)
    at org.gvsig.fmap.dal.store.jdbc.JDBCLibrary.doPostInitialize(JDBCLibrary.java:61)
    at org.gvsig.tools.library.AbstractLibrary.postInitialize(AbstractLibrary.java:358)
    at org.gvsig.tools.library.AbstractLibrariesInitializer.initializeLibraries(AbstractLibrariesInitializer.java:252)
    at org.gvsig.tools.library.AbstractLibrariesInitializer.postInitialize(AbstractLibrariesInitializer.java:105)
    at org.gvsig.tools.library.AbstractLibrariesInitializer.fullInitialize(AbstractLibrariesInitializer.java:116)
    at org.gvsig.andami.Launcher.initializeLibraries(Launcher.java:783)
    at org.gvsig.andami.Launcher.doMain(Launcher.java:569)
    at org.gvsig.andami.Launcher.main(Launcher.java:394)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.gvsig.andamiupdater.Updater.launchApp(Updater.java:106)
    at org.gvsig.andamiupdater.Updater.main(Updater.java:68)

Despues de muchas vueltas he dado con el problema. Estaba en la ordenacion de las dependencias de DALLibrary:

- org.gvsig.timesupport.TimeSupportLibrary
- org.gvsig.fmap.dal.DALLibrary (API of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.fmap.dal.impl.DALDefaultImplLibrary (IMPL of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.fmap.dal.store.jdbc.JDBCLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.fmap.dal.store.postgresql.PostgreSQLLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.fmap.dal.DALDbLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.fmap.dal.resource.db.DBResourceLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.fmap.dal.store.db.DBStoreLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.fmap.dal.DALFileLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.fmap.dal.store.dbf.DBFLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.fmap.dal.store.csv.CSVLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.fmap.dal.store.shp.SHPLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.fmap.dal.store.memory.MemoryStoreLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.annotation.AnnotationLibrary (API of org.gvsig.annotation.AnnotationLibrary)

Podemos ver que intenta inicializar antes JDBCLibrary que DBResourceLibrary y DBStoreLibrary que son dependencias transitivas de ella. Siempre ignoraba las dependencias transitivas a la hora de ordenar los servicios de una libreria. Esto podia o no deribar en un error, ya que debido al azar estas podian quedar ordenadas correctamente o de forma que no se produjesen errores.

La correccion puede ocasionar que algunas otras cosas fallen, ya que ahora va a cambiar el orden en como se inicializaban las cosas, pero con la correccion parece que el orden es el indicado en las dependencias, y ahora es predecible.

Ahora por ejemplo, en lo que se refiera a DALLibrary genera:

- org.gvsig.metadata.lib.basic.impl.BasicMetadataLibrary (IMPL of org.gvsig.metadata.MetadataLibrary)
- org.gvsig.fmap.dal.DALLibrary (API of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.fmap.dal.impl.DALDefaultImplLibrary (IMPL of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.fmap.dal.DALDbLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.fmap.dal.resource.db.DBResourceLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.fmap.dal.store.db.DBStoreLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.fmap.dal.store.jdbc.JDBCLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.fmap.dal.store.postgresql.PostgreSQLLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.fmap.dal.DALFileLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.fmap.dal.store.dbf.DBFLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.fmap.dal.store.csv.CSVLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.fmap.dal.store.shp.SHPLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.fmap.dal.store.memory.MemoryStoreLibrary (SERVICE of org.gvsig.fmap.dal.DALLibrary)
- org.gvsig.annotation.AnnotationLibrary (API of org.gvsig.annotation.AnnotationLibrary)

El error este lo he detectado cuando iba a intentar corregir #3810, pero no se ti tiene o no que ver con el.

gvSIG.log (207 KB) Joaquín del Cerro Murciano, 12/29/2015 08:14 PM


Related issues

Related to Application: gvSIG desktop - gvSIG bugs #3810: Error al cargar PostGIS Closed 10/15/2015

Associated revisions

Revision 1340
Added by Joaquín del Cerro Murciano over 8 years ago

refs #3966, corregido el orden de las dependencias de un Library, no tenia en cuenta las dependencias transitivas para establecer el orden de inicializacion, estableciendose un orden de inicializacion aleatorio cuando estas existian.

History

#1 Updated by Joaquín del Cerro Murciano over 8 years ago

  • Description updated (diff)

#2 Updated by Joaquín del Cerro Murciano over 8 years ago

  • Target version set to 2.3.0-2414 (rev. org.gvsig.desktop-2.0.120)

#3 Updated by Joaquín del Cerro Murciano over 8 years ago

  • Status changed from New to Fixed

#4 Updated by Joaquín del Cerro Murciano over 8 years ago

#5 Updated by Álvaro Anguix over 8 years ago

  • Status changed from Fixed to Closed

Also available in: Atom PDF