From e44437193742218b221fed87d196d26e1b2b374c Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Wed, 16 Sep 2009 07:50:32 +0000 Subject: [PATCH] INtroduce Server JSON git-svn-id: https://svn.argeo.org/commons/trunk@2929 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../org.argeo.slc.server.json/.classpath | 7 +++ .../org.argeo.slc.server.json/.project | 23 +++++++ .../.settings/org.eclipse.jdt.core.prefs | 5 ++ .../.settings/org.maven.ide.eclipse.prefs | 9 +++ .../runtime/org.argeo.slc.server.json/pom.xml | 61 +++++++++++++++++++ .../org/argeo/server/json/mvc/JsonView.java | 47 ++++++++++++++ 6 files changed, 152 insertions(+) create mode 100644 server/runtime/org.argeo.slc.server.json/.classpath create mode 100644 server/runtime/org.argeo.slc.server.json/.project create mode 100644 server/runtime/org.argeo.slc.server.json/.settings/org.eclipse.jdt.core.prefs create mode 100644 server/runtime/org.argeo.slc.server.json/.settings/org.maven.ide.eclipse.prefs create mode 100644 server/runtime/org.argeo.slc.server.json/pom.xml create mode 100644 server/runtime/org.argeo.slc.server.json/src/main/java/org/argeo/server/json/mvc/JsonView.java diff --git a/server/runtime/org.argeo.slc.server.json/.classpath b/server/runtime/org.argeo.slc.server.json/.classpath new file mode 100644 index 000000000..16f01e2ee --- /dev/null +++ b/server/runtime/org.argeo.slc.server.json/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/server/runtime/org.argeo.slc.server.json/.project b/server/runtime/org.argeo.slc.server.json/.project new file mode 100644 index 000000000..af5ade4af --- /dev/null +++ b/server/runtime/org.argeo.slc.server.json/.project @@ -0,0 +1,23 @@ + + + org.argeo.slc.server.json + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.maven.ide.eclipse.maven2Builder + + + + + + org.maven.ide.eclipse.maven2Nature + org.eclipse.jdt.core.javanature + + diff --git a/server/runtime/org.argeo.slc.server.json/.settings/org.eclipse.jdt.core.prefs b/server/runtime/org.argeo.slc.server.json/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..57c9743bc --- /dev/null +++ b/server/runtime/org.argeo.slc.server.json/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,5 @@ +#Wed Sep 16 09:48:59 CEST 2009 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/server/runtime/org.argeo.slc.server.json/.settings/org.maven.ide.eclipse.prefs b/server/runtime/org.argeo.slc.server.json/.settings/org.maven.ide.eclipse.prefs new file mode 100644 index 000000000..cb4dc85ab --- /dev/null +++ b/server/runtime/org.argeo.slc.server.json/.settings/org.maven.ide.eclipse.prefs @@ -0,0 +1,9 @@ +#Wed Sep 16 09:47:45 CEST 2009 +activeProfiles= +eclipse.preferences.version=1 +fullBuildGoals=process-test-resources +includeModules=false +resolveWorkspaceProjects=true +resourceFilterGoals=process-resources resources\:testResources +skipCompilerPlugin=true +version=1 diff --git a/server/runtime/org.argeo.slc.server.json/pom.xml b/server/runtime/org.argeo.slc.server.json/pom.xml new file mode 100644 index 000000000..5b7991ba7 --- /dev/null +++ b/server/runtime/org.argeo.slc.server.json/pom.xml @@ -0,0 +1,61 @@ + + 4.0.0 + + org.argeo.commons.server + runtime + 0.1.1-SNAPSHOT + .. + + org.argeo.server.json + Commons Server JSON + + + + org.apache.maven.plugins + maven-compiler-plugin + + + org.apache.maven.plugins + maven-source-plugin + + + org.apache.maven.plugins + maven-jar-plugin + + + org.apache.felix + maven-bundle-plugin + ${version.maven-bundle-plugin} + + + + org.argeo.* + + + + + + + + + + org.codehaus.jackson + com.springsource.org.codehaus.jackson.mapper + 1.0.0 + + + + + org.springframework + org.springframework.web.servlet + + + + + javax.servlet + com.springsource.javax.servlet + + + + diff --git a/server/runtime/org.argeo.slc.server.json/src/main/java/org/argeo/server/json/mvc/JsonView.java b/server/runtime/org.argeo.slc.server.json/src/main/java/org/argeo/server/json/mvc/JsonView.java new file mode 100644 index 000000000..fcd070a4a --- /dev/null +++ b/server/runtime/org.argeo.slc.server.json/src/main/java/org/argeo/server/json/mvc/JsonView.java @@ -0,0 +1,47 @@ +package org.argeo.slc.web.mvc; + +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.servlet.view.AbstractView; + +/** Marshal one of the object of the map to the output. */ +public class JsonView extends AbstractView { + private String modelKey = null; + + public JsonView() { + } + + @Override + @SuppressWarnings(value = { "unchecked" }) + protected void renderMergedOutputModel(Map model, + HttpServletRequest request, HttpServletResponse response) + throws Exception { + final Object answer; + if (modelKey != null) { + if (!model.containsKey(modelKey)) + throw new SlcException("Key " + modelKey + + " not found in model."); + answer = model.get(modelKey); + } else { + if (model.size() != 1) + throw new SlcException( + "Model has a size different from 1. Specify a modelKey."); + answer = model.values().iterator().next(); + } + + if (answer instanceof JSONObject) { + ((JSONObject) answer).write(response.getWriter()); + } else { + JSONObject jsonObject = new JSONObject(answer); + jsonObject.write(response.getWriter()); + } + } + + public void setModelKey(String modelKey) { + this.modelKey = modelKey; + } + +} -- 2.30.2