ttomcat-1778514358873.zip-extract/_dependencies/maven/com.h2database_h2-2.2.220/org/h2/jmx/DatabaseInfo.java

Path
ttomcat-1778514358873.zip-extract/_dependencies/maven/com.h2database_h2-2.2.220/org/h2/jmx/DatabaseInfo.java
Status
scanned
Type
file
Name
DatabaseInfo.java
Extension
.java
Programming language
Java
Mime type
text/x-java
File type
Java source, ASCII text
Tag

      
    
Rootfs path

      
    
Size
7245 (7.1 KB)
MD5
922875157243566b6077f12e90c25bd0
SHA1
c3510f38df4684ebed732eb3b922b1013b73191d
SHA256
289f07852b9fdfa7057049cc80107edaceee9351d691d19a2e14c96b2bafff6e
SHA512

      
    
SHA1_git
4c96f52199b1b450708f1785f86f80a523a409f9
Is binary

      
    
Is text
True
Is archive

      
    
Is media

      
    
Is legal

      
    
Is manifest

      
    
Is readme

      
    
Is top level

      
    
Is key file

      
    
DatabaseInfo.java | 7.1 KB |

/* * Copyright 2004-2023 H2 Group. Multiple-Licensed under the MPL 2.0, * and the EPL 1.0 (https://h2database.com/html/license.html). * Initial Developer: H2 Group */ package org.h2.jmx; import java.lang.management.ManagementFactory; import java.util.HashMap; import java.util.Hashtable; import java.util.Map; import java.util.Map.Entry; import javax.management.JMException; import javax.management.MBeanServer; import javax.management.ObjectName; import org.h2.command.Command; import org.h2.engine.ConnectionInfo; import org.h2.engine.Constants; import org.h2.engine.Database; import org.h2.engine.SessionLocal; import org.h2.table.Table; import org.h2.util.NetworkConnectionInfo; /** * The MBean implementation. * * @author Eric Dong * @author Thomas Mueller */ public class DatabaseInfo implements DatabaseInfoMBean { private static final Map<String, ObjectName> MBEANS = new HashMap<>(); /** Database. */ private final Database database; private DatabaseInfo(Database database) { if (database == null) { throw new IllegalArgumentException("Argument 'database' must not be null"); } this.database = database; } /** * Returns a JMX new ObjectName instance. * * @param name name of the MBean * @param path the path * @return a new ObjectName instance * @throws JMException if the ObjectName could not be created */ private static ObjectName getObjectName(String name, String path) throws JMException { name = name.replace(':', '_'); path = path.replace(':', '_'); Hashtable<String, String> map = new Hashtable<>(); map.put("name", name); map.put("path", path); return new ObjectName("org.h2", map); } /** * Registers an MBean for the database. * * @param connectionInfo connection info * @param database database * @throws JMException on failure */ public static void registerMBean(ConnectionInfo connectionInfo, Database database) throws JMException { String path = connectionInfo.getName(); if (!MBEANS.containsKey(path)) { MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer(); String name = database.getShortName(); ObjectName mbeanObjectName = getObjectName(name, path); MBEANS.put(path, mbeanObjectName); DatabaseInfo info = new DatabaseInfo(database); Object mbean = new DocumentedMBean(info, DatabaseInfoMBean.class); mbeanServer.registerMBean(mbean, mbeanObjectName); } } /** * Unregisters the MBean for the database if one is registered. * * @param name database name * @throws JMException on failure */ public static void unregisterMBean(String name) throws Exception { ObjectName mbeanObjectName = MBEANS.remove(name); if (mbeanObjectName != null) { MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer(); mbeanServer.unregisterMBean(mbeanObjectName); } } @Override public boolean isExclusive() { return database.getExclusiveSession() != null; } @Override public boolean isReadOnly() { return database.isReadOnly(); } @Override public String getMode() { return database.getMode().getName(); } @Override public int getTraceLevel() { return database.getTraceSystem().getLevelFile(); } @Override public void setTraceLevel(int level) { database.getTraceSystem().setLevelFile(level); } @Override public long getFileWriteCount() { if (database.isPersistent()) { return database.getStore().getMvStore().getFileStore().getWriteCount(); } return 0; } @Override public long getFileReadCount() { if (database.isPersistent()) { return database.getStore().getMvStore().getFileStore().getReadCount(); } return 0; } @Override public long getFileSize() { long size = 0; if (database.isPersistent()) { size = database.getStore().getMvStore().getFileStore().size(); } return size / 1024; } @Override public int getCacheSizeMax() { if (database.isPersistent()) { return database.getStore().getMvStore().getCacheSize() * 1024; } return 0; } @Override public void setCacheSizeMax(int kb) { if (database.isPersistent()) { database.setCacheSize(kb); } } @Override public int getCacheSize() { if (database.isPersistent()) { return database.getStore().getMvStore().getCacheSizeUsed() * 1024; } return 0; } @Override public String getVersion() { return Constants.FULL_VERSION; } @Override public String listSettings() { StringBuilder builder = new StringBuilder(); for (Entry<String, String> e : database.getSettings().getSortedSettings()) { builder.append(e.getKey()).append(" = ").append(e.getValue()).append(' '); } return builder.toString(); } @Override public String listSessions() { StringBuilder buff = new StringBuilder(); for (SessionLocal session : database.getSessions(false)) { buff.append("session id: ").append(session.getId()); buff.append(" user: "). append(session.getUser().getName()). append(' '); NetworkConnectionInfo networkConnectionInfo = session.getNetworkConnectionInfo(); if (networkConnectionInfo != null) { buff.append("server: ").append(networkConnectionInfo.getServer()).append(' ') // .append("clientAddr: ").append(networkConnectionInfo.getClient()).append(' '); String clientInfo = networkConnectionInfo.getClientInfo(); if (clientInfo != null) { buff.append("clientInfo: ").append(clientInfo).append(' '); } } buff.append("connected: "). append(session.getSessionStart().getString()). append(' '); Command command = session.getCurrentCommand(); if (command != null) { buff.append("statement: ") .append(command) .append(' ') .append("started: ") .append(session.getCommandStartOrEnd().getString()) .append(' '); } for (Table table : session.getLocks()) { if (table.isLockedExclusivelyBy(session)) { buff.append("write lock on "); } else { buff.append("read lock on "); } buff.append(table.getSchema().getName()). append('.').append(table.getName()). append(' '); } buff.append(' '); } return buff.toString(); } }
Detected license expression

      
    
Detected license expression (SPDX)

      
    
Percentage of license text
1.83
Copyrights
- end_line: 2
  copyright: Copyright 2004-2023 H2 Group. Multiple-Licensed
  start_line: 2
Holders
- holder: H2 Group. Multiple-Licensed
  end_line: 2
  start_line: 2
Authors
- author: Eric Dong
  end_line: 27
  start_line: 27
- author: Thomas Mueller
  end_line: 28
  start_line: 28
License expression License clue details
(mpl-2.0 OR epl-1.0) AND proprietary-license {'score': 20.37, 'matcher': '3-seq', 'end_line': 3, 'rule_url': 'https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/mpl-2.0_or_epl-1.0_and_proprietary-license_2.RULE', 'from_file': None, 'start_line': 2, 'matched_text': ' * Copyright 2004-2023 H2 Group. Multiple-Licensed under the MPL 2.0,\n * and the EPL 1.0 (https://h2database.com/html/license.html).', 'match_coverage': 20.37, 'matched_length': 11, 'rule_relevance': 100, 'rule_identifier': 'mpl-2.0_or_epl-1.0_and_proprietary-license_2.RULE', 'license_expression': '(mpl-2.0 OR epl-1.0) AND proprietary-license', 'license_expression_spdx': '(MPL-2.0 OR EPL-1.0) AND LicenseRef-scancode-proprietary-license'}
URL Start line End line
https://h2database.com/html/license.html 3 3
Package URL License Primary language
pkg:osgi/com.h2database.source@2.2.220