/** * Copyright (c) 2015 itemis AG (http://www.itemis.eu) and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package org.xtext.xrobot.dsl.web; import com.google.gson.Gson; import java.io.IOException; import java.io.PrintWriter; import java.util.Arrays; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.eclipse.xtend.lib.annotations.Data; import org.eclipse.xtext.xbase.lib.Conversions; import org.eclipse.xtext.xbase.lib.Functions.Function1; import org.eclipse.xtext.xbase.lib.IterableExtensions; import org.eclipse.xtext.xbase.lib.ListExtensions; import org.eclipse.xtext.xbase.lib.Pure; import org.eclipse.xtext.xbase.lib.util.ToStringBuilder; import org.xtext.xrobot.dsl.web.ReservedTokenStore; @SuppressWarnings("all") public class ScriptProviderServlet extends HttpServlet { @Data public static class QueryByToken { private final String[] tokens; public QueryByToken(final String[] tokens) { super(); this.tokens = tokens; } @Override @Pure public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((this.tokens== null) ? 0 : Arrays.deepHashCode(this.tokens)); return result; } @Override @Pure public boolean equals(final Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; ScriptProviderServlet.QueryByToken other = (ScriptProviderServlet.QueryByToken) obj; if (this.tokens == null) { if (other.tokens != null) return false; } else if (!Arrays.deepEquals(this.tokens, other.tokens)) return false; return true; } @Override @Pure public String toString() { ToStringBuilder b = new ToStringBuilder(this); b.add("tokens", this.tokens); return b.toString(); } @Pure public String[] getTokens() { return this.tokens; } } private static ReservedTokenStore reservedTokenStore; public static ReservedTokenStore getTokenStore() { if ((ScriptProviderServlet.reservedTokenStore == null)) { ReservedTokenStore _reservedTokenStore = new ReservedTokenStore(); ScriptProviderServlet.reservedTokenStore = _reservedTokenStore; } return ScriptProviderServlet.reservedTokenStore; } @Override public void doGet(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException { final Gson gson = new Gson(); final String parameter = request.getParameter("info"); final ScriptProviderServlet.QueryByToken queryByToken = gson.<ScriptProviderServlet.QueryByToken>fromJson(parameter, ScriptProviderServlet.QueryByToken.class); final ReservedTokenStore store = ScriptProviderServlet.getTokenStore(); String[] _kens = null; if (queryByToken!=null) { _kens=queryByToken.tokens; } List<ReservedTokenStore.Entry> _map = null; if (((List<String>)Conversions.doWrapArray(_kens))!=null) { final Function1<String, ReservedTokenStore.Entry> _function = new Function1<String, ReservedTokenStore.Entry>() { @Override public ReservedTokenStore.Entry apply(final String it) { return store.get(it); } }; _map=ListExtensions.<String, ReservedTokenStore.Entry>map(((List<String>)Conversions.doWrapArray(_kens)), _function); } Iterable<ReservedTokenStore.Entry> _filterNull = IterableExtensions.<ReservedTokenStore.Entry>filterNull(_map); final List<ReservedTokenStore.Entry> matches = IterableExtensions.<ReservedTokenStore.Entry>toList(_filterNull); response.setContentType("text/x-json;charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); response.setStatus(HttpServletResponse.SC_OK); PrintWriter _writer = response.getWriter(); gson.toJson(matches, _writer); } }