ttomcat-1778514358873.zip-extract/apache-tomcat-11.0.18-src/java/org/apache/catalina/webresources/AbstractResource.java

Path
ttomcat-1778514358873.zip-extract/apache-tomcat-11.0.18-src/java/org/apache/catalina/webresources/AbstractResource.java
Status
scanned
Type
file
Name
AbstractResource.java
Extension
.java
Programming language
Java
Mime type
text/plain
File type
ASCII text, with CRLF line terminators
Tag

      
    
Rootfs path

      
    
Size
5476 (5.3 KB)
MD5
5fb28511de20ff212ca3496c3704a989
SHA1
e85fff0fa8c7d6c100dcc708c5ff2580e7c44795
SHA256
01108b7f901e033d0fb4e1c418729001e8809508dc85d3373ce439033e31ce45
SHA512

      
    
SHA1_git
eeb06f8f1f7a683b2a23666d80193bdf85dfb496
Is binary

      
    
Is text
True
Is archive

      
    
Is media

      
    
Is legal

      
    
Is manifest

      
    
Is readme

      
    
Is top level

      
    
Is key file

      
    
AbstractResource.java | 5.3 KB |

/* * 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.catalina.webresources; import java.io.InputStream; import java.security.MessageDigest; import org.apache.catalina.WebResource; import org.apache.catalina.WebResourceRoot; import org.apache.juli.logging.Log; import org.apache.tomcat.util.buf.HexUtils; import org.apache.tomcat.util.http.FastHttpDateFormat; import org.apache.tomcat.util.res.StringManager; import org.apache.tomcat.util.security.ConcurrentMessageDigest; public abstract class AbstractResource implements WebResource { protected static final StringManager sm = StringManager.getManager(AbstractResource.class); private final WebResourceRoot root; private final String webAppPath; private String mimeType = null; private volatile String weakETag; private volatile String strongETag; protected AbstractResource(WebResourceRoot root, String webAppPath) { this.root = root; this.webAppPath = webAppPath; } @Override public final WebResourceRoot getWebResourceRoot() { return root; } @Override public final String getWebappPath() { return webAppPath; } @Override public final String getLastModifiedHttp() { return FastHttpDateFormat.formatDate(getLastModified()); } @Override public final String getETag() { if (weakETag == null) { synchronized (this) { if (weakETag == null) { long contentLength = getContentLength(); long lastModified = getLastModified(); if ((contentLength >= 0) || (lastModified >= 0)) { weakETag = "W/\"" + contentLength + "-" + lastModified + "\""; } } } } return weakETag; } @Override public final String getStrongETag() { if (strongETag == null) { synchronized (this) { if (strongETag == null) { long contentLength = getContentLength(); long lastModified = getLastModified(); if (contentLength > 0 && lastModified > 0) { if (contentLength <= 16 * 1024) { byte[] buf = getContent(); if (buf != null) { buf = ConcurrentMessageDigest.digestSHA256(buf); strongETag = "\"" + HexUtils.toHexString(buf) + "\""; } else { strongETag = getETag(); } } else { byte[] buf = new byte[4096]; try (InputStream is = getInputStream()) { MessageDigest digest = MessageDigest.getInstance("SHA-256"); while (true) { int n = is.read(buf); if (n <= 0) { break; } digest.update(buf, 0, n); } strongETag = "\"" + HexUtils.toHexString(digest.digest()) + "\""; } catch (Exception e) { strongETag = getETag(); } } } else { strongETag = getETag(); } } } } return strongETag; } @Override public final void setMimeType(String mimeType) { this.mimeType = mimeType; } @Override public final String getMimeType() { if (mimeType == null) { String name = getName(); int extensionStart = name.lastIndexOf('.'); if (extensionStart > -1) { String extension = name.substring(extensionStart + 1); mimeType = root.getContext().findMimeMapping(extension); } } return mimeType; } @Override public final InputStream getInputStream() { InputStream is = doGetInputStream(); if (is == null || !root.getTrackLockedFiles()) { return is; } return new TrackedInputStream(root, getName(), is); } protected abstract InputStream doGetInputStream(); protected abstract Log getLog(); }
Detected license expression
apache-2.0
Detected license expression (SPDX)
Apache-2.0
Percentage of license text
27.29
Copyrights

      
    
Holders

      
    
Authors

      
    
License detections License expression License expression SPDX
apache_2_0-4bde3f57-78aa-4201-96bf-531cba09e7de apache-2.0 Apache-2.0
URL Start line End line
http://www.apache.org/licenses/LICENSE-2.0 9 9