mirror of https://github.com/apache/jclouds.git
added json to core parser module
git-svn-id: http://jclouds.googlecode.com/svn/trunk@1631 3d8758e0-26b5-11de-8745-db77d3ebf521
This commit is contained in:
parent
fbe7ad9f8e
commit
d92f4e2750
|
@ -43,7 +43,7 @@ import org.jclouds.aws.s3.xml.config.S3ParserModule;
|
||||||
import org.jclouds.http.HttpException;
|
import org.jclouds.http.HttpException;
|
||||||
import org.jclouds.http.HttpUtils;
|
import org.jclouds.http.HttpUtils;
|
||||||
import org.jclouds.http.functions.ParseSax;
|
import org.jclouds.http.functions.ParseSax;
|
||||||
import org.jclouds.http.functions.config.SaxModule;
|
import org.jclouds.http.functions.config.ParserModule;
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
import org.testng.annotations.AfterTest;
|
import org.testng.annotations.AfterTest;
|
||||||
import org.testng.annotations.BeforeTest;
|
import org.testng.annotations.BeforeTest;
|
||||||
|
@ -68,7 +68,7 @@ public class S3ParserTest extends PerformanceTest {
|
||||||
|
|
||||||
@BeforeTest
|
@BeforeTest
|
||||||
protected void setUpInjector() {
|
protected void setUpInjector() {
|
||||||
injector = Guice.createInjector(new SaxModule(), new S3ParserModule());
|
injector = Guice.createInjector(new ParserModule(), new S3ParserModule());
|
||||||
parserFactory = injector.getInstance(S3ParserFactory.class);
|
parserFactory = injector.getInstance(S3ParserFactory.class);
|
||||||
assert parserFactory != null;
|
assert parserFactory != null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ import java.net.URI;
|
||||||
import org.jclouds.aws.s3.S3Connection;
|
import org.jclouds.aws.s3.S3Connection;
|
||||||
import org.jclouds.aws.s3.internal.StubS3Connection;
|
import org.jclouds.aws.s3.internal.StubS3Connection;
|
||||||
import org.jclouds.cloud.ConfiguresCloudConnection;
|
import org.jclouds.cloud.ConfiguresCloudConnection;
|
||||||
import org.jclouds.http.functions.config.SaxModule;
|
import org.jclouds.http.functions.config.ParserModule;
|
||||||
|
|
||||||
import com.google.inject.AbstractModule;
|
import com.google.inject.AbstractModule;
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ import com.google.inject.AbstractModule;
|
||||||
@ConfiguresCloudConnection
|
@ConfiguresCloudConnection
|
||||||
public class StubS3ConnectionModule extends AbstractModule {
|
public class StubS3ConnectionModule extends AbstractModule {
|
||||||
protected void configure() {
|
protected void configure() {
|
||||||
install(new SaxModule());
|
install(new ParserModule());
|
||||||
bind(S3Connection.class).to(StubS3Connection.class);
|
bind(S3Connection.class).to(StubS3Connection.class);
|
||||||
bind(URI.class).toInstance(URI.create("http://localhost:8080"));
|
bind(URI.class).toInstance(URI.create("http://localhost:8080"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ package org.jclouds.aws.s3.functions;
|
||||||
|
|
||||||
import org.jclouds.aws.s3.xml.S3ParserFactory;
|
import org.jclouds.aws.s3.xml.S3ParserFactory;
|
||||||
import org.jclouds.aws.s3.xml.config.S3ParserModule;
|
import org.jclouds.aws.s3.xml.config.S3ParserModule;
|
||||||
import org.jclouds.http.functions.config.SaxModule;
|
import org.jclouds.http.functions.config.ParserModule;
|
||||||
import org.testng.annotations.AfterTest;
|
import org.testng.annotations.AfterTest;
|
||||||
import org.testng.annotations.BeforeTest;
|
import org.testng.annotations.BeforeTest;
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ public class BaseHandlerTest {
|
||||||
|
|
||||||
@BeforeTest
|
@BeforeTest
|
||||||
protected void setUpInjector() {
|
protected void setUpInjector() {
|
||||||
injector = Guice.createInjector(new S3ParserModule(), new SaxModule());
|
injector = Guice.createInjector(new S3ParserModule(), new ParserModule());
|
||||||
parserFactory = injector.getInstance(S3ParserFactory.class);
|
parserFactory = injector.getInstance(S3ParserFactory.class);
|
||||||
assert parserFactory != null;
|
assert parserFactory != null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ package org.jclouds.aws.s3.functions;
|
||||||
|
|
||||||
import org.jclouds.aws.s3.xml.S3ParserFactory;
|
import org.jclouds.aws.s3.xml.S3ParserFactory;
|
||||||
import org.jclouds.aws.s3.xml.config.S3ParserModule;
|
import org.jclouds.aws.s3.xml.config.S3ParserModule;
|
||||||
import org.jclouds.http.functions.config.SaxModule;
|
import org.jclouds.http.functions.config.ParserModule;
|
||||||
import org.testng.annotations.AfterTest;
|
import org.testng.annotations.AfterTest;
|
||||||
import org.testng.annotations.BeforeTest;
|
import org.testng.annotations.BeforeTest;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
@ -44,7 +44,7 @@ public class S3ParserFactoryTest {
|
||||||
|
|
||||||
@BeforeTest
|
@BeforeTest
|
||||||
void setUpInjector() {
|
void setUpInjector() {
|
||||||
injector = Guice.createInjector(new S3ParserModule(), new SaxModule());
|
injector = Guice.createInjector(new S3ParserModule(), new ParserModule());
|
||||||
parserFactory = injector.getInstance(S3ParserFactory.class);
|
parserFactory = injector.getInstance(S3ParserFactory.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,10 @@
|
||||||
*/
|
*/
|
||||||
package org.jclouds.http.functions.config;
|
package org.jclouds.http.functions.config;
|
||||||
|
|
||||||
|
import java.lang.reflect.Type;
|
||||||
|
import java.net.InetAddress;
|
||||||
|
import java.net.UnknownHostException;
|
||||||
|
|
||||||
import javax.xml.parsers.ParserConfigurationException;
|
import javax.xml.parsers.ParserConfigurationException;
|
||||||
import javax.xml.parsers.SAXParser;
|
import javax.xml.parsers.SAXParser;
|
||||||
import javax.xml.parsers.SAXParserFactory;
|
import javax.xml.parsers.SAXParserFactory;
|
||||||
|
@ -31,20 +35,47 @@ import org.jclouds.http.functions.ParseSax;
|
||||||
import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
import org.xml.sax.XMLReader;
|
import org.xml.sax.XMLReader;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
|
import com.google.gson.JsonDeserializationContext;
|
||||||
|
import com.google.gson.JsonDeserializer;
|
||||||
|
import com.google.gson.JsonElement;
|
||||||
|
import com.google.gson.JsonParseException;
|
||||||
|
import com.google.gson.JsonPrimitive;
|
||||||
|
import com.google.gson.JsonSerializationContext;
|
||||||
|
import com.google.gson.JsonSerializer;
|
||||||
import com.google.inject.AbstractModule;
|
import com.google.inject.AbstractModule;
|
||||||
import com.google.inject.Provides;
|
import com.google.inject.Provides;
|
||||||
|
import com.google.inject.Singleton;
|
||||||
import com.google.inject.TypeLiteral;
|
import com.google.inject.TypeLiteral;
|
||||||
import com.google.inject.assistedinject.FactoryProvider;
|
import com.google.inject.assistedinject.FactoryProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* // TODO: Adrian: Document this!
|
* Contains logic for parsing objects from Strings.
|
||||||
*
|
*
|
||||||
* @author Adrian Cole
|
* @author Adrian Cole
|
||||||
*/
|
*/
|
||||||
public class SaxModule extends AbstractModule {
|
public class ParserModule extends AbstractModule {
|
||||||
private final static TypeLiteral<ParseSax.Factory> parseSaxFactoryLiteral = new TypeLiteral<ParseSax.Factory>() {
|
private final static TypeLiteral<ParseSax.Factory> parseSaxFactoryLiteral = new TypeLiteral<ParseSax.Factory>() {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static class InetAddressAdapter implements JsonSerializer<InetAddress>,
|
||||||
|
JsonDeserializer<InetAddress> {
|
||||||
|
public JsonElement serialize(InetAddress src, Type typeOfSrc, JsonSerializationContext context) {
|
||||||
|
return new JsonPrimitive(src.getHostAddress());
|
||||||
|
}
|
||||||
|
|
||||||
|
public InetAddress deserialize(JsonElement json, Type typeOfT,
|
||||||
|
JsonDeserializationContext context) throws JsonParseException {
|
||||||
|
try {
|
||||||
|
return InetAddress.getByName(json.getAsJsonPrimitive().getAsString());
|
||||||
|
} catch (UnknownHostException e) {
|
||||||
|
throw new JsonParseException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
XMLReader provideXMLReader(SAXParserFactory factory) throws ParserConfigurationException,
|
XMLReader provideXMLReader(SAXParserFactory factory) throws ParserConfigurationException,
|
||||||
SAXException {
|
SAXException {
|
||||||
|
@ -62,6 +93,14 @@ public class SaxModule extends AbstractModule {
|
||||||
return factory;
|
return factory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
Gson provideGson() {
|
||||||
|
GsonBuilder gson = new GsonBuilder();
|
||||||
|
gson.registerTypeAdapter(InetAddress.class, new InetAddressAdapter());
|
||||||
|
return gson.create();
|
||||||
|
}
|
||||||
|
|
||||||
protected void configure() {
|
protected void configure() {
|
||||||
bind(parseSaxFactoryLiteral).toProvider(
|
bind(parseSaxFactoryLiteral).toProvider(
|
||||||
FactoryProvider.newFactory(parseSaxFactoryLiteral, new TypeLiteral<ParseSax<?>>() {
|
FactoryProvider.newFactory(parseSaxFactoryLiteral, new TypeLiteral<ParseSax<?>>() {
|
|
@ -27,7 +27,7 @@ import javax.ws.rs.ext.RuntimeDelegate;
|
||||||
|
|
||||||
import org.jclouds.http.TransformingHttpCommand;
|
import org.jclouds.http.TransformingHttpCommand;
|
||||||
import org.jclouds.http.TransformingHttpCommandImpl;
|
import org.jclouds.http.TransformingHttpCommandImpl;
|
||||||
import org.jclouds.http.functions.config.SaxModule;
|
import org.jclouds.http.functions.config.ParserModule;
|
||||||
import org.jclouds.rest.JaxrsAnnotationProcessor;
|
import org.jclouds.rest.JaxrsAnnotationProcessor;
|
||||||
import org.jclouds.rest.RestClientProxy;
|
import org.jclouds.rest.RestClientProxy;
|
||||||
import org.jclouds.rest.RuntimeDelegateImpl;
|
import org.jclouds.rest.RuntimeDelegateImpl;
|
||||||
|
@ -46,7 +46,7 @@ public class JaxrsModule extends AbstractModule {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void configure() {
|
protected void configure() {
|
||||||
install(new SaxModule());
|
install(new ParserModule());
|
||||||
RuntimeDelegate.setInstance(new RuntimeDelegateImpl());
|
RuntimeDelegate.setInstance(new RuntimeDelegateImpl());
|
||||||
bind(RestClientProxy.RestClientProxyFactory.class).toProvider(
|
bind(RestClientProxy.RestClientProxyFactory.class).toProvider(
|
||||||
FactoryProvider.newFactory(RestClientProxy.RestClientProxyFactory.class, RestClientProxy.class));
|
FactoryProvider.newFactory(RestClientProxy.RestClientProxyFactory.class, RestClientProxy.class));
|
||||||
|
|
Loading…
Reference in New Issue