001/* 002 * (C) Copyright 2010 Nuxeo SA (http://nuxeo.com/) and others. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 * 016 * Contributors: 017 * mcedica 018 */ 019package org.nuxeo.ecm.webengine.management.statuses; 020 021import javax.ws.rs.GET; 022import javax.ws.rs.PUT; 023import javax.ws.rs.Path; 024import javax.ws.rs.Produces; 025 026import org.nuxeo.ecm.core.management.api.AdministrativeStatus; 027import org.nuxeo.ecm.core.management.api.AdministrativeStatusManager; 028import org.nuxeo.ecm.webengine.forms.FormData; 029import org.nuxeo.ecm.webengine.management.ManagementObject; 030import org.nuxeo.ecm.webengine.model.Access; 031import org.nuxeo.ecm.webengine.model.WebObject; 032import org.nuxeo.ecm.webengine.model.impl.DefaultObject; 033import org.nuxeo.runtime.api.Framework; 034 035/** 036 * Web object implementation corresponding to the administrative status of the server. 037 * 038 * @author mcedica 039 */ 040@WebObject(type = "AdministrativeStatus", administrator = Access.GRANT) 041@Produces("text/html; charset=UTF-8") 042public class AdministrativeStatusObject extends ManagementObject { 043 044 protected AdministrativeStatus administrativeStatus; 045 046 public static AdministrativeStatusObject newAdministrativeStatus(DefaultObject parent) { 047 return (AdministrativeStatusObject) parent.newObject("AdministrativeStatus"); 048 } 049 050 @Override 051 public void initialize(Object... args) { 052 super.initialize(args); 053 AdministrativeStatusManager mgr = Framework.getService(AdministrativeStatusManager.class); 054 administrativeStatus = mgr.getNuxeoInstanceStatus(); 055 } 056 057 @PUT 058 public Object doPut() { 059 FormData form = ctx.getForm(); 060 AdministrativeStatusManager manager = Framework.getService(AdministrativeStatusManager.class); 061 manager.setNuxeoInstanceStatus(form.getString("status"), "assigned from rest interface", 062 ctx.getPrincipal().getName()); 063 return redirect(getPath()); 064 } 065 066 @GET 067 public Object doGet() { 068 return getView("index").arg("serverInstanceId", administrativeStatus.getInstanceIdentifier()).arg( 069 "administrativeStatus", administrativeStatus.getState()); 070 } 071 072 @GET 073 @Path("/@activate") 074 public Object doActivate() { 075 AdministrativeStatusManager manager = Framework.getService(AdministrativeStatusManager.class); 076 manager.setNuxeoInstanceStatus(AdministrativeStatus.ACTIVE, "", ctx.getPrincipal().getName()); 077 return redirect(getPath()); 078 } 079 080 @GET 081 @Path("/@passivate") 082 public Object passivate() { 083 AdministrativeStatusManager manager = Framework.getService(AdministrativeStatusManager.class); 084 manager.setNuxeoInstanceStatus(AdministrativeStatus.PASSIVE, "", ctx.getPrincipal().getName()); 085 return redirect(getPath()); 086 } 087 088}