*Attendees*
Dave Donnelly, Stanford U. (stand-in chair)
Tom Barton, U. Chicago
Jeff Van Eeuwen, U. Chicago
Jessica Bibbee, Internet2 (scribe)
New *Action Items*
[AI] Dave will develop a working prototype of one or two classes, using JAXB and provide it to {Jeff and Gil Singer} for feedback.
Carry Over *Action Items*
[AI] {Jessica} will increase visibility of integration documents in the I2MI-Common space by linking in the Signet/Grouper spaces.
[AI] {Lynn} will follow up with {Michael} regarding how much history should be kept, and just how it is kept.
[AI] {Dave} will add LDAP config samples in the wiki for sources.xml file.
[AI] {Lynn} will share an updated version of use cases for Hooks. (25-May-07)
[AI] {Tom} volunteered a role in vetting Signet with Grouper to have a common JVM. (25-May-07)
Future *Agenda Topics*
- Kathryn Huxtable - Recent Subject adapter/source activity
- consolidating subject stuff from Signet/Grouper under I2mi-Common management.
*Agenda*
1. A taste of dogfood
2. XML generation status, with a brief digression into <subject> in the context of these documents
3. Our general discussion item will be the migration of the Subject facilities top I2MI Commons, an action item I can pursue independent of development (for now). I'll have more in writing [1] before the meeting, but the general areas of discussion are not just the logistics of this, but the why's and what. As a starter list, we have:
- the definition of a Source manager and how that's reflected in sources.xml
- the definition of a Source Adapter and how that shouldn't be reflected in sources.xml
- Signet extensions for attribute mapping that maybe should be migrated into core Source support
- the light-weight/local subject tables used for demos/quickstarts
*Discussion*
In lieu of a regular Signet Working Group conference call, this smaller group of developers met for a very technical discussion of the status of Signet XML import/export.
-Current status of Signet XML import/export-
Recent testing has shown that the current Signet classes are too complex for the JAXB schemagen utility. Two options to generate a schema are: 1) hand-craft the schema, 2) write temporary stub classes, based on the current Signet classes, and use those to generate the schema. From the schema, the xjc utility will be used to generate the Signet-XML Adapter classes that will be used both internally by both Signet and Grouper to import/export XML to/from Signet. By using an Adapter design pattern, the existing Signet classes will not be over-complicated with XML-specific code.
Because XML Schema does not support double-links and circular references, there is added complexity causing problems with schemagen and JAXB in general. Signet has several classes where this is the case. Some tailoring will be necessary to avoid the exceptions now being thrown. {Dave} tried modifying the Signet classes, but things only worsened with complexity.
{Jeff} asked if it would be possible to use interfaces for the existing Signet classes to generate and/or access the XML adapters. Neither schemagen, nor xjc, can use Java interfaces; only classes. Both schemagen and xjc utilities take Java sources, for the object targeted for inclusion in the schema, and classes, for objects they reference. The utils use a mix of parsing and reflection.
{Dave} asked {Jeff and Tom} about various types of XML that might be generated in the future; now, they are focused on assignments per subsystem, but later requirements will present other types to import.
Two utilities that come with the JAXB reference implementation include: 1) schemagen, which takes existing Java classes and creates an XML schema from them, and 2) xjc, which takes an XML schema (.xsd) and generates the Java classes needed to marshal Java-to-XML and unmarshal XML-to-Java. The output from xjc are the working classes, or Adapter layer for the current Signet classes.
{Dave} envisions the following use case for exporting assignments: First, create an instance of Signet, then call the normal API for getting Assignments. Next, pass the list of Assignments, and possibly an output destination (stream, file, etc), to the XML Adapter class(es) and invoke the appropriate marshal method to generate the XML. Importing XML would be the converse operation.
{Jeff} discussed their interest in putting Grouper information into an XML document generated from Signet. The idea is to take assignments-generated data, add XML, and then put into groups and memberships for a final output. He said they will have to review how they use generated schemas. {Dave} said JAXB is capable of handling namespaces. He stressed that it may be more sensible for [Signet and Grouper / Authority Mgr] to collaborate and simply create the schema that works best for both.
The import path is much simpler than export – it is a matter of bringing data in and parsing it. The question remaining is just how to do it – with one large schema and then 2 separate schemas for how elements are handled? How would this be done if nesting? Xjc does not support the ANY element, which may present some issues for U. Chicago down the road. {Dave} suggested they take the approach of having a giant XML document to suit Signet/Grouper or else they could use an adapter interface for import/export. {Jeff} mentioned having custom groups, having relationships to each other. These could be exported as standard Grouper XML, and then transformed for consumption by a 3rd party.
{Dave} plans to support the ability to select the assignments of interest through the Signet API, which would simplify the schema (and XML). He referred to {Lynn McRae’s} emails from 2-Aug, with subjects: Topic 1 through Topic 3 [1, 2, 3]. {Dave} will use {Lynn’s} examples as templates for what is included in the Assignments XML document.
They also clarified the difference between an assignment and a permission. As {Tom} explained, an assignment includes even the Signet-pertinent data, whereas a permission details only what the grantee has. The permissions document does not explain when a permission starts/expires, nor does it list who they are acting as.
Also discussed was how to sufficiently identify the resource tied to the subsystem, after the appropriate group has been matched. The subject identifier might be used for this purpose. {Lynn's} design is not necessarily Signet-specific. The Subject elements do include the attributes (as name/value pairs), though {Dave} is planning to un-map the Signet "attributes of interest" back to their original attribute name prior to exporting (and re-mapping on import.)
Signet has eliminated the notion of "privileged subject" and now uses a subclass of the SubjectAPI Subject. The subclass does map the original Subject attributes to Signet's "attributes of interest". However, because Signet and Grouper are using the SubjectAPI Subject internally, there should be no related problems. {Tom} said it would be great if Signet and Grouper could use the same means for dealing with Subjects, i.e., using the mapping configuration file for attributes. There would be great benefit in having Signet and Grouper using the same interfaces, and even the same libraries. Better integration of the two products is written into the roadmap.
{Jeff} asked if there was a way to query for all the assignments for a given function. It is possible, if indirectly. On the export side, there is an assumption that the [Signet] classes to be exported are in memory. This list is passed to the adapter classes, which will eventually create XML. It is selection that occurs with in the Signet API, not fetching of assignments. There is no fetching in adapter classes, but rather, it reflects what you have in memory.
[AI] Dave will develop a working prototype of one or two classes, using JAXB and provide it to {Jeff and Gil Singer} for feedback. {Jeff} says he plans to look at JAXB, as well as schema and importing. He also reported that {Gil} will be upgrading U. Chicago’s use of Signet to release v1.2.2.
The next Signet Working Group call will be on Friday, August 31, 2007 at 11am EDT.
[1] Topic 1 - Updating Metadata Utilities, c.f. email from Lynn, 2-Aug-07
< https://mail.internet2.edu/wws/arc/signet-dev/2007-08/msg00001.html >
[2] Topic 2 - Assignment XML, c.f. email from Lynn, 2-Aug-07
< https://mail.internet2.edu/wws/arc/signet-dev/2007-08/msg00002.html >
[3] Topic 3 - Subjects in XML docs, c.f. email from Lynn, 2-Aug-07
< https://mail.internet2.edu/wws/arc/signet-dev/2007-08/msg00003.html >