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