/******************************************************************************* * Copyright 2011 Adrian Cristian Ionescu * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package ro.zg.opengroups.gwt.server; import java.util.Map; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import ro.zg.netcell.client.ThinClientNetcellDao; import ro.zg.opengroups.gwt.app.impl.NetcellActionExecutor; import ro.zg.opengroups.gwt.app.impl.OpenGroupsActionsManager; import ro.zg.opengroups.gwt.app.impl.OpenGroupsAppManager; import ro.zg.opengroups.gwt.app.impl.OpenGroupsAppStateFactory; import ro.zg.opengroups.gwt.app.impl.OpenGroupsCommandsManager; import ro.zg.opengroups.gwt.app.impl.loaders.AvailableActionsLoader; import ro.zg.opengroups.gwt.app.impl.loaders.NetcellActionsLoader; import ro.zg.opengroups.gwt.app.impl.loaders.OpenGroupsCommandHandlersLoader; import ro.zg.opengroups.gwt.app.impl.loaders.OpenGroupsCommandsLoader; import ro.zg.opengroups.gwt.app.impl.loaders.OpenGroupsConfigLoader; import ro.zg.opengroups.gwt.app.impl.loaders.OpenGroupsResourceBundleLoader; import ro.zg.opengroups.gwt.app.impl.loaders.RuntimeAppConfigLoader; import ro.zg.opengroups.gwt.client.OpenGroupsService; import ro.zg.opengroups.gwt.shared.vo.OpenGroupsAppState; import ro.zg.util.config.ObjectFromClassLoader; import ro.zg.util.config.ObjectLoader; import ro.zg.webapp.core.constants.ActionsManagerConfigParams; import ro.zg.webapp.core.constants.AppManagerConfigParams; import ro.zg.webapp.core.shared.vo.AppState; import ro.zg.webapp.core.shared.vo.Command; import com.google.gwt.user.server.rpc.RemoteServiceServlet; public class OpenGroupsServiceImpl extends RemoteServiceServlet implements OpenGroupsService { /** * */ private static final long serialVersionUID = 4882771984296724087L; private OpenGroupsAppManager appManager; public void init(ServletConfig config) throws ServletException { super.init(config); appManager = new OpenGroupsAppManager(); appManager.setAppStateFactory(new OpenGroupsAppStateFactory()); OpenGroupsConfigLoader configLoader = new OpenGroupsConfigLoader(); try { configLoader.addResource(AppManagerConfigParams.RESOURCES_BUNDLE, new OpenGroupsResourceBundleLoader().load(null)); } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } ThinClientNetcellDao netcellDao = new ThinClientNetcellDao("localhost", 2000); NetcellActionExecutor actionExecutor = new NetcellActionExecutor(netcellDao); AvailableActionsLoader availableActionsLoader = new AvailableActionsLoader(actionExecutor); configLoader.addLoader(ActionsManagerConfigParams.ACTIONS_MAP, new NetcellActionsLoader(availableActionsLoader)); configLoader.addLoader(ActionsManagerConfigParams.ACTION_EXECUTOR, new ObjectLoader(actionExecutor)); configLoader.addLoader(AppManagerConfigParams.ACTIONS_MANAGER, new ObjectFromClassLoader( OpenGroupsActionsManager.class)); configLoader.addLoader(AppManagerConfigParams.COMMANDS_MANAGER, new ObjectFromClassLoader( OpenGroupsCommandsManager.class)); configLoader.addLoader(AppManagerConfigParams.RUNTIME_APP_CONFIG, new RuntimeAppConfigLoader(actionExecutor)); configLoader.addLoader(AppManagerConfigParams.COMMAND_HANDLERS, new OpenGroupsCommandHandlersLoader()); configLoader.addLoader(AppManagerConfigParams.COMMAND_MAPPINGS, new OpenGroupsCommandsLoader(availableActionsLoader)); // configLoader.addLoader(AppManagerConfigParams.RESOURCES_BUNDLE, new OpenGroupsResourceBundleLoader()); try { appManager.init(configLoader); System.out.println(appManager.getConfig()); System.out.println("OpenGroupsService initialized"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public OpenGroupsAppState execute(String commandId, Map<String, Object> params) throws IllegalArgumentException { Command command = Command.build(commandId, params); return execute(command); } public OpenGroupsAppState execute(Command command) throws IllegalArgumentException{ System.out.println("Executing " + command.getId()); try { HttpServletRequest hsr = getThreadLocalRequest(); HttpSession session = hsr.getSession(true); // AppState appState = (AppState)session.getAttribute("AppState"); OpenGroupsAppState appState = (OpenGroupsAppState)appManager.execute(command); // session.setAttribute("AppState", appState); return appState; } catch (Exception e) { e.printStackTrace(); } return null; } }