users@jersey.java.net

Re: [Jersey] Re: java.lang.NullPointerException on Android

From: Paul Sandoz <Paul.Sandoz_at_oracle.com>
Date: Wed, 25 Aug 2010 11:50:35 +0200

Hi Lucas,

Thanks for posting, this is useful information. I suspect we can write
some code to automatically generate such a class for use on Android.

Paul.


On Aug 25, 2010, at 8:15 AM, Lucas Ventura wrote:

>
> Hi!
> Sorry for not posting my temporary solution. At the end I didn't use
> Jersey
> as client in Android anyway.
> In the client class:
>
> Client client = ApacheHttpClient.create();
> ServiceFinder.setIteratorProvider(new Buscador());
>
> The Buscador class is:
>
> import java.util.ArrayList;
> import java.util.HashMap;
> import java.util.Iterator;
>
> import
> com.sun.jersey.spi.service.ServiceFinder.ServiceIteratorProvider;
>
> public class Buscador<T> extends ServiceIteratorProvider<T>
> {
> private static final HashMap<String, String[]> SERVICES = new
> HashMap<String, String[]>();
>
> private static final String[]
> com_sun_jersey_spi_HeaderDelegateProvider =
> new String[] {
> "com.sun.jersey.core.impl.provider.header.LocaleProvider",
> "com.sun.jersey.core.impl.provider.header.EntityTagProvider",
> "com.sun.jersey.core.impl.provider.header.MediaTypeProvider",
> "com.sun.jersey.core.impl.provider.header.CacheControlProvider",
> "com.sun.jersey.core.impl.provider.header.NewCookieProvider",
> "com.sun.jersey.core.impl.provider.header.CookieProvider",
> "com.sun.jersey.core.impl.provider.header.URIProvider",
> "com.sun.jersey.core.impl.provider.header.DateProvider",
> "com.sun.jersey.core.impl.provider.header.StringProvider"
>
> };
> private static final String[]
> com_sun_jersey_spi_inject_InjectableProvider
> = new String[] {
> "com.sun.jersey.core.impl.provider.xml.SAXParserContextProvider",
> "com
> .sun.jersey.core.impl.provider.xml.XMLStreamReaderContextProvider",
> "com
> .sun.jersey.core.impl.provider.xml.DocumentBuilderFactoryProvider",
> "com.sun.jersey.core.impl.provider.xml.TransformerFactoryProvider"
> };
> private static final String[] javax_ws_rs_ext_MessageBodyReader = new
> String[] {
> "com.sun.jersey.core.impl.provider.entity.StringProvider",
> "com.sun.jersey.core.impl.provider.entity.ByteArrayProvider",
> "com.sun.jersey.core.impl.provider.entity.FileProvider",
> "com.sun.jersey.core.impl.provider.entity.InputStreamProvider",
> "com.sun.jersey.core.impl.provider.entity.DataSourceProvider",
> "com.sun.jersey.core.impl.provider.entity.RenderedImageProvider",
> "com.sun.jersey.core.impl.provider.entity.MimeMultipartProvider",
> "com.sun.jersey.core.impl.provider.entity.FormProvider",
> "com
> .sun.jersey.core.impl.provider.entity.FormMultivaluedMapProvider",
> "com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider
> $App",
> "com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider
> $Text",
>
> "com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider
> $General",
> "com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider
> $App",
> "com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider
> $Text",
>
> "com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider
> $General",
> "com.sun.jersey.core.impl.provider.entity.XMLListElementProvider
> $App",
> "com.sun.jersey.core.impl.provider.entity.XMLListElementProvider
> $Text",
>
> "com.sun.jersey.core.impl.provider.entity.XMLListElementProvider
> $General",
> "com.sun.jersey.core.impl.provider.entity.ReaderProvider",
> "com.sun.jersey.core.impl.provider.entity.DocumentProvider",
>
> "com.sun.jersey.core.impl.provider.entity.SourceProvider
> $StreamSourceReader",
>
> "com.sun.jersey.core.impl.provider.entity.SourceProvider
> $SAXSourceReader",
>
> "com.sun.jersey.core.impl.provider.entity.SourceProvider
> $DOMSourceReader",
> "com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider
> $App",
> "com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider
> $Text",
> "com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider
> $General",
> "com.sun.jersey.core.impl.provider.entity.EntityHolderReader"
> };
> private static final String[] javax_ws_rs_ext_MessageBodyWriter = new
> String[] {
> "com.sun.jersey.core.impl.provider.entity.StringProvider",
> "com.sun.jersey.core.impl.provider.entity.ByteArrayProvider",
> "com.sun.jersey.core.impl.provider.entity.FileProvider",
> "com.sun.jersey.core.impl.provider.entity.InputStreamProvider",
> "com.sun.jersey.core.impl.provider.entity.DataSourceProvider",
> "com.sun.jersey.core.impl.provider.entity.RenderedImageProvider",
> "com.sun.jersey.core.impl.provider.entity.MimeMultipartProvider",
> "com.sun.jersey.core.impl.provider.entity.FormProvider",
> "com
> .sun.jersey.core.impl.provider.entity.FormMultivaluedMapProvider",
> "com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider
> $App",
> "com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider
> $Text",
>
> "com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider
> $General",
> "com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider
> $App",
> "com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider
> $Text",
>
> "com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider
> $General",
> "com.sun.jersey.core.impl.provider.entity.XMLListElementProvider
> $App",
> "com.sun.jersey.core.impl.provider.entity.XMLListElementProvider
> $Text",
>
> "com.sun.jersey.core.impl.provider.entity.XMLListElementProvider
> $General",
> "com.sun.jersey.core.impl.provider.entity.ReaderProvider",
> "com.sun.jersey.core.impl.provider.entity.DocumentProvider",
> "com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider",
> "com.sun.jersey.core.impl.provider.entity.SourceProvider
> $SourceWriter"
> };
>
> static
> {
> SERVICES.put("com.sun.jersey.spi.HeaderDelegateProvider",
> com_sun_jersey_spi_HeaderDelegateProvider);
> SERVICES.put("com.sun.jersey.spi.inject.InjectableProvider",
> com_sun_jersey_spi_inject_InjectableProvider);
> SERVICES.put("javax.ws.rs.ext.MessageBodyReader",
> javax_ws_rs_ext_MessageBodyReader);
> SERVICES.put("javax.ws.rs.ext.MessageBodyWriter",
> javax_ws_rs_ext_MessageBodyWriter);
> }
>
> @SuppressWarnings("unchecked")
> @Override
> public Iterator<Class<T>> createClassIterator(Class<T> service,
> String
> serviceName,
> ClassLoader loader, boolean ignoreOnClassNotFound)
> {
> String[] classesNames = SERVICES.get(serviceName);
> int length = classesNames.length;
> ArrayList<Class<T>> classes = new ArrayList<Class<T>>(length);
> for (int i = 0; i < length; i++)
> {
> try
> {
> classes.add((Class<T>) Class.forName(classesNames[i]));
> } catch (ClassNotFoundException e)
> {
> e.printStackTrace();
> }
> }
> return null;
> }
>
> @Override
> public Iterator<T> createIterator(Class<T> service, String
> serviceName,
> ClassLoader loader,
> boolean ignoreOnClassNotFound)
> {
> String[] classesNames = SERVICES.get(serviceName);
> int length = classesNames.length;
> ArrayList<T> classes = new ArrayList<T>(length);
> for (int i = 0; i < length; i++)
> {
> try
> {
>
> classes
> .add(service.cast(Class.forName(classesNames[i]).newInstance()));
> } catch (IllegalAccessException e)
> {
> e.printStackTrace();
> } catch (InstantiationException e)
> {
> e.printStackTrace();
> } catch (ClassNotFoundException e)
> {
> e.printStackTrace();
> }
> }
> return classes.iterator();
> }
> }
>
> This is based in the original Jersey look-up-for-services classes ;)
> --
> View this message in context: http://jersey.576304.n2.nabble.com/java-lang-NullPointerException-on-Android-tp4212447p5459910.html
> Sent from the Jersey mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>