|
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.