Building Modular Cloud Applications - Listings

download Building Modular Cloud Applications - Listings

If you can't read please download the document

description

u

Transcript of Building Modular Cloud Applications - Listings

Code listings for "Building Modular Cloud Applications in Java," Java Magazine, January/February 2015[Listing 1]package agenda.api;public interface Agenda {void addConference(String name, String location);List listConferences();}[Listing 2]package agenda.api;public class Conference {private String name;private String location;public Conference() {}public Conference(String name, String location) {this.name = name;this.location = location;}// Getters/setters omitted for brevity}[Listing 3]package agenda.simple;public class SimpleAgendaService implements Agenda {private List conferences = new CopyOnWriteArrayList();@Overridepublic void addConference(Conference conference) {conferences.add(conference);}@Overridepublic List listConferences() {return conferences;}}[Listing 4]package agenda.simple;public class Activator extends DependencyActivatorBase {@Overridepublic void destroy(BundleContext ctx, DependencyManager dm)throws Exception {}@Overridepublic void init(BundleContext ctx, DependencyManager dm) throws Exception {dm.add(createComponent().setInterface(Agenda.class.getName(), null).setImplementation(SimpleAgendaService.class));}}[Listing 5]package agenda.rest;@Path("agenda")public class AgendaResource {private volatile Agenda agenda;@GET@Produces(MediaType.APPLICATION_JSON)public List listConferences() {return agenda.listConferences();}@POST@Consumes(MediaType.APPLICATION_JSON)public void addConference(Conference conference) {agenda.addConference(conference.getName(), conference.getLocation());}}[Listing 6]package agenda.rest;public class Activator extends DependencyActivatorBase {@Overridepublic void destroy(BundleContext ctx, DependencyManager dm)throws Exception {}@Overridepublic void init(BundleContext ctx, DependencyManager dm) throws Exception {dm.add(createComponent().setInterface(Object.class.getName(), null).setImplementation(AgendaResource.class).add(createServiceDependency().setService(Agenda.class)));}}[Listing 7]package agenda.mongo;public class MongoAgendaService implements Agenda {private volatile MongoDBService mongoDBService;private volatile Jongo jongo;private volatile MongoCollection agenda;public void start() {jongo = new Jongo(mongoDBService.getDB());agenda = jongo.getCollection("agenda");}@Overridepublic void addConference(String name, String location) {agenda.save(new Conference(name, location));}@Overridepublic List listConferences() {List result = new ArrayList();agenda.find().as(Conference.class).forEach(result::add);return result;}}[Listing 8]package agenda.mongo;public class Activator extends DependencyActivatorBase {@Overridepublic void destroy(BundleContext ctx, DependencyManager dm)throws Exception {}@Overridepublic void init(BundleContext ctx, DependencyManager dm) throws Exception {dm.add(createComponent().setInterface(Agenda.class.getName(), null).setImplementation(MongoAgendaService.class).add(createServiceDependency().setService(MongoDBService.class)));}}Copyright 2015 Oracle Corporation