[java-identity-provider] 01/04: IDP-1854 Add a discovery option to the plugin command
Rod Widdowson
rdw at steadingsoftware.com
Sun Aug 29 15:08:31 UTC 2021
This is an automated email from the git hooks/post-receive script.
rdw pushed a commit to branch main
in repository java-identity-provider.
View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=7c35ae10a8735a9e5a013638dcee33778efd3d38
commit 7c35ae10a8735a9e5a013638dcee33778efd3d38
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Fri Aug 27 13:54:24 2021 +0100
IDP-1854 Add a discovery option to the plugin command
https://shibboleth.atlassian.net/browse/IDP-1854
Phase 2 - move more function from PluginState to PluginInfo.
---
.../net/shibboleth/idp/installer/V4Install.java | 2 +-
.../idp/installer/plugin/impl/PluginInfo.java | 26 ++++++++-
.../idp/installer/plugin/impl/PluginInstaller.java | 2 +-
.../installer/plugin/impl/PluginInstallerCLI.java | 32 ++++++------
.../idp/installer/plugin/impl/PluginState.java | 61 ++--------------------
.../idp/installer/plugin/impl/PluginStateTest.java | 26 ++++-----
6 files changed, 60 insertions(+), 89 deletions(-)
diff --git a/idp-installer/src/main/java/net/shibboleth/idp/installer/V4Install.java b/idp-installer/src/main/java/net/shibboleth/idp/installer/V4Install.java
index 8b301b3e6..6c5fcda81 100644
--- a/idp-installer/src/main/java/net/shibboleth/idp/installer/V4Install.java
+++ b/idp-installer/src/main/java/net/shibboleth/idp/installer/V4Install.java
@@ -159,7 +159,7 @@ public class V4Install extends AbstractInitializableComponent {
log.debug("Considering Plugin {}, version {}", pluginId, pluginVersion);
final PluginState state = new PluginState(plugin, Collections.emptyList());
state.initialize();
- if (!state.isSupportedWithIdPVersion(pluginVersion, idpVersion)) {
+ if (!state.getPluginInfo().isSupportedWithIdPVersion(pluginVersion, idpVersion)) {
log.warn("Installed Plugin {} version {} is not supported with IdP Version {}, continuing.",
pluginId, pluginVersion, idpVersion);
}
diff --git a/idp-installer/src/main/java/net/shibboleth/idp/installer/plugin/impl/PluginInfo.java b/idp-installer/src/main/java/net/shibboleth/idp/installer/plugin/impl/PluginInfo.java
index fc3f20d53..52569a6da 100644
--- a/idp-installer/src/main/java/net/shibboleth/idp/installer/plugin/impl/PluginInfo.java
+++ b/idp-installer/src/main/java/net/shibboleth/idp/installer/plugin/impl/PluginInfo.java
@@ -243,6 +243,30 @@ public class PluginInfo {
log.debug("Plugin {}: Available {}", pluginId, versionInfo.keySet());
return false;
}
- return PluginState.isSupportedWithIdPVersion(info, idPVersion);
+ return PluginInfo.isSupportedWithIdPVersion(info, idPVersion);
+ }
+
+ /** Is the specified plugin supported with this IdP version.
+ * Worker method for all 'isSupportedWith' classes.
+ * @param pluginVersionInfo the version info to consider
+ * @param idPVersion the version as a {@link PluginVersion}
+ * @return whether it is supported.
+ */
+ public static boolean isSupportedWithIdPVersion(final PluginState.VersionInfo pluginVersionInfo,
+ final PluginVersion idPVersion) {
+ final int maxCompare = idPVersion.compareTo(pluginVersionInfo.getMaxSupported());
+
+ if (maxCompare >= 0) {
+ // Exclusive:
+ // IdP (test against) Version is GREATER THAN OR EQUAL to our Max
+ return false;
+ }
+ final int minCompare = idPVersion.compareTo(pluginVersionInfo.getMinSupported());
+ if (minCompare >= 0) {
+ // Inclusive:
+ // IdP (test against) version is GREATER THAN OR EQUAL to our Min
+ return true;
+ }
+ return false;
}
}
diff --git a/idp-installer/src/main/java/net/shibboleth/idp/installer/plugin/impl/PluginInstaller.java b/idp-installer/src/main/java/net/shibboleth/idp/installer/plugin/impl/PluginInstaller.java
index 4077ca299..c51de4434 100644
--- a/idp-installer/src/main/java/net/shibboleth/idp/installer/plugin/impl/PluginInstaller.java
+++ b/idp-installer/src/main/java/net/shibboleth/idp/installer/plugin/impl/PluginInstaller.java
@@ -279,7 +279,7 @@ public final class PluginInstaller extends AbstractInitializableComponent implem
}
final PluginVersion pluginVersion = new PluginVersion(description);
final PluginVersion idpVersion = new PluginVersion(Version.getVersion());
- if (!state.isSupportedWithIdPVersion(pluginVersion, idpVersion)) {
+ if (!state.getPluginInfo().isSupportedWithIdPVersion(pluginVersion, idpVersion)) {
LOG.error("Plugin {} version {} is not supported with IdP Version {}",
pluginId, pluginVersion, idpVersion);
throw new BuildException("Version Mismatch");
diff --git a/idp-installer/src/main/java/net/shibboleth/idp/installer/plugin/impl/PluginInstallerCLI.java b/idp-installer/src/main/java/net/shibboleth/idp/installer/plugin/impl/PluginInstallerCLI.java
index fab719d0a..f41f8e0a7 100644
--- a/idp-installer/src/main/java/net/shibboleth/idp/installer/plugin/impl/PluginInstallerCLI.java
+++ b/idp-installer/src/main/java/net/shibboleth/idp/installer/plugin/impl/PluginInstallerCLI.java
@@ -234,11 +234,12 @@ public final class PluginInstallerCLI extends AbstractIdPHomeAwareCommandLine<Pl
log.error("Could not interrogate plugin {}", plugin.getPluginId(), e);
return;
}
- final Map<PluginVersion, VersionInfo> versions = state.getAvailableVersions();
+ final Map<PluginVersion, VersionInfo> versions = state.getPluginInfo().getAvailableVersions();
outOrLog("\tVersions ");
for (final Entry<PluginVersion, VersionInfo> entry : versions.entrySet()) {
final String downLoadDetails;
- if (state.getUpdateBaseName(entry.getKey()) == null || state.getUpdateURL(entry.getKey())==null ) {
+ if (state.getPluginInfo().getUpdateBaseName(entry.getKey()) == null ||
+ state.getPluginInfo().getUpdateURL(entry.getKey())==null ) {
downLoadDetails = " - No download available";
} else {
downLoadDetails = "";
@@ -347,14 +348,13 @@ public final class PluginInstallerCLI extends AbstractIdPHomeAwareCommandLine<Pl
/** Find the best update version. Helper function for {@linkplain #doUpdate(String, PluginVersion, boolean)}.
- * @param plugin The Plugin
- * @param state all about the plugin
+ * @param pluginVersion The Plugin version
+ * @param pluginInfo all about the plugin
* @return the best version (or null)
*/
- @Nullable private PluginVersion getBestVersion(final IdPPlugin plugin, final PluginState state) {
+ @Nullable private PluginVersion getBestVersion(final PluginVersion pluginVersion , final PluginInfo pluginInfo) {
final String idpVersionString = net.shibboleth.idp.Version.getVersion();
- final PluginVersion myVersion = new PluginVersion(plugin);
final PluginVersion idPVersion;
if (idpVersionString == null) {
@@ -364,27 +364,27 @@ public final class PluginInstallerCLI extends AbstractIdPHomeAwareCommandLine<Pl
idPVersion = new PluginVersion(idpVersionString);
}
- final List<PluginVersion> availableVersions = new ArrayList<>(state.getAvailableVersions().keySet());
+ final List<PluginVersion> availableVersions = new ArrayList<>(pluginInfo.getAvailableVersions().keySet());
availableVersions.sort(null);
log.debug("Considering versions: {}", availableVersions);
for (int i = availableVersions.size()-1; i >= 0; i--) {
final PluginVersion version = availableVersions.get(i);
- if (version.compareTo(myVersion) <= 0) {
- log.debug("Version {} is less than or the same as {}. All done", version, myVersion);
+ if (version.compareTo(pluginVersion) <= 0) {
+ log.debug("Version {} is less than or the same as {}. All done", version, pluginVersion);
return null;
}
- final VersionInfo versionInfo = state.getAvailableVersions().get(version);
+ final VersionInfo versionInfo = pluginInfo.getAvailableVersions().get(version);
if (versionInfo.getSupportLevel() != SupportLevel.Current) {
log.debug("Version {} has support level {}, ignoring", version, versionInfo.getSupportLevel());
continue;
}
- if (!state.isSupportedWithIdPVersion(version, idPVersion)) {
+ if (!pluginInfo.isSupportedWithIdPVersion(version, idPVersion)) {
log.debug("Version {} is not supported with idpVersion {}", version, idPVersion);
continue;
}
log.debug("Version {} is supported with idpVersion {}", version, idPVersion);
- if (state.getUpdateURL(version) == null || state.getUpdateBaseName(version) == null) {
+ if (pluginInfo.getUpdateURL(version) == null || pluginInfo.getUpdateBaseName(version) == null) {
log.debug("Version {} is does not have update information", version);
continue;
}
@@ -419,14 +419,14 @@ public final class PluginInstallerCLI extends AbstractIdPHomeAwareCommandLine<Pl
}
final PluginVersion installVersion;
if (pluginVersion == null) {
- installVersion = getBestVersion(plugin, state);
+ installVersion = getBestVersion(new PluginVersion(plugin), state.getPluginInfo());
if (installVersion == null) {
log.info("No suitable update version available");
return;
}
} else {
installVersion = pluginVersion;
- final Map<PluginVersion, VersionInfo> versions = state.getAvailableVersions();
+ final Map<PluginVersion, VersionInfo> versions = state.getPluginInfo().getAvailableVersions();
if (!versions.containsKey(installVersion)) {
log.error("Specified version {} could not be found. Available versions: {}",
installVersion, versions.keySet());
@@ -434,8 +434,8 @@ public final class PluginInstallerCLI extends AbstractIdPHomeAwareCommandLine<Pl
}
}
// just use the tgz version - its an update so it should be jar files only
- installer.installPlugin(state.getUpdateURL(installVersion),
- state.getUpdateBaseName(installVersion) + ".tar.gz",
+ installer.installPlugin(state.getPluginInfo().getUpdateURL(installVersion),
+ state.getPluginInfo().getUpdateBaseName(installVersion) + ".tar.gz",
checkVersion);
}
diff --git a/idp-installer/src/main/java/net/shibboleth/idp/installer/plugin/impl/PluginState.java b/idp-installer/src/main/java/net/shibboleth/idp/installer/plugin/impl/PluginState.java
index 017fcfedd..484368b69 100644
--- a/idp-installer/src/main/java/net/shibboleth/idp/installer/plugin/impl/PluginState.java
+++ b/idp-installer/src/main/java/net/shibboleth/idp/installer/plugin/impl/PluginState.java
@@ -20,11 +20,9 @@ package net.shibboleth.idp.installer.plugin.impl;
import java.io.IOException;
import java.net.URL;
import java.util.List;
-import java.util.Map;
import java.util.Properties;
import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
import org.apache.http.client.HttpClient;
import org.slf4j.Logger;
@@ -37,7 +35,6 @@ import net.shibboleth.idp.plugin.IdPPlugin;
import net.shibboleth.idp.plugin.PluginSupport.SupportLevel;
import net.shibboleth.idp.plugin.PluginVersion;
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
import net.shibboleth.utilities.java.support.component.AbstractInitializableComponent;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.component.ComponentSupport;
@@ -80,20 +77,11 @@ public class PluginState extends AbstractInitializableComponent {
myPluginVersion = new PluginVersion(plugin);
}
- /** Get the base URL for this version.
- * @param version which version
- * @return the base URL
+ /** get our PluginInfo.
+ * @return our PluginInfo.
*/
- @Nullable public URL getUpdateURL(final PluginVersion version) {
- return myPluginInfo.getUpdateURL(version);
- }
-
- /** Get the base Name for this version.
- * @param version which version
- * @return the base name
- */
- @Nullable public String getUpdateBaseName(final PluginVersion version) {
- return myPluginInfo.getUpdateBaseName(version);
+ public PluginInfo getPluginInfo() {
+ return myPluginInfo;
}
/** (try to) populate the information about this plugin.
@@ -187,47 +175,6 @@ public class PluginState extends AbstractInitializableComponent {
}
// CheckStyle: CyclomaticComplexity ON
- /** Is the specified plugin supported with this IdP version.
- * @param pluginVersion the version if the plugin as a {@link PluginVersion}
- * @param idPVersion the version if the IDP as a {@link PluginVersion}
- * @return whether it is supported.
- */
- public boolean isSupportedWithIdPVersion(final PluginVersion pluginVersion, final PluginVersion idPVersion) {
- return myPluginInfo.isSupportedWithIdPVersion(pluginVersion, idPVersion);
- }
-
- /** Is the specified plugin supported with this IdP version.
- * Worker method for all 'isSupportedWith' classes.
- * @param pluginVersionInfo the version info to consider
- * @param idPVersion the version as a {@link PluginVersion}
- * @return whether it is supported.
- */
- public static boolean isSupportedWithIdPVersion(final VersionInfo pluginVersionInfo,
- final PluginVersion idPVersion) {
- final int maxCompare = idPVersion.compareTo(pluginVersionInfo.getMaxSupported());
-
- if (maxCompare >= 0) {
- // Exclusive:
- // IdP (test against) Version is GREATER THAN OR EQUAL to our Max
- return false;
- }
- final int minCompare = idPVersion.compareTo(pluginVersionInfo.getMinSupported());
- if (minCompare >= 0) {
- // Inclusive:
- // IdP (test against) version is GREATER THAN OR EQUAL to our Min
- return true;
- }
- return false;
- }
-
- /** Return all announced versions.
- * @return the versions.
- */
- @Nonnull @NotEmpty public Map<PluginVersion, VersionInfo> getAvailableVersions() {
- ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
- return myPluginInfo.getAvailableVersions();
- }
-
/** Encapsulation of the information about a given IdP version. */
public static class VersionInfo {
diff --git a/idp-installer/src/test/java/net/shibboleth/idp/installer/plugin/impl/PluginStateTest.java b/idp-installer/src/test/java/net/shibboleth/idp/installer/plugin/impl/PluginStateTest.java
index 266beecbf..2a7c96163 100644
--- a/idp-installer/src/test/java/net/shibboleth/idp/installer/plugin/impl/PluginStateTest.java
+++ b/idp-installer/src/test/java/net/shibboleth/idp/installer/plugin/impl/PluginStateTest.java
@@ -42,7 +42,7 @@ public class PluginStateTest {
private boolean testSupportState(final PluginVersion pluginVersion, final PluginState state, final String IdpVersion) {
final PluginVersion idPVersion = new PluginVersion(IdpVersion);
- return state.isSupportedWithIdPVersion(pluginVersion, idPVersion);
+ return state.getPluginInfo().isSupportedWithIdPVersion(pluginVersion, idPVersion);
}
@Test
@@ -57,11 +57,11 @@ public class PluginStateTest {
final PluginVersion pluginVersion = new PluginVersion(simple.getMajorVersion(), simple.getMinorVersion(), simple.getPatchVersion());
assertEquals(pluginVersion, new PluginVersion("1.2.3"));
- assertEquals(state.getAvailableVersions().size(), 3);
- assertTrue(state.getAvailableVersions().containsKey(new PluginVersion(1, 2, 3)));
- assertTrue(state.getAvailableVersions().containsKey(new PluginVersion(1, 2, 4)));
- assertTrue(state.getAvailableVersions().containsKey(new PluginVersion(2,0,0)));
- assertFalse(state.getAvailableVersions().containsKey(new PluginVersion(3, 2, 3)));
+ assertEquals(state.getPluginInfo().getAvailableVersions().size(), 3);
+ assertTrue(state.getPluginInfo().getAvailableVersions().containsKey(new PluginVersion(1, 2, 3)));
+ assertTrue(state.getPluginInfo().getAvailableVersions().containsKey(new PluginVersion(1, 2, 4)));
+ assertTrue(state.getPluginInfo().getAvailableVersions().containsKey(new PluginVersion(2,0,0)));
+ assertFalse(state.getPluginInfo().getAvailableVersions().containsKey(new PluginVersion(3, 2, 3)));
assertTrue(testSupportState(pluginVersion, state, "4.1.0"));
assertTrue(testSupportState(pluginVersion, state, "4.2.0"));
@@ -94,13 +94,13 @@ public class PluginStateTest {
final PluginVersion v124 = new PluginVersion(1,2,4);
final PluginVersion v2 = new PluginVersion(2,0,0);
- assertEquals(state.getUpdateURL(v123), new URL("https://example.org/plugins/"));
- assertEquals(state.getUpdateURL(v124), new URL("https://example.org/plugins4/"));
- assertEquals(state.getUpdateURL(v2), new URL("https://example.org/plugins2/"));
+ assertEquals(state.getPluginInfo().getUpdateURL(v123), new URL("https://example.org/plugins/"));
+ assertEquals(state.getPluginInfo().getUpdateURL(v124), new URL("https://example.org/plugins4/"));
+ assertEquals(state.getPluginInfo().getUpdateURL(v2), new URL("https://example.org/plugins2/"));
- assertEquals(state.getUpdateBaseName(v123), "base-1.2.3-1.2.3");
- assertEquals(state.getUpdateBaseName(v124), "base-1.2.4-1.2.4");
- assertEquals(state.getUpdateBaseName(v2), "base-1-2-4");
+ assertEquals(state.getPluginInfo().getUpdateBaseName(v123), "base-1.2.3-1.2.3");
+ assertEquals(state.getPluginInfo().getUpdateBaseName(v124), "base-1.2.4-1.2.4");
+ assertEquals(state.getPluginInfo().getUpdateBaseName(v2), "base-1-2-4");
}
@Test
@@ -121,6 +121,6 @@ public class PluginStateTest {
final PluginState state = new PluginState(simple, Collections.EMPTY_LIST);
state.initialize();
- assertEquals(state.getAvailableVersions().size(), 3);
+ assertEquals(state.getPluginInfo().getAvailableVersions().size(), 3);
}
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list