Thierry Boileau wrote:
Hello Marc,

thanks a lot for tracking this bug. The first path has been chosen

cool, and thx.

because of symetry, and because there is a distinction between a file
having no extensions and a file having extensions not registered by
the metadataService.


OK, but I'm unsure if I understand the "distinction" now.
In the current situation: when a file does not have an extension, then no metadata will get loaded in the updateMetadata in LocalClientHelper (and thus the default will be added anyway.)

I'm perfectly happy with this solution, but if you _do_ want that to have a no-extension mapping to be distinct from the 'default', then I would suggest to insert at line 105 something that

 // checks for the no extension-case
  if (tokens.length == 1)
  {
    // and makes the association from
    current = getMetadata("");

    // and then applying the media-type to the variant
  }


By the way: the instance-of checking on the subclass of Metadata is a bit messy (not very OO/polimorfism) I would suggest refactoring to adding:

public void applyTo(Variant variant) to the MetaData class

you can either make it abstract there, or let it do nothing

and then have the specific subclasses make the correct implementation.

Inside LocalClientHelper this would replace the complete set of
if-else "current instanceof" testing with a mere

    current.applyTo(variant)


HTH,

regards,
-marc=

best regards,
Thierry Boileau

On Mon, Feb 25, 2008 at 5:16 PM, Marc Portier <[EMAIL PROTECTED]> wrote:
Hi,

 I'm looking for a way to allow PUT on
 - file:/// URI's
 - to resources that have no extension
 - by pushing entities of type "application/octet-stream"
 (or whatever would be the metadata-service's default-mime)

 Currently the file-client-helper checks the metadata-consistency of the
 file being put.

 This check *always* fails when the file doesn't have an extension at all.


 To resolve, I see two possible paths:

 [1] let consistency check pass when:
       extension doesn't yield a mapped type
       AND the type being put matches the default.

 Looking at the MetadataService I see it holding a defaultMediaType, but
 that one isn't considered when doing the consistency check. (While the
 default-language is, so this would put both in sync more.)


 [2] allow to assign metadata to the "" extension (empty string)

 I'm not entirely sure how the meaning of 'default' relates to the
 meaning of 'no extension', if those have different meaning, then I think
 this would be the appropriate way out.


 I'm tempted to go for [2], but wanted to check here if I'm not
 overlooking possible conflicts or yet more elegant solutions, so please
 comment.

 As before, I'll be happy to provide the patch for this.

 regards,
 -marc=


Reply via email to