Glad it works now.
By the way, why do you actually need this kind of delaying/batching/buffering?
I mean, in any given frame, don't you know prior to rendering what you want to render?
Or is it interactive user input during runtime (mouse movement, keyboard input, joystick input) determining which vertices to render?
Otherwise your solution seems a bit too overcomplicated and if all you do is rendering a static model then you can just create an exact large OpenGL buffer object and fill it up with the model vertices.
If you think creating large OpenGL buffer objects might be an issue so that you need to split it up by buffering on the Java side, then actually no. Even old graphics cards support creating quite large OpenGL buffer objects (in the millions of vertices).