I saw the commit, please read comments inline. best, -Simo http://people.apache.org/~simonetripodi/ http://simonetripodi.livejournal.com/ http://twitter.com/simonetripodi http://www.99soft.org/
On Sat, Mar 3, 2012 at 1:40 AM, Marco Speranza <marcospera...@apache.org> wrote: > Hi I fixed the problem using proxy/handler. > > I put also a couple of tests. For do that I insert a test scoped dependency > to a library net.sourceforge.groboutils.groboutils-core > > Ciao > > -- > Marco Speranza <marcospera...@apache.org> > Google Code: http://code.google.com/u/marco.speranza79/ > > Il giorno 03/mar/2012, alle ore 01:29, Simone Tripodi ha scritto: > >> yes, what I didn't understand is how you would like to manage the >> iterators issue >> >> sorry for the brevity but tonight I am getting crazy with at least 3 >> other projects :D >> >> -Simo >> >> http://people.apache.org/~simonetripodi/ >> http://simonetripodi.livejournal.com/ >> http://twitter.com/simonetripodi >> http://www.99soft.org/ >> >> >> >> On Sat, Mar 3, 2012 at 1:16 AM, Marco Speranza <marcospera...@apache.org> >> wrote: >>> I think that we have to use the same patter of java Collections: a wrapper >>> of Graph/MutableGraph that use a synchronize block. >>> >>> WDYT? >>> >>> -- >>> Marco Speranza <marcospera...@apache.org> >>> Google Code: http://code.google.com/u/marco.speranza79/ >>> >>> Il giorno 03/mar/2012, alle ore 01:10, Simone Tripodi ha scritto: >>> >>>> OK now sounds better, thanks - how would you intend to fix it? >>>> TIA, >>>> -Simo >>>> >>>> http://people.apache.org/~simonetripodi/ >>>> http://simonetripodi.livejournal.com/ >>>> http://twitter.com/simonetripodi >>>> http://www.99soft.org/ >>>> >>>> >>>> >>>> On Sat, Mar 3, 2012 at 1:01 AM, Marco Speranza <marcospera...@apache.org> >>>> wrote: >>>>>>> >>>>>>> furthermore there is another problem: with handler is not possible to >>>>>>> use correctly synchronization block like this >>>>>>> >>>>>>> ==== >>>>>>> Graph g = CommonsGraph.synchronize(g_); >>>>>>> ... >>>>>>> synchronized(g) { >>>>>>> for ( BaseLabeledVertex v2 : g.getVertices() ) >>>>>>> { >>>>>>> // do somethings >>>>>>> } >>>>>>> } >>>>>>> ==== >>>>>> >>>>>> sorry I don't understand what you meant/intend to do >>>>> >>>>> I'm trying to explain better. the method getVertices return an Iterator. >>>>> In a multi-thread environment you have to ensure that during the 'for' >>>>> execution the [graph] data structure remains consistent. >>>>> Also for java collection is the same >>>>> [http://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#synchronizedCollection(java.util.Collection)] >>>>> >>>>> So if we use a proxy/handler there is no way to "export" the mutex/lock >>>>> variable used into handler class. >>>>> >>>>> In our CommonsGraph the variable this.lock is private and is non >>>>> possible to export out of the method, so the user can not utilize the >>>>> lock to synchronize his block. >>>>> >>>>> === >>>>> public Object invoke( Object proxy, Method method, Object[] args ) >>>>> throws Throwable >>>>> { >>>>> if ( synchronizedMethods.contains( method ) ) >>>>> { >>>>> try >>>>> { >>>>> synchronized ( this.lock ) >>>>> { >>>>> return method.invoke( synchronizedMethods, args ); >>>>> } >>>>> } >>>>> catch ( InvocationTargetException e ) >>>>> { >>>>> throw e.getTargetException(); >>>>> } >>>>> } >>>>> return method.invoke( synchronizedMethods, args ); >>>>> } >>>>> === >>>>> >>>>> ciao >>>>> >>>>> -- >>>>> Marco Speranza <marcospera...@apache.org> >>>>> Google Code: http://code.google.com/u/marco.speranza79/ >>>>> >>>>> Il giorno 03/mar/2012, alle ore 00:45, Simone Tripodi ha scritto: >>>>> >>>>>>> furthermore there is another problem: with handler is not possible to >>>>>>> use correctly synchronization block like this >>>>>>> >>>>>>> ==== >>>>>>> Graph g = CommonsGraph.synchronize(g_); >>>>>>> ... >>>>>>> synchronized(g) { >>>>>>> for ( BaseLabeledVertex v2 : g.getVertices() ) >>>>>>> { >>>>>>> // do somethings >>>>>>> } >>>>>>> } >>>>>>> ==== >>>>>> >>>>>> sorry I don't understand what you meant/intend to do >>>>>> >>>>>>> I really think that a synchronized wrapper it's the best solution. >>>>>>> >>>>>>> WDYT? >>>>>> >>>>>> they sucks because we have to keep them updated while , but if there >>>>>> are not alternatives... >>>>>> -Simo >>>>>> >>>>>> http://people.apache.org/~simonetripodi/ >>>>>> http://simonetripodi.livejournal.com/ >>>>>> http://twitter.com/simonetripodi >>>>>> http://www.99soft.org/ >>>>>> >>>>>> --------------------------------------------------------------------- >>>>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >>>>>> For additional commands, e-mail: dev-h...@commons.apache.org >>>>>> >>>>> >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >>>>> For additional commands, e-mail: dev-h...@commons.apache.org >>>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >>>> For additional commands, e-mail: dev-h...@commons.apache.org >>>> >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >>> For additional commands, e-mail: dev-h...@commons.apache.org >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >> For additional commands, e-mail: dev-h...@commons.apache.org >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org