103928aee4356845252ac6b662d5c72c29903813eJake Slack// 203928aee4356845252ac6b662d5c72c29903813eJake Slack// ======================================================================== 303928aee4356845252ac6b662d5c72c29903813eJake Slack// Copyright (c) 1995-2014 Mort Bay Consulting Pty. Ltd. 403928aee4356845252ac6b662d5c72c29903813eJake Slack// ------------------------------------------------------------------------ 503928aee4356845252ac6b662d5c72c29903813eJake Slack// All rights reserved. This program and the accompanying materials 603928aee4356845252ac6b662d5c72c29903813eJake Slack// are made available under the terms of the Eclipse Public License v1.0 703928aee4356845252ac6b662d5c72c29903813eJake Slack// and Apache License v2.0 which accompanies this distribution. 803928aee4356845252ac6b662d5c72c29903813eJake Slack// 903928aee4356845252ac6b662d5c72c29903813eJake Slack// The Eclipse Public License is available at 1003928aee4356845252ac6b662d5c72c29903813eJake Slack// http://www.eclipse.org/legal/epl-v10.html 1103928aee4356845252ac6b662d5c72c29903813eJake Slack// 1203928aee4356845252ac6b662d5c72c29903813eJake Slack// The Apache License v2.0 is available at 1303928aee4356845252ac6b662d5c72c29903813eJake Slack// http://www.opensource.org/licenses/apache2.0.php 1403928aee4356845252ac6b662d5c72c29903813eJake Slack// 1503928aee4356845252ac6b662d5c72c29903813eJake Slack// You may elect to redistribute this code under either of these licenses. 1603928aee4356845252ac6b662d5c72c29903813eJake Slack// ======================================================================== 1703928aee4356845252ac6b662d5c72c29903813eJake Slack// 1803928aee4356845252ac6b662d5c72c29903813eJake Slack 1903928aee4356845252ac6b662d5c72c29903813eJake Slackpackage org.eclipse.jetty.server.handler.jmx; 2003928aee4356845252ac6b662d5c72c29903813eJake Slack 2103928aee4356845252ac6b662d5c72c29903813eJake Slackimport java.io.IOException; 2203928aee4356845252ac6b662d5c72c29903813eJake Slack 2303928aee4356845252ac6b662d5c72c29903813eJake Slackimport org.eclipse.jetty.jmx.ObjectMBean; 2403928aee4356845252ac6b662d5c72c29903813eJake Slackimport org.eclipse.jetty.server.Server; 2503928aee4356845252ac6b662d5c72c29903813eJake Slackimport org.eclipse.jetty.server.handler.AbstractHandler; 2603928aee4356845252ac6b662d5c72c29903813eJake Slackimport org.eclipse.jetty.server.handler.AbstractHandlerContainer; 2703928aee4356845252ac6b662d5c72c29903813eJake Slackimport org.eclipse.jetty.server.handler.ContextHandler; 2803928aee4356845252ac6b662d5c72c29903813eJake Slackimport org.eclipse.jetty.util.log.Log; 2903928aee4356845252ac6b662d5c72c29903813eJake Slackimport org.eclipse.jetty.util.log.Logger; 3003928aee4356845252ac6b662d5c72c29903813eJake Slack 3103928aee4356845252ac6b662d5c72c29903813eJake Slackpublic class AbstractHandlerMBean extends ObjectMBean 3203928aee4356845252ac6b662d5c72c29903813eJake Slack{ 3303928aee4356845252ac6b662d5c72c29903813eJake Slack private static final Logger LOG = Log.getLogger(AbstractHandlerMBean.class); 3403928aee4356845252ac6b662d5c72c29903813eJake Slack 3503928aee4356845252ac6b662d5c72c29903813eJake Slack /* ------------------------------------------------------------ */ 3603928aee4356845252ac6b662d5c72c29903813eJake Slack public AbstractHandlerMBean(Object managedObject) 3703928aee4356845252ac6b662d5c72c29903813eJake Slack { 3803928aee4356845252ac6b662d5c72c29903813eJake Slack super(managedObject); 3903928aee4356845252ac6b662d5c72c29903813eJake Slack } 4003928aee4356845252ac6b662d5c72c29903813eJake Slack 4103928aee4356845252ac6b662d5c72c29903813eJake Slack /* ------------------------------------------------------------ */ 4203928aee4356845252ac6b662d5c72c29903813eJake Slack @Override 4303928aee4356845252ac6b662d5c72c29903813eJake Slack public String getObjectContextBasis() 4403928aee4356845252ac6b662d5c72c29903813eJake Slack { 4503928aee4356845252ac6b662d5c72c29903813eJake Slack if (_managed != null ) 4603928aee4356845252ac6b662d5c72c29903813eJake Slack { 4703928aee4356845252ac6b662d5c72c29903813eJake Slack String basis = null; 4803928aee4356845252ac6b662d5c72c29903813eJake Slack if (_managed instanceof ContextHandler) 4903928aee4356845252ac6b662d5c72c29903813eJake Slack { 5003928aee4356845252ac6b662d5c72c29903813eJake Slack return null; 5103928aee4356845252ac6b662d5c72c29903813eJake Slack } 5203928aee4356845252ac6b662d5c72c29903813eJake Slack else if (_managed instanceof AbstractHandler) 5303928aee4356845252ac6b662d5c72c29903813eJake Slack { 5403928aee4356845252ac6b662d5c72c29903813eJake Slack AbstractHandler handler = (AbstractHandler)_managed; 5503928aee4356845252ac6b662d5c72c29903813eJake Slack Server server = handler.getServer(); 5603928aee4356845252ac6b662d5c72c29903813eJake Slack if (server != null) 5703928aee4356845252ac6b662d5c72c29903813eJake Slack { 5803928aee4356845252ac6b662d5c72c29903813eJake Slack ContextHandler context = 5903928aee4356845252ac6b662d5c72c29903813eJake Slack AbstractHandlerContainer.findContainerOf(server, 6003928aee4356845252ac6b662d5c72c29903813eJake Slack ContextHandler.class, handler); 6103928aee4356845252ac6b662d5c72c29903813eJake Slack 6203928aee4356845252ac6b662d5c72c29903813eJake Slack if (context != null) 6303928aee4356845252ac6b662d5c72c29903813eJake Slack basis = getContextName(context); 6403928aee4356845252ac6b662d5c72c29903813eJake Slack } 6503928aee4356845252ac6b662d5c72c29903813eJake Slack } 6603928aee4356845252ac6b662d5c72c29903813eJake Slack if (basis != null) 6703928aee4356845252ac6b662d5c72c29903813eJake Slack return basis; 6803928aee4356845252ac6b662d5c72c29903813eJake Slack } 6903928aee4356845252ac6b662d5c72c29903813eJake Slack return super.getObjectContextBasis(); 7003928aee4356845252ac6b662d5c72c29903813eJake Slack } 7103928aee4356845252ac6b662d5c72c29903813eJake Slack 7203928aee4356845252ac6b662d5c72c29903813eJake Slack /* ------------------------------------------------------------ */ 7303928aee4356845252ac6b662d5c72c29903813eJake Slack @Override 7403928aee4356845252ac6b662d5c72c29903813eJake Slack public String getObjectNameBasis() 7503928aee4356845252ac6b662d5c72c29903813eJake Slack { 7603928aee4356845252ac6b662d5c72c29903813eJake Slack if (_managed != null ) 7703928aee4356845252ac6b662d5c72c29903813eJake Slack { 7803928aee4356845252ac6b662d5c72c29903813eJake Slack String name = null; 7903928aee4356845252ac6b662d5c72c29903813eJake Slack if (_managed instanceof ContextHandler) 8003928aee4356845252ac6b662d5c72c29903813eJake Slack { 8103928aee4356845252ac6b662d5c72c29903813eJake Slack ContextHandler context = (ContextHandler)_managed; 8203928aee4356845252ac6b662d5c72c29903813eJake Slack name = getContextName(context); 8303928aee4356845252ac6b662d5c72c29903813eJake Slack } 8403928aee4356845252ac6b662d5c72c29903813eJake Slack 8503928aee4356845252ac6b662d5c72c29903813eJake Slack if (name != null) 8603928aee4356845252ac6b662d5c72c29903813eJake Slack return name; 8703928aee4356845252ac6b662d5c72c29903813eJake Slack } 8803928aee4356845252ac6b662d5c72c29903813eJake Slack 8903928aee4356845252ac6b662d5c72c29903813eJake Slack return super.getObjectNameBasis(); 9003928aee4356845252ac6b662d5c72c29903813eJake Slack } 9103928aee4356845252ac6b662d5c72c29903813eJake Slack 9203928aee4356845252ac6b662d5c72c29903813eJake Slack /* ------------------------------------------------------------ */ 9303928aee4356845252ac6b662d5c72c29903813eJake Slack protected String getContextName(ContextHandler context) 9403928aee4356845252ac6b662d5c72c29903813eJake Slack { 9503928aee4356845252ac6b662d5c72c29903813eJake Slack String name = null; 9603928aee4356845252ac6b662d5c72c29903813eJake Slack 9703928aee4356845252ac6b662d5c72c29903813eJake Slack if (context.getContextPath()!=null && context.getContextPath().length()>0) 9803928aee4356845252ac6b662d5c72c29903813eJake Slack { 9903928aee4356845252ac6b662d5c72c29903813eJake Slack int idx = context.getContextPath().lastIndexOf('/'); 10003928aee4356845252ac6b662d5c72c29903813eJake Slack name = idx < 0 ? context.getContextPath() : context.getContextPath().substring(++idx); 10103928aee4356845252ac6b662d5c72c29903813eJake Slack if (name==null || name.length()==0) 10203928aee4356845252ac6b662d5c72c29903813eJake Slack name= "ROOT"; 10303928aee4356845252ac6b662d5c72c29903813eJake Slack } 10403928aee4356845252ac6b662d5c72c29903813eJake Slack 10503928aee4356845252ac6b662d5c72c29903813eJake Slack if (name==null && context.getBaseResource()!=null) 10603928aee4356845252ac6b662d5c72c29903813eJake Slack { 10703928aee4356845252ac6b662d5c72c29903813eJake Slack try 10803928aee4356845252ac6b662d5c72c29903813eJake Slack { 10903928aee4356845252ac6b662d5c72c29903813eJake Slack if (context.getBaseResource().getFile()!=null) 11003928aee4356845252ac6b662d5c72c29903813eJake Slack name = context.getBaseResource().getFile().getName(); 11103928aee4356845252ac6b662d5c72c29903813eJake Slack } 11203928aee4356845252ac6b662d5c72c29903813eJake Slack catch(IOException e) 11303928aee4356845252ac6b662d5c72c29903813eJake Slack { 11403928aee4356845252ac6b662d5c72c29903813eJake Slack LOG.ignore(e); 11503928aee4356845252ac6b662d5c72c29903813eJake Slack name=context.getBaseResource().getName(); 11603928aee4356845252ac6b662d5c72c29903813eJake Slack } 11703928aee4356845252ac6b662d5c72c29903813eJake Slack } 11803928aee4356845252ac6b662d5c72c29903813eJake Slack 11903928aee4356845252ac6b662d5c72c29903813eJake Slack return name; 12003928aee4356845252ac6b662d5c72c29903813eJake Slack } 12103928aee4356845252ac6b662d5c72c29903813eJake Slack} 122