package org.neo4j.kernel.impl.management; import java.io.File; import java.io.IOException; import java.util.Date; import javax.management.NotCompliantMBeanException; import javax.management.ObjectName; import org.neo4j.kernel.impl.nioneo.xa.NeoStoreXaDataSource; import org.neo4j.kernel.management.Kernel; @Description( "Information about the Neo4j kernel" ) class KernelBean extends Neo4jMBean implements Kernel { private final long kernelStartTime; private final long storeCreationDate; private final long storeId; private final long storeLogVersion; private final boolean isReadOnly; private final String kernelVersion; private final String storeDir; private final ObjectName query; KernelBean( String instanceId, String kernelVersion, NeoStoreXaDataSource datasource, ObjectName query ) throws NotCompliantMBeanException { super( instanceId, Kernel.class ); this.kernelVersion = kernelVersion; this.query = query; storeCreationDate = datasource.getCreationTime(); storeLogVersion = datasource.getCurrentLogVersion(); isReadOnly = datasource.isReadOnly(); storeId = datasource.getRandomIdentifier(); @SuppressWarnings( "hiding" ) String storeDir; try { storeDir = new File( datasource.getStoreDir() ).getCanonicalFile().getAbsolutePath(); } catch ( IOException e ) { storeDir = new File( datasource.getStoreDir() ).getAbsolutePath(); } this.storeDir = storeDir; kernelStartTime = new Date().getTime(); } @Description( "An ObjectName that can be used as a query for getting all management " + "beans for this Neo4j instance." ) public ObjectName getMBeanQuery() { return query; } @Description( "The time from which this Neo4j instance was in operational mode" ) public Date getKernelStartTime() { return new Date( kernelStartTime ); } @Description( "The time when this Neo4j graph store was created" ) public Date getStoreCreationDate() { return new Date( storeCreationDate ); } @Description( "A identifier that uniquely identifies this Neo4j graph store" ) public String getStoreId() { return Long.toHexString( storeId ); } @Description( "The current version of the Neo4j store logical log" ) public long getStoreLogVersion() { return storeLogVersion; } @Description( "The version of Neo4j" ) public String getKernelVersion() { return kernelVersion; } @Description( "Whether this is a read only instance" ) public boolean isReadOnly() { return isReadOnly; } @Description( "The location where the Neo4j store is located" ) public String getStoreDirectory() { return storeDir; } }