Re: short term branch for project/group keys

2007-01-16 Thread Rahul Thakur


Jesse and myself had a chat yesterday morning about the key-refactoring
branch that we spun before Christmas last year, and we reckon that it
might be an idea to get 1.1-alpha rolling and meantime gather more
thoughts around Groupings (introduce versions/tags). We think having
String-based keys for groups might be more feasible for v1.2.

However, we are keen to bring over the API changes where the 'int' Ids
are now converted to 'long'. Some other bits like breaking up the
existing Project and ProjectGroup interfaces can be continued on the
trunk itself after the merge.

What do others think?

Cheers,
Rahul

- Original Message - 
From: Jesse McConnell [EMAIL PROTECTED]

To: continuum-dev@maven.apache.org
Sent: Friday, December 22, 2006 8:30 AM
Subject: short term branch for project/group keys



I am thinking about pulling a short term branch of continuum with
rahul and working on getting everything converted to using a string
based key project and project group reference in all apis and in all
of the UI decision making items.  He has tomorrow off so I think that
unless anyone has any big issues with it we'll try and make that
branch and work on it tomorrow.

the end result of it would be:

* int id's for project and project group in the model are for internal
store usage
* name's for project and project group are for presentation purposes
only
* key's are for all api usage and passing around un URL's etc.

some quick benefits are:

* consistency across all apis and url manipulations
* ability to add quick url rewriting for direct linking of projects
foo.org/Doxia/Core
* common keys across running continuum instances for clustering

jesse

--
jesse mcconnell
[EMAIL PROTECTED]




Re: short term branch for project/group keys

2007-01-16 Thread Jesse McConnell

I am loathe to let a branch lay around for a long time with minimal
work being done actively on it and we learned what we wanted to from
it in the short time we worked with it I think.

my take-away was that the change the string based keys will be a good
change but its large enough that it should be done in the context of
some other refactoring and changes.

as for the int-long id change, I think its a good thing and will
focus us to address the database upgrading issue so its all good imo
:)

jesse

On 1/16/07, Rahul Thakur [EMAIL PROTECTED] wrote:


Jesse and myself had a chat yesterday morning about the key-refactoring
branch that we spun before Christmas last year, and we reckon that it
might be an idea to get 1.1-alpha rolling and meantime gather more
thoughts around Groupings (introduce versions/tags). We think having
String-based keys for groups might be more feasible for v1.2.

However, we are keen to bring over the API changes where the 'int' Ids
are now converted to 'long'. Some other bits like breaking up the
existing Project and ProjectGroup interfaces can be continued on the
trunk itself after the merge.

What do others think?

Cheers,
Rahul

- Original Message -
From: Jesse McConnell [EMAIL PROTECTED]
To: continuum-dev@maven.apache.org
Sent: Friday, December 22, 2006 8:30 AM
Subject: short term branch for project/group keys


I am thinking about pulling a short term branch of continuum with
 rahul and working on getting everything converted to using a string
 based key project and project group reference in all apis and in all
 of the UI decision making items.  He has tomorrow off so I think that
 unless anyone has any big issues with it we'll try and make that
 branch and work on it tomorrow.

 the end result of it would be:

 * int id's for project and project group in the model are for internal
 store usage
 * name's for project and project group are for presentation purposes
 only
 * key's are for all api usage and passing around un URL's etc.

 some quick benefits are:

 * consistency across all apis and url manipulations
 * ability to add quick url rewriting for direct linking of projects
 foo.org/Doxia/Core
 * common keys across running continuum instances for clustering

 jesse

 --
 jesse mcconnell
 [EMAIL PROTECTED]





--
jesse mcconnell
[EMAIL PROTECTED]


Re: short term branch for project/group keys

2006-12-28 Thread Rahul Thakur

On 27/12/2006, at 7:10 PM, Rahul Thakur wrote:


Updates to any children hanging off  key entities should cascade.


This makes sense if and only if the children are dependent. So, for 
build definitions - that's right. Profiles and such are all 'links' 
and so will be managed by the normal foreign key construct.


Thanks Brett!

I might need some help with Jpox when I hit this scenario. It would be 
nice to have some sort of 'lazy' intialization to happen when children 
hanging off key entities are retrieved, but not sure yet what Jpox 
offers (fetch groups?).


Cheers,
Rahul



Re: short term branch for project/group keys

2006-12-28 Thread Brett Porter
Yes, it's fetch groups. The store (pre-groups) took all this into  
account, however the lack of central management for some of it caused  
it to be pretty error prone. Those problems were related to  
Continuum's design, not anything to do with the use of JPOX (and  
something that'd be encountered in iBatis, or JPA, or anything else  
we used).


On 28/12/2006, at 7:33 PM, Rahul Thakur wrote:


On 27/12/2006, at 7:10 PM, Rahul Thakur wrote:


Updates to any children hanging off  key entities should cascade.


This makes sense if and only if the children are dependent. So,  
for build definitions - that's right. Profiles and such are all  
'links' and so will be managed by the normal foreign key construct.


Thanks Brett!

I might need some help with Jpox when I hit this scenario. It would  
be nice to have some sort of 'lazy' intialization to happen when  
children hanging off key entities are retrieved, but not sure yet  
what Jpox offers (fetch groups?).


Cheers,
Rahul


Re: short term branch for project/group keys

2006-12-23 Thread Jason van Zyl


On 22 Dec 06, at 11:48 AM 22 Dec 06, Jesse McConnell wrote:


nope, no fundamental reasons behind the immutable bit on the keys, I
am cool with them being open for editing.



I think they are immutable so when links are created with them they  
don't just disappear.


Jason.


jesse

On 12/22/06, Christian Edward Gruber [EMAIL PROTECTED] wrote:

This all sounds great, but why do they need to be immutable?  If they
are essentially used for lookups, and they only exist in one place in
the database (because it's normalized enough through surrogate keys),
then other then the obvious caveats about external things  
depending on

the keys, why couldn't these string keys change?  There should be no
referential integrity issues, because these keys are not the  
subjects of

any joins - just where clauses from the interfaces.

This would include project.key, group.key, buildDef.key,  
notifier.key,

etc.  It could even apply to userId, though standard practice is that
usernames are immutable.  All the other lookup keys could quite  
easily

be mutable/re-nameable if we wished.  Am I missing something?  I can
certainly see the usefulness of being able to, for maintenance of the
continuum instance.  Not strictly necessary, but saves several steps.

Christian.

Jesse McConnell wrote:
 On 12/22/06, Brett Porter [EMAIL PROTECTED] wrote:
 Sounds good, as long as the store remains independent of them. I
 don't want to get into the situation like in JIRA where you can't
 rename a string key.

 Yes, jason pinged me on this since I guess I wasn't completely  
clear

 in that summary.

 the project.id and projectGroup.id will basically disappear from
 continuum, reserved strictly for the underlying store.  The  
store can

 do whatever it wants with them.  The UI will never pass around a
 projectId=26 param on a url making you wonder what the heck it  
was.  A
 nice side effect of this IMO is that the #'s in the working  
directory

 would go away as well, defaulting instead to a nested directory
 structure of workingDirectory/GroupKey/ProjectKey/pom.xml

 Now I had honestly been thinking of making the key's immutable,  
since

 the names of the group's and project's are to be used for all
 presentational type things.  I was going to treat keys under the  
same
 functional requirements that usernames generally have.  Maybe we  
offer
 a 'Clone' option that makes a deep copy of the data in the DB  
into a

 new name and then allow the deletion of the old one...

 Anyway, here are the restrictions I thought of placing on the keys.

 * [a-zA-Z1-9.-:] for all keys
 * group key is unique
 * group key + project key is unique
 * project key should _not_ need to be unique  (ex Doxia/Core +
 Maven/Core + Continuum/Core)
 * keys are immutable, set upon creation

 Before starting to hack on this, perhaps you could list out all  
the
 keys you think are needed, and some examples? I'm interested in  
how

 it relates to group IDs and artifact IDs in particular.

 Initially I was planning on doing just the project key and group  
key
 since there is so much involved with getting just those two in  
place.

 However everything would probably go that way so that Profiles,
 Schedules, BuildDefinitions, etc...anything with an int ID that is
 used around in continuum would be converted to use a strongly typed
 string key insteadthe ones other then project and group are  
less

 important in the short term since they are not a constant source of
 confusion...but eventually yes anything with and ID would get a Key
 like this.  If the branch is a success and is voted back onto trunk
 then those could take place on trunk I think since they are smaller
 scope.

 As for how they would relate to groupId's and artifactId's it  
was not

 my intent to deal with those at all.  One of the things that got us
 into the mess that currently exists was too great a focus on the m2
 side of continuum.  IMO the group and project keys should be kept
 external to any concept of project type.  That way we can always
 maintain a clear delineation between a group and its member  
projects
 in relation to other groups.  For instance, one of my goals here  
is to

 make it super easy to have multiple versions of Doxia load up in
 continuum and execute in their little sandboxes.
 Group Keys of Doxia and Doxia-Refactor (just an example branch)  
should

 be able to seamlessly import the doxia project from its relative
 sources and peacefully coexist.  And it should be just as easy  
to do

 the same with a number of ant, shell and maven1 projects.

 Anyway, some foreseeable real world example keys in one continuum
 instance:

 Group:
  Maven-Trunk
 Projects:
  Core
  Api
  Artfiact

 Group:
  Maven-2.0.5
 Projects:
  Core
  Api
  Artifact

 Group:
  Continuum
 Projects:
  Core
  Api
  Store
  Webapp

 cheers,

 jesse


 - Brett

 On 22/12/2006, at 6:30 AM, Jesse McConnell wrote:

  I am thinking about pulling a short term branch of continuum  
with
  rahul and 

Re: short term branch for project/group keys

2006-12-22 Thread Christian Edward Gruber
This all sounds great, but why do they need to be immutable?  If they
are essentially used for lookups, and they only exist in one place in
the database (because it's normalized enough through surrogate keys),
then other then the obvious caveats about external things depending on
the keys, why couldn't these string keys change?  There should be no
referential integrity issues, because these keys are not the subjects of
any joins - just where clauses from the interfaces. 

This would include project.key, group.key, buildDef.key, notifier.key,
etc.  It could even apply to userId, though standard practice is that
usernames are immutable.  All the other lookup keys could quite easily
be mutable/re-nameable if we wished.  Am I missing something?  I can
certainly see the usefulness of being able to, for maintenance of the
continuum instance.  Not strictly necessary, but saves several steps.

Christian.

Jesse McConnell wrote:
 On 12/22/06, Brett Porter [EMAIL PROTECTED] wrote:
 Sounds good, as long as the store remains independent of them. I
 don't want to get into the situation like in JIRA where you can't
 rename a string key.

 Yes, jason pinged me on this since I guess I wasn't completely clear
 in that summary.

 the project.id and projectGroup.id will basically disappear from
 continuum, reserved strictly for the underlying store.  The store can
 do whatever it wants with them.  The UI will never pass around a
 projectId=26 param on a url making you wonder what the heck it was.  A
 nice side effect of this IMO is that the #'s in the working directory
 would go away as well, defaulting instead to a nested directory
 structure of workingDirectory/GroupKey/ProjectKey/pom.xml

 Now I had honestly been thinking of making the key's immutable, since
 the names of the group's and project's are to be used for all
 presentational type things.  I was going to treat keys under the same
 functional requirements that usernames generally have.  Maybe we offer
 a 'Clone' option that makes a deep copy of the data in the DB into a
 new name and then allow the deletion of the old one...

 Anyway, here are the restrictions I thought of placing on the keys.

 * [a-zA-Z1-9.-:] for all keys
 * group key is unique
 * group key + project key is unique
 * project key should _not_ need to be unique  (ex Doxia/Core +
 Maven/Core + Continuum/Core)
 * keys are immutable, set upon creation

 Before starting to hack on this, perhaps you could list out all the
 keys you think are needed, and some examples? I'm interested in how
 it relates to group IDs and artifact IDs in particular.

 Initially I was planning on doing just the project key and group key
 since there is so much involved with getting just those two in place.
 However everything would probably go that way so that Profiles,
 Schedules, BuildDefinitions, etc...anything with an int ID that is
 used around in continuum would be converted to use a strongly typed
 string key insteadthe ones other then project and group are less
 important in the short term since they are not a constant source of
 confusion...but eventually yes anything with and ID would get a Key
 like this.  If the branch is a success and is voted back onto trunk
 then those could take place on trunk I think since they are smaller
 scope.

 As for how they would relate to groupId's and artifactId's it was not
 my intent to deal with those at all.  One of the things that got us
 into the mess that currently exists was too great a focus on the m2
 side of continuum.  IMO the group and project keys should be kept
 external to any concept of project type.  That way we can always
 maintain a clear delineation between a group and its member projects
 in relation to other groups.  For instance, one of my goals here is to
 make it super easy to have multiple versions of Doxia load up in
 continuum and execute in their little sandboxes.
 Group Keys of Doxia and Doxia-Refactor (just an example branch) should
 be able to seamlessly import the doxia project from its relative
 sources and peacefully coexist.  And it should be just as easy to do
 the same with a number of ant, shell and maven1 projects.

 Anyway, some foreseeable real world example keys in one continuum
 instance:

 Group:
  Maven-Trunk
 Projects:
  Core
  Api
  Artfiact

 Group:
  Maven-2.0.5
 Projects:
  Core
  Api
  Artifact

 Group:
  Continuum
 Projects:
  Core
  Api
  Store
  Webapp

 cheers,

 jesse


 - Brett

 On 22/12/2006, at 6:30 AM, Jesse McConnell wrote:

  I am thinking about pulling a short term branch of continuum with
  rahul and working on getting everything converted to using a string
  based key project and project group reference in all apis and in all
  of the UI decision making items.  He has tomorrow off so I think that
  unless anyone has any big issues with it we'll try and make that
  branch and work on it tomorrow.
 
  the end result of it would be:
 
  * int id's for project and project group in the model are for internal
  

Re: short term branch for project/group keys

2006-12-22 Thread Jesse McConnell

nope, no fundamental reasons behind the immutable bit on the keys, I
am cool with them being open for editing.

jesse

On 12/22/06, Christian Edward Gruber [EMAIL PROTECTED] wrote:

This all sounds great, but why do they need to be immutable?  If they
are essentially used for lookups, and they only exist in one place in
the database (because it's normalized enough through surrogate keys),
then other then the obvious caveats about external things depending on
the keys, why couldn't these string keys change?  There should be no
referential integrity issues, because these keys are not the subjects of
any joins - just where clauses from the interfaces.

This would include project.key, group.key, buildDef.key, notifier.key,
etc.  It could even apply to userId, though standard practice is that
usernames are immutable.  All the other lookup keys could quite easily
be mutable/re-nameable if we wished.  Am I missing something?  I can
certainly see the usefulness of being able to, for maintenance of the
continuum instance.  Not strictly necessary, but saves several steps.

Christian.

Jesse McConnell wrote:
 On 12/22/06, Brett Porter [EMAIL PROTECTED] wrote:
 Sounds good, as long as the store remains independent of them. I
 don't want to get into the situation like in JIRA where you can't
 rename a string key.

 Yes, jason pinged me on this since I guess I wasn't completely clear
 in that summary.

 the project.id and projectGroup.id will basically disappear from
 continuum, reserved strictly for the underlying store.  The store can
 do whatever it wants with them.  The UI will never pass around a
 projectId=26 param on a url making you wonder what the heck it was.  A
 nice side effect of this IMO is that the #'s in the working directory
 would go away as well, defaulting instead to a nested directory
 structure of workingDirectory/GroupKey/ProjectKey/pom.xml

 Now I had honestly been thinking of making the key's immutable, since
 the names of the group's and project's are to be used for all
 presentational type things.  I was going to treat keys under the same
 functional requirements that usernames generally have.  Maybe we offer
 a 'Clone' option that makes a deep copy of the data in the DB into a
 new name and then allow the deletion of the old one...

 Anyway, here are the restrictions I thought of placing on the keys.

 * [a-zA-Z1-9.-:] for all keys
 * group key is unique
 * group key + project key is unique
 * project key should _not_ need to be unique  (ex Doxia/Core +
 Maven/Core + Continuum/Core)
 * keys are immutable, set upon creation

 Before starting to hack on this, perhaps you could list out all the
 keys you think are needed, and some examples? I'm interested in how
 it relates to group IDs and artifact IDs in particular.

 Initially I was planning on doing just the project key and group key
 since there is so much involved with getting just those two in place.
 However everything would probably go that way so that Profiles,
 Schedules, BuildDefinitions, etc...anything with an int ID that is
 used around in continuum would be converted to use a strongly typed
 string key insteadthe ones other then project and group are less
 important in the short term since they are not a constant source of
 confusion...but eventually yes anything with and ID would get a Key
 like this.  If the branch is a success and is voted back onto trunk
 then those could take place on trunk I think since they are smaller
 scope.

 As for how they would relate to groupId's and artifactId's it was not
 my intent to deal with those at all.  One of the things that got us
 into the mess that currently exists was too great a focus on the m2
 side of continuum.  IMO the group and project keys should be kept
 external to any concept of project type.  That way we can always
 maintain a clear delineation between a group and its member projects
 in relation to other groups.  For instance, one of my goals here is to
 make it super easy to have multiple versions of Doxia load up in
 continuum and execute in their little sandboxes.
 Group Keys of Doxia and Doxia-Refactor (just an example branch) should
 be able to seamlessly import the doxia project from its relative
 sources and peacefully coexist.  And it should be just as easy to do
 the same with a number of ant, shell and maven1 projects.

 Anyway, some foreseeable real world example keys in one continuum
 instance:

 Group:
  Maven-Trunk
 Projects:
  Core
  Api
  Artfiact

 Group:
  Maven-2.0.5
 Projects:
  Core
  Api
  Artifact

 Group:
  Continuum
 Projects:
  Core
  Api
  Store
  Webapp

 cheers,

 jesse


 - Brett

 On 22/12/2006, at 6:30 AM, Jesse McConnell wrote:

  I am thinking about pulling a short term branch of continuum with
  rahul and working on getting everything converted to using a string
  based key project and project group reference in all apis and in all
  of the UI decision making items.  He has tomorrow off so I think that
  unless anyone has any big 

Re: short term branch for project/group keys

2006-12-22 Thread Jesse McConnell

project keys are not unique, you need the group key and project key
together to get the actual summary.

it should be fine in the store since the index is the uniqifying
bit..the project class will need a group key in it as well to make
that work

a couple of other things came up today so I haven't started that
branch yet but hopefully soon as I clear off a couple of things now.

jesse

On 12/22/06, Rahul Thakur [EMAIL PROTECTED] wrote:

So, if we have 2 sessions using the same project as target

- user A opens up some Project X's summary for viewing
- user B updates Project X's string key to Y.

Wouldn't that invalidate the key values being used by user A's session?
How will this be handled?

Cheers,
Rahul

- Original Message -
From: Jesse McConnell [EMAIL PROTECTED]
To: continuum-dev@maven.apache.org
Sent: Saturday, December 23, 2006 6:48 AM
Subject: Re: short term branch for project/group keys


 nope, no fundamental reasons behind the immutable bit on the keys, I
 am cool with them being open for editing.

 jesse

 On 12/22/06, Christian Edward Gruber [EMAIL PROTECTED] wrote:
 This all sounds great, but why do they need to be immutable?  If they
 are essentially used for lookups, and they only exist in one place in
 the database (because it's normalized enough through surrogate keys),
 then other then the obvious caveats about external things depending
 on
 the keys, why couldn't these string keys change?  There should be no
 referential integrity issues, because these keys are not the subjects
 of
 any joins - just where clauses from the interfaces.

 This would include project.key, group.key, buildDef.key,
 notifier.key,
 etc.  It could even apply to userId, though standard practice is that
 usernames are immutable.  All the other lookup keys could quite
 easily
 be mutable/re-nameable if we wished.  Am I missing something?  I can
 certainly see the usefulness of being able to, for maintenance of the
 continuum instance.  Not strictly necessary, but saves several steps.

 Christian.

 Jesse McConnell wrote:
  On 12/22/06, Brett Porter [EMAIL PROTECTED] wrote:
  Sounds good, as long as the store remains independent of them. I
  don't want to get into the situation like in JIRA where you can't
  rename a string key.
 
  Yes, jason pinged me on this since I guess I wasn't completely
  clear
  in that summary.
 
  the project.id and projectGroup.id will basically disappear from
  continuum, reserved strictly for the underlying store.  The store
  can
  do whatever it wants with them.  The UI will never pass around a
  projectId=26 param on a url making you wonder what the heck it was.
  A
  nice side effect of this IMO is that the #'s in the working
  directory
  would go away as well, defaulting instead to a nested directory
  structure of workingDirectory/GroupKey/ProjectKey/pom.xml
 
  Now I had honestly been thinking of making the key's immutable,
  since
  the names of the group's and project's are to be used for all
  presentational type things.  I was going to treat keys under the
  same
  functional requirements that usernames generally have.  Maybe we
  offer
  a 'Clone' option that makes a deep copy of the data in the DB into
  a
  new name and then allow the deletion of the old one...
 
  Anyway, here are the restrictions I thought of placing on the keys.
 
  * [a-zA-Z1-9.-:] for all keys
  * group key is unique
  * group key + project key is unique
  * project key should _not_ need to be unique  (ex Doxia/Core +
  Maven/Core + Continuum/Core)
  * keys are immutable, set upon creation
 
  Before starting to hack on this, perhaps you could list out all
  the
  keys you think are needed, and some examples? I'm interested in
  how
  it relates to group IDs and artifact IDs in particular.
 
  Initially I was planning on doing just the project key and group
  key
  since there is so much involved with getting just those two in
  place.
  However everything would probably go that way so that Profiles,
  Schedules, BuildDefinitions, etc...anything with an int ID that is
  used around in continuum would be converted to use a strongly typed
  string key insteadthe ones other then project and group are
  less
  important in the short term since they are not a constant source of
  confusion...but eventually yes anything with and ID would get a Key
  like this.  If the branch is a success and is voted back onto trunk
  then those could take place on trunk I think since they are smaller
  scope.
 
  As for how they would relate to groupId's and artifactId's it was
  not
  my intent to deal with those at all.  One of the things that got us
  into the mess that currently exists was too great a focus on the m2
  side of continuum.  IMO the group and project keys should be kept
  external to any concept of project type.  That way we can always
  maintain a clear delineation between a group and its member
  projects
  in relation to other groups.  For instance, one of my goals here is
  to
  make

Re: short term branch for project/group keys

2006-12-22 Thread Brett Porter


On 23/12/2006, at 12:24 AM, Jesse McConnell wrote:


the project.id and projectGroup.id will basically disappear from
continuum, reserved strictly for the underlying store.  The store can
do whatever it wants with them.


Ok, so a project(Group)? will have:
id : int
key : String
name : String
...

Where key is used as a reference, id is used as a datastore/model  
identity, and name is used as a display. Sounds good.


We could then have a table of old names:
id : int
oldKey : String

These could be used so that failed lookup on a key could then look in  
the old key's to find out what the new one is (like when you move an  
issue in JIRA). I'm not sure this is needed initially - only if we  
support picking up renames to the project itself.


I suggest that a project should, by default, use the Maven group ID  
and artifact Id as the group key and project key respectively.  
Obviously, for Ant/Shell/etc, this will need to be entered by hand.



The UI will never pass around a
projectId=26 param on a url making you wonder what the heck it was.  A
nice side effect of this IMO is that the #'s in the working directory
would go away as well, defaulting instead to a nested directory
structure of workingDirectory/GroupKey/ProjectKey/pom.xml


Cool. We could also do nice things with the URLs using a WW mapper:

/continuum/org.apache.maven/maven-project/buildHistory



Anyway, here are the restrictions I thought of placing on the keys.

* [a-zA-Z1-9.-:] for all keys
* group key is unique
* group key + project key is unique
* project key should _not_ need to be unique  (ex Doxia/Core +
Maven/Core + Continuum/Core)
* keys are immutable, set upon creation


For now sounds good (would like to review immutability later), though  
suggest using Maven IDs where possible.




Initially I was planning on doing just the project key and group key
since there is so much involved with getting just those two in place.
However everything would probably go that way so that Profiles,
Schedules, BuildDefinitions, etc...anything with an int ID that is
used around in continuum would be converted to use a strongly typed
string key insteadthe ones other then project and group are less
important in the short term since they are not a constant source of
confusion...but eventually yes anything with and ID would get a Key
like this.  If the branch is a success and is voted back onto trunk
then those could take place on trunk I think since they are smaller
scope.


Sounds good. I'm not sure how often you really need to reference a  
schedule or build definition (or how you'd really appropriately  
describe them). We don't want to go to the point where you have to  
make up extra information that is not useful.




As for how they would relate to groupId's and artifactId's it was not
my intent to deal with those at all.  One of the things that got us
into the mess that currently exists was too great a focus on the m2
side of continuum.  IMO the group and project keys should be kept
external to any concept of project type.  That way we can always
maintain a clear delineation between a group and its member projects
in relation to other groups.  For instance, one of my goals here is to
make it super easy to have multiple versions of Doxia load up in
continuum and execute in their little sandboxes.


Whoa. Repeat the mantra - convention over configuration :)

One of the great strengths of Continuum is that it takes its defaults  
from Maven. Sure, they can be changeable, but they *must* be the  
default. That's not a mess.


As for multiple branches - I'm not convinced either way yet. I Can  
see the merits in your example of simply making them new projects,  
but then they need to be reconfigured (often in the same way). On the  
other hand, it could be that branches should be a subsection of the  
project, not an additional project. The hierachy would be group   
project  branch/instance. Notifiers and build definitions would be  
attached to the group or the project, and can be excluded from a  
given branch/instance if not used there.


Let's discuss that separately as it's obviously new functionality,  
whereas loading them up as new projects is a workable current  
solution. If we take the defaults, all that means is that adding a  
second one should complain, and you need to edit the key. No big deal.


- Brett




Re: short term branch for project/group keys

2006-12-22 Thread Christian Edward Gruber
If we use JPA or some such with caching at the HttpSession-scoped level
for keys (with some fancy dealing, I admit) we can have each person's
view independent on a per-session basis.  That is, the key will be
translated into an id _in that person's context_, and the real id's are
used to fetch.  So a key change will only affect them when their keys
refresh.  Now we need a strategy for refresh, but hey... one problem at
a time. :)

Not the best idea I've had, but more to point out that there are some
solutions to this that can be fairly simple in practice.

Christian

Rahul Thakur wrote:

 [snip]
 the project.id and projectGroup.id will basically disappear from
 continuum, reserved strictly for the underlying store.  The store can
 do whatever it wants with them.

 Ok, so a project(Group)? will have:
 id : int
 key : String
 name : String
 ...

 Where key is used as a reference, id is used as a datastore/model
 identity, and name is used as a display. Sounds good.

 We could then have a table of old names:
 id : int
 oldKey : String

 These could be used so that failed lookup on a key could then look in
 the old key's to find out what the new one is (like when you move an
 issue in JIRA). I'm not sure this is needed initially - only if we
 support picking up renames to the project itself.

 [/snip]

 That was my point in my last email. I understand why we need that old
 key table but this would be something that will just get bloated over
 time. There could be a 'housekeeper' process that can clean up old
 keys after a certain time has expired. I don't see a reason why we
 need to keep the old stuff for long.

 Cheers,
 Rahul




-- 

*christian** gruber + process coach and architect*

*Israfil Consulting Services Corporation*

*email** [EMAIL PROTECTED] + bus 905.640.1119 + mob 416.998.6023*



Re: short term branch for project/group keys

2006-12-21 Thread Christian Edward Gruber
Sounds great to me.  But I'm confused.  Are the api's passing around
keys as in database keys (id), or so-called business keys, i.e. the
project group's text id and the project's text id?  I presume the
latter, given the earlier discussions.

Christian.

Jesse McConnell wrote:
 I am thinking about pulling a short term branch of continuum with
 rahul and working on getting everything converted to using a string
 based key project and project group reference in all apis and in all
 of the UI decision making items.  He has tomorrow off so I think that
 unless anyone has any big issues with it we'll try and make that
 branch and work on it tomorrow.

 the end result of it would be:

 * int id's for project and project group in the model are for internal
 store usage
 * name's for project and project group are for presentation purposes only
 * key's are for all api usage and passing around un URL's etc.

 some quick benefits are:

 * consistency across all apis and url manipulations
 * ability to add quick url rewriting for direct linking of projects
 foo.org/Doxia/Core
 * common keys across running continuum instances for clustering

 jesse



-- 

*christian** gruber + process coach and architect*

*Israfil Consulting Services Corporation*

*email** [EMAIL PROTECTED] + bus 905.640.1119 + mob 416.998.6023*



Re: short term branch for project/group keys

2006-12-21 Thread Jesse McConnell

The web pages use a combination of id's which are currently jpox id's
and in some places the actual freeform name string is being passed
around on the URL in order to influence program logic and security
decisions..

all of that is what I want to unite behind stronger typed string keys.

jesse

On 12/21/06, Christian Edward Gruber [EMAIL PROTECTED] wrote:

Sounds great to me.  But I'm confused.  Are the api's passing around
keys as in database keys (id), or so-called business keys, i.e. the
project group's text id and the project's text id?  I presume the
latter, given the earlier discussions.

Christian.

Jesse McConnell wrote:
 I am thinking about pulling a short term branch of continuum with
 rahul and working on getting everything converted to using a string
 based key project and project group reference in all apis and in all
 of the UI decision making items.  He has tomorrow off so I think that
 unless anyone has any big issues with it we'll try and make that
 branch and work on it tomorrow.

 the end result of it would be:

 * int id's for project and project group in the model are for internal
 store usage
 * name's for project and project group are for presentation purposes only
 * key's are for all api usage and passing around un URL's etc.

 some quick benefits are:

 * consistency across all apis and url manipulations
 * ability to add quick url rewriting for direct linking of projects
 foo.org/Doxia/Core
 * common keys across running continuum instances for clustering

 jesse



--

*christian** gruber + process coach and architect*

*Israfil Consulting Services Corporation*

*email** [EMAIL PROTECTED] + bus 905.640.1119 + mob 416.998.6023*






--
jesse mcconnell
[EMAIL PROTECTED]


Re: short term branch for project/group keys

2006-12-21 Thread Brett Porter
Sounds good, as long as the store remains independent of them. I  
don't want to get into the situation like in JIRA where you can't  
rename a string key.


Before starting to hack on this, perhaps you could list out all the  
keys you think are needed, and some examples? I'm interested in how  
it relates to group IDs and artifact IDs in particular.


- Brett

On 22/12/2006, at 6:30 AM, Jesse McConnell wrote:


I am thinking about pulling a short term branch of continuum with
rahul and working on getting everything converted to using a string
based key project and project group reference in all apis and in all
of the UI decision making items.  He has tomorrow off so I think that
unless anyone has any big issues with it we'll try and make that
branch and work on it tomorrow.

the end result of it would be:

* int id's for project and project group in the model are for internal
store usage
* name's for project and project group are for presentation  
purposes only

* key's are for all api usage and passing around un URL's etc.

some quick benefits are:

* consistency across all apis and url manipulations
* ability to add quick url rewriting for direct linking of projects
foo.org/Doxia/Core
* common keys across running continuum instances for clustering

jesse

--
jesse mcconnell
[EMAIL PROTECTED]