|
Scala example source code file (ClassAndJarInfo.scala)
The Scala ClassAndJarInfo.scala source code
/* NSC -- new Scala compiler
* Copyright 2005-2011 LAMP/EPFL
* @author Paul Phillips
*/
package scala.tools.nsc
package io
import java.net.URL
import collection.JavaConverters._
/** A convenience class for finding the jar with the bytecode for
* a given Class object and similar common tasks.
*/
class ClassAndJarInfo[T: ClassManifest] {
val man = classManifest[T]
def clazz = man.erasure
def baseOfPath(path: String) = path indexOf '!' match {
case -1 => path stripSuffix internalClassName
case idx => path take idx
}
def classUrl = clazz getResource simpleClassName + ".class"
def codeSource = protectionDomain.getCodeSource()
def internalClassName = internalName + ".class"
def internalName = clazz.getName.replace('.', '/')
def jarManifest = new JManifest(jarManifestUrl.openStream())
def jarManifestMainAttrs = jarManifest.getMainAttributes().asScala
def jarManifestUrl = new URL(baseOfPath("" + classUrl) + "!/META-INF/MANIFEST.MF")
def locationFile = File(locationUrl.toURI.getPath())
def locationUrl = if (codeSource == null) new URL("file:///") else codeSource.getLocation()
def protectionDomain = clazz.getProtectionDomain()
def rootClasspath = rootPossibles find (_.exists)
def rootFromLocation = Path(locationUrl.toURI.getPath())
def rootFromResource = Path(baseOfPath(classUrl.getPath) stripPrefix "file:")
def rootPossibles = Iterator(rootFromResource, rootFromLocation)
def simpleClassName = clazz.getName split """[$.]""" last
}
Other Scala examples (source code examples)Here is a short list of links related to this Scala ClassAndJarInfo.scala source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.