Android edition
Requirements
- Support all Android SDKs (1.0, 1.1 and 1.5)
- Support access to cloud services (ex: GAE/J) from an Android phone
Analysis
- Intent/Service/Activity used in a way very similar to Eclipse plugins
- URIs used internally by Android
- Apache HTTP client v4 is bundled
Design
- The Restlet Core (API and Engine) should be nearly 100% portable to Android after the separation of XML/XSLT related classes in a new "org.restlet.ext.xml" extension.
- Each Restlet extension should be progressively ported when possible.
Implementation
Here is the list of detected problems:
Core Restlet API and Engine
List of JSE imported classes not supported by Dalvik (1.5 r2)
|
Restlet classes |
JSE classes unsupported by Dalvik |
|---|---|
|
org.restlet.representation.ObjectRepresentation |
java.beans.XMLDecoder |
|
java.beans.XMLEncoder |
|
|
org.restlet.engine.util.DefaultSaxHandler |
org.w3c.dom.ls.LSInput |
|
org.w3c.dom.ls.LSResourceResolver |
|
|
org.restlet.engine.security.DefaultJaasCallbackHandler |
javax.security.auth.callback.NameCallback |
|
org.restlet.engine.internal.Activator |
org.osgi.framework.Bundle |
|
org.osgi.framework.BundleActivator |
|
|
org.osgi.framework.BundleContext |
|
|
org.osgi.framework.BundleEvent |
|
|
org.osgi.framework.BundleListener |
|
|
org.restlet.security.JaasVerifier |
javax.security.auth.login.Configuration |
|
javax.security.auth.login.LoginContext |
List of modifications done to the core Restlet
XmlRepresentation
- remove unecessary imports
- remove methods in error (ie support of XPath expression, schemas, etc)
- update ComponentXmlParser (the recuperation of the schema)
SaxRepresentation
- remove unecessary imports
- remove methods in error (ie support of XPath expression, schemas, constructor with Document, etc)
- change type of source from SaxSource to InputSource
- updated the implementation of the "parse" method:
public void parse(ContentHandler contentHandler) throws IOException {
if (contentHandler != null) {
try {
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
xr.setContentHandler(contentHandler);
xr.parse(this.source);
} catch (Exception tce) {
throw new IOException("Couldn't parse the source representation: " + tce.getMessage());
}
} else {
throw new IOException("Couldn't parse the source representation: no content restlet defined.");
}
}
TransformRepresentation
removed
=> removed class Transformer
DomRepresentation
- remove unecessary imports
- remove methods in error (ie support of XPath expression, schemas, constructor with Document, etc)
- Throw UnsupportedOperationException in write(OutputStream) method
DefaultSaxHandler
- does not implement anymore "LSResourceResolver"
- remove method "resolveResource"
JaasVerifier
removed
Activator
removed
DefaultJaasCallbackHandler
Update the handle method and reemoved the if branch that references "NameCallback".
DateUtils
Update the implementation of "setTime", in order to call super.setTime.
Extensions
List of Java API classes not supported.
|
JSE classes unsupported by Dalvik |
|---|
|
java.beans.XMLDecoder |
|
java.beans.XMLEncoder |
|
java.util.Map.Entry |
|
javax.mail.Address |
|
javax.mail.BodyPart |
|
javax.mail.FetchProfile |
|
javax.mail.Flags |
|
javax.mail.Folder |
|
javax.mail.Message |
|
javax.mail.MessagingException |
|
javax.mail.Multipart |
|
javax.mail.NoSuchProviderException |
|
javax.mail.Part |
|
javax.mail.Session |
|
javax.mail.Store |
|
javax.mail.Transport |
|
javax.mail.UIDFolder |
|
javax.mail.internet.AddressException |
|
javax.mail.internet.InternetAddress |
|
javax.mail.internet.MimeBodyPart |
|
javax.mail.internet.MimeMessage |
|
javax.security.auth.callback.NameCallback |
|
javax.security.auth.login.Configuration |
|
javax.security.auth.login.LoginContext |
|
javax.servlet.ServletConfig |
|
javax.servlet.ServletContext |
|
javax.servlet.ServletException |
|
javax.servlet.ServletRequest |
|
javax.servlet.ServletResponse |
|
javax.servlet.http.HttpServlet |
|
javax.servlet.http.HttpServletRequest |
|
javax.servlet.http.HttpServletResponse |
|
javax.sql.rowset.WebRowSet |
|
javax.ws.rs.Consumes |
|
javax.ws.rs.CookieParam |
|
javax.ws.rs.DELETE |
|
javax.ws.rs.DefaultValue |
|
javax.ws.rs.Encoded |
|
javax.ws.rs.FormParam |
|
javax.ws.rs.GET |
|
javax.ws.rs.HEAD |
|
javax.ws.rs.HeaderParam |
|
javax.ws.rs.HttpMethod |
|
javax.ws.rs.MatrixParam |
|
javax.ws.rs.POST |
|
javax.ws.rs.PUT |
|
javax.ws.rs.Path |
|
javax.ws.rs.PathParam |
|
javax.ws.rs.Produces |
|
javax.ws.rs.QueryParam |
|
javax.ws.rs.WebApplicationException |
|
javax.ws.rs.core.Application |
|
javax.ws.rs.core.Context |
|
javax.ws.rs.core.Cookie |
|
javax.ws.rs.core.EntityTag |
|
javax.ws.rs.core.GenericEntity |
|
javax.ws.rs.core.HttpHeaders |
|
javax.ws.rs.core.MediaType |
|
javax.ws.rs.core.MediaType.APPLICATION_JSON |
|
javax.ws.rs.core.MediaType.APPLICATION_XML |
|
javax.ws.rs.core.MediaType.TEXT_PLAIN |
|
javax.ws.rs.core.MediaType.TEXT_XML |
|
javax.ws.rs.core.MultivaluedMap |
|
javax.ws.rs.core.PathSegment |
|
javax.ws.rs.core.Request |
|
javax.ws.rs.core.Response |
|
javax.ws.rs.core.Response.ResponseBuilder |
|
javax.ws.rs.core.Response.Status |
|
javax.ws.rs.core.SecurityContext |
|
javax.ws.rs.core.StreamingOutput |
|
javax.ws.rs.core.UriBuilder |
|
javax.ws.rs.core.UriBuilderException |
|
javax.ws.rs.core.UriInfo |
|
javax.ws.rs.core.Variant |
|
javax.ws.rs.ext.ContextResolver |
|
javax.ws.rs.ext.ExceptionMapper |
|
javax.ws.rs.ext.MessageBodyReader |
|
javax.ws.rs.ext.MessageBodyWriter |
|
javax.ws.rs.ext.Provider |
|
javax.ws.rs.ext.Providers |
|
javax.ws.rs.ext.RuntimeDelegate |
|
javax.xml.bind.JAXBContext |
|
javax.xml.bind.JAXBElement |
|
javax.xml.bind.JAXBException |
|
javax.xml.bind.ValidationEventHandler |
|
javax.xml.bind.annotation.XmlAccessType |
|
javax.xml.bind.annotation.XmlAccessorType |
|
javax.xml.bind.annotation.XmlAttribute |
|
javax.xml.bind.annotation.XmlElement |
|
javax.xml.bind.annotation.XmlRegistry |
|
javax.xml.bind.annotation.XmlRootElement |
|
javax.xml.bind.annotation.XmlType |
|
javax.xml.bind.util.JAXBSource |
|
javax.xml.namespace.NamespaceContext |
|
javax.xml.namespace.QName |
|
javax.xml.transform.OutputKeys |
|
javax.xml.transform.Result |
|
javax.xml.transform.Source |
|
javax.xml.transform.Templates |
|
javax.xml.transform.Transformer |
|
javax.xml.transform.TransformerConfigurationException |
|
javax.xml.transform.TransformerException |
|
javax.xml.transform.TransformerFactory |
|
javax.xml.transform.TransformerFactoryConfigurationError |
|
javax.xml.transform.URIResolver |
|
javax.xml.transform.dom.DOMSource |
|
javax.xml.transform.sax.SAXResult |
|
javax.xml.transform.sax.SAXSource |
|
javax.xml.transform.sax.SAXTransformerFactory |
|
javax.xml.transform.sax.TransformerHandler |
|
javax.xml.transform.stream.StreamResult |
|
javax.xml.transform.stream.StreamSource |
|
javax.xml.validation.Schema |
|
javax.xml.validation.SchemaFactory |
|
javax.xml.validation.Validator |
|
javax.xml.xpath.XPath |
|
javax.xml.xpath.XPathConstants |
|
javax.xml.xpath.XPathFactory |
XML Extension
|
Restlet classes |
JSE classes unsupported by Dalvik |
|---|---|
|
org.restlet.representation.SaxRepresentation |
javax.xml.namespace.QName |
|
javax.xml.transform.Result |
|
|
javax.xml.transform.TransformerConfigurationException |
|
|
javax.xml.transform.TransformerException |
|
|
javax.xml.transform.TransformerFactory |
|
|
javax.xml.transform.TransformerFactoryConfigurationError |
|
|
javax.xml.transform.dom.DOMSource |
|
|
javax.xml.transform.sax.SAXResult |
|
|
javax.xml.transform.sax.SAXSource |
|
|
javax.xml.xpath.XPath |
|
|
javax.xml.xpath.XPathFactory |
|
|
org.restlet.representation.XmlRepresentation |
javax.xml.namespace.NamespaceContext |
|
javax.xml.namespace.QName |
|
|
javax.xml.transform.Result |
|
|
javax.xml.transform.dom.DOMSource |
|
|
javax.xml.transform.sax.SAXSource |
|
|
javax.xml.transform.stream.StreamSource |
|
|
javax.xml.validation.Schema |
|
|
javax.xml.validation.SchemaFactory |
|
|
javax.xml.xpath.XPathConstants |
|
|
org.restlet.representation.DomRepresentation |
javax.xml.namespace.QName |
|
javax.xml.transform.OutputKeys |
|
|
javax.xml.transform.Transformer |
|
|
javax.xml.transform.TransformerConfigurationException |
|
|
javax.xml.transform.TransformerException |
|
|
javax.xml.transform.TransformerFactory |
|
|
javax.xml.transform.TransformerFactoryConfigurationError |
|
|
javax.xml.transform.dom.DOMSource |
|
|
javax.xml.transform.stream.StreamResult |
|
|
javax.xml.xpath.XPath |
|
|
javax.xml.xpath.XPathFactory |
|
|
org.restlet.representation.TransformRepresentation |
javax.xml.transform.Source |
|
javax.xml.transform.Templates |
|
|
javax.xml.transform.Transformer |
|
|
javax.xml.transform.TransformerConfigurationException |
|
|
javax.xml.transform.TransformerException |
|
|
javax.xml.transform.TransformerFactory |
|
|
javax.xml.transform.TransformerFactoryConfigurationError |
|
|
javax.xml.transform.URIResolver |
|
|
javax.xml.transform.sax.SAXSource |
|
|
javax.xml.transform.sax.SAXTransformerFactory |
|
|
javax.xml.transform.sax.TransformerHandler |
|
|
javax.xml.transform.stream.StreamResult |
|
|
javax.xml.transform.stream.StreamSource |
|
|
org.restlet.engine.util.DefaultSaxHandler |
org.w3c.dom.ls.LSInput |
|
org.w3c.dom.ls.LSResourceResolver |


There are no comments.