Skip to content

Commit

Permalink
rebase and add uses perm
Browse files Browse the repository at this point in the history
  • Loading branch information
laeubi committed Mar 12, 2024
1 parent 5d1d76d commit ac2899b
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 23 deletions.
10 changes: 2 additions & 8 deletions bundles/org.eclipse.osgi/.settings/.api_filters
Original file line number Diff line number Diff line change
@@ -1,16 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<component id="org.eclipse.osgi" version="2">
<resource path="supplement/src/org/eclipse/osgi/report/resolution/ResolutionReport.java" type="org.eclipse.osgi.report.resolution.ResolutionReport">
<filter id="403804204">
<filter id="403853384">
<message_arguments>
<message_argument value="@noimplement"/>
<message_argument value="org.eclipse.osgi.report.resolution.ResolutionReport"/>
<message_argument value="getProcessedPermutations()"/>
</message_arguments>
</filter>
<filter id="403804204">
<message_arguments>
<message_argument value="org.eclipse.osgi.report.resolution.ResolutionReport"/>
<message_argument value="getTotalPermutations()"/>
</message_arguments>
</filter>
</resource>
Expand Down
2 changes: 1 addition & 1 deletion bundles/org.eclipse.osgi/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ Bundle-Activator: org.eclipse.osgi.internal.framework.SystemBundleActivator
Bundle-Description: %systemBundle
Bundle-Copyright: %copyright
Bundle-Vendor: %eclipse.org
Bundle-Version: 3.19.100.qualifier
Bundle-Version: 3.20.0.qualifier
Bundle-Localization: systembundle
Bundle-DocUrl: http://www.eclipse.org
Eclipse-ExtensibleAPI: true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -650,7 +650,7 @@ public ResolutionReport resolve(Collection<Module> triggers, boolean triggersMan
private ResolutionReport resolve(Collection<Module> triggers, boolean triggersMandatory, boolean restartTriggers) {
if (isRefreshingSystemModule()) {
return new ModuleResolutionReport(null, Collections.emptyMap(),
new ResolutionException("Unable to resolve while shutting down the framework."), -1, -1); //$NON-NLS-1$
new ResolutionException("Unable to resolve while shutting down the framework."), -1, -1, -1); //$NON-NLS-1$
}
ResolutionReport report = null;
try (ResolutionLock.Permits resolutionPermits = _resolutionLock.acquire(1)) {
Expand All @@ -663,7 +663,7 @@ private ResolutionReport resolve(Collection<Module> triggers, boolean triggersMa
if (be.getType() == BundleException.REJECTED_BY_HOOK
|| be.getType() == BundleException.STATECHANGE_ERROR) {
return new ModuleResolutionReport(null, Collections.emptyMap(),
new ResolutionException(be), -1, -1);
new ResolutionException(be), -1, -1, -1);
}
}
throw e;
Expand All @@ -672,7 +672,7 @@ private ResolutionReport resolve(Collection<Module> triggers, boolean triggersMa
} catch (ResolutionLockException e) {
return new ModuleResolutionReport(null, Collections.emptyMap(),
new ResolutionException("Timeout acquiring lock for resolution", e, Collections.emptyList()), -1, //$NON-NLS-1$
-1);
-1, -1);
}
return report;
}
Expand Down Expand Up @@ -1341,7 +1341,7 @@ public ResolutionReport refresh(Collection<Module> initial) {
if (!isRefreshingSystemModule()) {
return resolve(refreshTriggers, false, true);
}
return new ModuleResolutionReport(null, null, null, -1, -1);
return new ModuleResolutionReport(null, null, null, -1, -1, -1);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,9 @@ public void addEntry(Resource resource, Entry.Type type, Object data) {
}

public ModuleResolutionReport build(Map<Resource, List<Wire>> resolutionResult, ResolutionException cause,
int totalPerm,
int processedPerm) {
return new ModuleResolutionReport(resolutionResult, resourceToEntries, cause, totalPerm, processedPerm);
int totalPerm, int processedPerm, int usesPerm) {
return new ModuleResolutionReport(resolutionResult, resourceToEntries, cause, totalPerm, processedPerm,
usesPerm);
}
}

Expand Down Expand Up @@ -81,11 +81,13 @@ public Type getType() {
private final Map<Resource, List<Wire>> resolutionResult;
private int totalPerm;
private int processedPerm;
private int usesPerm;

ModuleResolutionReport(Map<Resource, List<Wire>> resolutionResult, Map<Resource, List<Entry>> entries,
ResolutionException cause, int totalPerm, int processedPerm) {
ResolutionException cause, int totalPerm, int processedPerm, int usesPerm) {
this.totalPerm = totalPerm;
this.processedPerm = processedPerm;
this.usesPerm = usesPerm;
this.entries = entries == null ? Collections.emptyMap() : Collections.unmodifiableMap(new HashMap<>(entries));
this.resolutionResult = resolutionResult == null ? Collections.emptyMap()
: Collections.unmodifiableMap(resolutionResult);
Expand Down Expand Up @@ -192,4 +194,9 @@ public int getTotalPermutations() {
public int getProcessedPermutations() {
return processedPerm;
}

@Override
public int getUsesPermutations() {
return usesPerm;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -478,6 +478,7 @@ class ResolveLogger extends Logger {
private Map<Resource, ResolutionException> errors = null;
public int totalPerm;
public int processedPerm;
public int usesPerm;

public ResolveLogger() {
super(DEBUG_USES ? Logger.LOG_DEBUG : 0);
Expand Down Expand Up @@ -521,6 +522,9 @@ protected void doLog(int level, String msg, Throwable throwable) {
@Override
public void logPermutationAdded(PermutationType type, ToIntFunction<PermutationType> remaining) {
totalPerm++;
if (type == PermutationType.USES) {
usesPerm++;
}
}

PermutationType[] permutationTypes = PermutationType.values();
Expand Down Expand Up @@ -944,7 +948,7 @@ ModuleResolutionReport resolve() {
BundleException be = (BundleException) e.getCause();
if (be.getType() == BundleException.REJECTED_BY_HOOK) {
return new ModuleResolutionReport(null, Collections.emptyMap(),
new ResolutionException(be), -1, -1);
new ResolutionException(be), -1, -1, -1);
}
}
throw e;
Expand Down Expand Up @@ -988,9 +992,7 @@ ModuleResolutionReport resolve() {
if (DEBUG_WIRING) {
printWirings(result);
}
int total = logger.totalPerm;
int processed = logger.processedPerm;
report = reportBuilder.build(result, re, total, processed);
report = reportBuilder.build(result, re, logger.totalPerm, logger.processedPerm, logger.usesPerm);
if (DEBUG_REPORT) {
if (report.getResolutionException() != null) {
Debug.printStackTrace(report.getResolutionException());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

import java.util.List;
import java.util.Map;
import org.eclipse.pde.api.tools.annotations.NoImplement;
import org.osgi.annotation.versioning.ProviderType;
import org.osgi.framework.hooks.resolver.ResolverHook;
import org.osgi.resource.Resource;
Expand Down Expand Up @@ -98,6 +99,7 @@
* @since 3.10
*/
@ProviderType
@NoImplement
public interface ResolutionReport {
public interface Entry {
enum Type {
Expand Down Expand Up @@ -199,13 +201,20 @@ public interface Listener {
/**
* @return the number of permutations created to solve the problem or -1 if
* unknown
* @since 3.19
* @since 3.20
*/
int getTotalPermutations();

/**
* @return the number of processed permutations -1 if unknown
* @since 3.19
* @since 3.20
*/
int getProcessedPermutations();

/**
* @return the number of permutations cause by a use-constraint violation -1 if
* unknown
* @since 3.20
*/
int getUsesPermutations();
}

0 comments on commit ac2899b

Please sign in to comment.