Brett Porter wrote:

On 31/07/2007, at 12:43 PM, Joakim Erdfelt wrote:

I'm tired.
I'm tired of the confusion.
I'm tired of the lack of decision.

k, I have a proposal at the end, just working through the details.
That was my attempt at a disclaimer.  ;-)
* Apache Maven 2
* Apache Maven 1.1
* Apache Maven 1.0
* Apache Ivy
The 4 clients.

understood (though I still don't see the distinction between maven 1 versions). I'm also wondering if there is something we have to do now to support Ivy or if it "just works". Given that Ivy sully supports m2 repos now, I think this is a nice to have.

Maven 2, Maven 1.1, and Ivy work right now. They all support the maven 2 default layout fine. With minor differences in patterns when it comes to the metadata.xml and checksum files.

The 4 types of data that is fetched from the repository.
* Artifacts
* Versioned Metadata.xml
* Project (unversioned) Metadata.xml
* Checksum files
Not all types have these things, though - metadata is only applicable to Maven 2, and Ivy (and other repositories) likely have other files.

True, but keep in mind that all archiva has to work with is a repo_id and a requested_resource_path. Going from those limited pieces of information to an actual resource is the tricky part.
Does the client want an artifact? or a metadata.xml? or a checksum file?

Since we hit collisions on the auto-discovery technique for maven 1 to maven 2 requests (ie: legacy vs default), the need to have a different 'view' to the repository is crucial. (one such collision in naming is when a metadata.xml file is requested and the path is detected as a maven 1 resource. there are more, but addressing each 'special case' will just result in a piece of code horribly convoluted and ultimately doomed to maintenance hell)
I thought it was maintainable for the set of clients listed so far, but if we look to support others than I can see how that might be the case, so fair enough.


Now instead of talking about layouts (legacy vs default) and paths as the means to an end, the idea of access or client identifiers in the URL was discussed. /get/${accessor_id}/${repo_id}/${resource}

I'm about to rip it apart and implement it as proposed, as I want to see it work, and no one has yet to propose a different viable solution to the issue.

I still don't like the format.

My proposal is this:
1) Please use /repository and /webdav instead of /get and /put.
2) please let a repository specify a default accessor_id so that the repository need not be so long
3) please saw repo_id and accessor_id

I think that is the best alternative here. What do others think - am I on another planet? :)

I think I follow you.

How about this ...

1) the current /repository servlet gets split into 2 servlets.
   /repository/ becomes the dynamic GET servlet.
   /manage/ becomes the original webdav servlet.

2) each repository can have an default_accessor_id assigned to it.
The pattern for use as default accessor is "/repository/<repo_id>/[a-zA-Z0-9].*"

3) establish a way to view the repository differently.
    The pattern for this is "/repository/<repo_id>/\[[a-zA-Z0-9-]*\]/.*"
    Example:
/repository/corporate/[maven2]/org/apache/ant/1.7.0/ant-1.7.0.jar
           /repository/corporate/[maven1]/org.apache.ant/jars/ant-1.7.0.jar

This support is important in archiva, and we are getting close to a 1.0 release.
That's why I'm being such a nuisance :)

Aaah?
Aaah!
Aaah?

--
- Joakim Erdfelt
 [EMAIL PROTECTED]
 Open Source Software (OSS) Developer

Reply via email to