blob: 4502df123d602d827cc230df5dfacb7aaf8026ef [file] [log] [blame]
<%--
Copyright (c) 2020 Eclipse contributors and others.
This program and the accompanying materials
are made available under the terms of the Eclipse Public License 2.0
which accompanies this distribution, and is available at
https://www.eclipse.org/legal/epl-2.0/
SPDX-License-Identifier: EPL-2.0
--%>
<%@jet
package="org.eclipse.justj.codegen.templates.jdeps"
class="JdepsIndex"
imports=""
builder="StringBuilder builder = new StringBuilder()"
nlString='"\\n"'
minimize="true"
skeleton="platform:/resource/org.eclipse.justj.codegen/src/org/eclipse/justj/codegen/model/util/JdepsIndex.java"%>
<%String title = "JustJ Jdeps";
int toggleCounter = 0;%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title><%=title%></title>
<meta name="keywords" content="eclipse,justj"/>
<meta name="description" content="JustJ's JDeps Report"/>
<link href="//fonts.googleapis.com/css?family=Open+Sans:400,700,300,600,100" rel="stylesheet" type="text/css"/>
<link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/styles.min.css"/>
<link rel="icon" type="image/ico" href="https://www.eclipse.org/justj/justj_favicon.ico"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
function expand_collapse(id, targetId) {
var e = document.getElementById(id);
var checked = e.checked;
var target = document.getElementById(targetId);
var targets = target.getElementsByTagName('input');
for (var i = 0; i < targets.length; i++) {
var input = targets[i];
input.checked = checked;
}
}
function filter(filter, id, targetClass) {
var e = document.getElementById(id);
var filterTargets = e.getElementsByClassName('filter-target');
for (var i = 0; i < filterTargets.length; i++) {
var target = filterTargets[i];
target.style.display = !filter ? target.localName = "li" ? "" : "block" : "none";
}
if (filter) {
var filterTargetsArray = [].slice.call(filterTargets);
var targets = e.getElementsByClassName(targetClass);
for (var i = 0; i < targets.length; i++) {
var target = targets[i];
target.style.display = "block";
for (var parent = target.parentNode; parent != e; parent = parent.parentNode) {
if (filterTargetsArray.includes(parent)) {
parent.style.display = parent.localName = "li" ? "" : "block";
}
}
}
}
}
var oldOnload = window.onload;
window.onload = function() {
document.getElementsByTag
var inputs = document.getElementsByTagName('input');
for (index = 0; index < inputs.length; ++index) {
var input = inputs[index];
input.checked = false;
}
if(oldOnload != null) {
oldUnload();
}
}
</script>
</head>
<body id="body_solstice">
<style>
.toggle {
display: none;
}
.toggle-label {
font-size: 100%;
margin-bottom: 0px;
font-weight: normal;
}
.toggle + .toggle-label + .toggle-content {
max-height: 0;
opacity: 0;
overflow: hidden;
transition: all .4s ease-in-out;
}
.toggle + .toggle-label > .toggle-state-on {
display: none;
}
.toggle + .toggle-label > .toggle-state-off {
display: inherit;
}
.toggle:checked + .toggle-label > .toggle-state-on {
display: inherit;
}
.toggle:checked + .toggle-label > .toggle-state-off {
display: none;
}
.toggle:checked + .toggle-label + .toggle-content {
max-height: none;
opacity: 1;
}
.toggle-content {
padding-left: 2em;
}
.toggle-label:hover, .toggle-label:hover * {
cursor: pointer;
}
.plain:link, .plain:visited {
color: inherit;
}
label:target {
border: 1px solid black;
}
</style>
<header role="banner" id="header-wrapper">
<div class="container">
<div class="row" id="header-row">
<div class="hidden-xs col-sm-8 col-md-6 col-lg-5" id="header-left">
<div class="wrapper-logo-default">
<a href="https://www.eclipse.org/justj?page=index">
<img class="logo-eclipse-default img-responsive hidden-xs" style="height: 50px; space: nowrap; display: inline-block;" alt="Project Logo" src="https://www.eclipse.org/justj/justj_title.svg"/>
</a>
</div>
</div>
</div>
</div>
</header>
<section class="hidden-print default-breadcrumbs" id="breadcrumb">
<div class="container">
<h3 class="sr-only">Breadcrumbs</h3>
<div class="row">
<div class="col-sm-16 padding-left-30">
<ol class="breadcrumb">
<li><a href="https://www.eclipse.org/">Home</a></li>
<li><a href="https://www.eclipse.org/projects/">Projects</a></li>
<li><a href="https://www.eclipse.org/justj?page=download">JustJ</a></li>
<li><a href="https://download.eclipse.org/justj/jdeps">Jdeps</a></li>
<%for (Map.Entry<String, String> entry : getBreadcrumbs().entrySet()) {%>
<%if (entry.getValue() == null) {%>
<li class="active"><%=entry.getKey()%></li>
<%} else if (entry.getValue().trim().isEmpty()) {%>
<li><%=entry.getKey()%></li>
<%} else {%>
<li><a href="<%=entry.getValue()%>"><%=entry.getKey()%></a></li>
<%}%>
<%}%>
</ol>
</div>
<div class="col-sm-8 margin-top-15"></div>
</div>
</div>
</section>
<main class="no-promo">
<div class="novaContent container" id="novaContent">
<div id="maincontent">
<h2 style="">
<%=title%>:
<a style="font-size: 66%;" href="<%=repoURI%>"><%=repoURI%></a>
<a href="justj.modules" target="modules" style="float: right; font-size: 75%;"><img style="height: 2ex; display: inline-block;" alt="justj" src="https://www.eclipse.org/justj/justj_title.svg"/>.modules</a>
</h2>
<p>
The plugins of this repository have been analyzed for module dependencies using jdeps.
The plugin dependencies of each module and the module dependencies of each plugin are summarized below.
</p>
<p>
The jdeps analysis of a plugin may produce warnings about split packages,
i.e., if the jar exports packages that are the same as exported by the module on which it depends,
or it may fail, i.e., if the jar has module dependencies that don't resolve.
Filters are provided to show only these issues.
</p>
<hr/>
<h4>
Module Dependencies
<input type="checkbox" id="toggle-id-<%=++toggleCounter%>" class="toggle" onclick="expand_collapse('toggle-id-<%=toggleCounter%>', 'mod-deps');"/>
<label for="toggle-id-<%=toggleCounter%>" class="toggle-label"><%=getToggleExpand(true)%></label>
<%if (!splitPackages.isEmpty()) {%>
<input name="module-split-packages" type="checkbox" onclick="filter(this.checked, 'mod-deps', 'split-package');" onload="this.value = '';"/>
<label for="module-split-packages" style="font-size: 75%;">Show Only Split Packages</label>
<%}%>
</h4>
<div id="mod-deps">
<%for (Map.Entry<String, Set<Plugin>> entry : modulePlugins.entrySet()) {
String module = entry.getKey();
int mainID = ++toggleCounter;%>
<div class="filter-target">
<input type="checkbox" id="toggle-id-<%=mainID%>" class="toggle"/>
<label for="toggle-id-<%=mainID%>" class="toggle-label" id="<%=module%>"><%=getToggleExpand(true)%> <%=module%></label>
<ul class="toggle-content filter-target" style="margin-left: 1em; margin-bottom: 0;">
<%for (Plugin plugin : entry.getValue()) {%>
<li class="filter-target">
<a href="#<%=plugin%>" class="plain"><%=plugin.getId()%> <span style="color: DarkOliveGreen; font-size: 90%;"><%=plugin.getVersion()%></span></a>
<%Set<String> splitPackages = getSplitPackages(module, plugin);
if (!splitPackages.isEmpty()) {%>
<ul style="margin-left: -2em; margin-top: 0; margin-bottom: 0; color: #E8BB14;" class="split-package filter-target">
<%for (String packageName : splitPackages) {%>
<li><%=packageName%></li>
<%}%>
</ul>
<%}%>
</li>
<%}%>
</ul>
</div>
<%}%>
</div>
<hr/>
<h4>
Plugin Dependencies
<input type="checkbox" id="toggle-id-<%=++toggleCounter%>" class="toggle" onclick="expand_collapse('toggle-id-<%=toggleCounter%>', 'plugin-deps');"/>
<label for="toggle-id-<%=toggleCounter%>" class="toggle-label"><%=getToggleExpand(true)%></label>
<%if (!pluginErrors.isEmpty()) {%>
<input name="plugin-errors" type="checkbox" onclick="filter(this.checked, 'plugin-deps', 'jdeps-error');" onload="this.value = '';"/>
<label for="plugin-errors" style="font-size: 75%;">Show Only Errors</label>
<%}%>
</h4>
<div id="plugin-deps">
<%for (Map.Entry<Plugin, Set<String>> entry : pluginModules.entrySet()) {
Plugin plugin = entry.getKey();
Set<String> modules = entry.getValue();
List<String> errors = pluginErrors.get(plugin);
int mainID = ++toggleCounter;%>
<div class="filter-target">
<input type="checkbox" id="toggle-id-<%=mainID%>" class="toggle"/>
<label for="toggle-id-<%=mainID%>" class="toggle-label" id="<%=plugin%>">
<%=getToggleExpand(!modules.isEmpty() || errors != null)%>
<%=plugin.getId()%>
<span style="color: DarkOliveGreen; font-size: 90%;"><%=plugin.getVersion()%></label>
<ul class="toggle-content filter-target" style="margin-left: 1em; margin-bottom: 0;">
<%for (String module : modules) {%>
<li class="filter-target">
<a href="#<%=module%>" class="plain"><%=module%></a>
<%Set<String> splitPackages = getSplitPackages(module, plugin);
if (!splitPackages.isEmpty()) {%>
<ul style="margin-left: -2em; margin-top: 0; margin-bottom: 0; color: #E8BB14;">
<%for (String packageName : splitPackages) {%>
<li><%=packageName%></li>
<%}%>
</ul>
<%}%>
</li>
<%}%>
<%if (errors != null) {%>
<li style="color: FireBrick; font-size: 80%;" class="jdeps-error">
<%for (String error : errors) {%>
<%=error%><br/>
<%}%>
</li>
<%}%>
</ul>
</div>
<%}%>
</div>
</div>
</div>
</main>
</body>
</html>