"one such collision in naming is when a metadata.xml file is requested and
the path is detected as a
maven 1 resource"

Just surpised about this : would any maven 1.x client request for meta-datas
? AFAIK maven1 only request for artifacts (jars) and never for POMs or
meta-data.xml ?

just my 2 cents...

2007/7/31, Joakim Erdfelt <[EMAIL PROTECTED]>:
>
> I'm tired.
> I'm tired of the confusion.
> I'm tired of the lack of decision.
>
> The ability to serve the repository information to multiple clients is
> exactly the reason for splitting this logic out.
>
> It's nearly impossible to have dynamic paths to resources and be a
> managed repository at the same time.
> That is the first step.  Separate the dynamic 'get' logic out from the
> webdav put/set layer.
>
> The next step is to allow the 4 identified clients to work on GET of
> resources contained within the repository.
>
> The 4 clients.
> * Apache Maven 2
> * Apache Maven 1.1
> * Apache Maven 1.0
> * Apache Ivy
>
> The 4 types of data that is fetched from the repository.
> * Artifacts
> * Versioned Metadata.xml
> * Project (unversioned) Metadata.xml
> * Checksum files
>
> 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)
>
> 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.
>
> This support is important in archiva, and we are getting close to a 1.0
> release.
>
> - Joakim
>
> Brett Porter wrote:
> > We're not really getting towards an answer here, just more spinning
> > around the questions.
> >
> > Please correct me if I'm wrong - but I believe that the get vs put
> > separation is for reasons entirely separate from the client
> > identification.
> >
> > If that is the case, do we agree that /repository and /webdav are
> > appropriate markers for those two requests?
> >
> > Now, returning to the issue of identifying the client - sorry, I don't
> > really understand why we can't identify the format from the URL. It
> > used to do it just fine. We occasionally had a glitch, and the code to
> > do it for m1 was gruesome, but it worked. I also don't understand what
> > is special about m1.1 - was something added that helped in the
> > identification?
> >
> > If we are going to have to put some sort of identification in the URL
> > we need to start deciding how that is going to look and be configured.
> > I really wasn't happy with the long URLs proposed before. I can think
> > of a couple of alternatives, but would prefer to look at the necessity
> > for it first.
> >
> > - Brett
> >
> > On 31/07/2007, at 5:17 AM, Joakim Erdfelt wrote:
> >
> >> Both of those choices do not provide the ability for the client to
> >> identify itself.
> >> Maven doesn't do it.
> >> Wagon doesn't do it.
> >> Ivy doesn't do it.
> >>
> >> So we are left with having some identification of the client via the
> >> URL.
> >>
> >> The long term future direction of Archiva is to support as many
> >> clients as possible.
> >> It is myopic to assume that everyone is going to use Maven 2.
> >>
> >> Archiva 1.0 should support Maven 2, Maven 1.0, Maven 1.1, and Ivy
> >> (all Apache projects).
> >>
> >> Currently, Maven 2, Maven 1.1, and Ivy are easily supported, we have
> >> problems supporting Maven 1.0 with the auto-discovery approach.
> >>
> >> I'm sure we have unit tests for auto-discovering the type of request.
> >> Currently needs to support
> >>
> >> * Artifact for layout of type default.
> >> * Metadata for type default.
> >> * Checksum request for type default.
> >> * Artifact for layout of type legacy.
> >> * Metadata for type legacy.
> >> * Checksum request for type legacy.
> >>
> >> - Joakim
> >>
> >> nicolas de loof wrote:
> >>> I'd suggest to keep the existing "/repository/<repo-id>/path" as get
> >>> URL, so
> >>> that existing archiva user (as I am) that have configured maven
> >>> clients to
> >>> point to this URL don't have to make changes on developpers PCs when
> >>> upgrading...
> >>>
> >>> Having a distinct webdav URL "/webdav//<repo-id>/path" is OK as this
> >>> is set
> >>> in the POM for projects that use it for deployment, so required
> >>> changes are
> >>> limited.
> >>>
> >>> That beeing said, I don't understand the "technical reasons to not do"
> >>> auto-discovery of repository path based on the requested resource,
> when
> >>> possible. I understand there may be some conflicts, and that a
> >>> determinist
> >>> URL has to be supported to avoid them
> >>> (/repository/<repo-id>/maven/<path>
> >>> for maven1, /repository/<repo-id>/maven2/<path> for maven2, ...).
> >>> But this doesn't exclude to also have an auto-discovery based on
> >>> "/repository/<repo-id>/<path>" that ask any registered layout for
> >>> support on
> >>> the requested <path>. If multiple are found, request may be
> >>> rejected. The
> >>> idea here is to allow support for maven1/maven2 request on the same
> >>> get URL
> >>> root, as supported by archiva-0.9.
> >>>
> >>> To avoid any URL conflict, we could :
> >>>
> >>> - use /webdav/<repo-id>/<path> as webdav URL
> >>> - use /get/<repo-id>/<layout>/<path> as deterministic get URL
> >>> - use /repository/<repo-id>/<path> as auto-discovery, for backward
> >>> compatibility with archiva-0.9
> >>>
> >>> Nico.
> >>> 2007/7/30, Brett Porter <[EMAIL PROTECTED]>:
> >>>
> >>>> Joakim,
> >>>>
> >>>> Did we ever reach agreement on the format of these URLs? It'd be
> >>>> great to get it nailed down before beta-1 rolls out :)
> >>>>
> >>>> Cheers,
> >>>> Brett
> >>>>
> >>>> On 04/07/2007, at 11:28 AM, Brett Porter wrote:
> >>>>
> >>>>
> >>>>> So, last time this topic came up, there was disagreement on the /
> >>>>> get/ interface.
> >>>>>
> >>>>> Regarding using /get/ instead of just /repository/ URL as is, I
> >>>>> said (<[EMAIL PROTECTED]>)...
> >>>>> "Ok, while I'd definitely prefer to make it work, if it can't then
> >>>>> I'd prefer we made the change in the other direction (the default
> >>>>> repository URL is get only, we have /repository-id/webdav/ as the
> >>>>> webdav exposure point)."
> >>>>> to which Nicolas agreed.
> >>>>>
> >>>>> We then diverged into discussing auto-discovery of the getId from
> >>>>> the path which there were technical reasons to not do.
> >>>>>
> >>>>> However, I do not want all repositories to look like /archiva/
> >>>>> repository/releases/get/maven2/. Yikes.
> >>>>>
> >>>>> Cheers,
> >>>>> Brett
> >>>>>
> >>>>> On 04/07/2007, at 12:32 AM, Joakim Erdfelt wrote:
> >>>>>
> >>>>>
> >>>>>> Design.
> >>>>>>
> >>>>>> 1) Create DynamicGetServlet which parses ....
> >>>>>>     /get/${getId}/${getResource}
> >>>>>> 2) Create Maven1GetProvider which has an id "maven1", and serves
> >>>>>> artifacts / poms to it.
> >>>>>> 3) Create Maven2GetProvider which has an id "maven2", and serves
> >>>>>> artifacts / poms / metadata to it.
> >>>>>> 4) Test
> >>>>>> 5) Done.
> >>>>>>
> >>>>>> - Joakim
> >>>>>>
> >>>>>>
> >
>
>
> --
> - Joakim Erdfelt
>   [EMAIL PROTECTED]
>   Open Source Software (OSS) Developer
>
>

Reply via email to