Browse Source

Simplify current plugin release detection, ignore currentRelease registry field

tags/v1.5.1
James Moger 10 years ago
parent
commit
67278f5d0c

+ 1
- 0
releases.moxie View File

@@ -12,6 +12,7 @@ r23: {
fixes: ~
changes:
- improve French translation (pr-176)
- simplify current plugin release detection and ignore the currentRelease registry field
additions: ~
dependencyChanges:
- update to Apache MINA/SSHD 0.11.0 (issue-410)

+ 1
- 1
src/main/java/com/gitblit/manager/PluginManager.java View File

@@ -377,7 +377,7 @@ public class PluginManager implements IPluginManager, PluginStateListener {
List<PluginRegistration> list = getRegisteredPlugins();
Iterator<PluginRegistration> itr = list.iterator();
while (itr.hasNext()) {
if (state != itr.next().getInstallState()) {
if (state != itr.next().getInstallState(getSystemVersion())) {
itr.remove();
}
}

+ 14
- 33
src/main/java/com/gitblit/models/PluginRegistry.java View File

@@ -80,8 +80,6 @@ public class PluginRegistry implements Serializable {
public String projectUrl;
public String currentRelease;
public transient String installedRelease;
public transient String registry;
@@ -95,38 +93,17 @@ public class PluginRegistry implements Serializable {
public PluginRelease getCurrentRelease(Version system) {
PluginRelease current = null;
if (!StringUtils.isEmpty(currentRelease)) {
// find specified
current = getRelease(currentRelease);
}
if (current != null) {
// verify the current release is acceptable for this system
Date date = new Date(0);
for (PluginRelease pv : releases) {
Version requires = Version.ZERO;
if (!StringUtils.isEmpty(current.requires)) {
requires = Version.createVersion(current.requires);
}
if (!system.isZero() && !system.atLeast(requires)) {
// requires newer system version
current = null;
if (!StringUtils.isEmpty(pv.requires)) {
requires = Version.createVersion(pv.requires);
}
}
if (current == null) {
// find by date
Date date = new Date(0);
for (PluginRelease pv : releases) {
Version requires = Version.ZERO;
if (!StringUtils.isEmpty(pv.requires)) {
requires = Version.createVersion(pv.requires);
}
if (system.isZero() || system.atLeast(requires)) {
if (pv.date.after(date)) {
current = pv;
date = pv.date;
}
if (system.isZero() || system.atLeast(requires)) {
if (pv.date.after(date)) {
current = pv;
date = pv.date;
}
}
}
@@ -142,12 +119,16 @@ public class PluginRegistry implements Serializable {
return null;
}
public InstallState getInstallState() {
public InstallState getInstallState(Version system) {
if (StringUtils.isEmpty(installedRelease)) {
return InstallState.NOT_INSTALLED;
}
Version ir = Version.createVersion(installedRelease);
Version cr = Version.createVersion(currentRelease);
Version cr = Version.ZERO;
PluginRelease curr = getCurrentRelease(system);
if (cr != null) {
cr = Version.createVersion(curr.version);
}
switch (ir.compareTo(cr)) {
case -1:
return InstallState.UNKNOWN;

+ 5
- 5
src/main/java/com/gitblit/transport/ssh/commands/PluginDispatcher.java View File

@@ -283,7 +283,7 @@ public class PluginDispatcher extends DispatchCommand {
state = Joiner.on(", ").join(InstallState.INSTALLED, pw.getPluginState());
} else {
// registered, installed plugin
state = Joiner.on(", ").join(reg.getInstallState(), pw.getPluginState());
state = Joiner.on(", ").join(reg.getInstallState(system), pw.getPluginState());
}

StringBuilder sb = new StringBuilder();
@@ -486,9 +486,9 @@ public class PluginDispatcher extends DispatchCommand {
curr = new PluginRelease();
}
if (verbose) {
data[i] = new Object[] {p.id, p.description, p.installedRelease, curr.version, curr.requires, p.getInstallState(), p.registry};
data[i] = new Object[] {p.id, p.description, p.installedRelease, curr.version, curr.requires, p.getInstallState(system), p.registry};
} else {
data[i] = new Object[] {p.id, p.installedRelease, curr.version, curr.requires, p.getInstallState()};
data[i] = new Object[] {p.id, p.installedRelease, curr.version, curr.requires, p.getInstallState(system)};
}
}

@@ -504,9 +504,9 @@ public class PluginDispatcher extends DispatchCommand {
curr = new PluginRelease();
}
if (verbose) {
outTabbed(p.id, p.description, p.installedRelease, curr.version, curr.requires, p.getInstallState(), p.provider, p.registry);
outTabbed(p.id, p.description, p.installedRelease, curr.version, curr.requires, p.getInstallState(system), p.provider, p.registry);
} else {
outTabbed(p.id, p.installedRelease, curr.version, curr.requires, p.getInstallState());
outTabbed(p.id, p.installedRelease, curr.version, curr.requires, p.getInstallState(system));
}
}
}

Loading…
Cancel
Save