shaders – Need help getting an objects orientation / all my OpenGL rotations are reversed

UBUNTU LINUX : GCC : ECLIPSE IDE : OPENGL

I am bringing blender models into a home made renderer / game engine.
I parse a text file containing object descriptions to load models.

EXAMPLE:

begin_object generic_object
generic_object_name lampost
generic_object_parent_name world
generic_object_position -10.0000 -10.0000 2.000000
generic_object_rotation 90.000000 0.000000 0.000000
generic_object_scale 1.000000 1.000000 1.000000
end_object

begin_object ...

The "generic_object_rotation 90.000000 0.000000 0.000000" line describes 3 values. 

Rotation around Z ( XY ).
Rotation around X ( YZ ).
Rotation around Y ( XZ ).

After going through all the headaches of euler angles and their gimball lock and singularities ,
I switched all my code to quaternions. ( Highly recommended )

I am told that a counter-clockwise rotation around the Z axis , looking down the Z axis toward
the origin uses a rotation matrix of..

cos(theta)  -sin(theta)  0  0
sin(theta)  cos(theta)   0  0
0           0            1  0
0           0            0  1


I got this from a document rotgen.pdf off the Song-Ho website.

If i replace theta with +90.0 ( just like my input file above ) , the result is.

  0.0 ,  -1.0 ,  0.0 ,  0.0  
  1.0 ,   0.0 ,  0.0 ,  0.0 
  0.0 ,   0.0 ,  1.0 ,  0.0 
-10.0 , -10.0 ,  2.0 ,  1.0 

So i make a quaternion for +90.0 deg , turn it into a matrix , and then print out the matrix ,
to see if it is the same, and I get the same matrix.

  0.0 ,  -1.0 ,  0.0 ,  0.0  
  1.0 ,   0.0 ,  0.0 ,  0.0 
  0.0 ,   0.0 ,  1.0 ,  0.0 
-10.0 , -10.0 ,  2.0 ,  1.0 

All is well...

Then I send this matrix to the shader to draw this object and it rotates my object CW instead. 

In the shader is:

"gl_Position = projection_matrix * view_matrix * model_matrix * vec4( aPos , 1.0 );n"

which seems correct.

So I drew a cube in blender , attached different color textures to each side of the cube so
I could verify that my input data was good , and as long as the model_matrix is identity , then
the object is oriented correctly in space. Any time I add rotations , the models rotate in the
opposite direction. This happens in all 3 axes.

My current goal/project is the parenting system.  I want to be able to extract orientation and
position from the model matrix of any object. ( That data is stored with the object )

Specifically , right now , I wanted to extract the forward vector from the model_matrix so I
could attach a light source to this rotating object. Set its light direction for the fragment
shader. That is when I found this error.

What I am seeing:
The rotation of the object is opposite what I command. When I rotate 0-360 over and over again
the forward vector I am reading from the objects model_matrix diverges from the direction of the
object , until it gets to 180 deg , where the face of the object and the forward vector are co-
incident again , then they diverge again until we reach 360 and they are again co-incident.

What I expect: ( And this may be part of my issue )

I want the rotation part of the model_matrix that rotates the object to BE the current
orientation of the object. And it LOOKS like it is , but the object does not render that way.
The object rotates in the opposite direction. ( Which is preventing me from getting the correct
light direction vector ( forward vector ) )

Is this an OpenGL thing?

Is the orientation of an object the transpose of the 3x3 rotation section of the model_matrix?