List of usage examples for org.apache.wicket.behavior AbstractAjaxBehavior getCallbackUrl
public CharSequence getCallbackUrl()
From source file:com.google.code.jqwicket.api.JQuery.java
License:Apache License
/** * Creates JQStatement to invoke the respond method of the given * {@link AbstractAjaxBehavior} via ajax. * /* w w w . j av a 2s .co m*/ * @param behave * @param params * @return */ public static final IJQStatement wicketAjaxGet(AbstractAjaxBehavior behave, Map<String, Object> params) { return wicketAjaxGet(behave.getCallbackUrl(), params); }
From source file:com.google.code.jqwicket.api.JQuery.java
License:Apache License
/** * Creates JQStatement to invoke the respond method of the given * {@link AbstractAjaxBehavior} via ajax. * //w w w .j a va 2 s . c o m * @param behave * @param params * @param successHandler * @param failureHandler * @return */ public static final IJQStatement wicketAjaxGet(AbstractAjaxBehavior behave, Map<String, Object> params, IJQFunction successHandler, IJQFunction failureHandler) { return wicketAjaxGet(behave.getCallbackUrl(), params, successHandler, failureHandler); }
From source file:com.servoy.j2db.server.headlessclient.WebClientsApplication.java
License:Open Source License
/** * @see wicket.protocol.http.WebApplication#init() *//*from w ww . j a v a2s . co m*/ @Override protected void init() { if (ApplicationServerRegistry.get() == null) return; // TODO this is a workaround to allow mobile test client that only starts Tomcat not to give exceptions (please remove if mobile test client initialises a full app. server in the future) getResourceSettings().setResourceWatcher(new ServoyModificationWatcher(Duration.seconds(5))); // getResourceSettings().setResourcePollFrequency(Duration.seconds(5)); getResourceSettings().setAddLastModifiedTimeToResourceReferenceUrl(true); getResourceSettings().setDefaultCacheDuration((int) Duration.days(365).seconds()); getMarkupSettings().setCompressWhitespace(true); getMarkupSettings().setMarkupCache(new ServoyMarkupCache(this)); // getMarkupSettings().setStripWicketTags(true); getResourceSettings().setResourceStreamLocator(new ServoyResourceStreamLocator(this)); getResourceSettings().setPackageResourceGuard(new ServoyPackageResourceGuard()); // getResourceSettings().setResourceFinder(createResourceFinder()); getResourceSettings().setThrowExceptionOnMissingResource(false); getApplicationSettings().setPageExpiredErrorPage(ServoyExpiredPage.class); getApplicationSettings().setClassResolver(new ServoyClassResolver()); getSessionSettings().setMaxPageMaps(15); // getRequestCycleSettings().setGatherExtendedBrowserInfo(true); getSecuritySettings().setCryptFactory(new CachingKeyInSessionSunJceCryptFactory()); Settings settings = Settings.getInstance(); getDebugSettings().setOutputComponentPath( Utils.getAsBoolean(settings.getProperty("servoy.webclient.debug.wicketpath", "false"))); //$NON-NLS-1$ //$NON-NLS-2$ if (Utils.getAsBoolean(settings.getProperty("servoy.webclient.nice.urls", "false"))) //$NON-NLS-1$ //$NON-NLS-2$ { mount(new HybridUrlCodingStrategy("/solutions", SolutionLoader.class)); //$NON-NLS-1$ mount(new HybridUrlCodingStrategy("/application", MainPage.class)); //$NON-NLS-1$ mount(new HybridUrlCodingStrategy("/ss", SolutionLoader.class) //$NON-NLS-1$ { /** * @see wicket.request.target.coding.BookmarkablePageRequestTargetUrlCodingStrategy#matches(wicket.IRequestTarget) */ @Override public boolean matches(IRequestTarget requestTarget) { return false; } }); } else { mountBookmarkablePage("/solutions", SolutionLoader.class); //$NON-NLS-1$ mount(new BookmarkablePageRequestTargetUrlCodingStrategy("/ss", SolutionLoader.class, null) //$NON-NLS-1$ { /** * @see wicket.request.target.coding.BookmarkablePageRequestTargetUrlCodingStrategy#matches(wicket.IRequestTarget) */ @Override public boolean matches(IRequestTarget requestTarget) { return false; } }); } long maxSize = Utils.getAsLong(settings.getProperty("servoy.webclient.maxuploadsize", "0"), false); //$NON-NLS-1$ //$NON-NLS-2$ if (maxSize > 0) { getApplicationSettings().setDefaultMaximumUploadSize(Bytes.kilobytes(maxSize)); } getSharedResources().putClassAlias(IApplication.class, "application"); //$NON-NLS-1$ getSharedResources().putClassAlias(PageContributor.class, "pc"); //$NON-NLS-1$ getSharedResources().putClassAlias(MaskBehavior.class, "mask"); //$NON-NLS-1$ getSharedResources().putClassAlias(Application.class, "servoy"); //$NON-NLS-1$ getSharedResources().putClassAlias(org.wicketstuff.calendar.markup.html.form.DatePicker.class, "datepicker"); //$NON-NLS-1$ getSharedResources().putClassAlias(YUILoader.class, "yui"); //$NON-NLS-1$ getSharedResources().putClassAlias(JQueryLoader.class, "jquery"); //$NON-NLS-1$ getSharedResources().putClassAlias(TinyMCELoader.class, "tinymce"); //$NON-NLS-1$ getSharedResources().putClassAlias(org.apache.wicket.markup.html.WicketEventReference.class, "wicketevent"); //$NON-NLS-1$ getSharedResources().putClassAlias(org.apache.wicket.ajax.WicketAjaxReference.class, "wicketajax"); //$NON-NLS-1$ getSharedResources().putClassAlias(MainPage.class, "servoyjs"); //$NON-NLS-1$ getSharedResources().putClassAlias(org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow.class, "modalwindow"); //$NON-NLS-1$ PackageResource.bind(this, IApplication.class, "images/open_project.gif"); //$NON-NLS-1$ PackageResource.bind(this, IApplication.class, "images/save.gif"); //$NON-NLS-1$ mountSharedResource("/formcss", "servoy/formcss"); //$NON-NLS-1$//$NON-NLS-2$ sharedMediaResource = new SharedMediaResource(); getSharedResources().add("media", sharedMediaResource); //$NON-NLS-1$ mount(new SharedResourceRequestTargetUrlCodingStrategy("mediafolder", "servoy/media") //$NON-NLS-1$ //$NON-NLS-2$ { @Override protected void appendParameters(AppendingStringBuffer url, Map<String, ?> parameters) { if (parameters != null && parameters.size() > 0) { Object solutionName = parameters.get("s"); //$NON-NLS-1$ if (solutionName != null) appendPathParameter(url, null, solutionName.toString()); Object resourceId = parameters.get("id"); //$NON-NLS-1$ if (resourceId != null) appendPathParameter(url, null, resourceId.toString()); StringBuilder queryParams = new StringBuilder(); for (Entry<?, ?> entry1 : parameters.entrySet()) { Object value = ((Entry<?, ?>) entry1).getValue(); if (value != null) { Object key = ((Entry<?, ?>) entry1).getKey(); if (!"s".equals(key) && !"id".equals(key)) //$NON-NLS-1$ //$NON-NLS-2$ { if (value instanceof String[]) { String[] values = (String[]) value; for (String value1 : values) { if (queryParams.length() > 0) queryParams.append("&"); //$NON-NLS-1$ queryParams.append(key).append("=").append(value1);//$NON-NLS-1$ } } else { if (queryParams.length() > 0) queryParams.append("&"); //$NON-NLS-1$ queryParams.append(key).append("=").append(value);//$NON-NLS-1$ } } } } if (queryParams.length() > 0) { url.append("?").append(queryParams);//$NON-NLS-1$ } } } @Override protected void appendPathParameter(AppendingStringBuffer url, String key, String value) { String escapedValue = value; String[] values = escapedValue.split("/");//$NON-NLS-1$ if (values.length > 1) { StringBuilder sb = new StringBuilder(escapedValue.length()); for (String str : values) { sb.append(urlEncodePathComponent(str)); sb.append('/'); } sb.setLength(sb.length() - 1); escapedValue = sb.toString(); } else { escapedValue = urlEncodePathComponent(escapedValue); } if (!Strings.isEmpty(escapedValue)) { if (!url.endsWith("/"))//$NON-NLS-1$ { url.append("/");//$NON-NLS-1$ } if (key != null) url.append(urlEncodePathComponent(key)).append("/");//$NON-NLS-1$ url.append(escapedValue); } } /* * (non-Javadoc) * * @see org.apache.wicket.request.target.coding.AbstractRequestTargetUrlCodingStrategy#decodeParameters(java.lang.String, java.util.Map) */ @Override protected ValueMap decodeParameters(String urlFragment, Map<String, ?> urlParameters) { ValueMap map = new ValueMap(); final String[] pairs = urlFragment.split("/"); //$NON-NLS-1$ if (pairs.length > 1) { map.add("s", pairs[1]); //$NON-NLS-1$ StringBuffer sb = new StringBuffer(); for (int i = 2; i < pairs.length; i++) { sb.append(pairs[i]); sb.append("/"); //$NON-NLS-1$ } sb.setLength(sb.length() - 1); map.add("id", sb.toString()); //$NON-NLS-1$ } if (urlParameters != null) { map.putAll(urlParameters); } return map; } }); getSharedResources().add("resources", new ServeResources()); //$NON-NLS-1$ getSharedResources().add("formcss", new FormCssResource(this)); //$NON-NLS-1$ if (settings.getProperty("servoy.webclient.error.page", null) != null) //$NON-NLS-1$ { getApplicationSettings().setInternalErrorPage(ServoyErrorPage.class); } if (settings.getProperty("servoy.webclient.pageexpired.page", null) != null) //$NON-NLS-1$ { getApplicationSettings().setPageExpiredErrorPage(ServoyPageExpiredPage.class); } addPreComponentOnBeforeRenderListener(new IComponentOnBeforeRenderListener() { public void onBeforeRender(Component component) { if (component instanceof IServoyAwareBean) { IModel model = component.getInnermostModel(); WebForm webForm = component.findParent(WebForm.class); if (model instanceof RecordItemModel && webForm != null) { IRecord record = (IRecord) ((RecordItemModel) model).getObject(); FormScope fs = webForm.getController().getFormScope(); if (record != null && fs != null) { ((IServoyAwareBean) component).setSelectedRecord(new ServoyBeanState(record, fs)); } } } else { if (!component.isEnabled()) { boolean hasOnRender = (component instanceof IFieldComponent && ((IFieldComponent) component) .getScriptObject() instanceof ISupportOnRenderCallback && ((ISupportOnRenderCallback) ((IFieldComponent) component).getScriptObject()) .getRenderEventExecutor().hasRenderCallback()); if (!hasOnRender) { // onrender may change the enable state return; } } Component targetComponent = null; boolean hasFocus = false, hasBlur = false; if (component instanceof IFieldComponent && ((IFieldComponent) component).getEventExecutor() != null) { targetComponent = component; if (component instanceof WebBaseSelectBox) { Component[] cs = ((WebBaseSelectBox) component).getFocusChildren(); if (cs != null && cs.length == 1) targetComponent = cs[0]; } if (component instanceof WebDataHtmlArea) hasFocus = true; // always install a focus handler when in a table view to detect change of selectedIndex and test for record validation if (((IFieldComponent) component).getEventExecutor().hasEnterCmds() || component.findParent(WebCellBasedView.class) != null || (((IFieldComponent) component) .getScriptObject() instanceof ISupportOnRenderCallback && ((ISupportOnRenderCallback) ((IFieldComponent) component) .getScriptObject()).getRenderEventExecutor().hasRenderCallback())) { hasFocus = true; } // Always trigger event on focus lost: // 1) check for new selected index, record validation may have failed preventing a index changed // 2) prevent focus gained to be called when field validation failed // 3) general ondata change hasBlur = true; } else if (component instanceof WebBaseLabel) { targetComponent = component; hasFocus = true; } if (targetComponent != null) { MainPage mainPage = targetComponent.findParent(MainPage.class); if (mainPage.isUsingAjax()) { AbstractAjaxBehavior eventCallback = mainPage.getPageContributor().getEventCallback(); if (eventCallback != null) { String callback = eventCallback.getCallbackUrl().toString(); if (component instanceof WebDataRadioChoice || component instanceof WebDataCheckBoxChoice || component instanceof WebDataLookupField || component instanceof WebDataComboBox || component instanceof WebDataListBox || component instanceof WebDataHtmlArea) { // is updated via ServoyChoiceComponentUpdatingBehavior or ServoyFormComponentUpdatingBehavior, this is just for events callback += "&nopostdata=true"; } for (IBehavior behavior : targetComponent.getBehaviors()) { if (behavior instanceof EventCallbackModifier) { targetComponent.remove(behavior); } } if (hasFocus) { StringBuilder js = new StringBuilder(); js.append("eventCallback(this,'focus','").append(callback).append("',event)"); //$NON-NLS-1$ //$NON-NLS-2$ targetComponent.add(new EventCallbackModifier("onfocus", true, //$NON-NLS-1$ new Model<String>(js.toString()))); targetComponent.add(new EventCallbackModifier("onmousedown", true, //$NON-NLS-1$ new Model<String>("focusMousedownCallback(event)"))); //$NON-NLS-1$ } if (hasBlur) { boolean blockRequest = false; // if component has ondatachange, check for blockrequest if (component instanceof ISupportEventExecutor && ((ISupportEventExecutor) component).getEventExecutor() .hasChangeCmd()) { WebClientSession webClientSession = WebClientSession.get(); blockRequest = webClientSession != null && webClientSession.blockRequest(); } StringBuilder js = new StringBuilder(); js.append("postEventCallback(this,'blur','").append(callback) //$NON-NLS-1$ .append("',event," + blockRequest + ")"); //$NON-NLS-1$ targetComponent.add(new EventCallbackModifier("onblur", true, //$NON-NLS-1$ new Model<String>(js.toString()))); } } } } } } }); }
From source file:org.hippoecm.frontend.plugins.ckeditor.CKEditorPanelPickerExtension.java
License:Apache License
private static void addCallbackUrl(final JSONObject config, String key, AbstractAjaxBehavior callback) throws JSONException { final String callbackUrl = callback.getCallbackUrl().toString(); config.put(key, callbackUrl);// w w w . ja v a 2 s . c om }
From source file:org.sakaiproject.dash.tool.pages.DashboardMobilePage.java
License:Educational Community License
public DashboardMobilePage() { dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_VISIT, "/dashboard/page/" + sakaiProxy.getCurrentSiteId()); final WebMarkupContainer dashboardPage = new WebMarkupContainer("dashboard-page"); dashboardPage.setOutputMarkupId(true); add(dashboardPage);//from w ww . jav a2 s . c o m MOTDPanel motdPanel = new MOTDPanel("motdPanel"); motdPanel.setOutputMarkupId(true); dashboardPage.add(motdPanel); CalendarLinksPanel calendarPanel = new CalendarLinksPanel("calendarPanel"); calendarPanel.setOutputMarkupId(true); dashboardPage.add(calendarPanel); NewsLinksPanel newsPanel = new NewsLinksPanel("newsPanel"); newsPanel.setOutputMarkupId(true); dashboardPage.add(newsPanel); AbstractAjaxBehavior entityDetailRequest = new AbstractAjaxBehavior() { public void onRequest() { logger.debug("entityDetailRequest.onClick() "); //get parameters final RequestCycle requestCycle = RequestCycle.get(); WebRequest wr = (WebRequest) requestCycle.getRequest(); HttpServletRequest hsr = wr.getHttpServletRequest(); String entityReference = null; String entityType = null; int itemCount = 0; int offset = -1; String dashEvent = null; try { BufferedReader br = hsr.getReader(); String jsonString = br.readLine(); if ((jsonString == null) || jsonString.isEmpty()) { logger.error(" no json found for entityReference: " + entityReference); } else { if (logger.isDebugEnabled()) { logger.debug(" json is :" + jsonString); } JSONObject jsonObject = JSONObject.fromObject(jsonString); entityReference = jsonObject.optString("entityReference", ""); entityType = jsonObject.optString("entityType", ""); itemCount = jsonObject.optInt("itemCount", 1); dashEvent = jsonObject.optString("dashEvent", ""); offset = jsonObject.optInt("offset", -1); } } catch (IOException ex) { logger.error(ex); } Locale locale = hsr.getLocale(); if (entityReference != null && !entityReference.trim().equals("") && entityType != null && !entityType.trim().equals("")) { if (itemCount > 1) { ResourceLoader rl = new ResourceLoader("dash_entity"); int limit = dashboardConfig.getConfigValue(DashboardConfig.PROP_DEFAULT_ITEMS_IN_DISCLOSURE, 20); if (offset < 0) { offset = 0; } String sakaiUserId = sakaiProxy.getCurrentUserId(); int totalItems = dashboardCommonLogic.countNewsLinksByGroupId(sakaiUserId, entityReference); Map<String, Object> results = new HashMap<String, Object>(); results.put("totalCount", totalItems); if (offset > totalItems) { results.put("items", new ArrayList<NewsLink>()); results.put("count", 0); } else { List<NewsLink> items = dashboardCommonLogic.getNewsLinksByGroupId(sakaiUserId, entityReference, limit, offset); results.put("items", items); results.put("count", items.size()); } results.put("details", rl.getString("dash.details")); results.put("offset", offset); results.put("more-link", rl.getString("dash.grouped.more.link", "[[ Show more ... ]]")); results.put("more-status", rl.getString("dash.grouped.more.status", "[[ Showing {0} of {1} items ]]")); results.put("more-status-last", rl.getString("dash.news.linksCount2", "[[ Showing item {0} of {1} items ]]")); results.put("more-status-range", rl.getString("dash.news.linksCount3", "[[ Showing {0} to {1} of {2} items ]]")); JsonHelper jsonHelper = new JsonHelper(dashboardCommonLogic, dashboardConfig); String jsonString = jsonHelper.getJsonObjectFromMap(results).toString(); if (logger.isDebugEnabled()) { logger.debug("Returning JSON:\n" + jsonString); } IRequestTarget t = new StringRequestTarget("application/json", "UTF-8", jsonString); getRequestCycle().setRequestTarget(t); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_VIEW_GROUP, "/dashboard/news/current/" + entityReference); } else if (itemCount == 1) { Map<String, Object> entityMap = dashboardCommonLogic.getEntityMapping(entityType, entityReference, locale); String jsonString = getJsonStringFromMap(entityMap); if (logger.isDebugEnabled()) { logger.debug("Returning JSON:\n" + jsonString); } IRequestTarget t = new StringRequestTarget("application/json", "UTF-8", jsonString); getRequestCycle().setRequestTarget(t); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_ITEM_DETAILS, "/dashboard/?/?/" + entityReference); } else if (dashEvent != null && !dashEvent.trim().equals("")) { // report the event dashboardCommonLogic.recordDashboardActivity(dashEvent, entityReference); } } } }; dashboardPage.add(entityDetailRequest); dashboardPage.add(new Label("callbackUrl", entityDetailRequest.getCallbackUrl().toString())); AbstractAjaxBehavior starHandler = new AbstractAjaxBehavior() { public void onRequest() { logger.debug("starHandler.onRequest() "); String message = null; boolean success = true; ResourceLoader rl = new ResourceLoader("dash_entity"); //get parameters final RequestCycle requestCycle = RequestCycle.get(); WebRequest wr = (WebRequest) requestCycle.getRequest(); HttpServletRequest hsr = wr.getHttpServletRequest(); long itemId = -1L; String action = null; try { BufferedReader br = hsr.getReader(); String jsonString = br.readLine(); if ((jsonString == null) || jsonString.isEmpty()) { logger.error(" no json found "); message = rl.getString("dash.ajax.failed"); success = false; } else { if (logger.isDebugEnabled()) { logger.debug(" json is :" + jsonString); } JSONObject jsonObject = JSONObject.fromObject(jsonString); itemId = jsonObject.optLong("itemId", Long.MIN_VALUE); action = jsonObject.optString("dashAction"); } } catch (IOException ex) { logger.error(ex); message = rl.getString("dash.ajax.failed"); success = false; } String newIcon = null; if (itemId < 1 || action == null || action.trim().equals("")) { logger.error("invalid values found " + action + " " + itemId); message = rl.getString(""); } else if (success) { if ("star".equalsIgnoreCase(action)) { try { success = dashboardCommonLogic.keepNewsItem(sakaiProxy.getCurrentUserId(), itemId); } catch (Exception e) { logger.warn("Error trying to star news-link for user " + sakaiProxy.getCurrentUserId() + ", newsLinkId == " + itemId); success = false; } if (success) { message = rl.getString("dash.ajax.star.success"); newIcon = dashboardConfig.getActionIcon(DashboardConfig.ACTION_UNSTAR); } else { message = rl.getString("dash.ajax.star.failed"); } } else if ("unstar".equalsIgnoreCase(action)) { try { success = dashboardCommonLogic.unkeepNewsItem(sakaiProxy.getCurrentUserId(), itemId); } catch (Exception e) { logger.warn("Error trying to unstar news-link for user " + sakaiProxy.getCurrentUserId() + ", newsLinkId == " + itemId); success = false; } if (success) { message = rl.getString("dash.ajax.unstar.success"); newIcon = dashboardConfig.getActionIcon(DashboardConfig.ACTION_STAR); } else { message = rl.getString("dash.ajax.unstar.failed"); } } else if ("hide".equalsIgnoreCase(action)) { try { success = dashboardCommonLogic.hideNewsItem(sakaiProxy.getCurrentUserId(), itemId); } catch (Exception e) { logger.warn("Error trying to hide news-link for user " + sakaiProxy.getCurrentUserId() + ", newsLinkId == " + itemId); success = false; } if (success) { message = rl.getString("dash.ajax.hide.success"); } else { message = rl.getString("dash.ajax.hide.failed"); success = false; } } else if ("show".equalsIgnoreCase(action)) { try { success = dashboardCommonLogic.unhideNewsItem(sakaiProxy.getCurrentUserId(), itemId); } catch (Exception e) { logger.warn("Error trying to show news-link for user " + sakaiProxy.getCurrentUserId() + ", newsLinkId == " + itemId); success = false; } if (success) { message = rl.getString("dash.ajax.show.success"); } else { message = rl.getString("dash.ajax.show.failed"); success = false; } } } Map<String, Object> results = new HashMap<String, Object>(); results.put("message", message); results.put("success", Boolean.valueOf(success)); if (newIcon != null) { results.put("newIcon", newIcon); } String jsonString = getJsonStringFromMap(results); if (logger.isDebugEnabled()) { logger.debug("Returning JSON:\n" + jsonString); } IRequestTarget t = new StringRequestTarget("application/json", "UTF-8", jsonString); getRequestCycle().setRequestTarget(t); } }; dashboardPage.add(starHandler); dashboardPage.add(new Label("dashActionHandler", starHandler.getCallbackUrl().toString())); ResourceLoader rl = new ResourceLoader("dash_entity"); dashboardPage.add(new Label("genericErrorMessage", rl.getString("dash.generic.error"))); }
From source file:org.sakaiproject.dash.tool.pages.DashboardPage.java
License:Educational Community License
public DashboardPage() { dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_VISIT, "/dashboard/page/" + sakaiProxy.getCurrentSiteId()); final WebMarkupContainer dashboardPage = new WebMarkupContainer("dashboard-page"); dashboardPage.setOutputMarkupId(true); add(dashboardPage);/*ww w . ja va 2 s. c om*/ MOTDPanel motdPanel = new MOTDPanel("motdPanel"); motdPanel.setOutputMarkupId(true); dashboardPage.add(motdPanel); CalendarLinksPanel calendarPanel = new CalendarLinksPanel("calendarPanel"); calendarPanel.setOutputMarkupId(true); dashboardPage.add(calendarPanel); NewsLinksPanel newsPanel = new NewsLinksPanel("newsPanel"); newsPanel.setOutputMarkupId(true); dashboardPage.add(newsPanel); AbstractAjaxBehavior entityDetailRequest = new AbstractAjaxBehavior() { public void onRequest() { logger.debug("entityDetailRequest.onClick() "); //get parameters final RequestCycle requestCycle = RequestCycle.get(); WebRequest wr = (WebRequest) requestCycle.getRequest(); HttpServletRequest hsr = wr.getHttpServletRequest(); String entityReference = null; String entityType = null; int itemCount = 0; int offset = -1; String dashEvent = null; try { BufferedReader br = hsr.getReader(); String jsonString = br.readLine(); if ((jsonString == null) || jsonString.isEmpty()) { logger.error(" no json found for entityReference: " + entityReference); } else { if (logger.isDebugEnabled()) { logger.debug(" json is :" + jsonString); } JSONObject jsonObject = JSONObject.fromObject(jsonString); entityReference = jsonObject.optString("entityReference", ""); entityType = jsonObject.optString("entityType", ""); itemCount = jsonObject.optInt("itemCount", 1); dashEvent = jsonObject.optString("dashEvent", ""); offset = jsonObject.optInt("offset", -1); } } catch (IOException ex) { logger.error(ex); } Locale locale = hsr.getLocale(); if (entityReference != null && !entityReference.trim().equals("") && entityType != null && !entityType.trim().equals("")) { if (itemCount > 1) { ResourceLoader rl = new ResourceLoader("dash_entity"); int limit = dashboardConfig.getConfigValue(DashboardConfig.PROP_DEFAULT_ITEMS_IN_DISCLOSURE, 20); if (offset < 0) { offset = 0; } String sakaiUserId = sakaiProxy.getCurrentUserId(); int totalItems = dashboardCommonLogic.countNewsLinksByGroupId(sakaiUserId, entityReference); Map<String, Object> results = new HashMap<String, Object>(); results.put("totalCount", totalItems); if (offset > totalItems) { results.put("items", new ArrayList<NewsLink>()); results.put("count", 0); } else { List<NewsLink> items = dashboardCommonLogic.getNewsLinksByGroupId(sakaiUserId, entityReference, limit, offset); results.put("items", items); results.put("count", items.size()); } results.put("details", rl.getString("dash.details")); results.put("offset", offset); results.put("more-link", rl.getString("dash.grouped.more.link", "[[ Show more ... ]]")); results.put("more-status", rl.getString("dash.grouped.more.status", "[[ Showing {0} of {1} items ]]")); results.put("more-status-last", rl.getString("dash.news.linksCount2", "[[ Showing item {0} of {1} items ]]")); results.put("more-status-range", rl.getString("dash.news.linksCount3", "[[ Showing {0} to {1} of {2} items ]]")); JsonHelper jsonHelper = new JsonHelper(dashboardCommonLogic, dashboardConfig); String jsonString = jsonHelper.getJsonObjectFromMap(results).toString(); if (logger.isDebugEnabled()) { logger.debug("Returning JSON:\n" + jsonString); } IRequestTarget t = new StringRequestTarget("application/json", "UTF-8", jsonString); getRequestCycle().setRequestTarget(t); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_VIEW_GROUP, "/dashboard/news/current/" + entityReference); } else if (itemCount == 1) { Map<String, Object> entityMap = dashboardCommonLogic.getEntityMapping(entityType, entityReference, locale); String jsonString = getJsonStringFromMap(entityMap); if (logger.isDebugEnabled()) { logger.debug("Returning JSON:\n" + jsonString); } IRequestTarget t = new StringRequestTarget("application/json", "UTF-8", jsonString); getRequestCycle().setRequestTarget(t); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_ITEM_DETAILS, "/dashboard/?/?/" + entityReference); } else if (dashEvent != null && !dashEvent.trim().equals("")) { // report the event dashboardCommonLogic.recordDashboardActivity(dashEvent, entityReference); } } } }; dashboardPage.add(entityDetailRequest); dashboardPage.add(new Label("callbackUrl", entityDetailRequest.getCallbackUrl().toString())); AbstractAjaxBehavior starHandler = new AbstractAjaxBehavior() { public void onRequest() { logger.debug("starHandler.onRequest() "); String message = null; boolean success = true; ResourceLoader rl = new ResourceLoader("dash_entity"); //get parameters final RequestCycle requestCycle = RequestCycle.get(); WebRequest wr = (WebRequest) requestCycle.getRequest(); HttpServletRequest hsr = wr.getHttpServletRequest(); long itemId = -1L; String action = null; try { BufferedReader br = hsr.getReader(); String jsonString = br.readLine(); if ((jsonString == null) || jsonString.isEmpty()) { logger.error(" no json found "); message = rl.getString("dash.ajax.failed"); success = false; } else { if (logger.isDebugEnabled()) { logger.debug(" json is :" + jsonString); } JSONObject jsonObject = JSONObject.fromObject(jsonString); itemId = jsonObject.optLong("itemId", Long.MIN_VALUE); action = jsonObject.optString("dashAction"); } } catch (IOException ex) { logger.error(ex); message = rl.getString("dash.ajax.failed"); success = false; } String newIcon = null; if (itemId < 1 || action == null || action.trim().equals("")) { logger.error("invalid values found " + action + " " + itemId); message = rl.getString(""); } else if (success) { if ("star".equalsIgnoreCase(action)) { try { success = dashboardCommonLogic.keepNewsItem(sakaiProxy.getCurrentUserId(), itemId); } catch (Exception e) { logger.warn("Error trying to star news-link for user " + sakaiProxy.getCurrentUserId() + ", newsLinkId == " + itemId); success = false; } if (success) { message = rl.getString("dash.ajax.star.success"); newIcon = dashboardConfig.getActionIcon(DashboardConfig.ACTION_UNSTAR); } else { message = rl.getString("dash.ajax.star.failed"); } } else if ("unstar".equalsIgnoreCase(action)) { try { success = dashboardCommonLogic.unkeepNewsItem(sakaiProxy.getCurrentUserId(), itemId); } catch (Exception e) { logger.warn("Error trying to unstar news-link for user " + sakaiProxy.getCurrentUserId() + ", newsLinkId == " + itemId); success = false; } if (success) { message = rl.getString("dash.ajax.unstar.success"); newIcon = dashboardConfig.getActionIcon(DashboardConfig.ACTION_STAR); } else { message = rl.getString("dash.ajax.unstar.failed"); } } else if ("hide".equalsIgnoreCase(action)) { try { success = dashboardCommonLogic.hideNewsItem(sakaiProxy.getCurrentUserId(), itemId); } catch (Exception e) { logger.warn("Error trying to hide news-link for user " + sakaiProxy.getCurrentUserId() + ", newsLinkId == " + itemId); success = false; } if (success) { message = rl.getString("dash.ajax.hide.success"); } else { message = rl.getString("dash.ajax.hide.failed"); success = false; } } else if ("show".equalsIgnoreCase(action)) { try { success = dashboardCommonLogic.unhideNewsItem(sakaiProxy.getCurrentUserId(), itemId); } catch (Exception e) { logger.warn("Error trying to show news-link for user " + sakaiProxy.getCurrentUserId() + ", newsLinkId == " + itemId); success = false; } if (success) { message = rl.getString("dash.ajax.show.success"); } else { message = rl.getString("dash.ajax.show.failed"); success = false; } } } Map<String, Object> results = new HashMap<String, Object>(); results.put("message", message); results.put("success", Boolean.valueOf(success)); if (newIcon != null) { results.put("newIcon", newIcon); } String jsonString = getJsonStringFromMap(results); if (logger.isDebugEnabled()) { logger.debug("Returning JSON:\n" + jsonString); } IRequestTarget t = new StringRequestTarget("application/json", "UTF-8", jsonString); getRequestCycle().setRequestTarget(t); } }; dashboardPage.add(starHandler); dashboardPage.add(new Label("dashActionHandler", starHandler.getCallbackUrl().toString())); ResourceLoader rl = new ResourceLoader("dash_entity"); dashboardPage.add(new Label("genericErrorMessage", rl.getString("dash.generic.error"))); }
From source file:sk.drunkenpanda.leaflet.AbstractLeafletTest.java
License:Apache License
/** * Prepares request that triggers AJAX behavior and contains parameter with given name and value. * * @param tester the wicket tester which triggers behavior * @param behavior the behavior that should be triggered * @param parameterName the name of parameter * @param parameterValue the value of parameter * @return mock HTTP request that triggers given behavior *//*from ww w . j av a2 s . c o m*/ protected MockHttpServletRequest prepareRequest(WicketTester tester, AbstractAjaxBehavior behavior, String parameterName, String parameterValue) { MockHttpServletRequest request = new MockHttpServletRequest(tester.getApplication(), tester.getHttpSession(), tester.getServletContext()); Url url = Url.parse(behavior.getCallbackUrl().toString(), Charset.forName(request.getCharacterEncoding())); // make url suitable for wicket tester use. usually this involves stripping any leading .. // segments to make the url absolute for (Iterator<String> segments = url.getSegments().iterator(); segments.hasNext();) { String segment = segments.next(); if (segment.equals("..") || segment.equals(".")) { segments.remove(); } } request.addHeader("Wicket-Ajax", "true"); request.addHeader("Wicket-Ajax-BaseURL", url.toString()); request.setUrl(url); request.setParameter(parameterName, parameterValue); return request; }