That was supposed to say "<RESOLVER FOR GIVEN SCHEMA".

On 26 July 2012 08:46, mehdi houshmand <med1...@gmail.com> wrote:

> Hi Matthias,
>
> Don't be so quick to thank us for this work, you may retract that once you
> start using it ;).
>
> 1. Good question. The way it works is that you give the FopFactory (either
> in a constructor or via the EnvironmentProfile) a base-URI, this will
> become the default base URI should a "<font-base>" not be given.
>
> 2. Yes, you can use a relative URI and it resolves against the default
> base URI described in 1). What I've tried to do is make all URIs resolve to
> against single base URI that is given in the constructor of the FopFactory.
> Interestingly though, I just noticed something we didn't consider. What if
> the URI given to the FopFactory isn't an absolute URI? We don't check at
> any point to ensure it is absolute... I think it would resolve against "new
> URI(".")" where-ever that may be. Maybe we want throw an
> IllegalArgumentException? I don't know.
>
> 3. There is some documentation as to how to do this, though I think we
> could have probably done better in publishing more detailed explanation as
> to what we've done here. So we have created a mechanism for handling URI
> schemes, since it's an integral part of the URI spec, and it's almost the
> raison d'etre. Look at the o.a.f.apps.io.ResourceResolverFactory and its
> unit test (o.a.f.apps.io.ResourceResolverFactoryTestCase) the static inner
> class "TestCreateSchemaAwareResourceResolverBuilderHelper" (say that
> quickly 20 times) does what you're looking for.
>
> Essentially do the following:
> ResourceResolverFactory.SchemaAwareResourceResolverBuilder builder =
> ResourceResolverFactory.createSchemaAwareResourceResolverBuilder(<DEFAULT
> RESOLVER>);
> builder.registerResourceResolverForSchema(<SCHEMA>, <RESOLVER GIVEN
> SCEHMA>);
> ... // you can add any number of schemas with their corresponding resolvers
> ResourceResolver resolver = builder.build();
> // resolver is then used as the resolver given to either the
> FopFactoryBuilder or FopConfParser, either directly or via the
> EnvironmentProfile.
>
> I'd play around with this mechanism, it can be very powerful once you play
> around with URIs. You can define the the font-base as "font://" and use
> "font" as the schema and thus have much finer control as to where the fonts
> are. This brings the full power of the URI spec to all resource
> acquisition. All you have to do is implement the ResourceResolver interface.
>
> Also, an FYI for you and anyone else that uses FOP in systems that require
> fine-grained control over I/O and file access; you can now control where
> FOP writes/reads from temporary files (scratch files used to save on
> memory.) By implementing the o.a.f.apps.io.TempResourceResolver, you can
> mitigate any security risks from leaking information or any worries one may
> have. (Though realistically, the way FOP uses scratch files, that's not
> very likely, but it's always better safe than sorry.)
>
> I hope all that makes sense, if not, please feel free to ask me to clarify.
>
> Mehdi
>
> On 25 July 2012 21:25, Matthias Reischenbacher <matthias8...@gmx.at>wrote:
>
>> Hi Mehdi,
>>
>> thanks for your explanation. Some questions:
>>
>> 1. What's the default font base directory? The same as the normal base
>> directory?
>>
>> 2. Can I use a path relative to the normal base directory for the font
>> base directory?
>>
>> 3. Back to URI resolving: I'm a bit afraid of breaking something if I
>> implement my own URI resolver. What does the default resolver do? It would
>> be nice if the default resolver would be part of the public API so that I
>> can sub class it and just inject the authentication params (like before).
>>
>> Btw... it's really nice that all data is loaded now through the new URI
>> resolver. In the near future I'd like to use a custom scheme (e.g.
>> myscheme://imageid) in order to load images instead of using HTTP. That
>> wouldn't be possible without your change. So thanks!
>>
>> Best regards,
>> Matthias
>>
>>
>> On 24.07.2012 04:23, mehdi houshmand wrote:
>>
>>> Sorry Matthias, I'm an idiot. Not defining a font-base wasn't an over
>>> sight at all; I was just implementing a font-base injection mechanism
>>> and I remembered why we didn't allow this programmatically. You have to
>>> define the font-base using the "<font-base>" element in the fop-conf,
>>> that's the only way to do it and it's intentional.
>>>
>>> I'll take this opportunity to explain why we've done what we've done for
>>> the sake of the community, if you're not interested feel free to ignore
>>> the next section:
>>> Some of the problems we were seeing when dealing with a lot of these
>>> configuration classes was that people were adding new parameters and
>>> functionality to them incrementally, as is the case with open-source.
>>> The problem was that there were several ways of doing the same thing and
>>> getters/setters all over the place. So what we did was try and ask "what
>>> would a user want to do? And how do we make that as easy as possible
>>> while still maintaining some encapsulation and immutability in these
>>> classes?"
>>>
>>> How does relate to the font-base? Well, it seems like an abuse of
>>> encapsulation to allow users to set the font-base-URI directly onto the
>>> FontManager. Users shouldn't need to care about these internal
>>> mechanisms, they should be able to just configure it and it works. So we
>>> decided to enforce a single parameter to set the font-base
>>> ("<font-base>" in the fop-conf) because th only reason someone would
>>> want to define a font-base-URI would be if they had custom fonts setup,
>>> and in order to do so they'd need a fop-conf anyways. So we might as
>>> well enforce a single point of entry for the font-base-URI, otherwise
>>> you'll have to do "if (x != null)" checks all over the place and how
>>> would you decide which parameter overrides which? Why should a
>>> programmatically set font-base override the one found in the font-base?
>>> How do we document this so that users it's abundantly obvious to users?
>>> We asked ourselves "is there a use case for setting this
>>> programmatically rather than through the fop-conf?" We couldn't see why
>>> anyone would want to do that.
>>>
>>> We have tried to reduce the number of entry points for injecting
>>> configuration parameters, for two reasons; 1) because it wasn't
>>> documented and certainly wasn't obvious which parameters overrode which,
>>> when two of the same config parameters were used; 2) for the sake of
>>> developers, so that once the FopFactory hand been created, its state is
>>> mostly immutable (it has mutable members) and we can make certain
>>> assertions on the immutability of the members.
>>>
>>> Hope that makes our intentions clear,
>>>
>>> Mehdi
>>>
>>> On 24 July 2012 07:35, mehdi houshmand <med1...@gmail.com
>>> <mailto:med1...@gmail.com>> wrote:
>>>
>>>     Hi Matthias,
>>>
>>>     The way we've implemented the interface, you can be completely in
>>>     control of how HTTP is authenticated by implementing
>>>     o.a.f.apps.io.**ResourceResolver[1] and giving it to the
>>>     FopFactoryBuilder/**FopConfParser[2].
>>>
>>>     As for the base URI for fonts, you can set this in the fop-conf, we
>>>     haven't created a way to set this programmatically, that was an
>>>     oversight on our end. I'll enable a way to do this and get back to
>>> you.
>>>
>>>     [1] 
>>> http://wiki.apache.org/**xmlgraphics-fop/URIResolution<http://wiki.apache.org/xmlgraphics-fop/URIResolution>
>>>     [2] http://wiki.apache.org/**xmlgraphics-fop/**
>>> FopFactoryConfiguration<http://wiki.apache.org/xmlgraphics-fop/FopFactoryConfiguration>
>>>
>>>     Hope that helps,
>>>
>>>     Mehdi
>>>
>>>
>>>     On 24 July 2012 00:01, Matthias Reischenbacher <matthias8...@gmx.at
>>>     <mailto:matthias8...@gmx.at>> wrote:
>>>
>>>         Hi,
>>>
>>>         I just tried to upgrade to latest trunk and noticed two
>>>         compatibility issues with my application which I couldn't fix on
>>>         my own:
>>>
>>>         * The fontManager has no setBaseURL method anymore. How is the
>>>         base URL set now?
>>>
>>>         * The FOURIResolver class doesn't exist anymore. Sub classing it
>>>         for applying HTTP basic authentication parameters is therefore
>>>         not possible.
>>>         See also:
>>>         http://wiki.apache.org/__**xmlgraphics-fop/HowTo/__**
>>> BasicHttpAuthentication<http://wiki.apache.org/__xmlgraphics-fop/HowTo/__BasicHttpAuthentication>
>>>
>>>         <http://wiki.apache.org/**xmlgraphics-fop/HowTo/**
>>> BasicHttpAuthentication<http://wiki.apache.org/xmlgraphics-fop/HowTo/BasicHttpAuthentication>
>>> >
>>>         How is HTTP authentication handled now?
>>>
>>>         Thanks for your help,
>>>         Matthias
>>>
>>>         ------------------------------**__----------------------------**
>>> --__---------
>>>         To unsubscribe, e-mail:
>>>         
>>> fop-users-unsubscribe@__xmlgra**phics.apache.org<http://xmlgraphics.apache.org>
>>>         
>>> <mailto:fop-users-unsubscribe@**xmlgraphics.apache.org<fop-users-unsubscr...@xmlgraphics.apache.org>
>>> >
>>>         For additional commands, e-mail:
>>>         fop-users-help@xmlgraphics.__a**pache.org <http://apache.org>
>>>         
>>> <mailto:fop-users-help@**xmlgraphics.apache.org<fop-users-h...@xmlgraphics.apache.org>
>>> >
>>>
>>>
>>>
>>>
>>
>> ------------------------------**------------------------------**---------
>> To unsubscribe, e-mail: 
>> fop-users-unsubscribe@**xmlgraphics.apache.org<fop-users-unsubscr...@xmlgraphics.apache.org>
>> For additional commands, e-mail: 
>> fop-users-help@xmlgraphics.**apache.org<fop-users-h...@xmlgraphics.apache.org>
>>
>>
>

Reply via email to