Re: Trouble with setting font base url which include space character

2012-04-18 Thread mehdi houshmand
Hi Rob,

Firstly, we are working to change how fop handles file access and I/O in
general. I should note, that we're unifying all resource acquisition to
resolving URIs, not URLs. The two concepts differ, and it's non-trivial.

See http://wiki.apache.org/xmlgraphics-fop/URIResolution and
http://wiki.apache.org/xmlgraphics-fop/FopFactoryConfiguration.

Secondly, there are some misnomers in the names of these resource finders.
The issue you're seeing is that /d1/rework/acres
install/ac47/eclipe/plugins while it is a valid URL, it is not a valid
URI. The FopFactory.setFontBaseURL(...) method delegates to the
FOURIResolver to validate the String given and parses it as a URL NOT a
URL. That is why you're seeing this problem.

Mehdi

On 17 April 2012 23:58, Rob Sargent rsarg...@xmission.com wrote:

  Seems to me FopFactory.setFontBaseURL(String s) is broken?

 Forgive the reflection calls (long story).

 File fontsdir = new File(bundlePath + fopHome + /fonts);

 URL fontsURL = fontsdir.toURI().toURL();
 setFontBaseURLMethod.invoke(fopFactory, fontsURL.toExternalForm());

 works fine when the directory is, shall we say, normal, but if the
 directory has a space the method appears to eat the %20.

 Caused by: java.net.MalformedURLException: Illegal character in path at
 index 23: 
 file:///d1/rework/acresinstall/ac47/eclipse/plugins/com.amirsys.console_4.6.0/fop/fop100/fop/fonts/


 bundlePath=/d1/rework/acres install/ac47/eclipe/plugins
 fopHome=com.amirsys.console_4.6.0/fop/fop100/fop

 I've written a test jig to see what File.toURI().toURL() does:

 import java.net.URL;
 import java.io.File;

 public class FileURL {

 public static void main(String[] args) {
 try {
 File f = new File(args[0]);
 URL furl = f.toURI().toURL();
 System.out.println(furl.toString());
 System.out.println(furl.toExternalForm());
 }
 catch (java.net.MalformedURLException mue) {
 mue.printStackTrace();
 }
 }
 }

  And that reports what I expected, an encoded path:

 java -cp . FileURL /d1/rework/acres\ install/ac47
 file:/d1/rework/acres%20install/ac47/
 file:/d1/rework/acres%20install/ac47/


 I hope someone has a better plan.

 I do think that the FOP api should be changed to take a URL rather than a
 string, but that's for another day.





Re: Trouble with setting font base url which include space character

2012-04-18 Thread Rob Sargent

Thanks Mehdi, looking forward to the API change.

But I'm not sending .../acres install/..., rather (I believe) I'm 
sending .../acres%20install/... as the string URL.  Is that not the 
correct format?


rjs

On 04/18/2012 01:43 AM, mehdi houshmand wrote:

Hi Rob,

Firstly, we are working to change how fop handles file access and I/O 
in general. I should note, that we're unifying all resource 
acquisition to resolving URIs, not URLs. The two concepts differ, and 
it's non-trivial.


See http://wiki.apache.org/xmlgraphics-fop/URIResolution and 
http://wiki.apache.org/xmlgraphics-fop/FopFactoryConfiguration.


Secondly, there are some misnomers in the names of these resource 
finders. The issue you're seeing is that /d1/rework/acres 
install/ac47/eclipe/plugins while it is a valid URL, it is not a 
valid URI. The FopFactory.setFontBaseURL(...) method delegates to the 
FOURIResolver to validate the String given and parses it as a URL NOT 
a URL. That is why you're seeing this problem.


Mehdi

On 17 April 2012 23:58, Rob Sargent rsarg...@xmission.com 
mailto:rsarg...@xmission.com wrote:


Seems to me FopFactory.setFontBaseURL(String s) is broken?

Forgive the reflection calls (long story).

File fontsdir = new File(bundlePath + fopHome + /fonts);

URL fontsURL = fontsdir.toURI().toURL();
setFontBaseURLMethod.invoke(fopFactory,
fontsURL.toExternalForm());

works fine when the directory is, shall we say, normal, but if the
directory has a space the method appears to eat the %20.

Caused by: java.net.MalformedURLException: Illegal character in
path at index 23: file:///d1/rework/acres
install/ac47/eclipse/plugins/com.amirsys.console_4.6.0/fop/fop100/fop/fonts/


bundlePath=/d1/rework/acres install/ac47/eclipe/plugins
fopHome=com.amirsys.console_4.6.0/fop/fop100/fop

I've written a test jig to see what File.toURI().toURL() does:

import java.net.URL;
import java.io.File;

public class FileURL {

public static void main(String[] args) {
try {
File f = new File(args[0]);
URL furl = f.toURI().toURL();
System.out.println(furl.toString());
System.out.println(furl.toExternalForm());
}
catch (java.net.MalformedURLException mue) {
mue.printStackTrace();
}
}
}

And that reports what I expected, an encoded path:

java -cp . FileURL /d1/rework/acres\ install/ac47
file:/d1/rework/acres%20install/ac47/
file:/d1/rework/acres%20install/ac47/


I hope someone has a better plan.

I do think that the FOP api should be changed to take a URL rather
than a string, but that's for another day.







Re: Trouble with setting font base url which include space character

2012-04-18 Thread mehdi houshmand
Hi Rob,

Ooohh, my bad. I must have misunderstood your concern. This is an
interesting little problem, the only thing I can think if is that the
FopFactory overrides the FontManager.setFontBaseURL(...) method:

this.fontManager = new FontManager() {

/** {@inheritDoc} */
@Override
public void setFontBaseURL(String fontBase) throws
MalformedURLException {
super.setFontBaseURL(getFOURIResolver().checkBaseURL(fontBase));
}

};

But then, you're calling the setFontBaseURL(...) method on FopFactory and
not FontManager, so I don't know, maybe someone else may have an idea. But
could you give us all the usuals, what version of FOP you're using? Have
you tried seeing if trunk has the same issue etc...

Mehdi

On 18 April 2012 15:39, Rob Sargent rsarg...@xmission.com wrote:

  Thanks Mehdi, looking forward to the API change.

 But I'm not sending .../acres install/..., rather (I believe) I'm
 sending .../acres%20install/... as the string URL.  Is that not the
 correct format?

 rjs


 On 04/18/2012 01:43 AM, mehdi houshmand wrote:

 Hi Rob,

  Firstly, we are working to change how fop handles file access and I/O in
 general. I should note, that we're unifying all resource acquisition to
 resolving URIs, not URLs. The two concepts differ, and it's non-trivial.

  See http://wiki.apache.org/xmlgraphics-fop/URIResolution and
 http://wiki.apache.org/xmlgraphics-fop/FopFactoryConfiguration.

  Secondly, there are some misnomers in the names of these resource
 finders. The issue you're seeing is that /d1/rework/acres
 install/ac47/eclipe/plugins while it is a valid URL, it is not a valid
 URI. The FopFactory.setFontBaseURL(...) method delegates to the
 FOURIResolver to validate the String given and parses it as a URL NOT a
 URL. That is why you're seeing this problem.

  Mehdi

  On 17 April 2012 23:58, Rob Sargent rsarg...@xmission.com wrote:

  Seems to me FopFactory.setFontBaseURL(String s) is broken?

 Forgive the reflection calls (long story).

 File fontsdir = new File(bundlePath + fopHome + /fonts);

 URL fontsURL = fontsdir.toURI().toURL();
 setFontBaseURLMethod.invoke(fopFactory, fontsURL.toExternalForm());

 works fine when the directory is, shall we say, normal, but if the
 directory has a space the method appears to eat the %20.

 Caused by: java.net.MalformedURLException: Illegal character in path at
 index 23: 
 file:///d1/rework/acresinstall/ac47/eclipse/plugins/com.amirsys.console_4.6.0/fop/fop100/fop/fonts/


 bundlePath=/d1/rework/acres install/ac47/eclipe/plugins
 fopHome=com.amirsys.console_4.6.0/fop/fop100/fop

 I've written a test jig to see what File.toURI().toURL() does:

 import java.net.URL;
 import java.io.File;

 public class FileURL {

 public static void main(String[] args) {
 try {
 File f = new File(args[0]);
 URL furl = f.toURI().toURL();
 System.out.println(furl.toString());
 System.out.println(furl.toExternalForm());
 }
 catch (java.net.MalformedURLException mue) {
 mue.printStackTrace();
 }
 }
 }

  And that reports what I expected, an encoded path:

 java -cp . FileURL /d1/rework/acres\ install/ac47
 file:/d1/rework/acres%20install/ac47/
 file:/d1/rework/acres%20install/ac47/


 I hope someone has a better plan.

 I do think that the FOP api should be changed to take a URL rather than a
 string, but that's for another day.







Re: Trouble with setting font base url which include space character

2012-04-18 Thread Rob Sargent
And my bad too: FOP-1.0 compiled from source of official release circa 
2012-03-01.


You are correct in that I'm working off of FopFactory, but my debugger 
takes me to the same setFontBaseURL(String) you list so I'm not sure 
switching to FontManager would change anything.  (It will take a 
moderate effort to switch this:  the long story is that we still use 
older versions of fop (including to 0.20-5 I'm sorry to say) so that's 
why I'm using reflection (and classloader shenanigans to boot).


I have not looked at recent releases for any fixes in this area.  I 
actually expected a flood of your doing it wrong, do this instead


rjs



On 04/18/2012 09:19 AM, mehdi houshmand wrote:

Hi Rob,

Ooohh, my bad. I must have misunderstood your concern. This is an 
interesting little problem, the only thing I can think if is that the 
FopFactory overrides the FontManager.setFontBaseURL(...) method:


 this.fontManager = new FontManager() {

 /** {@inheritDoc} */
 @Override
 public void setFontBaseURL(String fontBase) throws 
MalformedURLException {
 
super.setFontBaseURL(getFOURIResolver().checkBaseURL(fontBase));
 }

 };
But then, you're calling the setFontBaseURL(...) method on 
FopFactory and not FontManager, so I don't know, maybe someone else 
may have an idea. But could you give us all the usuals, what version 
of FOP you're using? Have you tried seeing if trunk has the same issue 
etc...


Mehdi

On 18 April 2012 15:39, Rob Sargent rsarg...@xmission.com 
mailto:rsarg...@xmission.com wrote:


Thanks Mehdi, looking forward to the API change.

But I'm not sending .../acres install/..., rather (I believe)
I'm sending .../acres%20install/... as the string URL.  Is that
not the correct format?

rjs


On 04/18/2012 01:43 AM, mehdi houshmand wrote:

Hi Rob,

Firstly, we are working to change how fop handles file access and
I/O in general. I should note, that we're unifying all resource
acquisition to resolving URIs, not URLs. The two concepts differ,
and it's non-trivial.

See http://wiki.apache.org/xmlgraphics-fop/URIResolution and
http://wiki.apache.org/xmlgraphics-fop/FopFactoryConfiguration.

Secondly, there are some misnomers in the names of these resource
finders. The issue you're seeing is that /d1/rework/acres
install/ac47/eclipe/plugins while it is a valid URL, it is not a
valid URI. The FopFactory.setFontBaseURL(...) method delegates to
the FOURIResolver to validate the String given and parses it as a
URL NOT a URL. That is why you're seeing this problem.

Mehdi

On 17 April 2012 23:58, Rob Sargent rsarg...@xmission.com
mailto:rsarg...@xmission.com wrote:

Seems to me FopFactory.setFontBaseURL(String s) is broken?

Forgive the reflection calls (long story).

File fontsdir = new File(bundlePath + fopHome + /fonts);

URL fontsURL = fontsdir.toURI().toURL();
setFontBaseURLMethod.invoke(fopFactory,
fontsURL.toExternalForm());

works fine when the directory is, shall we say, normal, but
if the directory has a space the method appears to eat the %20.

Caused by: java.net.MalformedURLException: Illegal character
in path at index 23: file:///d1/rework/acres

install/ac47/eclipse/plugins/com.amirsys.console_4.6.0/fop/fop100/fop/fonts/


bundlePath=/d1/rework/acres install/ac47/eclipe/plugins
fopHome=com.amirsys.console_4.6.0/fop/fop100/fop

I've written a test jig to see what File.toURI().toURL() does:

import java.net.URL;
import java.io.File;

public class FileURL {

public static void main(String[] args) {
try {
File f = new File(args[0]);
URL furl = f.toURI().toURL();
System.out.println(furl.toString());
System.out.println(furl.toExternalForm());
}
catch (java.net.MalformedURLException mue) {
mue.printStackTrace();
}
}
}

And that reports what I expected, an encoded path:

java -cp . FileURL /d1/rework/acres\ install/ac47
file:/d1/rework/acres%20install/ac47/
file:/d1/rework/acres%20install/ac47/


I hope someone has a better plan.

I do think that the FOP api should be changed to take a URL
rather than a string, but that's for another day.










Re: Trouble with setting font base url which include space character

2012-04-18 Thread mehdi houshmand
Oh no, I wasn't suggesting you change to the FontManager.setFontBaseURL(),
I was just noting that the method is overridden. Could you provide a full
stack trace, it might be interesting to note where that exception is coming
from?

Also, just to expedite the process, try the same thing with trunk, see what
happens. From testing the method call, it should accept spaces in the
String, the FOURIResolver does a lot of URI correction.

Mehdi

On 18 April 2012 16:50, Rob Sargent rsarg...@xmission.com wrote:

  And my bad too: FOP-1.0 compiled from source of official release circa
 2012-03-01.

 You are correct in that I'm working off of FopFactory, but my debugger
 takes me to the same setFontBaseURL(String) you list so I'm not sure
 switching to FontManager would change anything.  (It will take a moderate
 effort to switch this:  the long story is that we still use older
 versions of fop (including to 0.20-5 I'm sorry to say) so that's why I'm
 using reflection (and classloader shenanigans to boot).

 I have not looked at recent releases for any fixes in this area.  I
 actually expected a flood of your doing it wrong, do this instead

 rjs




 On 04/18/2012 09:19 AM, mehdi houshmand wrote:

 Hi Rob,

  Ooohh, my bad. I must have misunderstood your concern. This is an
 interesting little problem, the only thing I can think if is that the
 FopFactory overrides the FontManager.setFontBaseURL(...) method:

  this.fontManager = new FontManager() {

 /** {@inheritDoc} */
 @Override
 public void setFontBaseURL(String fontBase) throws 
 MalformedURLException {
 
 super.setFontBaseURL(getFOURIResolver().checkBaseURL(fontBase));
 }

 };

  But then, you're calling the setFontBaseURL(...) method on FopFactory
 and not FontManager, so I don't know, maybe someone else may have an idea.
 But could you give us all the usuals, what version of FOP you're using?
 Have you tried seeing if trunk has the same issue etc...

  Mehdi

 On 18 April 2012 15:39, Rob Sargent rsarg...@xmission.com wrote:

  Thanks Mehdi, looking forward to the API change.

 But I'm not sending .../acres install/..., rather (I believe) I'm
 sending .../acres%20install/... as the string URL.  Is that not the
 correct format?

 rjs


 On 04/18/2012 01:43 AM, mehdi houshmand wrote:

 Hi Rob,

  Firstly, we are working to change how fop handles file access and I/O
 in general. I should note, that we're unifying all resource acquisition to
 resolving URIs, not URLs. The two concepts differ, and it's non-trivial.

  See http://wiki.apache.org/xmlgraphics-fop/URIResolution and
 http://wiki.apache.org/xmlgraphics-fop/FopFactoryConfiguration.

  Secondly, there are some misnomers in the names of these resource
 finders. The issue you're seeing is that /d1/rework/acres
 install/ac47/eclipe/plugins while it is a valid URL, it is not a valid
 URI. The FopFactory.setFontBaseURL(...) method delegates to the
 FOURIResolver to validate the String given and parses it as a URL NOT a
 URL. That is why you're seeing this problem.

  Mehdi

  On 17 April 2012 23:58, Rob Sargent rsarg...@xmission.com wrote:

  Seems to me FopFactory.setFontBaseURL(String s) is broken?

 Forgive the reflection calls (long story).

 File fontsdir = new File(bundlePath + fopHome + /fonts);

 URL fontsURL = fontsdir.toURI().toURL();
 setFontBaseURLMethod.invoke(fopFactory, fontsURL.toExternalForm());

 works fine when the directory is, shall we say, normal, but if the
 directory has a space the method appears to eat the %20.

 Caused by: java.net.MalformedURLException: Illegal character in path at
 index 23: 
 file:///d1/rework/acresinstall/ac47/eclipse/plugins/com.amirsys.console_4.6.0/fop/fop100/fop/fonts/


 bundlePath=/d1/rework/acres install/ac47/eclipe/plugins
 fopHome=com.amirsys.console_4.6.0/fop/fop100/fop

 I've written a test jig to see what File.toURI().toURL() does:

 import java.net.URL;
 import java.io.File;

 public class FileURL {

 public static void main(String[] args) {
 try {
 File f = new File(args[0]);
 URL furl = f.toURI().toURL();
 System.out.println(furl.toString());
 System.out.println(furl.toExternalForm());
 }
 catch (java.net.MalformedURLException mue) {
 mue.printStackTrace();
 }
 }
 }

  And that reports what I expected, an encoded path:

 java -cp . FileURL /d1/rework/acres\ install/ac47
 file:/d1/rework/acres%20install/ac47/
 file:/d1/rework/acres%20install/ac47/


 I hope someone has a better plan.

 I do think that the FOP api should be changed to take a URL rather than
 a string, but that's for another day.









Re: Trouble with setting font base url which include space character

2012-04-18 Thread Rob Sargent

Stop me if you've heard this one before:  I'm an idiot.

You know how it goes.  Add a log message; fix the code.  Well of course 
one more recompile of everything and a restart of IDE /et viola/ it all 
works as expected.


My apologies to all,

rjs

Still looking forward to an API the doesn't use String for UR[IL] but 
what we have does work.

rj.

On 04/18/2012 09:54 AM, mehdi houshmand wrote:
Oh no, I wasn't suggesting you change to the 
FontManager.setFontBaseURL(), I was just noting that the method is 
overridden. Could you provide a full stack trace, it might be 
interesting to note where that exception is coming from?


Also, just to expedite the process, try the same thing with trunk, see 
what happens. From testing the method call, it should accept spaces in 
the String, the FOURIResolver does a lot of URI correction.


Mehdi

On 18 April 2012 16:50, Rob Sargent rsarg...@xmission.com 
mailto:rsarg...@xmission.com wrote:


And my bad too: FOP-1.0 compiled from source of official release
circa 2012-03-01.

You are correct in that I'm working off of FopFactory, but my
debugger takes me to the same setFontBaseURL(String) you list so
I'm not sure switching to FontManager would change anything.  (It
will take a moderate effort to switch this:  the long story is
that we still use older versions of fop (including to 0.20-5 I'm
sorry to say) so that's why I'm using reflection (and classloader
shenanigans to boot).

I have not looked at recent releases for any fixes in this area. 
I actually expected a flood of your doing it wrong, do this

instead

rjs




On 04/18/2012 09:19 AM, mehdi houshmand wrote:

Hi Rob,

Ooohh, my bad. I must have misunderstood your concern. This is an
interesting little problem, the only thing I can think if is that
the FopFactory overrides the FontManager.setFontBaseURL(...) method:

 this.fontManager = new FontManager() {

 /** {@inheritDoc} */
 @Override
 public void setFontBaseURL(String fontBase) throws 
MalformedURLException {
 
super.setFontBaseURL(getFOURIResolver().checkBaseURL(fontBase));
 }

 };
But then, you're calling the setFontBaseURL(...) method on
FopFactory and not FontManager, so I don't know, maybe someone
else may have an idea. But could you give us all the usuals, what
version of FOP you're using? Have you tried seeing if trunk has
the same issue etc...

Mehdi

On 18 April 2012 15:39, Rob Sargent rsarg...@xmission.com
mailto:rsarg...@xmission.com wrote:

Thanks Mehdi, looking forward to the API change.

But I'm not sending .../acres install/..., rather (I
believe) I'm sending .../acres%20install/... as the string
URL.  Is that not the correct format?

rjs


On 04/18/2012 01:43 AM, mehdi houshmand wrote:

Hi Rob,

Firstly, we are working to change how fop handles file
access and I/O in general. I should note, that we're
unifying all resource acquisition to resolving URIs, not
URLs. The two concepts differ, and it's non-trivial.

See http://wiki.apache.org/xmlgraphics-fop/URIResolution and
http://wiki.apache.org/xmlgraphics-fop/FopFactoryConfiguration.

Secondly, there are some misnomers in the names of these
resource finders. The issue you're seeing is that
/d1/rework/acres install/ac47/eclipe/plugins while it is a
valid URL, it is not a valid URI. The
FopFactory.setFontBaseURL(...) method delegates to the
FOURIResolver to validate the String given and parses it as
a URL NOT a URL. That is why you're seeing this problem.

Mehdi

On 17 April 2012 23:58, Rob Sargent rsarg...@xmission.com
mailto:rsarg...@xmission.com wrote:

Seems to me FopFactory.setFontBaseURL(String s) is broken?

Forgive the reflection calls (long story).

File fontsdir = new File(bundlePath + fopHome +
/fonts);

URL fontsURL = fontsdir.toURI().toURL();
setFontBaseURLMethod.invoke(fopFactory,
fontsURL.toExternalForm());

works fine when the directory is, shall we say, normal,
but if the directory has a space the method appears to
eat the %20.

Caused by: java.net.MalformedURLException: Illegal
character in path at index 23: file:///d1/rework/acres

install/ac47/eclipse/plugins/com.amirsys.console_4.6.0/fop/fop100/fop/fonts/


bundlePath=/d1/rework/acres install/ac47/eclipe/plugins
fopHome=com.amirsys.console_4.6.0/fop/fop100/fop

I've written a test jig to see what File.toURI().toURL()
does:

import java.net.URL;
import java.io.File;


foprc: 1: Syntax error: newline unexpected

2012-04-18 Thread greencoppermine
Hi.

I'm on Debian Linux trying to change the default font for FOP so 
that the font contains Arabic glyphs.

When I run FOP I get the error:

.foprc: 1: Syntax error: newline unexpected

My .foprc looks like this:

fop version=1.0
  renderers
renderer mime=application/pdf
  fonts
auto-detect/
  /fonts
/renderer
  /renderers
/fop

If I squash that hole section together into a single line, I 
instead get this error:

.foprc: 1: Syntax error: redirection unexpected

I'm using FOP Version 1.0.

Is this a bug in FOP or is there a way around it?

Best regards

Martin


-
To unsubscribe, e-mail: fop-users-unsubscr...@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org