org.apache.jackrabbit.stats.jmx.QueryStatManager Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jackrabbit-jcr-commons Show documentation
Show all versions of jackrabbit-jcr-commons Show documentation
General purpose classes for use with the JCR API
The newest version!
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jackrabbit.stats.jmx;
import javax.management.openmbean.CompositeDataSupport;
import javax.management.openmbean.CompositeType;
import javax.management.openmbean.OpenDataException;
import javax.management.openmbean.OpenType;
import javax.management.openmbean.SimpleType;
import javax.management.openmbean.TabularData;
import javax.management.openmbean.TabularDataSupport;
import javax.management.openmbean.TabularType;
import org.apache.jackrabbit.api.jmx.QueryStatManagerMBean;
import org.apache.jackrabbit.api.stats.QueryStat;
import org.apache.jackrabbit.api.stats.QueryStatDto;
/**
* The QueryStatManagerMBean default implementation
*
*/
public class QueryStatManager implements QueryStatManagerMBean {
private final QueryStat queryStat;
public QueryStatManager(final QueryStat queryStat) {
this.queryStat = queryStat;
}
public boolean isEnabled() {
return this.queryStat.isEnabled();
}
public void enable() {
this.queryStat.setEnabled(true);
}
public void disable() {
this.queryStat.setEnabled(false);
}
public void reset() {
this.queryStat.reset();
}
public int getSlowQueriesQueueSize() {
return queryStat.getSlowQueriesQueueSize();
}
public void setSlowQueriesQueueSize(int size) {
this.queryStat.setSlowQueriesQueueSize(size);
}
public void clearSlowQueriesQueue() {
this.queryStat.clearSlowQueriesQueue();
}
public int getPopularQueriesQueueSize() {
return queryStat.getPopularQueriesQueueSize();
}
public void setPopularQueriesQueueSize(int size) {
queryStat.setPopularQueriesQueueSize(size);
}
public void clearPopularQueriesQueue() {
queryStat.clearPopularQueriesQueue();
}
public TabularData getSlowQueries() {
return asTabularData(queryStat.getSlowQueries());
}
public TabularData getPopularQueries() {
return asTabularData(queryStat.getPopularQueries());
}
private TabularData asTabularData(QueryStatDto[] data) {
TabularDataSupport tds = null;
try {
CompositeType ct = QueryStatCompositeTypeFactory.getCompositeType();
TabularType tt = new TabularType(QueryStatDto.class.getName(),
"Query History", ct, QueryStatCompositeTypeFactory.index);
tds = new TabularDataSupport(tt);
for (QueryStatDto q : data) {
tds.put(new CompositeDataSupport(ct,
QueryStatCompositeTypeFactory.names,
QueryStatCompositeTypeFactory.getValues(q)));
}
return tds;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
private static class QueryStatCompositeTypeFactory {
private final static String[] index = { "position" };
private final static String[] names = { "position", "duration",
"occurrenceCount", "language", "statement", "creationTime" };
private final static String[] descriptions = { "position", "duration",
"occurrenceCount", "language", "statement", "creationTime" };
private final static OpenType[] types = { SimpleType.LONG,
SimpleType.LONG, SimpleType.INTEGER, SimpleType.STRING,
SimpleType.STRING, SimpleType.STRING };
public static CompositeType getCompositeType() throws OpenDataException {
return new CompositeType(QueryStat.class.getName(),
QueryStat.class.getName(), names, descriptions, types);
}
public static Object[] getValues(QueryStatDto q) {
return new Object[] { q.getPosition(), q.getDuration(),
q.getOccurrenceCount(), q.getLanguage(), q.getStatement(),
q.getCreationTime() };
}
}
}