@Override public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws IOException, PortletException { String id = resourceRequest.getResourceID(); if (id.equalsIgnoreCase("getBrokerTopics")) { JSONArray topics = JSONFactoryUtil.createJSONArray(); long brokerId = ParamUtil.getLong(resourceRequest, "brokerId"); long brokerMessageListenerId = ParamUtil.getLong(resourceRequest, "brokerMessageListenerId"); try { Broker b = BrokerLocalServiceUtil.fetchBroker(brokerId); BrokerMessageListener bml = (brokerMessageListenerId > 0) ? BrokerMessageListenerLocalServiceUtil.fetchBrokerMessageListener( brokerMessageListenerId) : null; String[] topicsArr = b.getTopics().split(";"); for (int i = 0; i < topicsArr.length; i++) { JSONObject obj = JSONFactoryUtil.createJSONObject(); obj.put("topic", topicsArr[i]); boolean checked = false; if (bml != null) { String[] messageListenerTopcs = bml.getTopics().split(";"); for (int j = 0; j < messageListenerTopcs.length && !checked; j++) { if (messageListenerTopcs[j].equalsIgnoreCase(topicsArr[i])) checked = true; } } obj.put("checked", checked); topics.put(obj); } } catch (Exception e) { logger.error(e); } resourceResponse.getWriter().println(topics.toString()); } }
public void saveOrUpdateBrokerMessageListener(ActionRequest request, ActionResponse response) throws Exception { ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY); PortletConfig portletConfig = (PortletConfig) request.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG); long brokerMessageListenerId = ParamUtil.getLong(request, "brokerMessageListenerId"); boolean isNew = brokerMessageListenerId == 0; BrokerMessageListener bml = null; if (!isNew) { bml = BrokerMessageListenerLocalServiceUtil.fetchBrokerMessageListener(brokerMessageListenerId); } else { bml = BrokerMessageListenerLocalServiceUtil.createBrokerMessageListener( CounterLocalServiceUtil.increment(BrokerMessageListener.class.getName())); bml.setCreateDate(new Date()); } if (isNew && BrokerModelPermission.contains( themeDisplay.getPermissionChecker(), themeDisplay.getScopeGroupId(), ActionKeys.ADD_ENTRY) || !isNew && BrokerMessageListenerPermission.contains( themeDisplay.getPermissionChecker(), bml, ActionKeys.UPDATE)) { try { String brokerMessageListenerName = ParamUtil.getString(request, "name"); String brokerMessageListenerDescription = ParamUtil.getString(request, "description"); long brokerId = ParamUtil.getLong(request, "brokerId"); String[] topicsArr = ParamUtil.getParameterValues(request, "topic"); StringBuilder topics = new StringBuilder(); for (int i = 0; i < topicsArr.length; i++) { topics.append(topicsArr[i] + ";"); } String typeStr = ParamUtil.getString(request, "type"); BrokerMessageListenerType type = BrokerMessageListenerType.valueOf(typeStr); bml.setCompanyId(themeDisplay.getCompanyId()); bml.setGroupId(themeDisplay.getCompanyGroupId()); bml.setUserName(themeDisplay.getUser().getScreenName()); bml.setUserId(themeDisplay.getUserId()); bml.setModifiedDate(new Date()); bml.setName(brokerMessageListenerName); bml.setDescription(brokerMessageListenerDescription); bml.setBrokerId(brokerId); bml.setTopics(topics.toString()); bml.setType(typeStr); if (type.equals(BrokerMessageListenerType.MESSAGE_BUS)) { String messageBusDestination = ParamUtil.getString(request, "messageBusDestination"); bml.setMessageBusDestination(messageBusDestination); } BrokerMessageListenerLocalServiceUtil.saveOrUpdateBrokerMessageListener( bml, themeDisplay.getLocale(), portletConfig); } catch (Exception e) { response.setRenderParameter("mvcPath", "/html/brokermessagelistener/edit.jsp"); response.setRenderParameter("errorMessage", e.getMessage()); request.setAttribute("brokerMessageListener", bml); SessionErrors.add(request, "it.acsoftware.brokerportlet.error"); } } }