/* * Copyright 2016 LINE Corporation * * LINE Corporation 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 com.linecorp.armeria.server.http.tomcat; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.catalina.util.ServerInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; final class TomcatVersion { private static final Logger logger = LoggerFactory.getLogger(TomcatVersion.class); private static final int TOMCAT_MAJOR_VERSION; private static final int TOMCAT_MINOR_VERSION; static { final Pattern pattern = Pattern.compile("^([1-9][0-9]*)\\.(0|[1-9][0-9]*)\\."); final String version = ServerInfo.getServerNumber(); final Matcher matcher = pattern.matcher(version); int tomcatMajorVersion = -1; int tomcatMinorVersion = -1; if (matcher.find()) { try { tomcatMajorVersion = Integer.parseInt(matcher.group(1)); tomcatMinorVersion = Integer.parseInt(matcher.group(2)); } catch (NumberFormatException ignored) { // Probably greater than Integer.MAX_VALUE } } TOMCAT_MAJOR_VERSION = tomcatMajorVersion; TOMCAT_MINOR_VERSION = tomcatMinorVersion; if (TOMCAT_MAJOR_VERSION > 0) { logger.info("Tomcat version: {} ({}.{})", version, TOMCAT_MAJOR_VERSION, TOMCAT_MINOR_VERSION); } else { logger.info("Tomcat version: {} (unknown)", version); } } static int major() { return TOMCAT_MAJOR_VERSION; } static int minor() { return TOMCAT_MINOR_VERSION; } private TomcatVersion() {} }