import org.argeo.server.ServerAnswer;
import org.argeo.server.ServerSerializer;
import org.springframework.validation.BindingResult;
+import org.springframework.web.servlet.View;
import org.springframework.web.servlet.view.AbstractView;
+/**
+ * Can be used as a standalone {@link View} or using
+ * {@link SerializingViewResolver}
+ */
public class SerializingView extends AbstractView implements MvcConstants {
private final String viewName;
private final Locale locale;
- private final ServerSerializer serializer;
+ private ServerSerializer serializer;
+
+ public SerializingView() {
+ this.viewName = null;
+ this.locale = Locale.getDefault();
+ }
public SerializingView(String viewName, Locale locale,
ServerSerializer serializer) {
this.serializer = serializer;
}
- @SuppressWarnings({ "unchecked", "restriction" })
+ @SuppressWarnings( { "unchecked", "restriction" })
@Override
protected void renderMergedOutputModel(Map model,
HttpServletRequest request, HttpServletResponse response)
return model.get(ANSWER_MODEL_KEY);
} else if (model.containsKey(ANSWER_MODEL_KEY_AS_HTML)) {
return model.get(ANSWER_MODEL_KEY_AS_HTML);
- } else if (model.containsKey(viewName)) {
+ } else if (viewName != null && model.containsKey(viewName)) {
return model.get(viewName);
} else {
if (model.size() == 0)
return locale;
}
+ public void setSerializer(ServerSerializer serializer) {
+ this.serializer = serializer;
+ }
+
}
import java.util.Locale;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.argeo.server.ServerSerializer;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.view.AbstractCachingViewResolver;
* Returns a {@link SerializingView} based on the underlying.
*/
public class SerializingViewResolver extends AbstractCachingViewResolver {
+ private final static Log log = LogFactory
+ .getLog(SerializingViewResolver.class);
+
private ServerSerializer serializer;
@Override
protected View loadView(String viewName, Locale locale) throws Exception {
+ if (log.isDebugEnabled())
+ log.debug("viewName=" + viewName);
return new SerializingView(viewName, locale, serializer);
}
package org.argeo.server.jcr.mvc;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
import javax.jcr.Item;
+import javax.jcr.NodeIterator;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
+import javax.jcr.Value;
+import javax.jcr.query.Query;
+import javax.jcr.query.QueryResult;
+import javax.jcr.query.Row;
+import javax.jcr.query.RowIterator;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
RequestAttributes.SCOPE_REQUEST)).getItem(path);
}
+ @RequestMapping("/queryJcrNodes.*")
+ public List<String> queryJcrNodes(WebRequest webRequest,
+ @RequestParam("statement") String statement,
+ @RequestParam("language") String language)
+ throws RepositoryException {
+ Session session = ((Session) webRequest.getAttribute(
+ REQUEST_ATTR_SESSION, RequestAttributes.SCOPE_REQUEST));
+ Query query = session.getWorkspace().getQueryManager().createQuery(
+ statement, language);
+ NodeIterator nit = query.execute().getNodes();
+ List<String> paths = new ArrayList<String>();
+ while (nit.hasNext()) {
+ paths.add(nit.nextNode().getPath());
+ }
+ return paths;
+ }
+
+ @RequestMapping("/queryJcrTable.*")
+ public List<List<String>> queryJcrTable(WebRequest webRequest,
+ @RequestParam("statement") String statement,
+ @RequestParam("language") String language)
+ throws RepositoryException {
+ Session session = ((Session) webRequest.getAttribute(
+ REQUEST_ATTR_SESSION, RequestAttributes.SCOPE_REQUEST));
+ Query query = session.getWorkspace().getQueryManager().createQuery(
+ statement, language);
+ QueryResult queryResult = query.execute();
+ List<List<String>> results = new ArrayList<List<String>>();
+ results.add(Arrays.asList(queryResult.getColumnNames()));
+ RowIterator rit = queryResult.getRows();
+
+ while (rit.hasNext()) {
+ Row row = rit.nextRow();
+ List<String> lst = new ArrayList<String>();
+ for (Value value : row.getValues()) {
+ lst.add(value.getString());
+ }
+ }
+ return results;
+ }
}