/**
* Copyright 2010 JBoss Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.drools.guvnor.server;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class StandaloneEditorServlet extends HttpServlet {
public static enum STANDALONE_EDITOR_SERVLET_PARAMETERS {
GE_PACKAGE_PARAMETER_NAME("packageName", false),
GE_CATEGORY_PARAMETER_NAME("categoryName", false),
GE_BRL_PARAMETER_NAME("brlSource", true),
GE_ASSETS_UUIDS_PARAMETER_NAME("assetsUUIDs", true),
GE_CREATE_NEW_ASSET_PARAMETER_NAME("createNewAsset", false),
//Only used when creating a new Rule
GE_ASSET_NAME_PARAMETER_NAME("assetName", false),
GE_ASSET_FORMAT_PARAMETER_NAME("assetFormat", false),
GE_HIDE_RULE_LHS_PARAMETER_NAME("hideRuleLHS", false),
GE_HIDE_RULE_RHS_PARAMETER_NAME("hideRuleRHS", false),
GE_HIDE_RULE_ATTRIBUTES_PARAMETER_NAME("hideRuleAttributes", false),
GE_VALID_FACT_TYPE_PARAMETER_NAME("validFactType", true);
private String parameterName;
private boolean multipleValues;
private STANDALONE_EDITOR_SERVLET_PARAMETERS(String parameterName,
boolean multipleValues) {
this.parameterName = parameterName;
this.multipleValues = multipleValues;
}
public String getParameterName() {
return parameterName;
}
public boolean isMultipleValues() {
return multipleValues;
}
}
@Override
protected void doPost(HttpServletRequest req,
HttpServletResponse resp) throws ServletException,
IOException {
HttpSession session = req.getSession(true);
//Each request uses its own parameters map (this allows concurrent requests
//from the same cilent)
Map<String, Object> parameters = new HashMap<String, Object>();
//copy each registered parameter from request to session
for (STANDALONE_EDITOR_SERVLET_PARAMETERS parameter : STANDALONE_EDITOR_SERVLET_PARAMETERS.values()) {
if (parameter.isMultipleValues()) {
parameters.put(parameter.getParameterName(),
req.getParameterValues(parameter.getParameterName()));
} else {
parameters.put(parameter.getParameterName(),
req.getParameter(parameter.getParameterName()));
}
}
String parametersUUID = UUID.randomUUID().toString();
session.setAttribute(parametersUUID, parameters);
resp.sendRedirect("StandaloneEditor.html?pUUID=" + parametersUUID + "&" + req.getQueryString());
}
}