Skip to content

Commit

Permalink
Replaced java.util.prefs.Preferences with JSON file
Browse files Browse the repository at this point in the history
  • Loading branch information
kaikramer committed Jan 2, 2024
1 parent 61975f7 commit bebc9ad
Show file tree
Hide file tree
Showing 59 changed files with 1,722 additions and 1,740 deletions.
2 changes: 2 additions & 0 deletions kse/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,8 @@ dependencies {
implementation('org.violetlib:vaqua:11')
implementation('io.github.java-diff-utils:java-diff-utils:4.12')
implementation('org.openjdk.nashorn:nashorn-core:15.4')
implementation('com.fasterxml.jackson.jr:jackson-jr-objects:2.14.2')
implementation('com.fasterxml.jackson.jr:jackson-jr-annotation-support:2.14.2')

testImplementation('org.assertj:assertj-core:3.23.1')
testImplementation('org.junit.jupiter:junit-jupiter-api:5.9.0')
Expand Down
29 changes: 16 additions & 13 deletions kse/src/main/java/org/kse/KSE.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,10 @@
import org.kse.gui.CreateApplicationGui;
import org.kse.gui.CurrentDirectory;
import org.kse.gui.error.DError;
import org.kse.gui.preferences.ApplicationSettings;
import org.kse.gui.preferences.PreferencesManager;
import org.kse.gui.preferences.data.KsePreferences;
import org.kse.gui.preferences.data.LanguageItem;
import org.kse.utilities.net.ProxySettingsUpdater;
import org.kse.utilities.os.OperatingSystem;
import org.kse.version.JavaVersion;
import org.kse.version.Version;
Expand Down Expand Up @@ -94,17 +97,19 @@ public static void main(String[] args) {

setInstallDirProperty();

ApplicationSettings applicationSettings = ApplicationSettings.getInstance();
setCurrentDirectory(applicationSettings);
KsePreferences preferences = PreferencesManager.getPreferences();
setCurrentDirectory(preferences.getCurrentDirectory());

String languageCode = applicationSettings.getLanguage();
if (!ApplicationSettings.SYSTEM_LANGUAGE.equals(languageCode)) {
Locale.setDefault(new Locale(languageCode));
ProxySettingsUpdater.updateSystem(preferences.getProxySettings());

String language = preferences.getLanguage();
if (!language.equals(LanguageItem.SYSTEM_LANGUAGE)) {
Locale.setDefault(new Locale(language));
}

initialiseSecurity();

Pkcs12Util.setEncryptionStrength(applicationSettings.getPkcs12EncryptionSetting());
Pkcs12Util.setEncryptionStrength(preferences.getPkcs12EncryptionSetting());

// list of files to open after start
List<File> parameterFiles = new ArrayList<>();
Expand All @@ -115,7 +120,7 @@ public static void main(String[] args) {
}
}

SwingUtilities.invokeLater(new CreateApplicationGui(applicationSettings, parameterFiles));
SwingUtilities.invokeLater(new CreateApplicationGui(preferences, parameterFiles));
} catch (Throwable t) {
DError dError = new DError(new JFrame(), t);
dError.setLocationRelativeTo(null);
Expand Down Expand Up @@ -156,11 +161,9 @@ private static void setInstallDirProperty() {
System.setProperty("kse.install.dir", System.getProperty("user.dir"));
}

private static void setCurrentDirectory(ApplicationSettings applicationSettings) {
File currentDirectory = applicationSettings.getCurrentDirectory();

if (currentDirectory != null) {
CurrentDirectory.update(currentDirectory);
private static void setCurrentDirectory(String currentDir) {
if (currentDir != null) {
CurrentDirectory.update(new File(currentDir));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

package org.kse.crypto.csr.pkcs12;

import org.kse.gui.preferences.Pkcs12EncryptionSetting;
import org.kse.gui.preferences.data.Pkcs12EncryptionSetting;

/**
* Provides utility methods relating to PKCS #12 containers.
Expand Down
4 changes: 2 additions & 2 deletions kse/src/main/java/org/kse/crypto/keystore/KeyStoreUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,11 @@
import java.util.Enumeration;
import java.util.ResourceBundle;

import org.kse.gui.preferences.ApplicationSettings;
import org.kse.KSE;
import org.kse.crypto.CryptoException;
import org.kse.crypto.Password;
import org.kse.crypto.filetype.CryptoFileUtil;
import org.kse.gui.preferences.PreferencesManager;

/**
* Provides utility methods for loading/saving KeyStores. The BouncyCastle
Expand Down Expand Up @@ -230,7 +230,7 @@ public static boolean areMsCapiStoresSupported() {
public static KeyStore loadMsCapiStore(MsCapiStoreType msCapiStoreType) throws CryptoException {
if (!areMsCapiStoresSupported()) {
// May previously have been set on an MSCAPI supporting JRE
ApplicationSettings.getInstance().setUseWindowsTrustedRootCertificates(false);
PreferencesManager.getPreferences().getCaCertsSettings().setUseWindowsTrustedRootCertificates(false);
throw new CryptoException(res.getString("MsCapiStoresNotSupported.exception.message"));
}

Expand Down
4 changes: 2 additions & 2 deletions kse/src/main/java/org/kse/crypto/x509/X509CertUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
import org.kse.KSE;
import org.kse.crypto.CryptoException;
import org.kse.crypto.signing.SignatureType;
import org.kse.gui.preferences.ApplicationSettings;
import org.kse.gui.preferences.PreferencesManager;
import org.kse.utilities.SerialNumbers;
import org.kse.utilities.StringUtils;
import org.kse.utilities.io.HexUtil;
Expand Down Expand Up @@ -754,7 +754,7 @@ public static String getSerialNumberAsDec(X509Certificate cert) {
* @return Serial number as hex string with "0x" prefix
*/
public static String generateCertSerialNumber() {
int snLength = ApplicationSettings.getInstance().getSerialNumberLengthInBytes();
int snLength = PreferencesManager.getPreferences().getSerialNumberLengthInBytes();
return HexUtil.getHexString(SerialNumbers.generate(snLength), "0x", 0, 0);
}
}
20 changes: 10 additions & 10 deletions kse/src/main/java/org/kse/gui/CreateApplicationGui.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,14 @@
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;

import org.kse.gui.preferences.ApplicationSettings;
import org.kse.AuthorityCertificates;
import org.kse.KSE;
import org.kse.crypto.jcepolicy.JcePolicyUtil;
import org.kse.gui.actions.CheckUpdateAction;
import org.kse.gui.crypto.DUpgradeCryptoStrength;
import org.kse.gui.dnd.DroppedFileHandler;
import org.kse.gui.error.DError;
import org.kse.gui.preferences.data.KsePreferences;
import org.kse.utilities.os.OperatingSystem;
import org.kse.version.JavaVersion;
import org.kse.version.VersionException;
Expand All @@ -51,17 +51,17 @@ public class CreateApplicationGui implements Runnable {
private static ResourceBundle res = ResourceBundle.getBundle("org/kse/gui/resources");

private static final JavaVersion MIN_JRE_VERSION = JavaVersion.JRE_VERSION_180;
private ApplicationSettings applicationSettings;
private KsePreferences ksePreferences;
private List<File> parameterFiles;

/**
* Construct CreateApplicationGui.
*
* @param applicationSettings Application settings
* @param ksePreferences Application settings
* @param parameterFiles File list to open
*/
public CreateApplicationGui(ApplicationSettings applicationSettings, List<File> parameterFiles) {
this.applicationSettings = applicationSettings;
public CreateApplicationGui(KsePreferences ksePreferences, List<File> parameterFiles) {
this.ksePreferences = ksePreferences;
this.parameterFiles = parameterFiles;
}

Expand All @@ -75,7 +75,7 @@ public void run() {
System.exit(1);
}

initLookAndFeel(applicationSettings);
initLookAndFeel(ksePreferences);

// try to remove crypto restrictions
JcePolicyUtil.removeRestrictions();
Expand Down Expand Up @@ -119,7 +119,7 @@ public void run() {

private void checkCaCerts(final KseFrame kseFrame) {

File caCertificatesFile = applicationSettings.getCaCertificatesFile();
File caCertificatesFile = new File(ksePreferences.getCaCertsSettings().getCaCertificatesFile());

if (caCertificatesFile.exists()) {
return;
Expand All @@ -136,7 +136,7 @@ private void checkCaCerts(final KseFrame kseFrame) {
KSE.getApplicationName(), JOptionPane.YES_NO_OPTION);

if (selected == JOptionPane.YES_OPTION) {
applicationSettings.setCaCertificatesFile(newCaCertsFile);
ksePreferences.getCaCertsSettings().setCaCertificatesFile(newCaCertsFile.getAbsolutePath());
}
});
}
Expand All @@ -152,7 +152,7 @@ private void checkForUpdates(final KseFrame kseFrame) {
}).start();
}

private static void initLookAndFeel(ApplicationSettings applicationSettings) {
private static void initLookAndFeel(KsePreferences applicationSettings) {
LnfUtil.installLnfs();

String lookFeelClassName = applicationSettings.getLookAndFeelClass();
Expand All @@ -163,7 +163,7 @@ private static void initLookAndFeel(ApplicationSettings applicationSettings) {
}
LnfUtil.useLnf(lookFeelClassName);

boolean lookFeelDecorated = applicationSettings.getLookAndFeelDecorated();
boolean lookFeelDecorated = applicationSettings.isLookAndFeelDecorated();

JFrame.setDefaultLookAndFeelDecorated(lookFeelDecorated);
JDialog.setDefaultLookAndFeelDecorated(lookFeelDecorated);
Expand Down
4 changes: 2 additions & 2 deletions kse/src/main/java/org/kse/gui/FileChooserFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;

import org.kse.gui.preferences.ApplicationSettings;
import org.kse.gui.preferences.PreferencesManager;
import org.kse.utilities.os.OperatingSystem;

/**
Expand Down Expand Up @@ -428,7 +428,7 @@ private static JFileChooser getFileChooser() {
JFileChooser fileChooser = JavaFXFileChooser.isFxAvailable() ? new JavaFXFileChooser() : new JFileChooser();

// show/hide hidden files
fileChooser.setFileHidingEnabled(!ApplicationSettings.getInstance().isShowHiddenFilesEnabled());
fileChooser.setFileHidingEnabled(!PreferencesManager.getPreferences().isShowHiddenFilesEnabled());

return fileChooser;
}
Expand Down
22 changes: 11 additions & 11 deletions kse/src/main/java/org/kse/gui/JKseTable.java
Original file line number Diff line number Diff line change
Expand Up @@ -107,79 +107,79 @@ public void colAdjust(KeyStoreTableColumns keyStoreTableColumns, int autoResizeM
}
int l = width;

if (i == keyStoreTableColumns.colEntryName()) {
if (i == keyStoreTableColumns.colIndexEntryName()) {
column.setMinWidth((2 + res.getString("KeyStoreTableModel.NameColumn")).length() * iFontSize);
column.setPreferredWidth(
Math.max(1 + res.getString("KeyStoreTableModel.NameColumn").length(), 20) * iFontSize);
column.setMaxWidth(
Math.max(2 + res.getString("KeyStoreTableModel.NameColumn").length(), 50) * iFontSize);
}
if (i == keyStoreTableColumns.colAlgorithm()) {
if (i == keyStoreTableColumns.colIndexAlgorithm()) {
column.setMinWidth((4) * iFontSize);
column.setPreferredWidth(
Math.max(1 + res.getString("KeyStoreTableModel.AlgorithmColumn").length(), 4) * iFontSize);
column.setMaxWidth(
Math.max(2 + res.getString("KeyStoreTableModel.AlgorithmColumn").length(), 5) * iFontSize);
}
if (i == keyStoreTableColumns.colKeySize()) {
if (i == keyStoreTableColumns.colIndexKeySize()) {
column.setMinWidth((4) * iFontSize);
column.setPreferredWidth(
Math.max(1 + res.getString("KeyStoreTableModel.KeySizeColumn").length(), (l + 1)) * iFontSize);
column.setMaxWidth(
Math.max(2 + res.getString("KeyStoreTableModel.KeySizeColumn").length(), l + 1) * iFontSize);
}
if (i == keyStoreTableColumns.colCurve()) {
if (i == keyStoreTableColumns.colIndexCurve()) {
column.setMinWidth(8 * iFontSize);
column.setPreferredWidth(
1 + Math.max(res.getString("KeyStoreTableModel.CurveColumn").length(), l) * iFontSize);
column.setMaxWidth(2 + Math.max("brainpool999r1".length(),
res.getString("KeyStoreTableModel.CurveColumn").length()) * iFontSize);
}
if (i == keyStoreTableColumns.colCertificateExpiry()) {
if (i == keyStoreTableColumns.colIndexCertificateExpiry()) {
l = "20.00.2000 00:00:00 MESZ".length();
column.setMinWidth("20.00.2000".length() * iFontSize);
column.setPreferredWidth(
1 + Math.max(res.getString("KeyStoreTableModel.CertExpiryColumn").length(), l) * iFontSize);
column.setMaxWidth(
2 + Math.max(res.getString("KeyStoreTableModel.CertExpiryColumn").length(), l) * iFontSize);
}
if (i == keyStoreTableColumns.colLastModified()) {
if (i == keyStoreTableColumns.colIndexLastModified()) {
l = "20.09.2000 00:00:00 MESZ".length();
column.setMinWidth("20.00.2000".length() * iFontSize);
column.setPreferredWidth(
1 + Math.max(res.getString("KeyStoreTableModel.LastModifiedColumn").length(), l) * iFontSize);
column.setMaxWidth(
2 + Math.max(res.getString("KeyStoreTableModel.LastModifiedColumn").length(), l) * iFontSize);
}
if (i == keyStoreTableColumns.colAKI()) {
if (i == keyStoreTableColumns.colIndexAKI()) {
l = 41;
column.setMinWidth(8 * iFontSize);
column.setPreferredWidth(
1 + Math.max(res.getString("KeyStoreTableModel.AKIColumn").length(), l) * iFontSize);
column.setMaxWidth(
Math.max(2 + res.getString("KeyStoreTableModel.AKIColumn").length(), (l + 1)) * iFontSize);
}
if (i == keyStoreTableColumns.colSKI()) {
if (i == keyStoreTableColumns.colIndexSKI()) {
l = 41;
column.setMinWidth(8 * iFontSize);
column.setPreferredWidth(
Math.max(2 + res.getString("KeyStoreTableModel.SKIColumn").length(), (l + 1)) * iFontSize);
column.setMaxWidth(
Math.max(2 + res.getString("KeyStoreTableModel.SKIColumn").length(), (l + 1)) * iFontSize);
}
if (i == keyStoreTableColumns.colIssuerCN()) {
if (i == keyStoreTableColumns.colIndexIssuerCN()) {
column.setMinWidth(8 * iFontSize);
column.setPreferredWidth(
Math.max(2 + res.getString("KeyStoreTableModel.IssuerCNColumn").length(), (l + 1)) * iFontSize);
column.setMaxWidth(100 * iFontSize);
}
if (i == keyStoreTableColumns.colIssuerDN()) {
if (i == keyStoreTableColumns.colIndexIssuerDN()) {
column.setMinWidth(8 * iFontSize);
column.setPreferredWidth(
Math.max(2 + res.getString("KeyStoreTableModel.IssuerDNColumn").length(), (l + 1)) * iFontSize);
column.setMaxWidth(100 * iFontSize);
}
if (i == keyStoreTableColumns.colIssuerO()) {
if (i == keyStoreTableColumns.colIndexIssuerO()) {
column.setMinWidth(8 * iFontSize);
column.setPreferredWidth(
Math.max(2 + res.getString("KeyStoreTableModel.IssuerOColumn").length(), (l + 1)) * iFontSize);
Expand Down
19 changes: 5 additions & 14 deletions kse/src/main/java/org/kse/gui/JMenuRecentFiles.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,16 +38,11 @@ public class JMenuRecentFiles extends JMenu {
* Construct a JMenuRecentFiles.
*
* @param title Title of menu
* @param length Length of recent files list to maintain
*/
public JMenuRecentFiles(String title, int length) {
public JMenuRecentFiles(String title) {
super(title);

if (length > MAX_LENGTH) {
length = MAX_LENGTH;
}

jmiRecentFiles = new JMenuItemRecentFile[length];
jmiRecentFiles = new JMenuItemRecentFile[MAX_LENGTH];
}

private void removeAllRecentFiles() {
Expand Down Expand Up @@ -106,19 +101,15 @@ public void add(JMenuItemRecentFile jmirfNew) {

// Item already exists outside first position
if (index != -1) {
// Introduce it to the first position and move the others up over
// its old position
// Introduce it to the first position and move the others up over its old position
for (int i = 0; i <= index; i++) {
JMenuItemRecentFile jmirfTmp = jmiRecentFiles[i];
jmiRecentFiles[i] = jmirfNew;
jmirfNew = jmirfTmp;
jmirfNew.setPosition(i + 2);
}
}
// Item does not exist in the menu
else {
// Introduce new item to the start of the list and shift the others
// up one
} else {
// Introduce new item to the start of the list and shift the others up one
for (int i = 0; i < jmiRecentFiles.length; i++) {
JMenuItemRecentFile jmirfTmp = jmiRecentFiles[i];
jmiRecentFiles[i] = jmirfNew;
Expand Down
Loading

0 comments on commit bebc9ad

Please sign in to comment.