All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.agilecoders.wicket.logging.ClientSideErrorLoggingResourceReference Maven / Gradle / Ivy

package de.agilecoders.wicket.logging;

import de.agilecoders.wicket.logging.settings.IClientSideLoggingSettings;
import de.agilecoders.wicket.logging.util.EmptyResourceResponse;
import org.apache.wicket.request.IRequestParameters;
import org.apache.wicket.request.resource.AbstractResource;
import org.apache.wicket.request.resource.IResource;
import org.apache.wicket.request.resource.ResourceReference;

/**
 * The resource reference that represents the entry point on server side
 * for client side logging.
 */
public class ClientSideErrorLoggingResourceReference extends ResourceReference {

    /**
     * @return current active settings
     */
    private static IClientSideLoggingSettings settings() {
        return ClientSideLogging.settings();
    }

    /**
     * Construct.
     */
    public ClientSideErrorLoggingResourceReference() {
        this(settings().id());
    }

    /**
     * Construct.
     *
     * @param id the id of this resource reference
     */
    public ClientSideErrorLoggingResourceReference(final String id) {
        super(new Key(ClientSideLoggingBehavior.class.getName(), id, null, null, null));
    }

    @Override
    public IResource getResource() {
        return new ClientSideErrorLoggingResource();
    }

    /**
     * The resource that is executed when an incoming log request needs to be handled.
     */
    public static class ClientSideErrorLoggingResource extends AbstractResource {

        @Override
        protected ResourceResponse newResourceResponse(Attributes attributes) {
            writeToLog(attributes);

            return new EmptyResourceResponse();
        }

        /**
         * writes all log messages to the log store
         *
         * @param attributes response attributes
         */
        protected void writeToLog(Attributes attributes) {
            final IRequestParameters params = attributes.getRequest().getPostParameters();
            final IParamValueExtractor.Result result = settings().paramValueExtractor().parse(params);

            settings().logger().log(result.logObjects(), result.clientInfos());
        }


    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy