[java-identity-provider] 05/09: IDP-2106 Remove all API interfaces from the installer
Rod Widdowson
rdw at steadingsoftware.com
Thu May 18 10:21:51 UTC 2023
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=cf337edc659e665ae482384993e53576f21b9026
commit cf337edc659e665ae482384993e53576f21b9026
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Wed May 17 13:58:13 2023 +0100
IDP-2106 Remove all API interfaces from the installer
https://shibboleth.atlassian.net/browse/IDP-2106
Remove the InstallerProperties Interface.
---
.../net/shibboleth/idp/installer/BuildWar.java | 2 +-
.../shibboleth/idp/installer/CopyDistribution.java | 4 +-
.../idp/installer/InstallerProperties.java | 164 ---------------------
.../idp/installer/InstallerPropertiesImpl.java | 142 +++++++++++-------
.../net/shibboleth/idp/installer/V4Install.java | 10 +-
.../idp/installer/impl/CurrentInstallState.java | 4 +-
.../java/net/shibboleth/idp/installer/Test.java | 2 +-
7 files changed, 100 insertions(+), 228 deletions(-)
diff --git a/idp-installer/src/main/java/net/shibboleth/idp/installer/BuildWar.java b/idp-installer/src/main/java/net/shibboleth/idp/installer/BuildWar.java
index c46995d7f..f2be3cd0c 100644
--- a/idp-installer/src/main/java/net/shibboleth/idp/installer/BuildWar.java
+++ b/idp-installer/src/main/java/net/shibboleth/idp/installer/BuildWar.java
@@ -61,7 +61,7 @@ public final class BuildWar extends AbstractInitializableComponent {
* @param props The environment for the work.
* @param installState Where we are right now.
*/
- public BuildWar(@Nonnull final InstallerProperties props, @Nonnull final CurrentInstallState installState) {
+ public BuildWar(@Nonnull final InstallerPropertiesImpl props, @Nonnull final CurrentInstallState installState) {
if (!props.isInitialized()) {
throw new UninitializedComponentException("Installer Properties not initialized");
}
diff --git a/idp-installer/src/main/java/net/shibboleth/idp/installer/CopyDistribution.java b/idp-installer/src/main/java/net/shibboleth/idp/installer/CopyDistribution.java
index c410e7381..6dd2d336b 100644
--- a/idp-installer/src/main/java/net/shibboleth/idp/installer/CopyDistribution.java
+++ b/idp-installer/src/main/java/net/shibboleth/idp/installer/CopyDistribution.java
@@ -43,7 +43,7 @@ public final class CopyDistribution extends AbstractInitializableComponent {
private final Logger log = InstallationLogger.getLogger(CopyDistribution.class);
/** Properties for the job. */
- @Nonnull private final InstallerProperties installerProps;
+ @Nonnull private final InstallerPropertiesImpl installerProps;
/** The state of the current install. */
@Nonnull private final CurrentInstallState installState;
@@ -52,7 +52,7 @@ public final class CopyDistribution extends AbstractInitializableComponent {
* @param props The environment for the work.
* @param state Where we are right now.
*/
- public CopyDistribution(@Nonnull final InstallerProperties props, @Nonnull final CurrentInstallState state) {
+ public CopyDistribution(@Nonnull final InstallerPropertiesImpl props, @Nonnull final CurrentInstallState state) {
if (!props.isInitialized()) {
throw new UninitializedComponentException("Installer Properties not Initialized");
}
diff --git a/idp-installer/src/main/java/net/shibboleth/idp/installer/InstallerProperties.java b/idp-installer/src/main/java/net/shibboleth/idp/installer/InstallerProperties.java
deleted file mode 100644
index e459a0396..000000000
--- a/idp-installer/src/main/java/net/shibboleth/idp/installer/InstallerProperties.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements. See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.installer;
-
-import java.nio.file.Path;
-import java.util.Set;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import org.apache.tools.ant.BuildException;
-
-import net.shibboleth.shared.annotation.constraint.NotLive;
-import net.shibboleth.shared.annotation.constraint.Unmodifiable;
-import net.shibboleth.shared.collection.CollectionSupport;
-import net.shibboleth.shared.component.InitializableComponent;
-
-/** Interface to describe simply parameterization and status of the installation.
- */
-public interface InstallerProperties extends InitializableComponent {
-
- /** Those modules which are "core". */
- @Nonnull public static final Set<String> CORE_MODULES = CollectionSupport.setOf("idp.Core");
-
- /** Those modules enabled by default. */
- @Nonnull public static final Set<String> DEFAULT_MODULES = CollectionSupport.setOf("idp.EditWebApp",
- "idp.CommandLine" ,"idp.authn.Password", "idp.admin.Hello");
-
- /** Get where we are installing/updating/building the war.
- * @return the target directory
- * @throws BuildException if something goes awry.
- */
- @Nonnull public Path getTargetDir() throws BuildException;
-
- /** Does the user want us to *not* tidy up.
- * @return do we not tidy up?*/
- public boolean isNoTidy();
-
- /** Mode to set on all files in credentials.
- * @return the mode
- */
- @Nonnull public String getCredentialsKeyFileMode();
-
- /** Group to set on all files in credentials and conf.
- * @return the mode or null if none to be set
- */
- @Nullable public String getCredentialsGroup();
-
- /** Do we set the mode?
- * @return do we the mode
- */
- public boolean isSetGroupAndMode();
-
- /** Where is the install coming from?
- * @return the source directory
- */
- @Nullable public Path getSourceDir();
-
- /** Get the EntityId for this install.
- * @return the name.
- */
- @Nonnull public String getEntityID();
-
- /** Get the host name for this install.
- * @return the host name.
- */
- @Nonnull public String getHostName();
-
- /** Get the scope for this installation.
- * @return The scope.
- */
- @Nonnull public String getScope();
-
- /** Get the SubjectAltName for the certificates.
- * @return the SubjectAltName
- */
- @Nonnull public String getSubjectAltName();
-
- /** Get the password for the keystore for this installation.
- * @return the password.
- */
- @Nonnull public String getKeyStorePassword();
-
- /** Get the password for the sealer for this installation.
- * @return the password.
- */
- @Nonnull public String getSealerPassword();
-
- /** Get the alias for the sealer key.
- * @return the alias
- */
- @Nonnull public String getSealerAlias();
-
- /** Get the key size for signing, encryption and backchannel.
- * @return the keysize */
- public int getKeySize();
-
- /** Get the a file to merge with idp.properties or null.
- *
- * @return the file or null if it none required.
- * @throws BuildException if badness happens
- */
- @Nullable public Path getIdPMergeProperties() throws BuildException;
-
- /** Get the a file to merge with ldap.properties or null.
- *
- * @return the path or null if it none required.
- * @throws BuildException if badness happens
- */
- @Nullable public Path getLDAPMergeProperties() throws BuildException;
-
- /** Get the LDAP password iff one was provided. DO NOT PROMPT
- *
- * @return the password if provided by a properties
- * @throws BuildException if badness happens
- */
- @Nullable public String getLDAPPassword() throws BuildException;
-
- /** Get a directory to use to "pre-overlay" the conf directory.
- * Files will be copied from here if they don't already exist in conf,
- * <b>before</b> the files are copied from the distribution.
- * @return the path or null if non specified.
- * @throws BuildException if badness happens
- */
- @Deprecated
- @Nullable public Path getConfPreOverlay() throws BuildException;
-
- /** Get a path to use to do the initial edit-webapp populate.
- * @return the path or null if non specified.
- * @throws BuildException if badness happens
- */
- @Deprecated
- @Nullable public Path getInitialEditWeb() throws BuildException;
-
- /** Get the modules to enable after first install.
- * @return the modules
- */
- @Nonnull @NotLive @Unmodifiable public default Set<String> getModulesToEnable() {
- return DEFAULT_MODULES;
- }
-
- /** Get the modules to enable before ant install.
- * @return the modules
- */
- @Nonnull @NotLive @Unmodifiable public default Set<String> getCoreModules() {
- return CORE_MODULES;
- }
-
-}
diff --git a/idp-installer/src/main/java/net/shibboleth/idp/installer/InstallerPropertiesImpl.java b/idp-installer/src/main/java/net/shibboleth/idp/installer/InstallerPropertiesImpl.java
index 6c6480365..d255b80bd 100644
--- a/idp-installer/src/main/java/net/shibboleth/idp/installer/InstallerPropertiesImpl.java
+++ b/idp-installer/src/main/java/net/shibboleth/idp/installer/InstallerPropertiesImpl.java
@@ -53,12 +53,12 @@ import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.primitive.NonnullSupplier;
import net.shibboleth.shared.primitive.StringSupport;
-/** Class implement {@link InstallerProperties} with properties/UI driven values.
+/** Class which encapsulated all the properties/UI driven configuration of an install.
NOTE Updated to this properties should be reflected in the "PropertyDriverInstallation" wiki page."/
*/
-public class InstallerPropertiesImpl extends AbstractInitializableComponent implements InstallerProperties {
+public class InstallerPropertiesImpl extends AbstractInitializableComponent {
/** The base directory, inherited and shared with ant. */
public static final String ANT_BASE_DIR = Launcher.ANTHOME_PROPERTY;
@@ -75,12 +75,6 @@ public class InstallerPropertiesImpl extends AbstractInitializableComponent impl
/** The LDAP Password (usually associated with a username in ldap.properties). */
public static final String LDAP_PASSWORD = "idp.LDAP.credential";
- /** The name of a directory to overlay "under" the distribution conf. */
- public static final String CONF_PRE_OVERLAY = "idp.conf.preoverlay";
-
- /** The name of a directory to use to populate the initial webapp. */
- public static final String INITIAL_EDIT_WEBAPP = "idp.initial.edit-webapp";
-
/** Where to install to. Default is basedir */
public static final String TARGET_DIR = "idp.target.dir";
@@ -131,7 +125,7 @@ public class InstallerPropertiesImpl extends AbstractInitializableComponent impl
public static final int DEFAULT_KEY_SIZE = 3072;
/** Class logger. */
- @Nonnull private final Logger log = InstallationLogger.getLogger(InstallerProperties.class);
+ @Nonnull private final Logger log = InstallationLogger.getLogger(InstallerPropertiesImpl.class);
/** The base directory. */
@NonnullAfterInit private Path baseDir;
@@ -187,6 +181,13 @@ public class InstallerPropertiesImpl extends AbstractInitializableComponent impl
/** Input handler from the prompting. */
private final InputHandler inputHandler;
+ /** Those modules which are "core". */
+ @Nonnull public static final Set<String> CORE_MODULES = CollectionSupport.setOf("idp.Core");
+
+ /** Those modules enabled by default. */
+ @Nonnull public static final Set<String> DEFAULT_MODULES = CollectionSupport.setOf("idp.EditWebApp",
+ "idp.CommandLine" ,"idp.authn.Password", "idp.admin.Hello");
+
/**
* Constructor.
* @param copiedDistribution Has the distribution been copied? If no we don't need the source dir.
@@ -346,8 +347,10 @@ public class InstallerPropertiesImpl extends AbstractInitializableComponent impl
return result;
}
- /** {@inheritDoc}
+ /** Get where we are installing/updating/building the war.
* This is slightly complicated because the default depends on what we are doing.
+ * @return the target directory
+ * @throws BuildException if something goes awry.
*/
@Nonnull public Path getTargetDir() throws BuildException {
checkComponentActive();
@@ -368,13 +371,15 @@ public class InstallerPropertiesImpl extends AbstractInitializableComponent impl
return td;
}
- /** {@inheritDoc} */
+ /** Where is the install coming from?
+ * @return the source directory
+ */
@Nullable public Path getSourceDir() {
return srcDir;
}
- /** {@inheritDoc}
- * Defaults to information pulled from {{@link #getHostName()}.
+ /** Get the EntityId for this install.
+ * @return the name.
*/
@Nonnull public String getEntityID() {
String result = entityID;
@@ -384,7 +389,8 @@ public class InstallerPropertiesImpl extends AbstractInitializableComponent impl
return result;
}
- /** {@inheritDoc} */
+ /** Does the user want us to *not* tidy up.
+ * @return do we not tidy up?*/
public boolean isNoTidy() {
return !tidy;
}
@@ -453,8 +459,9 @@ public class InstallerPropertiesImpl extends AbstractInitializableComponent impl
}
// CheckStyle: CyclomaticComplexity ON
- /** {@inheritDoc}
+ /** Get the host name for this install.
* Defaults to information pulled from the network.
+ * @return the host name.
*/
@Nonnull public String getHostName() {
String result = hostname;
@@ -464,8 +471,10 @@ public class InstallerPropertiesImpl extends AbstractInitializableComponent impl
return result;
}
- /** {@inheritDoc} */
- @Override @Nonnull public String getCredentialsKeyFileMode() {
+ /** Mode to set on all files in credentials.
+ * @return the mode
+ */
+ @Nonnull public String getCredentialsKeyFileMode() {
String result = credentialsKeyFileMode;
if (result != null) {
return result;
@@ -475,13 +484,16 @@ public class InstallerPropertiesImpl extends AbstractInitializableComponent impl
return result;
}
- /** {@inheritDoc} */
- @Override @Nullable public String getCredentialsGroup() {
+ /** Group to set on all files in credentials and conf.
+ * @return the mode or null if none to be set
+ */
+ @Nullable public String getCredentialsGroup() {
return installerProperties.getProperty(GROUP_CONF_CREDENTIALS);
}
- /** {@inheritDoc} */
- @Override
+ /** Do we set the mode?
+ * @return do we the mode
+ */
public boolean isSetGroupAndMode() {
return setGroupAndMode;
}
@@ -500,8 +512,10 @@ public class InstallerPropertiesImpl extends AbstractInitializableComponent impl
return "localdomain";
}
- /** {@inheritDoc}. */
- @Override @Nonnull public String getScope() {
+ /** Get the scope for this installation.
+ * @return The scope.
+ */
+ @Nonnull public String getScope() {
String result = scope;
if (result == null) {
result = scope = getValue(SCOPE, "Attribute Scope:", () -> defaultScope());
@@ -509,18 +523,26 @@ public class InstallerPropertiesImpl extends AbstractInitializableComponent impl
return result;
}
- /** {@inheritDoc}. */
- @Override @Nullable public String getLDAPPassword() throws BuildException {
+ /** Get the LDAP password iff one was provided. DO NOT PROMPT
+ *
+ * @return the password if provided by a properties
+ * @throws BuildException if badness happens
+ */
+ @Nullable public String getLDAPPassword() throws BuildException {
return installerProperties.getProperty(LDAP_PASSWORD);
}
- /** {@inheritDoc}. */
- @Override @Nonnull public String getSubjectAltName() {
+ /** Get the SubjectAltName for the certificates.
+ * @return the SubjectAltName
+ */
+ @Nonnull public String getSubjectAltName() {
return "https://" + getHostName() + "/idp/shibboleth";
}
- /** {@inheritDoc}. */
- @Override @Nonnull public String getKeyStorePassword() {
+ /** Get the password for the keystore for this installation.
+ * @return the password.
+ */
+ @Nonnull public String getKeyStorePassword() {
@SuppressWarnings("null") @Nonnull String result = keyStorePassword;
if (keyStorePassword == null) {
result = keyStorePassword = getPassword(KEY_STORE_PASSWORD, "Backchannel PKCS12 Password:");
@@ -528,8 +550,10 @@ public class InstallerPropertiesImpl extends AbstractInitializableComponent impl
return result;
}
- /** {@inheritDoc}. */
- @Override @Nonnull public String getSealerPassword() {
+ /** Get the password for the sealer for this installation.
+ * @return the password.
+ */
+ @Nonnull public String getSealerPassword() {
String result = sealerPassword;
if (result == null) {
result = sealerPassword = getPassword(SEALER_PASSWORD, "Cookie Encryption Key Password:");
@@ -537,11 +561,13 @@ public class InstallerPropertiesImpl extends AbstractInitializableComponent impl
return result;
}
- /** {@inheritDoc} */
- @Override @Nonnull @NotLive @Unmodifiable public Set<String> getModulesToEnable() {
+ /** Get the modules to enable after first install.
+ * @return the modules
+ */
+ @Nonnull @NotLive @Unmodifiable public Set<String> getModulesToEnable() {
String prop = StringSupport.trimOrNull(installerProperties.getProperty(INITIAL_INSTALL_MODULES));
if (prop == null) {
- return InstallerProperties.DEFAULT_MODULES;
+ return InstallerPropertiesImpl.DEFAULT_MODULES;
}
final boolean additive = prop.startsWith("+");
if (additive) {
@@ -553,13 +579,23 @@ public class InstallerPropertiesImpl extends AbstractInitializableComponent impl
final Set<String> result = CollectionSupport.copyToSet(CollectionSupport.arrayAsList(modules));
return result;
}
- final Set<String> result = new HashSet<>(modules.length + InstallerProperties.DEFAULT_MODULES.size());
- result.addAll(InstallerProperties.DEFAULT_MODULES);
+ final Set<String> result = new HashSet<>(modules.length + InstallerPropertiesImpl.DEFAULT_MODULES.size());
+ result.addAll(InstallerPropertiesImpl.DEFAULT_MODULES);
result.addAll(Arrays.asList(modules));
return CollectionSupport.copyToSet(result);
}
+
+ /** Get the modules to enable before ant install.
+ * @return the modules
+ */
+ @Nonnull @NotLive @Unmodifiable public Set<String> getCoreModules() {
+ return InstallerPropertiesImpl.CORE_MODULES;
+ }
- /** {@inheritDoc}. */
+
+ /** Get the alias for the sealer key.
+ * @return the alias
+ */
@Nonnull public String getSealerAlias() {
String result = sealerAlias;
if (result == null) {
@@ -571,8 +607,10 @@ public class InstallerPropertiesImpl extends AbstractInitializableComponent impl
return result;
}
- /** {@inheritDoc}. default is {@value #DEFAULT_KEY_SIZE}. */
- @Override public int getKeySize() {
+ /** Get the key size for signing, encryption and backchannel.
+ * @return the keysize
+ * default is {@value #DEFAULT_KEY_SIZE}. */
+ public int getKeySize() {
return keySize;
}
@@ -619,24 +657,22 @@ public class InstallerPropertiesImpl extends AbstractInitializableComponent impl
return result;
}
- /** {@inheritDoc}. */
- @Override public Path getIdPMergeProperties() throws BuildException {
+ /** Get the a file to merge with idp.properties or null.
+ *
+ * @return the file or null if it none required.
+ * @throws BuildException if badness happens
+ */
+ public Path getIdPMergeProperties() throws BuildException {
return getMergeFile(IDP_PROPERTIES_MERGE);
}
- /** {@inheritDoc}. */
- @Override public Path getLDAPMergeProperties() throws BuildException {
+ /** Get the a file to merge with ldap.properties or null.
+ *
+ * @return the path or null if it none required.
+ * @throws BuildException if badness happens
+ */
+ public Path getLDAPMergeProperties() throws BuildException {
return getMergeFile(LDAP_PROPERTIES_MERGE);
}
- /** {@inheritDoc}. */
- @Deprecated
- @Override public Path getConfPreOverlay() throws BuildException {
- return getMergeFile(CONF_PRE_OVERLAY);
- }
-
- /** {@inheritDoc}. */
- @Override public Path getInitialEditWeb() throws BuildException {
- return getMergeFile(INITIAL_EDIT_WEBAPP);
- }
}
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 330dc3c2d..e7b53e04a 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
@@ -75,7 +75,7 @@ public class V4Install extends AbstractInitializableComponent {
private final Logger log = InstallationLogger.getLogger(V4Install.class);
/** Installer Properties. */
- @Nonnull private final InstallerProperties installerProps;
+ @Nonnull private final InstallerPropertiesImpl installerProps;
/** Current Install. */
@Nonnull private final CurrentInstallState currentState;
@@ -90,7 +90,7 @@ public class V4Install extends AbstractInitializableComponent {
* @param props The properties to drive the installs.
* @param installState The current install.
*/
- public V4Install(@Nonnull final InstallerProperties props, @Nonnull final CurrentInstallState installState) {
+ public V4Install(@Nonnull final InstallerPropertiesImpl props, @Nonnull final CurrentInstallState installState) {
if (!props.isInitialized()) {
throw new UninitializedComponentException("Installer Properties not Initialized");
}
@@ -533,7 +533,7 @@ public class V4Install extends AbstractInitializableComponent {
private class KeyManagement extends AbstractInitializableComponent {
/** Properties for the job. */
- @Nonnull private final InstallerProperties installerProps;
+ @Nonnull private final InstallerPropertiesImpl installerProps;
/** Current Install. */
@Nonnull private final CurrentInstallState currentState;
@@ -546,7 +546,7 @@ public class V4Install extends AbstractInitializableComponent {
/** Did we create idp-backchannel.*?*/
private boolean createdBackchannel;
-
+
/** Did we create sealer.*?*/
private boolean createdSealer;
@@ -554,7 +554,7 @@ public class V4Install extends AbstractInitializableComponent {
* @param props The properties to drive the installs.
* @param installState - about where we installing into.
*/
- protected KeyManagement(@Nonnull final InstallerProperties props,
+ protected KeyManagement(@Nonnull final InstallerPropertiesImpl props,
@Nonnull final CurrentInstallState installState) {
if (!props.isInitialized()) {
throw new UninitializedComponentException("Installer Properties not Initialized");
diff --git a/idp-installer/src/main/java/net/shibboleth/idp/installer/impl/CurrentInstallState.java b/idp-installer/src/main/java/net/shibboleth/idp/installer/impl/CurrentInstallState.java
index dd5ee5410..bf649224b 100644
--- a/idp-installer/src/main/java/net/shibboleth/idp/installer/impl/CurrentInstallState.java
+++ b/idp-installer/src/main/java/net/shibboleth/idp/installer/impl/CurrentInstallState.java
@@ -47,7 +47,7 @@ import javax.annotation.Nullable;
import org.apache.tools.ant.BuildException;
import org.slf4j.Logger;
-import net.shibboleth.idp.installer.InstallerProperties;
+import net.shibboleth.idp.installer.InstallerPropertiesImpl;
import net.shibboleth.idp.installer.InstallerSupport;
import net.shibboleth.idp.module.IdPModule;
import net.shibboleth.idp.module.ModuleContext;
@@ -97,7 +97,7 @@ public final class CurrentInstallState extends AbstractInitializableComponent {
/** Constructor.
* @param installerProps the installer situation.
*/
- public CurrentInstallState(final InstallerProperties installerProps) {
+ public CurrentInstallState(final InstallerPropertiesImpl installerProps) {
targetDir = installerProps.getTargetDir();
enabledModules = CollectionSupport.emptySet();
}
diff --git a/idp-installer/src/test/java/net/shibboleth/idp/installer/Test.java b/idp-installer/src/test/java/net/shibboleth/idp/installer/Test.java
index 54f7415df..8b76314d6 100644
--- a/idp-installer/src/test/java/net/shibboleth/idp/installer/Test.java
+++ b/idp-installer/src/test/java/net/shibboleth/idp/installer/Test.java
@@ -44,7 +44,7 @@ public class Test {
System.setProperty(InstallerPropertiesImpl.SEALER_PASSWORD, "p1");
System.setProperty(InstallerPropertiesImpl.HOST_NAME, "machine.org.uk");
- final InstallerProperties ip = new InstallerPropertiesImpl(false);
+ final InstallerPropertiesImpl ip = new InstallerPropertiesImpl(false);
ip.initialize();
final CurrentInstallState is = new CurrentInstallState(ip);
is.initialize();
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list