Package org.eclipse.orion.server.logs.servlets

Source Code of org.eclipse.orion.server.logs.servlets.LoggerHandler

/*******************************************************************************
* Copyright (c) 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     IBM Corporation - initial API and implementation
*******************************************************************************/

package org.eclipse.orion.server.logs.servlets;

import java.net.URI;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.orion.internal.server.servlets.ServletResourceHandler;
import org.eclipse.orion.internal.server.servlets.task.TaskJobHandler;
import org.eclipse.orion.server.core.LogHelper;
import org.eclipse.orion.server.core.ProtocolConstants;
import org.eclipse.orion.server.core.ServerStatus;
import org.eclipse.orion.server.logs.ILogService;
import org.eclipse.orion.server.logs.LogConstants;
import org.eclipse.orion.server.logs.jobs.ListLoggersJob;
import org.eclipse.orion.server.logs.jobs.LoggerJob;
import org.eclipse.orion.server.logs.objects.LoggerResource;
import org.eclipse.orion.server.servlets.OrionServlet;
import org.eclipse.osgi.util.NLS;
import org.json.JSONObject;

import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;

public class LoggerHandler extends AbstractLogHandler {
  public LoggerHandler(ServletResourceHandler<IStatus> statusHandler) {
    super(statusHandler);
  }

  @Override
  protected boolean handleGet(HttpServletRequest request,
      HttpServletResponse response, ILogService logService)
      throws ServletException {

    try {
      return TaskJobHandler.handleTaskJob(request, response,
          new ListLoggersJob(TaskJobHandler.getUserId(request),
              logService, getURI(request)), statusHandler);
    } catch (Exception e) {
      final ServerStatus error = new ServerStatus(IStatus.ERROR,
          HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
          "An error occured when looking for loggers.", e);

      LogHelper.log(error);
      return statusHandler.handleRequest(request, response, error);
    }
  }

  @Override
  protected boolean handleGet(HttpServletRequest request,
      HttpServletResponse response, ILogService logService, IPath path)
      throws ServletException {

    String loggerName = path.segment(0);

    try {
      return TaskJobHandler.handleTaskJob(request, response,
          new LoggerJob(TaskJobHandler.getUserId(request),
              logService, getURI(request), loggerName),
          statusHandler);
    } catch (Exception e) {
      final ServerStatus error = new ServerStatus(IStatus.ERROR,
          HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
          "An error occured when looking for logger.", e);

      LogHelper.log(error);
      return statusHandler.handleRequest(request, response, error);
    }
  }

  @Override
  protected boolean handlePut(HttpServletRequest request,
      HttpServletResponse response, ILogService logService, IPath path)
      throws ServletException {

    URI baseLocation = getURI(request);

    try {
      String loggerName = path.segment(0);
      JSONObject toPut = OrionServlet.readJSONRequest(request);

      Logger logger = logService.getLogger(loggerName);
      if (logger == null) {
        final String msg = NLS
            .bind("Logger not found: {0}", loggerName);
        final ServerStatus error = new ServerStatus(IStatus.ERROR,
            HttpServletResponse.SC_NOT_FOUND, msg, null);
        return statusHandler.handleRequest(request, response, error);
      }

      String putlevel = toPut.getString(LogConstants.KEY_LOGGER_LEVEL);
      Level level = Level.toLevel(putlevel, logger.getLevel());
      logger.setLevel(level);

      LoggerResource loggerResource = new LoggerResource();
      loggerResource.setBaseLocation(baseLocation);
      loggerResource.setName(logger.getName());
      loggerResource.setLevel(logger.getLevel());
      loggerResource.setEffectiveLevel(logger.getEffectiveLevel());

      JSONObject result = loggerResource.toJSON();
      OrionServlet.writeJSONResponse(request, response, result);
      response.setHeader(ProtocolConstants.HEADER_LOCATION,
          result.getString(ProtocolConstants.KEY_LOCATION));
      return true;

    } catch (Exception e) {
      return statusHandler.handleRequest(request, response,
          new ServerStatus(IStatus.ERROR,
              HttpServletResponse.SC_BAD_REQUEST, e.getMessage(),
              e));
    }
  }
}
TOP

Related Classes of org.eclipse.orion.server.logs.servlets.LoggerHandler

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.