All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.mhus.lib.portlet.callback.CallContext Maven / Gradle / Ivy

There is a newer version: 6.3.0
Show newest version
package de.mhus.lib.portlet.callback;

import java.util.LinkedList;

import javax.portlet.PortletSession;
import javax.portlet.ResourceRequest;

import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.node.ArrayNode;
import org.codehaus.jackson.node.ObjectNode;

import de.mhus.lib.core.IProperties;
import de.mhus.lib.core.logging.Log;
import de.mhus.lib.core.util.MNls;
import de.mhus.lib.core.util.MNlsProvider;
import de.mhus.lib.errors.MException;

/**
 * 

CallContext class.

* * @author mikehummel * @version $Id: $Id */ public class CallContext implements MNlsProvider { /** Constant DEFAULT_DATA_NAME="data" */ public static final String DEFAULT_DATA_NAME = "data"; private JsonGenerator response; private ObjectMapper mapper; private ObjectNode node; private MNls nls; private LinkedList alerts; private boolean success = true; private ArrayNode result; private Log log; private ResourceRequest request; private IProperties properties; /** *

Constructor for CallContext.

* * @param callback a {@link de.mhus.lib.portlet.callback.AbstractAjaxCallback} object. * @param request a {@link javax.portlet.ResourceRequest} object. * @param response a {@link org.codehaus.jackson.JsonGenerator} object. */ public CallContext(AbstractAjaxCallback callback, ResourceRequest request, JsonGenerator response) { this.request = request; this.response = response; // this.callback = callback; this.log = callback.getLog(); this.nls = callback.getNls(); mapper = new ObjectMapper(); node = mapper.createObjectNode(); result = node.putArray("results"); properties =callback.createProperties(request); } /** *

addSuccess.

* * @param msg a {@link java.lang.String} object. */ public void addSuccess(String msg) { addAlert(new Alert(Alert.PRIORITY.SUCCESS, msg), true); } /** *

addError.

* * @param error a {@link java.lang.String} object. */ public void addError(String error) { addAlert(new Alert(Alert.PRIORITY.ERROR, error), true); } /** *

addWarning.

* * @param warning a {@link java.lang.String} object. */ public void addWarning(String warning) { addAlert(new Alert(Alert.PRIORITY.WARNING, warning), true); } /** *

addInforamtion.

* * @param info a {@link java.lang.String} object. */ public void addInforamtion(String info) { addAlert(new Alert(Alert.PRIORITY.INFO, info), true); } /** *

addAlert.

* * @param alert a {@link de.mhus.lib.portlet.callback.CallContext.Alert} object. * @param useNls a boolean. */ public void addAlert(Alert alert, boolean useNls) { String msg = alert.msg; alert.msg = MNls.find(this, msg); if (alerts == null) alerts = new LinkedList(); alerts.add(alert); } /** *

setRuntimeError.

* * @param t a {@link java.lang.Throwable} object. */ public void setRuntimeError(Throwable t) { log.e(t); if (alerts != null) alerts.clear(); addError(t.toString()); setSuccess(false); } /** *

Setter for the field success.

* * @param success a boolean. */ public void setSuccess(boolean success) { this.success = success; } /** *

doSend.

*/ public void doSend() { if (!success) { result.removeAll(); } node.put("success", success ? 1 : 0); if (alerts != null) { ArrayNode sub = node.putArray("alerts"); for (Alert alert : alerts) { ObjectNode line = sub.addObject(); alert.print(line); } } response.setCodec(mapper); try { response.writeTree(node); } catch (Exception e) { log.e(e); } } /** {@inheritDoc} */ @Override public MNls getNls() { return nls; } /** *

Setter for the field nls.

* * @param mNls a {@link de.mhus.lib.core.util.MNls} object. */ public void setNls(MNls mNls) { this.nls = mNls; } /** *

Getter for the field request.

* * @return a {@link javax.portlet.ResourceRequest} object. */ public ResourceRequest getRequest() { return request; } /** *

log.

* * @return a {@link de.mhus.lib.core.logging.Log} object. */ public Log log() { return log; } /** *

addResult.

* * @return a {@link org.codehaus.jackson.node.ObjectNode} object. */ public ObjectNode addResult() { return result.addObject(); } public static class Alert { private PRIORITY type; private String msg; public Alert(PRIORITY type, String msg) { this.type = type; this.msg = msg; } public void print(ObjectNode line) { line.put("message", msg); line.put("priority", type.name().toLowerCase()); if (type == PRIORITY.ERROR) { line.put("fade", 0); } } public enum PRIORITY {ERROR,INFO,WARNING,SUCCESS}; } /** *

getSession.

* * @return a {@link javax.portlet.PortletSession} object. */ public PortletSession getSession() { return getRequest().getPortletSession(); } /** *

Getter for the field properties.

* * @return a {@link de.mhus.lib.core.IProperties} object. */ public IProperties getProperties() { return properties; } /** *

getData.

* * @return a {@link org.codehaus.jackson.JsonNode} object. * @throws de.mhus.lib.errors.MException if any. */ public JsonNode getData() throws MException { return getData(DEFAULT_DATA_NAME); } /** *

getData.

* * @param attributeName a {@link java.lang.String} object. * @return a {@link org.codehaus.jackson.JsonNode} object. * @throws de.mhus.lib.errors.MException if any. */ public JsonNode getData(String attributeName) throws MException { JsonNode in = null; String dataStr = getProperties().getString(attributeName); if (dataStr != null && !dataStr.equals("undefined")) { try { JsonFactory f = new JsonFactory(); ObjectMapper mapper = new ObjectMapper(); JsonParser parser = f.createJsonParser(dataStr); in = mapper.readTree(parser); } catch (Throwable t) {} } return in; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy