Search in sources :

Example 26 with ParameterException

use of nl.nn.adapterframework.core.ParameterException in project iaf by ibissource.

the class PutParametersInSession method doPipe.

public PipeRunResult doPipe(Object input, IPipeLineSession session) throws PipeRunException {
    ParameterValueList pvl = null;
    ParameterList parameterList = getParameterList();
    if (parameterList != null) {
        ParameterResolutionContext prc = new ParameterResolutionContext((String) input, session);
        try {
            pvl = prc.getValues(getParameterList());
            if (pvl != null) {
                for (int i = 0; i < parameterList.size(); i++) {
                    Parameter parameter = parameterList.getParameter(i);
                    String pn = parameter.getName();
                    Object pv = parameter.getValue(pvl, prc);
                    session.put(pn, pv);
                    log.debug(getLogPrefix(session) + "stored [" + pv + "] in pipeLineSession under key [" + pn + "]");
                }
            }
        } catch (ParameterException e) {
            throw new PipeRunException(this, getLogPrefix(session) + "exception extracting parameters", e);
        }
    }
    return new PipeRunResult(getForward(), input);
}
Also used : PipeRunResult(nl.nn.adapterframework.core.PipeRunResult) ParameterValueList(nl.nn.adapterframework.parameters.ParameterValueList) PipeRunException(nl.nn.adapterframework.core.PipeRunException) ParameterList(nl.nn.adapterframework.parameters.ParameterList) Parameter(nl.nn.adapterframework.parameters.Parameter) ParameterException(nl.nn.adapterframework.core.ParameterException) ParameterResolutionContext(nl.nn.adapterframework.parameters.ParameterResolutionContext)

Example 27 with ParameterException

use of nl.nn.adapterframework.core.ParameterException in project iaf by ibissource.

the class RhinoPipe method doPipe.

public PipeRunResult doPipe(Object input, IPipeLineSession session) throws PipeRunException {
    // INIT
    String eol = System.getProperty("line.separator");
    if (input == null) {
        // No input from previous pipes. We will use filename and or string input.
        if ((StringUtils.isEmpty(fileInput)) && inputString == null && isLookupAtRuntime()) {
            // No input from file or input string. Nowhere to GO!
            throw new PipeRunException(this, getLogPrefix(session) + "No input specified anywhere. No string input, no file input and no previous pipe input");
        }
    }
    if (!(input instanceof String)) {
        throw new PipeRunException(this, getLogPrefix(session) + "got an invalid type as input, expected String, got " + input.getClass().getName());
    }
    inputString = (String) input;
    // Get the input from the file at Run Time
    if (StringUtils.isNotEmpty(getFileName()) && isLookupAtRuntime()) {
        URL resource = null;
        try {
            resource = ClassUtils.getResourceURL(classLoader, getFileName());
        } catch (Throwable e) {
            throw new PipeRunException(this, getLogPrefix(session) + "got exception searching for [" + getFileName() + "]", e);
        }
        if (resource == null) {
            throw new PipeRunException(this, getLogPrefix(session) + "cannot find resource [" + getFileName() + "]");
        }
        try {
            fileInput = Misc.resourceToString(resource, SystemUtils.LINE_SEPARATOR);
        } catch (Throwable e) {
            throw new PipeRunException(this, getLogPrefix(session) + "got exception loading [" + getFileName() + "]", e);
        }
    }
    // Get all params as input
    if (getParameterList() != null) {
        ParameterResolutionContext prc = new ParameterResolutionContext((String) input, session);
        ParameterValueList pvl;
        try {
            pvl = prc.getValues(getParameterList());
        } catch (ParameterException e) {
            throw new PipeRunException(this, getLogPrefix(session) + "exception extracting parameters", e);
        }
        for (int i = 0; i < pvl.size(); i++) {
            ParameterValue pv = pvl.getParameterValue(i);
            paramsInput = pv.asStringValue("") + eol + paramsInput;
        }
    }
    String javascriptcode = "Packages.java;" + eol;
    if (fileInput != null) {
        javascriptcode = javascriptcode + fileInput;
    }
    if (paramsInput != null) {
        javascriptcode = paramsInput + eol + javascriptcode;
    }
    String stringResult = (String) javascriptcode;
    stringResult = "INPUTSTREAM used in case of ERROR" + eol + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" + eol + stringResult;
    // Start your engines
    // Rhino engine Ok.
    Context cx = Context.enter();
    Scriptable scope = cx.initStandardObjects();
    if (isDebug()) {
        System.out.println("debug active");
        cx.setLanguageVersion(Context.VERSION_1_2);
        cx.setGeneratingDebug(true);
    }
    // Load javascript factory with javascript functions from file, stringinput and paraminput
    String jsResult = "";
    try {
        cx.evaluateString(scope, javascriptcode, "jsScript", 1, null);
        Function fct = (Function) scope.get(jsfunctionName, scope);
        // Object result = fct.call(cx, scope, scope, new Object[]{jsfunctionArguments});
        Object result = fct.call(cx, scope, scope, new Object[] { input });
        if (isDebug()) {
            System.out.println(cx.jsToJava(result, String.class));
        }
        ;
        jsResult = (String) cx.jsToJava(result, String.class);
    } catch (org.mozilla.javascript.EcmaError ex) {
        throw new PipeRunException(this, "org.mozilla.javascript.EcmaError -> ", ex);
    // System.out.println(ex.getMessage());
    } finally {
        Context.exit();
    }
    // Use the result
    if (!(jsResult instanceof String)) {
    } else {
        if ((String) jsResult != null) {
            stringResult = (String) jsResult;
        }
    }
    if (StringUtils.isEmpty(getSessionKey())) {
        return new PipeRunResult(getForward(), stringResult);
    } else {
        session.put(getSessionKey(), stringResult);
        return new PipeRunResult(getForward(), input);
    }
}
Also used : ParameterResolutionContext(nl.nn.adapterframework.parameters.ParameterResolutionContext) ParameterValueList(nl.nn.adapterframework.parameters.ParameterValueList) ParameterValue(nl.nn.adapterframework.parameters.ParameterValue) URL(java.net.URL) org.mozilla.javascript(org.mozilla.javascript) PipeRunResult(nl.nn.adapterframework.core.PipeRunResult) PipeRunException(nl.nn.adapterframework.core.PipeRunException) ParameterException(nl.nn.adapterframework.core.ParameterException) ParameterResolutionContext(nl.nn.adapterframework.parameters.ParameterResolutionContext)

Example 28 with ParameterException

use of nl.nn.adapterframework.core.ParameterException in project iaf by ibissource.

the class StreamPipe method doPipe.

@Override
public PipeRunResult doPipe(Object input, IPipeLineSession session) throws PipeRunException {
    Object result = input;
    String inputString;
    if (input instanceof String) {
        inputString = (String) input;
    } else {
        inputString = "";
    }
    ParameterResolutionContext prc = new ParameterResolutionContext(inputString, session, isNamespaceAware());
    Map parameters = null;
    ParameterList parameterList = getParameterList();
    if (parameterList != null) {
        try {
            parameters = prc.getValueMap(parameterList);
        } catch (ParameterException e) {
            throw new PipeRunException(this, "Could not resolve parameters", e);
        }
    }
    InputStream inputStream = null;
    OutputStream outputStream = null;
    HttpServletRequest httpRequest = null;
    HttpServletResponse httpResponse = null;
    String contentType = null;
    String contentDisposition = null;
    if (parameters != null) {
        if (parameters.get("inputStream") != null) {
            inputStream = (InputStream) parameters.get("inputStream");
        }
        if (parameters.get("outputStream") != null) {
            outputStream = (OutputStream) parameters.get("outputStream");
        }
        if (parameters.get("httpRequest") != null) {
            httpRequest = (HttpServletRequest) parameters.get("httpRequest");
        }
        if (parameters.get("httpResponse") != null) {
            httpResponse = (HttpServletResponse) parameters.get("httpResponse");
        }
        if (parameters.get("contentType") != null) {
            contentType = (String) parameters.get("contentType");
        }
        if (parameters.get("contentDisposition") != null) {
            contentDisposition = (String) parameters.get("contentDisposition");
        }
    }
    if (inputStream == null && input instanceof InputStream) {
        inputStream = (InputStream) input;
    }
    try {
        if (httpResponse != null) {
            HttpSender.streamResponseBody(inputStream, contentType, contentDisposition, httpResponse, log, getLogPrefix(session));
        } else if (httpRequest != null) {
            StringBuilder partsString = new StringBuilder("<parts>");
            String firstStringPart = null;
            List<AntiVirusObject> antiVirusObjects = new ArrayList<AntiVirusObject>();
            if (ServletFileUpload.isMultipartContent(httpRequest)) {
                log.debug(getLogPrefix(session) + "request with content type [" + httpRequest.getContentType() + "] and length [" + httpRequest.getContentLength() + "] contains multipart content");
                DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
                ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
                List<FileItem> items = servletFileUpload.parseRequest(httpRequest);
                int fileCounter = 0;
                int stringCounter = 0;
                log.debug(getLogPrefix(session) + "multipart request items size [" + items.size() + "]");
                String lastFoundFileName = null;
                String lastFoundAVStatus = null;
                String lastFoundAVMessage = null;
                for (FileItem item : items) {
                    if (item.isFormField()) {
                        // Process regular form field (input
                        // type="text|radio|checkbox|etc", select, etc).
                        String fieldValue = item.getString();
                        String fieldName = item.getFieldName();
                        if (isCheckAntiVirus() && fieldName.equalsIgnoreCase(getAntiVirusPartName())) {
                            log.debug(getLogPrefix(session) + "found antivirus status part [" + fieldName + "] with value [" + fieldValue + "]");
                            lastFoundAVStatus = fieldValue;
                        } else if (isCheckAntiVirus() && fieldName.equalsIgnoreCase(getAntiVirusMessagePartName())) {
                            log.debug(getLogPrefix(session) + "found antivirus message part [" + fieldName + "] with value [" + fieldValue + "]");
                            lastFoundAVMessage = fieldValue;
                        } else {
                            log.debug(getLogPrefix(session) + "found string part [" + fieldName + "] with value [" + fieldValue + "]");
                            if (isExtractFirstStringPart() && firstStringPart == null) {
                                firstStringPart = fieldValue;
                            } else {
                                String sessionKeyName = "part_string" + (++stringCounter > 1 ? stringCounter : "");
                                addSessionKey(session, sessionKeyName, fieldValue);
                                partsString.append("<part type=\"string\" name=\"" + fieldName + "\" sessionKey=\"" + sessionKeyName + "\" size=\"" + fieldValue.length() + "\"/>");
                            }
                        }
                    } else {
                        // Process form file field (input type="file").
                        if (lastFoundFileName != null && lastFoundAVStatus != null) {
                            antiVirusObjects.add(new AntiVirusObject(lastFoundFileName, lastFoundAVStatus, lastFoundAVMessage));
                            lastFoundFileName = null;
                            lastFoundAVStatus = null;
                            lastFoundAVMessage = null;
                        }
                        log.debug(getLogPrefix(session) + "found file part [" + item.getName() + "]");
                        String sessionKeyName = "part_file" + (++fileCounter > 1 ? fileCounter : "");
                        String fileName = FilenameUtils.getName(item.getName());
                        InputStream is = item.getInputStream();
                        int size = is.available();
                        String mimeType = item.getContentType();
                        if (size > 0) {
                            addSessionKey(session, sessionKeyName, is, fileName);
                        } else {
                            addSessionKey(session, sessionKeyName, null);
                        }
                        partsString.append("<part type=\"file\" name=\"" + fileName + "\" sessionKey=\"" + sessionKeyName + "\" size=\"" + size + "\" mimeType=\"" + mimeType + "\"/>");
                        lastFoundFileName = fileName;
                    }
                }
                if (lastFoundFileName != null && lastFoundAVStatus != null) {
                    antiVirusObjects.add(new AntiVirusObject(lastFoundFileName, lastFoundAVStatus, lastFoundAVMessage));
                }
            } else {
                log.debug(getLogPrefix(session) + "request with content type [" + httpRequest.getContentType() + "] and length [" + httpRequest.getContentLength() + "] does NOT contain multipart content");
            }
            partsString.append("</parts>");
            if (isExtractFirstStringPart()) {
                result = adjustFirstStringPart(firstStringPart, session);
                session.put(getMultipartXmlSessionKey(), partsString.toString());
            } else {
                result = partsString.toString();
            }
            if (!antiVirusObjects.isEmpty()) {
                for (AntiVirusObject antiVirusObject : antiVirusObjects) {
                    if (!antiVirusObject.getStatus().equalsIgnoreCase(getAntiVirusPassedMessage())) {
                        String errorMessage = "multipart contains file [" + antiVirusObject.getFileName() + "] with antivirus status [" + antiVirusObject.getStatus() + "] and message [" + StringUtils.defaultString(antiVirusObject.getMessage()) + "]";
                        PipeForward antiVirusFailedForward = findForward(ANTIVIRUS_FAILED_FORWARD);
                        if (antiVirusFailedForward == null) {
                            throw new PipeRunException(this, errorMessage);
                        } else {
                            if (antiVirusFailureAsSoapFault) {
                                errorMessage = createSoapFaultMessage(errorMessage);
                            }
                            if (StringUtils.isEmpty(getAntiVirusFailureReasonSessionKey())) {
                                return new PipeRunResult(antiVirusFailedForward, errorMessage);
                            } else {
                                session.put(getAntiVirusFailureReasonSessionKey(), errorMessage);
                                return new PipeRunResult(antiVirusFailedForward, result);
                            }
                        }
                    }
                }
            }
        } else {
            Misc.streamToStream(inputStream, outputStream);
        }
    } catch (IOException e) {
        throw new PipeRunException(this, "IOException streaming input to output", e);
    } catch (FileUploadException e) {
        throw new PipeRunException(this, "FileUploadException getting multiparts from httpServletRequest", e);
    }
    return new PipeRunResult(getForward(), result);
}
Also used : InputStream(java.io.InputStream) OutputStream(java.io.OutputStream) HttpServletResponse(javax.servlet.http.HttpServletResponse) IOException(java.io.IOException) DiskFileItemFactory(org.apache.commons.fileupload.disk.DiskFileItemFactory) PipeForward(nl.nn.adapterframework.core.PipeForward) HttpServletRequest(javax.servlet.http.HttpServletRequest) FileItem(org.apache.commons.fileupload.FileItem) PipeRunResult(nl.nn.adapterframework.core.PipeRunResult) ServletFileUpload(org.apache.commons.fileupload.servlet.ServletFileUpload) PipeRunException(nl.nn.adapterframework.core.PipeRunException) ParameterList(nl.nn.adapterframework.parameters.ParameterList) ParameterException(nl.nn.adapterframework.core.ParameterException) ArrayList(java.util.ArrayList) ParameterList(nl.nn.adapterframework.parameters.ParameterList) List(java.util.List) ParameterResolutionContext(nl.nn.adapterframework.parameters.ParameterResolutionContext) Map(java.util.Map) FileUploadException(org.apache.commons.fileupload.FileUploadException)

Example 29 with ParameterException

use of nl.nn.adapterframework.core.ParameterException in project iaf by ibissource.

the class IfsaRequesterSender method convertParametersToMap.

protected Map convertParametersToMap(ParameterResolutionContext prc) throws SenderException {
    ParameterValueList paramValueList;
    try {
        paramValueList = prc.getValues(paramList);
    } catch (ParameterException e) {
        throw new SenderException(getLogPrefix() + "caught ParameterException in sendMessage() determining serviceId", e);
    }
    Map params = new HashMap();
    if (paramValueList != null && paramList != null) {
        for (int i = 0; i < paramList.size(); i++) {
            String key = paramList.getParameter(i).getName();
            String value = paramValueList.getParameterValue(i).asStringValue(null);
            params.put(key, value);
        }
    }
    return params;
}
Also used : ParameterValueList(nl.nn.adapterframework.parameters.ParameterValueList) HashMap(java.util.HashMap) ParameterException(nl.nn.adapterframework.core.ParameterException) SenderException(nl.nn.adapterframework.core.SenderException) HashMap(java.util.HashMap) Map(java.util.Map)

Example 30 with ParameterException

use of nl.nn.adapterframework.core.ParameterException in project iaf by ibissource.

the class FileUtils method getFilename.

/**
 * Construct a filename from a pattern and session variables.
 */
public static String getFilename(ParameterList definedParameters, IPipeLineSession session, String originalFilename, String filenamePattern) throws ParameterException {
    // no pattern defined, outputname = inputname
    if (StringUtils.isEmpty(filenamePattern)) {
        return originalFilename;
    }
    // obtain filename
    int ndx = originalFilename.lastIndexOf('.');
    String name = originalFilename;
    String extension = "";
    if (ndx > 0) {
        name = originalFilename.substring(0, ndx);
        extension = originalFilename.substring(ndx + 1);
    }
    // construct the parameterlist
    ParameterList pl = new ParameterList();
    try {
        if (definedParameters != null)
            pl.addAll(definedParameters);
        Parameter p = new Parameter();
        p.setName("file");
        p.setDefaultValue(name);
        p.configure();
        pl.add(p);
        p = new Parameter();
        p.setName("ext");
        p.setDefaultValue(extension);
        p.configure();
        pl.add(p);
        p = new Parameter();
        p.setName("__filename");
        p.setPattern(filenamePattern);
        p.configure();
        pl.add(p);
    } catch (ConfigurationException e) {
        throw new ParameterException(e);
    }
    // resolve the parameters
    ParameterResolutionContext prc = new ParameterResolutionContext((String) null, session);
    ParameterValueList pvl = prc.getValues(pl);
    String filename = pvl.getParameterValue("__filename").getValue().toString();
    return filename;
}
Also used : ParameterValueList(nl.nn.adapterframework.parameters.ParameterValueList) ConfigurationException(nl.nn.adapterframework.configuration.ConfigurationException) ParameterList(nl.nn.adapterframework.parameters.ParameterList) Parameter(nl.nn.adapterframework.parameters.Parameter) ParameterException(nl.nn.adapterframework.core.ParameterException) ParameterResolutionContext(nl.nn.adapterframework.parameters.ParameterResolutionContext)

Aggregations

ParameterException (nl.nn.adapterframework.core.ParameterException)35 ParameterValueList (nl.nn.adapterframework.parameters.ParameterValueList)23 ParameterResolutionContext (nl.nn.adapterframework.parameters.ParameterResolutionContext)18 PipeRunException (nl.nn.adapterframework.core.PipeRunException)15 SenderException (nl.nn.adapterframework.core.SenderException)14 PipeRunResult (nl.nn.adapterframework.core.PipeRunResult)13 IOException (java.io.IOException)11 ConfigurationException (nl.nn.adapterframework.configuration.ConfigurationException)10 TimeOutException (nl.nn.adapterframework.core.TimeOutException)7 HashMap (java.util.HashMap)6 Map (java.util.Map)6 ParameterList (nl.nn.adapterframework.parameters.ParameterList)6 JMSException (javax.jms.JMSException)5 PipeForward (nl.nn.adapterframework.core.PipeForward)5 Parameter (nl.nn.adapterframework.parameters.Parameter)5 ParameterValue (nl.nn.adapterframework.parameters.ParameterValue)5 DomBuilderException (nl.nn.adapterframework.util.DomBuilderException)5 URL (java.net.URL)4 ArrayList (java.util.ArrayList)4 INamedObject (nl.nn.adapterframework.core.INamedObject)4