May 23rd Washington Results

Posted in Updates, meeting by Asa on the June 13th, 2007

The meeting was held on Wednesday 23-May-07 in a very nice conference facility in the same Georgetown University building that houses Chad’s office. We got started at 10:00AM.

We covered a lot of ground. Topics included OpenID bootstrap, OpenSAML XML Tooling, Conor Cahill’s ID-WSF client, and code generation. It was maintained that the SAML bootstrap is top and first priority, but that the requirements for OpenID bootstrapping would be very much the same as far as the ID-WSF Client is concerned.

XML TOOLING NOTE

OpenSAML’s XML Tooling creates a complete object graph based on the element structure of the XML. Unmarshalling and Marshalling are used to go from DOM based XML to Java Objects and back. The design technique that is used by OpenSAML is to break down every single element into a set of classes/objects that handle the various details of each. This can get extremely detailed. Take this XML:

<house>
  <floors>
    <floor name=”basement”>
      <room squarefeet=”40″ doors=”" windows=”" type=”bathroom” />
      <room squarefeet=”120″ doors=”" windows=”" type=”closet” />
    </floor>
    <floor name=”first floor”>
      <room squarefeet=”40″ doors=”" windows=”" type=”bathroom” />
      <room squarefeet=”120″ doors=”" windows=”" type=”kitchen” />
    </floor>
  </floors>
</house>

The code above would be supported by 5 classes for each of the following elements: house, floors, floor, and room. For example, you might take “House” and create:

HouseXMLObject.java (The object created for the element “house”)
HouseXMLObjectBuilder.java (builds the XMLObject)
HouseXMLObjectValidator.java (any validation done here)
HouseXMLObjectUnmarshaller.java (DOM element “house” to java object)
HouseXMLObjectMarshaller.java (facilitates java object to DOM element)

Each of these is registered in a config document which will identify the role that each class plays to the underlying xml tooling engine. One concern the development group had was that this level of detail might not be great for performance. Chad agreed that we might look into not building classes for some subelements.

The full notes are posted here on the wiki:
May 23rd Washington Face to Face Notes

Leave a Reply