blob: 05e65e03552f7895a7f84c8cc53cb4387ddfc8d5 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.10) on Fri Feb 26 09:50:23 CST 2021 -->
<title>BundleFileLocatorHelper (Jetty :: Project 9.4.38.v20210224 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-02-26">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="BundleFileLocatorHelper (Jetty :: Project 9.4.38.v20210224 API)";
}
}
catch(err) {
}
//-->
var data = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/BundleFileLocatorHelper.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.eclipse.jetty.osgi.boot.utils</a></div>
<h2 title="Interface BundleFileLocatorHelper" class="title">Interface BundleFileLocatorHelper</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="internal/DefaultFileLocatorHelper.html" title="class in org.eclipse.jetty.osgi.boot.utils.internal">DefaultFileLocatorHelper</a></code></dd>
</dl>
<hr>
<pre>public interface <span class="typeNameLabel">BundleFileLocatorHelper</span></pre>
<div class="block">BundleFileLocatorHelper
<p>
From a bundle to its location on the filesystem. Assumes the bundle is not a
jar.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#CLASS_NAME">CLASS_NAME</a></span></code></th>
<td class="colLast">
<div class="block">The name of the custom implementation for this interface in a fragment.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="BundleFileLocatorHelper.html" title="interface in org.eclipse.jetty.osgi.boot.utils">BundleFileLocatorHelper</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DEFAULT">DEFAULT</a></span></code></th>
<td class="colLast">
<div class="block">The default instance supports felix and equinox</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>java.util.Enumeration&lt;java.net.URL&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#findEntries(org.osgi.framework.Bundle,java.lang.String)">findEntries</a></span>&#8203;(org.osgi.framework.Bundle&nbsp;bundle,
java.lang.String&nbsp;entryPath)</code></th>
<td class="colLast">
<div class="block">Helper method equivalent to Bundle#getEntry(String entryPath) except that
it searches for entries in the fragments by using the findEntries method.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>java.io.File</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getBundleInstallLocation(org.osgi.framework.Bundle)">getBundleInstallLocation</a></span>&#8203;(org.osgi.framework.Bundle&nbsp;bundle)</code></th>
<td class="colLast">
<div class="block">Works with equinox, felix, nuxeo and probably more.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>java.io.File</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getFileInBundle(org.osgi.framework.Bundle,java.lang.String)">getFileInBundle</a></span>&#8203;(org.osgi.framework.Bundle&nbsp;bundle,
java.lang.String&nbsp;path)</code></th>
<td class="colLast">
<div class="block">Locate a file inside a bundle.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>java.net.URL</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getFileURL(java.net.URL)">getFileURL</a></span>&#8203;(java.net.URL&nbsp;url)</code></th>
<td class="colLast">
<div class="block">Only useful for equinox: on felix we get the <code>file://</code> url already.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>java.net.URL</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getLocalURL(java.net.URL)">getLocalURL</a></span>&#8203;(java.net.URL&nbsp;url)</code></th>
<td class="colLast">
<div class="block">Only useful for equinox: on felix we get the <code>file://</code> or <code>jar://</code> url
already.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>java.io.File[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#locateJarsInsideBundle(org.osgi.framework.Bundle)">locateJarsInsideBundle</a></span>&#8203;(org.osgi.framework.Bundle&nbsp;bundle)</code></th>
<td class="colLast">
<div class="block">If the bundle is a jar, returns the jar.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="CLASS_NAME">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>CLASS_NAME</h4>
<pre>static final&nbsp;java.lang.String CLASS_NAME</pre>
<div class="block">The name of the custom implementation for this interface in a fragment.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../constant-values.html#org.eclipse.jetty.osgi.boot.utils.BundleFileLocatorHelper.CLASS_NAME">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a id="DEFAULT">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>DEFAULT</h4>
<pre>static final&nbsp;<a href="BundleFileLocatorHelper.html" title="interface in org.eclipse.jetty.osgi.boot.utils">BundleFileLocatorHelper</a> DEFAULT</pre>
<div class="block">The default instance supports felix and equinox</div>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="getBundleInstallLocation(org.osgi.framework.Bundle)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getBundleInstallLocation</h4>
<pre class="methodSignature">java.io.File&nbsp;getBundleInstallLocation&#8203;(org.osgi.framework.Bundle&nbsp;bundle)
throws java.lang.Exception</pre>
<div class="block">Works with equinox, felix, nuxeo and probably more. Not exactly in the
spirit of OSGi but quite necessary to support self-contained webapps and
other situations.
<p>
Currently only works with bundles that are not jar.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>bundle</code> - The bundle</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Its installation location as a file.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - if unable to get the install location</dd>
</dl>
</li>
</ul>
<a id="getFileInBundle(org.osgi.framework.Bundle,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFileInBundle</h4>
<pre class="methodSignature">java.io.File&nbsp;getFileInBundle&#8203;(org.osgi.framework.Bundle&nbsp;bundle,
java.lang.String&nbsp;path)
throws java.lang.Exception</pre>
<div class="block">Locate a file inside a bundle.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>bundle</code> - the bundle</dd>
<dd><code>path</code> - the path</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>file the file object</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - if unable to get the file</dd>
</dl>
</li>
</ul>
<a id="locateJarsInsideBundle(org.osgi.framework.Bundle)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>locateJarsInsideBundle</h4>
<pre class="methodSignature">java.io.File[]&nbsp;locateJarsInsideBundle&#8203;(org.osgi.framework.Bundle&nbsp;bundle)
throws java.lang.Exception</pre>
<div class="block">If the bundle is a jar, returns the jar. If the bundle is a folder, look
inside it and search for jars that it returns.
<p>
Good enough for our purpose (TldLocationsCache when it scans for tld
files inside jars alone. In fact we only support the second situation for
development purpose where the bundle was imported in pde and the classes
kept in a jar.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>bundle</code> - the bundle</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The jar(s) file that is either the bundle itself, either the jars
embedded inside it.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - if unable to locate the jars</dd>
</dl>
</li>
</ul>
<a id="findEntries(org.osgi.framework.Bundle,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>findEntries</h4>
<pre class="methodSignature">java.util.Enumeration&lt;java.net.URL&gt;&nbsp;findEntries&#8203;(org.osgi.framework.Bundle&nbsp;bundle,
java.lang.String&nbsp;entryPath)</pre>
<div class="block">Helper method equivalent to Bundle#getEntry(String entryPath) except that
it searches for entries in the fragments by using the findEntries method.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>bundle</code> - the bundle</dd>
<dd><code>entryPath</code> - the entry path</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>null or all the entries found for that path.</dd>
</dl>
</li>
</ul>
<a id="getLocalURL(java.net.URL)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLocalURL</h4>
<pre class="methodSignature">java.net.URL&nbsp;getLocalURL&#8203;(java.net.URL&nbsp;url)
throws java.lang.Exception</pre>
<div class="block">Only useful for equinox: on felix we get the <code>file://</code> or <code>jar://</code> url
already. Other OSGi implementations have not been tested
<p>
Get a URL to the bundle entry that uses a common protocol (i.e. <code>file:</code>
<code>jar:</code> or <code>http:</code> etc.).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>url</code> - the url</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a URL to the bundle entry that uses a common protocol</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - if unable to get the local url</dd>
</dl>
</li>
</ul>
<a id="getFileURL(java.net.URL)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getFileURL</h4>
<pre class="methodSignature">java.net.URL&nbsp;getFileURL&#8203;(java.net.URL&nbsp;url)
throws java.lang.Exception</pre>
<div class="block">Only useful for equinox: on felix we get the <code>file://</code> url already. Other
OSGi implementations have not been tested
<p>
Get a URL to the content of the bundle entry that uses the <code>file:</code>
protocol. The content of the bundle entry may be downloaded or extracted
to the local file system in order to create a file: URL.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>url</code> - the url</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a URL to the content of the bundle entry that uses the file:
protocol</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - if unable to get the file url</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/BundleFileLocatorHelper.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 1995&#x2013;2021 <a href="https://webtide.com">Webtide</a>. All rights reserved.</small></p>
</footer>
</body>
</html>