Hi,

This is the current interface:

public interface EntityReferenceFactory<T>
{
    /**
     * @param entityReferenceRepresentation the representation of an entity 
reference (eg as a String)
     * @param type the type of the Entity (Document, Space, Attachment, Wiki, 
etc) to extract from the source
     * @return the resolved reference as an Object
     */
    EntityReference createEntityReference(T entityReferenceRepresentation, 
EntityType type);
}

Now we have 2 different implementations:
- one for which T = String
- one for which T = EntityReference (our normalizer)

In term of usage this means:

EntityReference ref = factory.createEntityReference("wiki:space.page", 
EntityType.DOCUMENT);
EntityReference ref = factory.createEntityReference(documentReference, 
EntityType.DOCUMENT);

The last example is used to normalize the passed reference, convert it into the 
type specified by the second parameter, filling the blanks.

I feel that Factory is no longer an appropriate name, especially for the second 
use case. WDYT?

IMO a better name would be Resolver, Normalizer, or Converter. Any other better 
name? (I haven't put Parser since I don't believe it's correct).

Examples:

EntityReference ref = resolver.resolve("wiki:space.page", EntityType.DOCUMENT);
EntityReference ref = resolver.resolve(documentReference, EntityType.DOCUMENT);

EntityReference ref = normalizer.normalize("wiki:space.page", 
EntityType.DOCUMENT);
EntityReference ref = normalizer.normalize(documentReference, 
EntityType.DOCUMENT);

EntityReference ref = converter.convert("wiki:space.page", EntityType.DOCUMENT);
EntityReference ref = converter.convert(documentReference, EntityType.DOCUMENT);

It's quite a lot of work to change what I have put but since this is an 
important API we need to be sure of what we want since we won't be able to 
change it later on.

I'm +1 for Resolver.

WDYT?

Thanks
-Vincent

_______________________________________________
devs mailing list
devs@xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to