/******************************************************************************* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright (c) 2013,2014 by Peter Pilgrim, Addiscombe, Surrey, XeNoNiQUe UK * * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU GPL v3.0 * which accompanies this distribution, and is available at: * http://www.gnu.org/licenses/gpl-3.0.txt * * Developers: * Peter Pilgrim -- design, development and implementation * -- Blog: http://www.xenonique.co.uk/blog/ * -- Twitter: @peter_pilgrim * * Contributors: * *******************************************************************************/ package je7hb.intro.xentracker.control; import je7hb.intro.xentracker.boundary.ProjectTaskService; import je7hb.intro.xentracker.entity.Project; import javax.ejb.Stateless; import javax.inject.Inject; import javax.json.Json; import javax.json.stream.JsonGenerator; import javax.json.stream.JsonGeneratorFactory; import javax.websocket.*; import javax.websocket.server.ServerEndpoint; import java.io.StringWriter; import java.util.HashMap; import java.util.List; /** * The type ProjectWebSocketRetrieveEndpoint * * @author Peter Pilgrim (peter) */ @ServerEndpoint("/retrieve-all-projects") @Stateless public class ProjectWebSocketRetrieveEndpoint { @Inject ProjectTaskService service; static JsonGeneratorFactory jsonGeneratorFactory = Json.createGeneratorFactory( new HashMap<String, Object>() {{ put(JsonGenerator.PRETTY_PRINTING, true); }}); @OnMessage public String updateProjectTask(String message) { final int projectId = Integer.parseInt(message.trim()); List<Project> projects = service.findProjectById(projectId); final StringWriter swriter = new StringWriter(); final JsonGenerator generator = jsonGeneratorFactory.createGenerator(swriter); ProjectHelper.generateProjectsAsJson(generator, projects).close(); return swriter.toString(); } @OnOpen public void open( Session session ) { System.out.printf("%s.open( session=%s)\n", getClass().getSimpleName(), session ); } @OnClose public void close( Session session ) { System.out.printf("%s.close( session=%s)\n", getClass().getSimpleName(), session ); } @OnError public void error( Session session, Throwable error ){ System.err.printf("%s.onError( session=%s, error=%s )\n", getClass().getSimpleName(), session, error); error.printStackTrace(System.err); } }