001// Licensed under the Apache License, Version 2.0 (the "License"); 002// you may not use this file except in compliance with the License. 003// You may obtain a copy of the License at 004// 005// http://www.apache.org/licenses/LICENSE-2.0 006// 007// Unless required by applicable law or agreed to in writing, software 008// distributed under the License is distributed on an "AS IS" BASIS, 009// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 010// See the License for the specific language governing permissions and 011// limitations under the License. 012 013package org.apache.tapestry5.corelib.pages; 014 015import org.apache.tapestry5.annotations.*; 016import org.apache.tapestry5.beanmodel.BeanModel; 017import org.apache.tapestry5.beanmodel.services.BeanModelSource; 018import org.apache.tapestry5.commons.Messages; 019import org.apache.tapestry5.http.TapestryHttpSymbolConstants; 020import org.apache.tapestry5.ioc.Registry; 021import org.apache.tapestry5.ioc.annotations.Inject; 022import org.apache.tapestry5.ioc.annotations.Symbol; 023import org.apache.tapestry5.ioc.services.ServiceActivity; 024import org.apache.tapestry5.ioc.services.ServiceActivityScoreboard; 025 026import java.util.List; 027 028/** 029 * Page used to see the status of all services defined by the {@link Registry}. 030 * 031 * TODO: Add filters to control which services are displayed 032 */ 033@UnknownActivationContextCheck(false) 034@WhitelistAccessOnly 035public class ServiceStatus 036{ 037 @Inject 038 private ServiceActivityScoreboard scoreboard; 039 040 @Property 041 private ServiceActivity row; 042 043 @Inject 044 private BeanModelSource source; 045 046 @Property 047 private final BeanModel model; 048 049 @Inject 050 private Messages messages; 051 052 @Property 053 @Inject 054 @Symbol(TapestryHttpSymbolConstants.PRODUCTION_MODE) 055 private boolean productionMode; 056 057 { 058 model = source.createDisplayModel(ServiceActivity.class, messages); 059 060 model.addEmpty("serviceInterface"); 061 062 // There's no line number information for interfaces, so we'll reorder the 063 // properties manually. 064 065 model.reorder("serviceId", "serviceInterface", "scope", "status"); 066 } 067 068 @Cached 069 public List<ServiceActivity> getActivity() 070 { 071 return scoreboard.getServiceActivity(); 072 } 073 074 @Import(stylesheet = "service-status.css") 075 void onAfterRenderFromServices() 076 { 077 } 078}