Presentation from GWT.create 2015 on how to easily build a REST API that can be consumed via GWT or native mobile clients. Presentation video here: http://gwtcreate.com/videos/#rpc-jersey-resty-gwt
This power point presentation explains retrofit technology, it includes performance analysis, The libraries support, Implementation, serialization, Interfaces, Interface methods, header manipulation. You can learn more about retrofit implementation.
This power point presentation explains retrofit technology, it includes performance analysis, The libraries support, Implementation, serialization, Interfaces, Interface methods, header manipulation. You can learn more about retrofit implementation.
Testing Android apps based on Dagger and RxJavaFabio Collini
In this talk, you will learn:
how to take advantage of Mockito and other libraries to write good JVM and Espresso tests
how to use DaggerMock (an open source library available on github https://github.com/fabioCollini/DaggerMock) to avoid boilerplate code in tests
how to test asynchronous RxJava code using a JVM test
Writing reliable tests is not easy for many reasons, especially when asynchronous code is involved. Some libraries can be used to create a testable architecture (for example Dagger and RxJava) and to simplify testing (Mockito, AssertJ and DaggerMock). In this talk we’ll see how to write JVM and Espresso tests with particular attention on how to replace real objects with mocks and how to test asynchronous RxJava code.
GWT as a compiler and SDK is well known web frontend technology for writing client applications with pure Java. Server driven frameworks such as Vaadin use GWT based thin client to automate data transportation and view rendering for client browsers.
How does Vaadin’s communication mechanism work internally with GWT and what kind of transportation techniques are used? How is the server side component state reflected to client side widget and what happens when there’s user interaction? What about Polymer and web components, how would we utilize them with Vaadin?
This session will establish a solid ground work for answering these questions and will tell you the most intriguing details on what really happens behind the scenes of the framework.
Testing Android apps based on Dagger and RxJavaFabio Collini
In this talk, you will learn:
how to take advantage of Mockito and other libraries to write good JVM and Espresso tests
how to use DaggerMock (an open source library available on github https://github.com/fabioCollini/DaggerMock) to avoid boilerplate code in tests
how to test asynchronous RxJava code using a JVM test
Writing reliable tests is not easy for many reasons, especially when asynchronous code is involved. Some libraries can be used to create a testable architecture (for example Dagger and RxJava) and to simplify testing (Mockito, AssertJ and DaggerMock). In this talk we’ll see how to write JVM and Espresso tests with particular attention on how to replace real objects with mocks and how to test asynchronous RxJava code.
GWT as a compiler and SDK is well known web frontend technology for writing client applications with pure Java. Server driven frameworks such as Vaadin use GWT based thin client to automate data transportation and view rendering for client browsers.
How does Vaadin’s communication mechanism work internally with GWT and what kind of transportation techniques are used? How is the server side component state reflected to client side widget and what happens when there’s user interaction? What about Polymer and web components, how would we utilize them with Vaadin?
This session will establish a solid ground work for answering these questions and will tell you the most intriguing details on what really happens behind the scenes of the framework.
JSR 339 - Java API for RESTful Web ServicesDaniel Cunha
Esta palestra é fruto da iniciativa de adoção da JSR 339 pelo Grupo de Usuários Java de SC. Foi apresentada no The Developers Conference 2014 (Florianópolis). Trata das novidades da JAX-RS 2 em relação a especificação anterior.
Real world RESTful service development problems and solutionsBhakti Mehta
Learn all you ever wanted to learn about RESTful services development challenges in large scale applications
This session is a deep dive as well as an interactive discussion on design principles, considerations, lessons learned from mistakes that can be taken into account when developing RESTful services. It will cover a variety of topics from Designing of RESTful resources, Versioning, Exception Handling, Caching, Validation, Security, Rate limiting, HATEOAS, Testing and Documentation. This talk will walk through and compare the different REST API provided by companies like Twitter, Paypal, Google, Stripe and more we can learn the good, the bad and ugly. So join me in this talk to build high quality applications that can be highly scalable, available and reliable.
figo at FinTech Startups MeetUp in HamburgLars Markull
Short presentation about figo: How the financial ID for the end user and a powerful banking API will foster innovation in the financial service industry!
Необходимые условия качества данных: MDM, Шина, Хранилище данныхКРОК
Вебинар «Плюсы от использования MDM - когда и как применять технологию» http://www.croc.ru/action/detail/18961/
Презентация Романа Баранова, эксперта направления MDM, DWH, BI, ETL компании КРОК
Microservices = Death of the Enterprise Service Bus (ESB)?Kai Wähner
Microservices are the next step after SOA: Services implement a limited set of functions. Services are developed, deployed and scaled independently. Continuous Integration and Continuous Delivery control deployments. This way you get shorter time to results and increased flexibility.
Microservices have to be independent regarding build, deployment, data management and business domains. A solid Microservices design requires single responsibility, loose coupling and a decentralized architecture. A Microservice can to be closed or open to partners and public via APIs.
This session discusses the requirements, best practices and challenges for creating a good Microservices architecture, and if this spells the end of the Enterprise Service Bus (ESB).
Key messages of the talk:
• Microservices = SOA done right
• Integration is key for success – the product name does not matter
• Real time event correlation is the game changer
Taming Core Data by Arek Holko, MacoscopeMacoscope
Core Data is a framework that you use to manage the model layer objects in your application. A framework that you use to build the persistence layer in your application.
The easy way to develop Java applications has always been the standard stack (Spring, JEE, SQL) that confirms the LAMP equivalent in Java-speak. This presentation compares this model with a real use case based on Guice, Jersey and AppEngine.
OSGi ecosystems compared on Apache Karaf - Christian Schneidermfrancis
OSGi Community Event 2015
A look at three competing OSGi ecosystems (Declarative Services, Blueprint, CDI). Capabilities of each DI framework. Comparison of support for EE technologies like JPA, Security, SOAP and REST services, UIs. Looking into some of the recent advancements like Aries JPA 2 featuring closure based transactions, JAAS Security, JSP and JSF on OSGi. Attendees will get a good overview about the stacks as well as recommendations where each is most applicable.
Dependency injection is a powerful technique allowing different parts of a system to collaborate with each other. Injection is the passing of a dependency (such as a service or database connection) to an object that would use it. This way, the object need not change because the outside service changed. This often also allows the object to be more easily tested by injecting a mock or stub service as the dependency.
HTTP Whiteboard - OSGI Compendium 6.0 - How web apps should have been! - R Augemfrancis
OSGi Community Event 2014
Abstract:
The new HTTP Whiteboard API is a significant improvement over Http Service 1.2. In this talk we'll explore the uses and benefits of the new API and how that this should have been what java webapps were from the start.
This presentation gives a high level concepts and more of code to take a stab at developing a simple Restful server. I targeted people who would like to build a simple RESTFul server from scratch and experiment.
Taking Your GWT App to Tablets with GXT 4.0David Chandler
Sencha GXT builds on the open source GWT compiler to enable Java developers to build complex desktop-like user interfaces that run in the browser. In GXT 4.0, the core widgets have been updated to include touch functionality such as draggable borders, tree expand / collapse, LiveGrid scrolling, and long press to hover. In addition, you can add new gesture recognizers such as pinch and rotate to your apps. In this presentation, we look at the ins and outs of JavaScript touch event handling for GWT developers, touch support in GXT 4.0 widgets, how to eliminate the 300ms click delay in mobile browsers, and how to work with GXT’s new gesture recognizers. In addition, we look at some of the lessons learned by the GXT team while building GXT 4.0 and demo some debugging strategies for GWT apps on touch devices.
StORM: a lightweight ORM for Android SQLiteDavid Chandler
Android’s bundled SQLite database is powerful, but requires a lot of hand-coded SQL to get started. Using an ORM can simplify database development for many applications, and the Android ecosystem already has several to choose from. stORM is a lightweight DAO generator that aims for a streamlined developer experience (only two annotations required) and solid performance (preferring code generation over reflection). stORM is extensible, minimally intrusive, and offers built-in CSV backup / restore capabilities to facilitate database version upgrades. Along with stORM itself, Chandler presents techniques for writing and debugging an Android annotation processor that can be used with Eclipse, IntelliJ, or Android Studio.
Check out the webinar slides to learn more about how XfilesPro transforms Salesforce document management by leveraging its world-class applications. For more details, please connect with sales@xfilespro.com
If you want to watch the on-demand webinar, please click here: https://www.xfilespro.com/webinars/salesforce-document-management-2-0-smarter-faster-better/
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
Into the Box Keynote Day 2: Unveiling amazing updates and announcements for modern CFML developers! Get ready for exciting releases and updates on Ortus tools and products. Stay tuned for cutting-edge innovations designed to boost your productivity.
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Anthony Dahanne
Les Buildpacks existent depuis plus de 10 ans ! D’abord, ils étaient utilisés pour détecter et construire une application avant de la déployer sur certains PaaS. Ensuite, nous avons pu créer des images Docker (OCI) avec leur dernière génération, les Cloud Native Buildpacks (CNCF en incubation). Sont-ils une bonne alternative au Dockerfile ? Que sont les buildpacks Paketo ? Quelles communautés les soutiennent et comment ?
Venez le découvrir lors de cette session ignite
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfJay Das
With the advent of artificial intelligence or AI tools, project management processes are undergoing a transformative shift. By using tools like ChatGPT, and Bard organizations can empower their leaders and managers to plan, execute, and monitor projects more effectively.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
Software Engineering, Software Consulting, Tech Lead.
Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Security,
Spring Transaction, Spring MVC,
Log4j, REST/SOAP WEB-SERVICES.
We describe the deployment and use of Globus Compute for remote computation. This content is aimed at researchers who wish to compute on remote resources using a unified programming interface, as well as system administrators who will deploy and operate Globus Compute services on their research computing infrastructure.
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
Listen to the keynote address and hear about the latest developments from Rachana Ananthakrishnan and Ian Foster who review the updates to the Globus Platform and Service, and the relevance of Globus to the scientific community as an automation platform to accelerate scientific discovery.
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteGoogle
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-pilot-review/
AI Pilot Review: Key Features
✅Deploy AI expert bots in Any Niche With Just A Click
✅With one keyword, generate complete funnels, websites, landing pages, and more.
✅More than 85 AI features are included in the AI pilot.
✅No setup or configuration; use your voice (like Siri) to do whatever you want.
✅You Can Use AI Pilot To Create your version of AI Pilot And Charge People For It…
✅ZERO Manual Work With AI Pilot. Never write, Design, Or Code Again.
✅ZERO Limits On Features Or Usages
✅Use Our AI-powered Traffic To Get Hundreds Of Customers
✅No Complicated Setup: Get Up And Running In 2 Minutes
✅99.99% Up-Time Guaranteed
✅30 Days Money-Back Guarantee
✅ZERO Upfront Cost
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
Cyaniclab : Software Development Agency Portfolio.pdfCyanic lab
CyanicLab, an offshore custom software development company based in Sweden,India, Finland, is your go-to partner for startup development and innovative web design solutions. Our expert team specializes in crafting cutting-edge software tailored to meet the unique needs of startups and established enterprises alike. From conceptualization to execution, we offer comprehensive services including web and mobile app development, UI/UX design, and ongoing software maintenance. Ready to elevate your business? Contact CyanicLab today and let us propel your vision to success with our top-notch IT solutions.
A Comprehensive Look at Generative AI in Retail App Testing.pdfkalichargn70th171
Traditional software testing methods are being challenged in retail, where customer expectations and technological advancements continually shape the landscape. Enter generative AI—a transformative subset of artificial intelligence technologies poised to revolutionize software testing.
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
In software engineering, the right architecture is essential for robust, scalable platforms. Wix has undergone a pivotal shift from event sourcing to a CRUD-based model for its microservices. This talk will chart the course of this pivotal journey.
Event sourcing, which records state changes as immutable events, provided robust auditing and "time travel" debugging for Wix Stores' microservices. Despite its benefits, the complexity it introduced in state management slowed development. Wix responded by adopting a simpler, unified CRUD model. This talk will explore the challenges of event sourcing and the advantages of Wix's new "CRUD on steroids" approach, which streamlines API integration and domain event management while preserving data integrity and system resilience.
Participants will gain valuable insights into Wix's strategies for ensuring atomicity in database updates and event production, as well as caching, materialization, and performance optimization techniques within a distributed system.
Join us to discover how Wix has mastered the art of balancing simplicity and extensibility, and learn how the re-adoption of the modest CRUD has turbocharged their development velocity, resilience, and scalability in a high-growth environment.
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
4. map JSON
public class YqlResponse {
public YqlQuery query;
public static class YqlQuery {
public YqlResults results;
public static class YqlResults {
public List<Quote> quote;
}
}
}
no annotations needed
5. create a service API
@Path("http://query.yahooapis.com/v1/public")
public interface QuoteService extends RestService {
@GET
@Path("yql")
public void get(
@QueryParam("q") String query,
@QueryParam("env") String env,
@QueryParam("format") String format,
MethodCallback<YqlResponse> callback);
}
6. invoke the service
private static final QuoteService svc = GWT.create(QuoteService.class);
@Override
public void load(LoaderDemo.QuoteRequest input, final Callback<ListLoadResult<Quote>,
Throwable> callback) {
svc.get(input.getYql(), ENV, FORMAT, new MethodCallback<YqlResponse>() {
@Override
public void onFailure(Method method, Throwable throwable) {
Info.display("QuoteProxy", "failure");
callback.onFailure(throwable);
}
@Override
public void onSuccess(Method method, YqlResponse yqlResponse) {
List<Quote> quotes = yqlResponse.query.results.quote;
Info.display("QuoteProxy", "success");
callback.onSuccess(new ListLoadResultBean<Quote>(quotes));
}
});
}
7. simple CRUD API
public interface RestApi<T> extends RestService {
@GET
@Path("get")
public void get(@QueryParam("id")Long id, MethodCallback<T> callback);
@GET
@Path("all")
public void listAll(MethodCallback<ListResponse<T>> callback);
@POST
@Path("save")
public void save(T obj, MethodCallback<T> callback);
@POST
@Path("saveMany")
public void saveMany(List<T> obj, MethodCallback<Integer> callback);
@POST
@Path("delete")
public void delete(Long id, MethodCallback<Integer> callback);
}
8. not much here!
minimal boilerplate
@Path("/api/note")
public interface NoteItemRestService extends RestApi<Note> { }
private static final NoteItemRestService service = GWT.create(NoteItemRestService.class);
public void addNote(Display display, long listId, Note item)
{
NoteList noteList = App.getNoteListService().getNoteList(listId);
// All are 0-based for consistency with GWT constants
item.listId = listId;
service.save(item, new AppCallback<Note>(display) {
@Override
public void handleSuccess(Note result) {
App.getAppModel().getAllNotes().add(0, result);
App.getEventBus().fireEvent(new ShowMessageEvent("Note saved."));
App.getEventBus().fireEvent(new
NotesLoadedEvent(App.getAppModel().getAllNotes()));
App.getEventBus().fireEvent(new NoteAddedEvent(result));
}
});
}
9. public class ProjectEntryPoint implements EntryPoint {
private static DispatcherFactory dispatcherFactory = new DispatcherFactory();
private static FilterawareDispatcher dispatcher =
dispatcherFactory.cachingDispatcher();
@Override
public void onModuleLoad() {
// Configure RestyGWT
dispatcher.addFilter(new CORSFilter());
Defaults.setDispatcher(dispatcher);
LoaderDemo loaderDemo = new LoaderDemo();
RootPanel.get().add(loaderDemo);
}
}
ListAllNotesAction, ListAllNotesResult,
AddNoteAction, AddNoteResult, …
Command pattern
10. server side
@Path("api/note")
public class NoteDao extends RestServiceDao<Note>
{
private static final Logger LOG = Logger.getLogger(NoteDao.class.getName());
@Override
@Path("all")
@GET
public ListWrapper<Note> findAll() {
User user = AuthFilter.getUser();
List<Note> notes = this.listByOwner(user);
return new ListWrapper<Note>(notes);
}
. . .
}
11. Objectify + Jersey
@Produces(MediaType.APPLICATION_JSON)
public class RestServiceDao<T extends Owned> extends ObjectifyDao<T>
{
public T getForOwner() {
User user = AuthFilter.getUser();
T obj = null;
try {
obj = this.getByOwner(user);
return obj;
} catch (TooManyResultsException e) {
throw new WebApplicationException(e);
}
}
public ListWrapper<T> findAll() {
User user = AuthFilter.getUser();
List<T> userAll = this.listByOwner(user);
return new ListWrapper<T>(userAll);
}
. . .
}
12. getting Jersey
pom.xml
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<!-- if your container implements Servlet API older than 3.0,
use "jersey-container-servlet-core" -->
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.7</version>
</dependency>
<!-- workaround for https://java.net/jira/browse/JERSEY-2459 -->
<dependency>
<groupId>org.glassfish.hk2</groupId>
<artifactId>hk2-api</artifactId>
<version>2.3.0-b09</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.3.2</version>
</dependency>
14. what about auth?
AuthFilter.java
// if an API call, return JSON response
if (path.startsWith("/listmaker/api")) {
((HttpServletResponse) resp).setStatus(401);
resp.setContentType(MediaType.TEXT_PLAIN);
resp.getWriter().write("User must log in");
} else {
// otherwise redirect
httpRes.sendRedirect(LOGIN_FORM);
}
<filter>
<filter-name>AuthFilter</filter-name>
<filter-class>com.turbomanage.gwt.server.servlet.AuthFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AuthFilter</filter-name>
<url-pattern>/listmaker/*</url-pattern>
</filter-mapping>
15. exception handling
@Override
public void onFailure(Method method, Throwable throwable) {
String url = method.builder.getUrl();
App.getLogger().log(Level.SEVERE, "Error calling service " + url, throwable);
try {
// Decode the exception
if (throwable instanceof FailedStatusCodeException) {
FailedStatusCodeException sce = (FailedStatusCodeException) throwable;
App.getLogger().log(Level.SEVERE, "Service returned " + sce.getStatusCode() +
sce.getMessage());
if (401 == sce.getStatusCode()) {
Window.Location.replace(LOGIN_FORM);
} else if (500 == sce.getStatusCode()) {
if ("UserNotRegisteredException".equals(sce.getMessage())) {
Window.Location.replace(SIGNUP_URL);
}
}
}
handleFailure(throwable);
} finally {
reset(null);
}
}
16. application error handling
service.save(item, new AppCallback<Note>(display) {
@Override
public void handleSuccess(Note result) {
. . .
}
});
public abstract class AppCallback<R> implements MethodCallback<R> {
private final Display display;
public AppCallback() {
this.display = null;
}
public AppCallback(Display display) {
this.display = display;
display.startProcessing();
}
. . .
}
17. finer points
Text, JSON, XML via direct API — res.get()…
CachingRetryingDispatcher
ModelChangeEvent
Objects with final fields (@JsonCreator)
Polymorphism (@JsonSubTypes)
18. same obj on client / server?
older versions of RestyGWT used Jackson 1.7
RestyGWT 2.0 uses Jackson 2.3
so you can now use the same annotations on client
and server
and therefore the same POJOs (yeah)!
use @JsonIgnore for server-only fields (like Ref)
19. Please rate this session at
gwtcreate.com/agenda
src
github.com/turbomanage/listmaker
David Chandler
turbomanage.wordpress.com
resty-gwt.github.io