Saturday, August 16, 2008

Kyping code largely from google, I have a java program that can add a contact to google, yay! However, there's problems getting it to work on the iphone:
root@iphone 18> java -cp /usr/share/java/sqlite.jar:/usr/share/java/jocstrap.jar:/usr/share/java/uicaboodle.jar:/usr/share/java/gdata-core.jar:/usr/share/java/gdata-client.jar:/usr/share/java/gdata-contacts.jar:dmsync-0.1.jar net.dmsync.dmSync
foo!

java.lang.ExceptionInInitializerError
at com.google.gdata.client.Service.(Unknown Source)
at com.google.gdata.client.GoogleService.(Unknown Source)
at com.google.gdata.client.contacts.ContactsService.(Unknown Source)
at com.google.gdata.client.contacts.ContactsService.(Unknown Source)
at net.dmsync.dmSync.main(dmSync.java:37)
Caused by: java.util.regex.PatternSyntaxException: At position 10 in regular expression pattern:
At position 0 in regular expression pattern:
unsupported name ASCII
^[\p{ASCII}&&[^\p{Cntrl} ;/=\[\]\(\)\<\>\@\,\:\"\?\=]]+$
^
Looks like some part of the iphone java stuff (jamvm?) doesn't like {ASCII} as a character class. It's only used a couple times in the google java code, in src/com/google/gdata/util/ContentType.java and src/com/google/gdata/util/AuthenticationException.java, so I've gone through and modified those to replace the regexes with equivalents. I changed this:
[\\p{ASCII}&&[^\\p{Cntrl} \t;/=\\[\\]\\(\\)\\<\\>\\@\\,\\:\\\"\\?\\=]]+
to this:
[!#\\$%&'\\*\\+-\\.0-9A-Z_`a-z\\{\\|\\}\\~]
And hey, now it gets past that point, and fails on:
root@iphone 20> java -cp /usr/share/java/sqlite.jar:/usr/share/java/jocstrap.jar:/usr/share/java/uicaboodle.jar:/usr/share/java/gdata-core.jar:/usr/share/java/gdata-client.jar:/usr/share/java/gdata-contacts.jar:dmsync-0.1.jar net.dmsync.dmSync
foo!

java.lang.RuntimeException: java.lang.RuntimeException: error instantiating default socket factory: java.security.KeyManagementException: java.security.KeyStoreException: java.io.FileNotFoundException: /opt/java/lib/security/cacerts

No comments:

Blog Archive