Package org.geoserver.wfs

Source Code of org.geoserver.wfs.WFSException

/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.wfs;

import org.eclipse.emf.ecore.EObject;
import org.geoserver.ows.util.OwsUtils;
import org.geoserver.platform.ServiceException;
import org.geoserver.wfs.WFSInfo.Version;
import org.geoserver.wfs.request.RequestObject;

/**
* WFS application specific exception.
*/
public class WFSException extends ServiceException {
    public enum Code {
        OperationProcessingFailed
    };

    public WFSException(RequestObject request, String message) {
        this(message);
        init(request);
    }

    public WFSException(RequestObject request, String message, String code) {
        this(message, code);
        init(request);
    }

    public WFSException(RequestObject request, String message, Throwable cause, String code) {
        this(message, cause, code);
        init(request);
    }

    public WFSException(RequestObject request, String message, Throwable cause) {
        this(message, cause);
        init(request);
    }

    public WFSException(RequestObject request, Throwable cause, String code) {
        this(cause, code);
        init(request);
    }

    public WFSException(RequestObject request, Throwable cause) {
        this(cause);
        init(request);
    }
   
    public WFSException(EObject request, String message) {
        this(message);
        init(request);
    }

    public WFSException(EObject request, String message, String code) {
        this(message, code);
        init(request);
    }

    public WFSException(EObject request, String message, Throwable cause, String code) {
        this(message, cause, code);
        init(request);
    }

    public WFSException(EObject request, String message, Throwable cause) {
        this(message, cause);
        init(request);
    }

    public WFSException(EObject request, Throwable cause, String code) {
        this(cause, code);
        init(request);
    }

    public WFSException(EObject request, Throwable cause) {
        this(cause);
        init(request);
    }

    public WFSException init(Object request) {
        if (request != null) {
            //wfs 2.0 has more requirements for exception codes and handles
            if (OwsUtils.has(request, "version")) {
                Object ver = OwsUtils.get(request, "version");
                Version version = Version.negotiate(ver != null ? ver.toString() : null);
                if (version != null && version.compareTo(Version.V_20) < 0) {
                    return this; //not 2.0
                }
            }
            if (locator == null && OwsUtils.has(request, "handle")) {
                //check the request object
                locator = (String) OwsUtils.get(request, "handle");
            }

            if (locator == null) {
                //default to name of operation, use the request object class name to determine the
                // operation
                String className = request.getClass().getSimpleName();
                if (request instanceof RequestObject) {
                    //request object adapter
                    className = request.getClass().getSuperclass().getSimpleName();
                    locator = className.substring(0, className.length()-"Request".length());
                }
                else if (className.endsWith("TypeImpl")) {
                    //underlying emf request object
                    locator = className.substring(0, className.length()-"TypeImpl".length());
                }
            }

            if (code == null) {
                code = Code.OperationProcessingFailed.name();
            }
        }
        return this;
    }

    public WFSException(String message) {
        super(message);
    }

    public WFSException(Throwable cause) {
        super(cause);
    }

    public WFSException(String message, String code, String locator) {
        super(message, code, locator);
    }

    public WFSException(String message, String code) {
        super(message, code);
    }

    public WFSException(String message, Throwable cause, String code, String locator) {
        super(message, cause, code, locator);
    }

    public WFSException(String message, Throwable cause, String code) {
        super(message, cause, code);
    }

    public WFSException(String message, Throwable cause) {
        super(message, cause);
    }

    public WFSException(Throwable cause, String code, String locator) {
        super(cause, code, locator);
    }

    public WFSException(Throwable cause, String code) {
        super(cause, code);
    }
}
TOP

Related Classes of org.geoserver.wfs.WFSException

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.