<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>I just finished working on some big changes to the connector framework. &nbsp;All the detail regarding the issue and the design can be found in&nbsp;DNA-281 (<a href="https://jira.jboss.org/jira/browse/DNA-281">https://jira.jboss.org/jira/browse/DNA-281</a>). &nbsp;However, this is a fairly significant change, so I wanted to let everyone know what's going on. &nbsp;(The commit email was actually too big, which is another reason for this email).</div><div><br></div><div>The problem stems from not having a perfect mapping between a connector and the notion of a JCR workspace. &nbsp;When we came up with the initial connector design, we'd hoped that a connector would map to a JCR workspace, and that we could just create multiple sources (instances of connectors) when we need multiple workspaces. &nbsp;Unfortunately, some of the workspace-level operations in JCR don't work too well with this. &nbsp;In particular, creating workspaces would have entailed setting up new RepositorySource instances, which is difficult if you have to also set up the back end system, like a database. &nbsp;To really fix this, we need a connector to be able to have multiple workspaces and to support creating, cloning, and destroying workspaces.</div><div><br></div><div>Normally, this would be that much of a surprise. &nbsp;We've always followed the evolutionary approach to design and development. &nbsp;So this change wouldn't really be that special - if it weren't for the size of the change. &nbsp;The connector API is affected, which means that each connector implementation is affected. &nbsp;Also, the Graph API is affected because we need to expose these new operations. &nbsp;And this meant that every code that used the Graph API may be affected, since they now need to possibly have some notion of a workspace. &nbsp;All in all, a lot of code has been impacted by this. &nbsp;And I spent several days trying different approaches that were incremental, and nothing worked. &nbsp;I had no choice but to make all the changes at once.</div><div><br></div><div>Interestingly, while making the changes, I discovered a bug in the federation code (DNA-282), and a number of existing test cases fail. &nbsp;And of course the Getting Started repository example fails because it relies up the federation connector. &nbsp;So, rather than complicate an already mess of a commit set, I decided to temporarily remove these two projects from the build. &nbsp;</div><div><br></div><div>Similarly, I have local changes to the JCR project to support writing (which was the ultimate reason why support for workspaces was needed in the first place). &nbsp;And these changes aren't quite complete enough to commit, yet I didn't want to spent a lot of time fixing test cases that I'll be making changes to. &nbsp;So this project was also pulled from the build, too.</div><div><br></div><div>My apologies for the state of the project, and for this massive commit. &nbsp;I dislike these large changes with a passion, but just couldn't figure out a way to get around it. &nbsp;But everything compiles, and all tests (except those listed above) run successfully.</div><div><br></div><div>For those of you working on connector implementations, feel free to look at the in-memory connector, the JBoss Cache connector, or the JPA Store connector. &nbsp; Specifically, look in the RequestProcessor implementation classes in the connectors, since that's where all the interesting stuff is. &nbsp;Of course, some of the source implementations have properties that define the names of "predefined workspaces" and a "default workspace", and that may be of use to you. &nbsp;These all support multiple workspaces, but in slightly different ways. &nbsp;I think the notion of workspaces would work really well in a couple of our connectors, including SVN and JDBC metadata. &nbsp;Of course, if you have any questions, please post to this list.</div><div><br></div><div>Best regards,</div><div><br></div><div>Randall</div></body></html>