Turns out the JDBCFeatureReader copy constructor just missed the
feature source field; all tests now pass with the event notification
code in.

I am going to go on to write test cases covering the event
notification code; I think I am being held up over some of the tests
not working for postgis; perhaps I will switch to hibernate.

Jody

On Sun, May 10, 2009 at 11:27 AM, Jody Garnett <[email protected]> wrote:
> Hi Justin:
>
> A bit more debugging:
> - featureSource is only set to null during a call to cleanup()
> - the only test that is failing here is the
> JDBCDataStoreAPITest.testGetFeaturesWriterAdd. This test skips over
> all the content and then starts adding stuff to the end
>
> I suspect that cleanup() is getting automatically called...checking it out 
> now.
>
> Okay that was not the case - what happens is when
> JDBCUpdateInsertFeatureWriter runs off the end and goes to pass over
> control to an internal JDBCInsertFeatureWriter:
>        if ( !hasNext ) {
>            //update phase is up, switch to insert mode
>            inserter = new JDBCInsertFeatureWriter( this );
>            return inserter.hasNext();
>        }
> The origional JDBCUpdateInsertFeatureWriter has already cleaned up
> itself; so a null value for dataStore and featureSource are copied
> over.
>
> Aside: I also had to add some implementation to your ResultSetFeature
> in order to have access to the before and after bounds (I made sure to
> only calculate the bounds if we actually have anyone at all
> listening).
>
> Jody
>
> On Sun, May 10, 2009 at 2:23 AM, Jody Garnett <[email protected]> wrote:
>> Hi Justin:
>>
>> I have added event notification methods to ContentDataStore; and am
>> having a bit of fun hooking up things in jdbc-ng for testing...
>> consider the following JDBCInsertFeatureWriter method as an example:
>>
>>    public void write() throws IOException {
>>        try {
>>            //do the insert
>>            dataStore.insert(last, featureType, st.getConnection());
>>
>>            //the datastore sets as userData, grab it and update the fid
>>            String fid = (String) last.getUserData().get( "fid" );
>>            last.setID( fid );
>>
>>            ContentEntry entry = featureSource.getEntry();
>>            ContentState state = entry.getState( this.tx );
>>            state.fireFeatureAdded( featureSource, last );
>>        } catch (SQLException e) {
>>            throw (IOException) new IOException().initCause(e);
>>        }
>>    }
>>
>> I expected to have access to the ContentState directly when working;
>> but JDBCInsertFeatureWriter  made me take a long walk to get it ...and
>> then even that did not work as  this.featureSource is null.
>>
>> I am calling it a night; I can commit the changes to the
>> ContentDataStore classes and send you the patch for jdbc-ng. I have
>> only hooked up the basics (add,modify,remove) and gotten batched
>> feature events populated; I still need to find out where the
>> commit/rollback code is and make sure they actually issue the batch
>> feature event notification.
>>
>> Jody
>>
>

------------------------------------------------------------------------------
The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
production scanning environment may not be a perfect world - but thanks to
Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
Series Scanner you'll get full speed at 300 dpi even with all image 
processing features enabled. http://p.sf.net/sfu/kodak-com
_______________________________________________
Geotools-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to