package com.celements.webform;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.xwiki.component.annotation.Component;
import org.xwiki.component.annotation.Requirement;
import org.xwiki.context.Execution;
import org.xwiki.script.service.ScriptService;
import com.xpn.xwiki.XWikiContext;
import com.xpn.xwiki.api.Document;
@Component("action")
public class ActionScriptService implements ScriptService {
@Requirement
private IActionServiceRole actionService;
@Requirement
private Execution execution;
@SuppressWarnings("unchecked")
public boolean executeAction(Document actionDoc) {
return actionService.executeAction(actionDoc, getContext().getRequest().getParameterMap(),
getContext().getDoc(), getContext());
}
public boolean executeAction(Document actionDoc, Map<String, List<Object>> fakeRequestMap) {
Map<String, String[]> requestMap = new HashMap<String, String[]>();
for (String key : fakeRequestMap.keySet()) {
if (fakeRequestMap.get(key) != null) {
ArrayList<String> stringArray = new ArrayList<String>(fakeRequestMap.get(key).size());
for (Object value : fakeRequestMap.get(key)) {
stringArray.add(value.toString());
}
requestMap.put(key, stringArray.toArray(new String[0]));
}
}
return actionService.executeAction(actionDoc, requestMap, getContext().getDoc(), getContext());
}
private XWikiContext getContext() {
return (XWikiContext) execution.getContext().getProperty("xwikicontext");
}
}