diff --git a/Q-Apps.md b/Q-Apps.md index 83f2a356..bf44a981 100644 --- a/Q-Apps.md +++ b/Q-Apps.md @@ -375,11 +375,15 @@ let res = await qortalRequest({ prefix: false, // Optional - if true, only the beginning of fields are matched in all of the above filters exactMatchNames: true, // Optional - if true, partial name matches are excluded default: false, // Optional - if true, only resources without identifiers are returned + mode: "LATEST", // Optional - whether to return all resources or just the latest for a name/service combination. Possible values: ALL,LATEST. Default: LATEST + minLevel: 1, // Optional - whether to filter results by minimum account level includeStatus: false, // Optional - will take time to respond, so only request if necessary includeMetadata: false, // Optional - will take time to respond, so only request if necessary nameListFilter: "QApp1234Subscriptions", // Optional - will only return results if they are from a name included in supplied list followedOnly: false, // Optional - include followed names only excludeBlocked: false, // Optional - exclude blocked content + // before: 1683546000000, // Optional - limit to resources created before timestamp + // after: 1683546000000, // Optional - limit to resources created after timestamp limit: 100, offset: 0, reverse: true @@ -395,12 +399,16 @@ let res = await qortalRequest({ identifier: "search query goes here", // Optional - searches only the "identifier" field names: ["QortalDemo", "crowetic", "AlphaX"], // Optional - searches only the "name" field for any of the supplied names prefix: false, // Optional - if true, only the beginning of fields are matched in all of the above filters + exactMatchNames: true, // Optional - if true, partial name matches are excluded default: false, // Optional - if true, only resources without identifiers are returned + mode: "LATEST", // Optional - whether to return all resources or just the latest for a name/service combination. Possible values: ALL,LATEST. Default: LATEST includeStatus: false, // Optional - will take time to respond, so only request if necessary includeMetadata: false, // Optional - will take time to respond, so only request if necessary nameListFilter: "QApp1234Subscriptions", // Optional - will only return results if they are from a name included in supplied list followedOnly: false, // Optional - include followed names only excludeBlocked: false, // Optional - exclude blocked content + // before: 1683546000000, // Optional - limit to resources created before timestamp + // after: 1683546000000, // Optional - limit to resources created after timestamp limit: 100, offset: 0, reverse: true diff --git a/WindowsInstaller/Qortal.aip b/WindowsInstaller/Qortal.aip index 51ba5f69..1b0c944b 100755 --- a/WindowsInstaller/Qortal.aip +++ b/WindowsInstaller/Qortal.aip @@ -1,9 +1,13 @@ - + + + + - + + @@ -17,10 +21,10 @@ - + - + @@ -47,8 +51,6 @@ - - @@ -75,7 +77,6 @@ - @@ -86,6 +87,8 @@ + + @@ -102,6 +105,7 @@ + @@ -110,13 +114,10 @@ - - - - - + + @@ -132,240 +133,232 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + @@ -380,501 +373,489 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -889,7 +870,7 @@ - + @@ -898,6 +879,18 @@ + + + + + + + + + + + + @@ -913,6 +906,7 @@ + @@ -1136,13 +1130,13 @@ - + + - @@ -1165,10 +1159,12 @@ + + @@ -1221,6 +1217,7 @@ + @@ -1230,7 +1227,6 @@ - @@ -1241,12 +1237,10 @@ - - @@ -1255,7 +1249,6 @@ - @@ -1276,23 +1269,25 @@ - + + + + - @@ -1302,14 +1297,6 @@ - - - - - - - - @@ -1317,107 +1304,109 @@ - + + + + + + + - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + @@ -1457,8 +1446,6 @@ - - @@ -1472,6 +1459,8 @@ + + @@ -1520,8 +1509,11 @@ + + + @@ -1530,16 +1522,28 @@ + + + + + + + + + + + + diff --git a/WindowsInstaller/README.md b/WindowsInstaller/README.md index 0a9f2522..29a7b64a 100644 --- a/WindowsInstaller/README.md +++ b/WindowsInstaller/README.md @@ -2,8 +2,8 @@ ## Prerequisites -* AdvancedInstaller v16 or better, and enterprise licence if translations are required -* Installed AdoptOpenJDK v11 64bit, full JDK *not* JRE +* AdvancedInstaller v19.4 or better, and enterprise licence if translations are required +* Installed AdoptOpenJDK v17 64bit, full JDK *not* JRE ## General build instructions @@ -15,10 +15,8 @@ Typical build procedure: * Place the `qortal.jar` file in `Install-Files\` * Open AdvancedInstaller with qortal.aip file * If releasing a new version, change version number in: - + "Product Information" side menu + "Product Details" side menu entry + "Product Details" tab in "Product Details" pane - + "Product Version" entry box * Click away to a different side menu entry, e.g. "Resources" -> "Files and Folders" * You should be prompted whether to generate a new product key, click "Generate New" * Click "Build" button diff --git a/lib/com/dosse/WaifUPnP/1.2/WaifUPnP-1.2.jar b/lib/com/dosse/WaifUPnP/1.2/WaifUPnP-1.2.jar new file mode 100644 index 00000000..3baee4fd Binary files /dev/null and b/lib/com/dosse/WaifUPnP/1.2/WaifUPnP-1.2.jar differ diff --git a/lib/com/dosse/WaifUPnP/1.2/WaifUPnP-1.2.pom b/lib/com/dosse/WaifUPnP/1.2/WaifUPnP-1.2.pom new file mode 100644 index 00000000..6005e971 --- /dev/null +++ b/lib/com/dosse/WaifUPnP/1.2/WaifUPnP-1.2.pom @@ -0,0 +1,9 @@ + + + 4.0.0 + com.dosse + WaifUPnP + 1.2 + POM was created from install:install-file + diff --git a/lib/com/dosse/WaifUPnP/maven-metadata-local.xml b/lib/com/dosse/WaifUPnP/maven-metadata-local.xml index 07d6ffd0..224e347d 100644 --- a/lib/com/dosse/WaifUPnP/maven-metadata-local.xml +++ b/lib/com/dosse/WaifUPnP/maven-metadata-local.xml @@ -3,10 +3,11 @@ com.dosse WaifUPnP - 1.1 + 1.2 1.1 + 1.2 - 20220218200127 + 20231026200127 diff --git a/pom.xml b/pom.xml index e623a5dd..f1973689 100644 --- a/pom.xml +++ b/pom.xml @@ -3,60 +3,59 @@ 4.0.0 org.qortal qortal - 4.3.1 + 4.3.2 jar true 7dc8c6f 0.15.10 1.69 + 3.4.0 ${maven.build.timestamp} 1.4.1 - 3.8.0 - 1.10.0 + 3.10.0 + 1.11.0 2.11.0 1.24.0 3.13.0 - 1.9 1.2.2 + 0.12.3 + 4.9.10 + 1.59.0 32.1.3-jre - 2.5.1 + 2.2 1.2.1 - 73.2 - 1.1 - 2.3.3 - 2.40 - 9.4.53.v20231009 - 2.20.0 - UTF-8 - 1.7.36 - 2.0.10 - 3.52.5 - 1.1.0 - 1.16.1 + 2.5.1 + 74.1 4.12 - 1.58.0 - 3.24.4 - 1.17 - 2.16.1 + 4.0.1 + 2.3.9 + 2.41 + 9.4.53.v20231009 + 1.1.1 + 20231013 + 1.16.2 + 5.10.0 + 1.0.0 + 2.21.1 + 1.5.0-b01 3.11.0 - 4.9.10 - 1.5.3 - 3.3.1 - 3.4.0 3.3.0 + 3.3.1 3.5.1 + 3.2.1 + 1.1.0 + UTF-8 + 3.24.4 + 1.5.3 0.16 - 3.1.2 - 1.0.0 - 3.4.0 - 1.1.1 - 20231013 - 0.12.3 - 4.0.1 - 1.5.0-b01 - 5.3.1 - 1.3 + 1.17 + 1.7.36 + 2.0.10 + 5.9.0 + 1.2 + 2.16.1 + 1.9 src/main/java @@ -154,20 +153,32 @@ ${project.build.directory}/swagger-ui.unpacked/META-INF/resources/webjars/swagger-ui/${swagger-ui.version}/index.html - https://petstore.swagger.io/v2/swagger.json - /openapi.json + Swagger UI + Qortal API Documentation + + + + + replace-swagger-ui-json + generate-resources + + replace + + false + + ${project.build.directory}/swagger-ui.unpacked/META-INF/resources/webjars/swagger-ui/${swagger-ui.version}/swagger-initializer.js + - Swagger UI - API Documentation + https://petstore.swagger.io/v2/swagger.json + /openapi.json deepLinking: true, deepLinking: true, tagsSorter: "alpha", - operationsSorter: - "alpha", + operationsSorter: "alpha", validatorUrl: false, diff --git a/src/main/java/org/hsqldb/jdbc/HSQLDBPool.java b/src/main/java/org/hsqldb/jdbc/HSQLDBPool.java index 0bf9d2ef..f2f6484c 100644 --- a/src/main/java/org/hsqldb/jdbc/HSQLDBPool.java +++ b/src/main/java/org/hsqldb/jdbc/HSQLDBPool.java @@ -1,10 +1,10 @@ package org.hsqldb.jdbc; +import org.hsqldb.jdbc.pool.JDBCPooledConnection; + import java.sql.Connection; import java.sql.SQLException; -import org.hsqldb.jdbc.pool.JDBCPooledConnection; - public class HSQLDBPool extends JDBCPool { public HSQLDBPool(int poolSize) { diff --git a/src/main/java/org/qortal/ApplyUpdate.java b/src/main/java/org/qortal/ApplyUpdate.java index 7a870460..f1f9d22f 100644 --- a/src/main/java/org/qortal/ApplyUpdate.java +++ b/src/main/java/org/qortal/ApplyUpdate.java @@ -1,5 +1,14 @@ package org.qortal; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.bouncycastle.jsse.provider.BouncyCastleJsseProvider; +import org.qortal.api.ApiKey; +import org.qortal.api.ApiRequest; +import org.qortal.controller.AutoUpdate; +import org.qortal.settings.Settings; + import java.io.IOException; import java.lang.management.ManagementFactory; import java.nio.file.Files; @@ -10,15 +19,6 @@ import java.security.Security; import java.util.*; import java.util.stream.Collectors; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.jsse.provider.BouncyCastleJsseProvider; -import org.qortal.api.ApiKey; -import org.qortal.api.ApiRequest; -import org.qortal.controller.AutoUpdate; -import org.qortal.settings.Settings; - import static org.qortal.controller.AutoUpdate.AGENTLIB_JVM_HOLDER_ARG; public class ApplyUpdate { diff --git a/src/main/java/org/qortal/RepositoryMaintenance.java b/src/main/java/org/qortal/RepositoryMaintenance.java index b085822b..0d60d7f9 100644 --- a/src/main/java/org/qortal/RepositoryMaintenance.java +++ b/src/main/java/org/qortal/RepositoryMaintenance.java @@ -1,8 +1,5 @@ package org.qortal; -import java.security.Security; -import java.util.concurrent.TimeoutException; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.bouncycastle.jce.provider.BouncyCastleProvider; @@ -15,6 +12,9 @@ import org.qortal.repository.RepositoryManager; import org.qortal.repository.hsqldb.HSQLDBRepositoryFactory; import org.qortal.settings.Settings; +import java.security.Security; +import java.util.concurrent.TimeoutException; + public class RepositoryMaintenance { static { diff --git a/src/main/java/org/qortal/XorUpdate.java b/src/main/java/org/qortal/XorUpdate.java index 9880f1de..32ff7a72 100644 --- a/src/main/java/org/qortal/XorUpdate.java +++ b/src/main/java/org/qortal/XorUpdate.java @@ -1,5 +1,7 @@ package org.qortal; +import org.qortal.controller.AutoUpdate; + import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -7,8 +9,6 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import org.qortal.controller.AutoUpdate; - public class XorUpdate { private static final byte XOR_VALUE = AutoUpdate.XOR_VALUE; diff --git a/src/main/java/org/qortal/account/Account.java b/src/main/java/org/qortal/account/Account.java index 2c75dbc0..756128f9 100644 --- a/src/main/java/org/qortal/account/Account.java +++ b/src/main/java/org/qortal/account/Account.java @@ -1,10 +1,5 @@ package org.qortal.account; -import static org.qortal.utils.Amounts.prettyAmount; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.qortal.block.BlockChain; @@ -17,6 +12,11 @@ import org.qortal.repository.Repository; import org.qortal.settings.Settings; import org.qortal.utils.Base58; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; + +import static org.qortal.utils.Amounts.prettyAmount; + @XmlAccessorType(XmlAccessType.NONE) // Stops JAX-RS errors when unmarshalling blockchain config public class Account { diff --git a/src/main/java/org/qortal/account/AccountRefCache.java b/src/main/java/org/qortal/account/AccountRefCache.java index 13017bd3..11252710 100644 --- a/src/main/java/org/qortal/account/AccountRefCache.java +++ b/src/main/java/org/qortal/account/AccountRefCache.java @@ -1,15 +1,15 @@ package org.qortal.account; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.function.BinaryOperator; - import org.qortal.data.account.AccountData; import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.utils.Pair; +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; +import java.util.function.BinaryOperator; + /** * Account lastReference caching *

diff --git a/src/main/java/org/qortal/api/AmountTypeAdapter.java b/src/main/java/org/qortal/api/AmountTypeAdapter.java index 5cbf81ee..5db3df45 100644 --- a/src/main/java/org/qortal/api/AmountTypeAdapter.java +++ b/src/main/java/org/qortal/api/AmountTypeAdapter.java @@ -1,10 +1,9 @@ package org.qortal.api; -import java.math.BigDecimal; +import org.qortal.utils.Amounts; import javax.xml.bind.annotation.adapters.XmlAdapter; - -import org.qortal.utils.Amounts; +import java.math.BigDecimal; public class AmountTypeAdapter extends XmlAdapter { diff --git a/src/main/java/org/qortal/api/ApiError.java b/src/main/java/org/qortal/api/ApiError.java index b52332b1..5a634a76 100644 --- a/src/main/java/org/qortal/api/ApiError.java +++ b/src/main/java/org/qortal/api/ApiError.java @@ -1,13 +1,12 @@ package org.qortal.api; -import static java.util.Arrays.stream; -import static java.util.stream.Collectors.toMap; - -import java.util.Map; - import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; +import java.util.Map; + +import static java.util.Arrays.stream; +import static java.util.stream.Collectors.toMap; @XmlAccessorType(XmlAccessType.NONE) @XmlRootElement diff --git a/src/main/java/org/qortal/api/ApiErrorHandler.java b/src/main/java/org/qortal/api/ApiErrorHandler.java index a6a77eed..7ae0d89a 100644 --- a/src/main/java/org/qortal/api/ApiErrorHandler.java +++ b/src/main/java/org/qortal/api/ApiErrorHandler.java @@ -1,18 +1,17 @@ package org.qortal.api; -import java.io.IOException; - -import javax.servlet.RequestDispatcher; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.handler.ErrorHandler; import org.qortal.settings.Settings; +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + public class ApiErrorHandler extends ErrorHandler { private static final Logger LOGGER = LogManager.getLogger(ApiErrorHandler.class); diff --git a/src/main/java/org/qortal/api/ApiExceptionFactory.java b/src/main/java/org/qortal/api/ApiExceptionFactory.java index 294cef83..7826eb6d 100644 --- a/src/main/java/org/qortal/api/ApiExceptionFactory.java +++ b/src/main/java/org/qortal/api/ApiExceptionFactory.java @@ -1,9 +1,9 @@ package org.qortal.api; -import javax.servlet.http.HttpServletRequest; - import org.qortal.globalization.Translator; +import javax.servlet.http.HttpServletRequest; + public enum ApiExceptionFactory { INSTANCE; diff --git a/src/main/java/org/qortal/api/ApiRequest.java b/src/main/java/org/qortal/api/ApiRequest.java index a51a117e..59bd791a 100644 --- a/src/main/java/org/qortal/api/ApiRequest.java +++ b/src/main/java/org/qortal/api/ApiRequest.java @@ -1,34 +1,24 @@ package org.qortal.api; +import org.eclipse.persistence.exceptions.XMLMarshalException; +import org.eclipse.persistence.jaxb.JAXBContextFactory; +import org.eclipse.persistence.jaxb.MarshallerProperties; +import org.eclipse.persistence.jaxb.UnmarshallerProperties; + +import javax.net.ssl.*; +import javax.xml.bind.*; +import javax.xml.transform.stream.StreamSource; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.io.Writer; -import java.net.HttpURLConnection; -import java.net.InetSocketAddress; -import java.net.Socket; -import java.net.SocketAddress; -import java.net.URL; -import java.net.URLEncoder; +import java.net.*; import java.util.Collections; import java.util.Map; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.SNIHostName; -import javax.net.ssl.SNIServerName; -import javax.net.ssl.SSLParameters; -import javax.net.ssl.SSLSocket; -import javax.xml.bind.*; -import javax.xml.transform.stream.StreamSource; - -import org.eclipse.persistence.exceptions.XMLMarshalException; -import org.eclipse.persistence.jaxb.JAXBContextFactory; -import org.eclipse.persistence.jaxb.MarshallerProperties; -import org.eclipse.persistence.jaxb.UnmarshallerProperties; - public class ApiRequest { private static final Pattern proxyUrlPattern = Pattern.compile("(https://)([^@:/]+)@([0-9.]{7,15})(/.*)"); diff --git a/src/main/java/org/qortal/api/ApiService.java b/src/main/java/org/qortal/api/ApiService.java index 1ee733c6..fbef50d3 100644 --- a/src/main/java/org/qortal/api/ApiService.java +++ b/src/main/java/org/qortal/api/ApiService.java @@ -1,33 +1,10 @@ package org.qortal.api; import io.swagger.v3.jaxrs2.integration.resources.OpenApiResource; - -import java.io.InputStream; -import java.net.InetAddress; -import java.net.InetSocketAddress; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.security.KeyStore; -import java.security.SecureRandom; - -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.servlet.http.HttpServletRequest; - import org.eclipse.jetty.http.HttpVersion; import org.eclipse.jetty.rewrite.handler.RedirectPatternRule; import org.eclipse.jetty.rewrite.handler.RewriteHandler; -import org.eclipse.jetty.server.CustomRequestLog; -import org.eclipse.jetty.server.DetectorConnectionFactory; -import org.eclipse.jetty.server.HttpConfiguration; -import org.eclipse.jetty.server.HttpConnectionFactory; -import org.eclipse.jetty.server.RequestLog; -import org.eclipse.jetty.server.RequestLogWriter; -import org.eclipse.jetty.server.SecureRequestCustomizer; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.server.SslConnectionFactory; +import org.eclipse.jetty.server.*; import org.eclipse.jetty.server.handler.ErrorHandler; import org.eclipse.jetty.server.handler.InetAccessHandler; import org.eclipse.jetty.servlet.DefaultServlet; @@ -44,6 +21,18 @@ import org.qortal.api.websocket.*; import org.qortal.network.Network; import org.qortal.settings.Settings; +import javax.net.ssl.KeyManagerFactory; +import javax.net.ssl.SSLContext; +import javax.servlet.http.HttpServletRequest; +import java.io.InputStream; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.security.KeyStore; +import java.security.SecureRandom; + public class ApiService { private static ApiService instance; diff --git a/src/main/java/org/qortal/api/Base58TypeAdapter.java b/src/main/java/org/qortal/api/Base58TypeAdapter.java index d7561031..b84cc657 100644 --- a/src/main/java/org/qortal/api/Base58TypeAdapter.java +++ b/src/main/java/org/qortal/api/Base58TypeAdapter.java @@ -1,9 +1,9 @@ package org.qortal.api; -import javax.xml.bind.annotation.adapters.XmlAdapter; - import org.qortal.utils.Base58; +import javax.xml.bind.annotation.adapters.XmlAdapter; + public class Base58TypeAdapter extends XmlAdapter { @Override diff --git a/src/main/java/org/qortal/api/BigDecimalTypeAdapter.java b/src/main/java/org/qortal/api/BigDecimalTypeAdapter.java index fae55d0a..157c98c7 100644 --- a/src/main/java/org/qortal/api/BigDecimalTypeAdapter.java +++ b/src/main/java/org/qortal/api/BigDecimalTypeAdapter.java @@ -1,8 +1,7 @@ package org.qortal.api; -import java.math.BigDecimal; - import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.math.BigDecimal; public class BigDecimalTypeAdapter extends XmlAdapter { diff --git a/src/main/java/org/qortal/api/Constants.java b/src/main/java/org/qortal/api/Constants.java index e74a0059..d77d325a 100644 --- a/src/main/java/org/qortal/api/Constants.java +++ b/src/main/java/org/qortal/api/Constants.java @@ -4,9 +4,11 @@ import io.swagger.v3.oas.models.Operation; import io.swagger.v3.oas.models.PathItem; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.responses.ApiResponse; -import static java.util.Arrays.asList; + import java.util.List; +import static java.util.Arrays.asList; + class Constants { public static final String APIERROR_CONTEXT_PATH = "/Api"; public static final String APIERROR_KEY = "ApiError/%s"; diff --git a/src/main/java/org/qortal/api/RewardSharePercentTypeAdapter.java b/src/main/java/org/qortal/api/RewardSharePercentTypeAdapter.java index 1ad2034c..a1d416dc 100644 --- a/src/main/java/org/qortal/api/RewardSharePercentTypeAdapter.java +++ b/src/main/java/org/qortal/api/RewardSharePercentTypeAdapter.java @@ -1,8 +1,7 @@ package org.qortal.api; -import java.math.BigDecimal; - import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.math.BigDecimal; public class RewardSharePercentTypeAdapter extends XmlAdapter { diff --git a/src/main/java/org/qortal/api/SearchMode.java b/src/main/java/org/qortal/api/SearchMode.java new file mode 100644 index 00000000..85c1c61a --- /dev/null +++ b/src/main/java/org/qortal/api/SearchMode.java @@ -0,0 +1,6 @@ +package org.qortal.api; + +public enum SearchMode { + LATEST, + ALL; +} diff --git a/src/main/java/org/qortal/api/Security.java b/src/main/java/org/qortal/api/Security.java index f009d79f..19178dd0 100644 --- a/src/main/java/org/qortal/api/Security.java +++ b/src/main/java/org/qortal/api/Security.java @@ -5,12 +5,11 @@ import org.qortal.arbitrary.misc.Service; import org.qortal.controller.arbitrary.ArbitraryDataRenderManager; import org.qortal.settings.Settings; +import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; -import javax.servlet.http.HttpServletRequest; - public abstract class Security { public static final String API_KEY_HEADER = "X-API-KEY"; diff --git a/src/main/java/org/qortal/api/TransactionCountMapXmlAdapter.java b/src/main/java/org/qortal/api/TransactionCountMapXmlAdapter.java index bb2b4d8c..0aba8800 100644 --- a/src/main/java/org/qortal/api/TransactionCountMapXmlAdapter.java +++ b/src/main/java/org/qortal/api/TransactionCountMapXmlAdapter.java @@ -1,18 +1,17 @@ package org.qortal.api; +import org.eclipse.persistence.oxm.annotations.XmlVariableNode; +import org.qortal.transaction.Transaction.TransactionType; + +import javax.xml.bind.annotation.XmlTransient; +import javax.xml.bind.annotation.XmlValue; +import javax.xml.bind.annotation.adapters.XmlAdapter; import java.util.ArrayList; import java.util.EnumMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; -import javax.xml.bind.annotation.XmlTransient; -import javax.xml.bind.annotation.XmlValue; -import javax.xml.bind.annotation.adapters.XmlAdapter; - -import org.eclipse.persistence.oxm.annotations.XmlVariableNode; -import org.qortal.transaction.Transaction.TransactionType; - public class TransactionCountMapXmlAdapter extends XmlAdapter> { public static class StringIntegerMap { diff --git a/src/main/java/org/qortal/api/gateway/resource/GatewayResource.java b/src/main/java/org/qortal/api/gateway/resource/GatewayResource.java index 5d056f30..7169fd4a 100644 --- a/src/main/java/org/qortal/api/gateway/resource/GatewayResource.java +++ b/src/main/java/org/qortal/api/gateway/resource/GatewayResource.java @@ -3,6 +3,8 @@ package org.qortal.api.gateway.resource; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.commons.lang3.StringUtils; +import org.qortal.api.ApiError; +import org.qortal.api.ApiExceptionFactory; import org.qortal.api.Security; import org.qortal.arbitrary.ArbitraryDataFile; import org.qortal.arbitrary.ArbitraryDataFile.ResourceIdType; @@ -11,11 +13,16 @@ import org.qortal.arbitrary.ArbitraryDataRenderer; import org.qortal.arbitrary.ArbitraryDataResource; import org.qortal.arbitrary.misc.Service; import org.qortal.data.arbitrary.ArbitraryResourceStatus; +import org.qortal.repository.DataException; +import org.qortal.repository.Repository; +import org.qortal.repository.RepositoryManager; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.*; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; import javax.ws.rs.core.Context; import java.util.ArrayList; import java.util.Arrays; @@ -31,36 +38,12 @@ public class GatewayResource { @Context HttpServletResponse response; @Context ServletContext context; - /** - * We need to allow resource status checking (and building) via the gateway, as the node's API port - * may not be forwarded and will almost certainly not be authenticated. Since gateways allow for - * all resources to be loaded except those that are blocked, there is no need for authentication. - */ - @GET - @Path("/arbitrary/resource/status/{service}/{name}") - public ArbitraryResourceStatus getDefaultResourceStatus(@PathParam("service") Service service, - @PathParam("name") String name, - @QueryParam("build") Boolean build) { - - return this.getStatus(service, name, null, build); - } - - @GET - @Path("/arbitrary/resource/status/{service}/{name}/{identifier}") - public ArbitraryResourceStatus getResourceStatus(@PathParam("service") Service service, - @PathParam("name") String name, - @PathParam("identifier") String identifier, - @QueryParam("build") Boolean build) { - - return this.getStatus(service, name, identifier, build); - } - private ArbitraryResourceStatus getStatus(Service service, String name, String identifier, Boolean build) { // If "build=true" has been specified in the query string, build the resource before returning its status if (build != null && build == true) { - ArbitraryDataReader reader = new ArbitraryDataReader(name, ArbitraryDataFile.ResourceIdType.NAME, service, null); try { + ArbitraryDataReader reader = new ArbitraryDataReader(name, ArbitraryDataFile.ResourceIdType.NAME, service, null); if (!reader.isBuilding()) { reader.loadSynchronously(false); } @@ -69,8 +52,13 @@ public class GatewayResource { } } - ArbitraryDataResource resource = new ArbitraryDataResource(name, ResourceIdType.NAME, service, identifier); - return resource.getStatus(false); + try (final Repository repository = RepositoryManager.getRepository()) { + ArbitraryDataResource resource = new ArbitraryDataResource(name, ResourceIdType.NAME, service, identifier); + return resource.getStatus(repository); + + } catch (DataException e) { + throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.REPOSITORY_ISSUE, e); + } } diff --git a/src/main/java/org/qortal/api/model/AccountPenaltyStats.java b/src/main/java/org/qortal/api/model/AccountPenaltyStats.java index aafe25fc..929819f6 100644 --- a/src/main/java/org/qortal/api/model/AccountPenaltyStats.java +++ b/src/main/java/org/qortal/api/model/AccountPenaltyStats.java @@ -2,11 +2,9 @@ package org.qortal.api.model; import org.qortal.block.SelfSponsorshipAlgoV1Block; import org.qortal.data.account.AccountData; -import org.qortal.data.naming.NameData; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/qortal/api/model/ActivitySummary.java b/src/main/java/org/qortal/api/model/ActivitySummary.java index e8e9a3aa..ce30aa99 100644 --- a/src/main/java/org/qortal/api/model/ActivitySummary.java +++ b/src/main/java/org/qortal/api/model/ActivitySummary.java @@ -1,15 +1,14 @@ package org.qortal.api.model; -import java.util.Collections; -import java.util.EnumMap; -import java.util.Map; +import org.qortal.api.TransactionCountMapXmlAdapter; +import org.qortal.transaction.Transaction.TransactionType; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; - -import org.qortal.api.TransactionCountMapXmlAdapter; -import org.qortal.transaction.Transaction.TransactionType; +import java.util.Collections; +import java.util.EnumMap; +import java.util.Map; @XmlAccessorType(XmlAccessType.FIELD) public class ActivitySummary { diff --git a/src/main/java/org/qortal/api/model/AggregatedOrder.java b/src/main/java/org/qortal/api/model/AggregatedOrder.java index ff8ebfe2..f9c1d1ef 100644 --- a/src/main/java/org/qortal/api/model/AggregatedOrder.java +++ b/src/main/java/org/qortal/api/model/AggregatedOrder.java @@ -1,13 +1,13 @@ package org.qortal.api.model; +import org.qortal.data.asset.OrderData; + import javax.xml.bind.Marshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import org.qortal.data.asset.OrderData; - @XmlAccessorType(XmlAccessType.NONE) public class AggregatedOrder { diff --git a/src/main/java/org/qortal/api/model/AtCreationRequest.java b/src/main/java/org/qortal/api/model/AtCreationRequest.java index 14ccdaa2..43010775 100644 --- a/src/main/java/org/qortal/api/model/AtCreationRequest.java +++ b/src/main/java/org/qortal/api/model/AtCreationRequest.java @@ -1,14 +1,13 @@ package org.qortal.api.model; import io.swagger.v3.oas.annotations.media.Schema; +import org.bouncycastle.util.encoders.Base64; +import org.bouncycastle.util.encoders.DecoderException; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; -import org.bouncycastle.util.encoders.Base64; -import org.bouncycastle.util.encoders.DecoderException; - @XmlAccessorType(XmlAccessType.FIELD) public class AtCreationRequest { diff --git a/src/main/java/org/qortal/api/model/BlockSignerSummary.java b/src/main/java/org/qortal/api/model/BlockSignerSummary.java index 61961f28..479678be 100644 --- a/src/main/java/org/qortal/api/model/BlockSignerSummary.java +++ b/src/main/java/org/qortal/api/model/BlockSignerSummary.java @@ -1,10 +1,10 @@ package org.qortal.api.model; +import org.qortal.crypto.Crypto; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; -import org.qortal.crypto.Crypto; - @XmlAccessorType(XmlAccessType.FIELD) public class BlockSignerSummary { diff --git a/src/main/java/org/qortal/api/model/CrossChainBitcoinRedeemRequest.java b/src/main/java/org/qortal/api/model/CrossChainBitcoinRedeemRequest.java index 074fd24d..588cd243 100644 --- a/src/main/java/org/qortal/api/model/CrossChainBitcoinRedeemRequest.java +++ b/src/main/java/org/qortal/api/model/CrossChainBitcoinRedeemRequest.java @@ -1,11 +1,10 @@ package org.qortal.api.model; -import java.math.BigDecimal; +import io.swagger.v3.oas.annotations.media.Schema; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; - -import io.swagger.v3.oas.annotations.media.Schema; +import java.math.BigDecimal; @XmlAccessorType(XmlAccessType.FIELD) public class CrossChainBitcoinRedeemRequest { diff --git a/src/main/java/org/qortal/api/model/CrossChainBitcoinRefundRequest.java b/src/main/java/org/qortal/api/model/CrossChainBitcoinRefundRequest.java index f2485389..4b1a0cea 100644 --- a/src/main/java/org/qortal/api/model/CrossChainBitcoinRefundRequest.java +++ b/src/main/java/org/qortal/api/model/CrossChainBitcoinRefundRequest.java @@ -1,11 +1,10 @@ package org.qortal.api.model; -import java.math.BigDecimal; +import io.swagger.v3.oas.annotations.media.Schema; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; - -import io.swagger.v3.oas.annotations.media.Schema; +import java.math.BigDecimal; @XmlAccessorType(XmlAccessType.FIELD) public class CrossChainBitcoinRefundRequest { diff --git a/src/main/java/org/qortal/api/model/CrossChainBitcoinTemplateRequest.java b/src/main/java/org/qortal/api/model/CrossChainBitcoinTemplateRequest.java index b7510eaa..675581d2 100644 --- a/src/main/java/org/qortal/api/model/CrossChainBitcoinTemplateRequest.java +++ b/src/main/java/org/qortal/api/model/CrossChainBitcoinTemplateRequest.java @@ -1,10 +1,10 @@ package org.qortal.api.model; +import io.swagger.v3.oas.annotations.media.Schema; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; -import io.swagger.v3.oas.annotations.media.Schema; - @XmlAccessorType(XmlAccessType.FIELD) public class CrossChainBitcoinTemplateRequest { diff --git a/src/main/java/org/qortal/api/model/CrossChainBitcoinyHTLCStatus.java b/src/main/java/org/qortal/api/model/CrossChainBitcoinyHTLCStatus.java index 2772eae1..586c8e5e 100644 --- a/src/main/java/org/qortal/api/model/CrossChainBitcoinyHTLCStatus.java +++ b/src/main/java/org/qortal/api/model/CrossChainBitcoinyHTLCStatus.java @@ -1,11 +1,10 @@ package org.qortal.api.model; -import java.math.BigDecimal; +import io.swagger.v3.oas.annotations.media.Schema; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; - -import io.swagger.v3.oas.annotations.media.Schema; +import java.math.BigDecimal; @XmlAccessorType(XmlAccessType.FIELD) public class CrossChainBitcoinyHTLCStatus { diff --git a/src/main/java/org/qortal/api/model/CrossChainBuildRequest.java b/src/main/java/org/qortal/api/model/CrossChainBuildRequest.java index e8d38703..e4fb8fdc 100644 --- a/src/main/java/org/qortal/api/model/CrossChainBuildRequest.java +++ b/src/main/java/org/qortal/api/model/CrossChainBuildRequest.java @@ -1,11 +1,11 @@ package org.qortal.api.model; +import io.swagger.v3.oas.annotations.media.Schema; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import io.swagger.v3.oas.annotations.media.Schema; - @XmlAccessorType(XmlAccessType.FIELD) public class CrossChainBuildRequest { diff --git a/src/main/java/org/qortal/api/model/CrossChainCancelRequest.java b/src/main/java/org/qortal/api/model/CrossChainCancelRequest.java index 25a18952..ea2117ac 100644 --- a/src/main/java/org/qortal/api/model/CrossChainCancelRequest.java +++ b/src/main/java/org/qortal/api/model/CrossChainCancelRequest.java @@ -1,10 +1,10 @@ package org.qortal.api.model; +import io.swagger.v3.oas.annotations.media.Schema; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; -import io.swagger.v3.oas.annotations.media.Schema; - @XmlAccessorType(XmlAccessType.FIELD) public class CrossChainCancelRequest { diff --git a/src/main/java/org/qortal/api/model/CrossChainOfferSummary.java b/src/main/java/org/qortal/api/model/CrossChainOfferSummary.java index bf71c2d2..8f5fbc74 100644 --- a/src/main/java/org/qortal/api/model/CrossChainOfferSummary.java +++ b/src/main/java/org/qortal/api/model/CrossChainOfferSummary.java @@ -1,13 +1,12 @@ package org.qortal.api.model; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; - +import io.swagger.v3.oas.annotations.media.Schema; import org.qortal.crosschain.AcctMode; import org.qortal.data.crosschain.CrossChainTradeData; -import io.swagger.v3.oas.annotations.media.Schema; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) diff --git a/src/main/java/org/qortal/api/model/CrossChainSecretRequest.java b/src/main/java/org/qortal/api/model/CrossChainSecretRequest.java index 2db475e5..17a6274d 100644 --- a/src/main/java/org/qortal/api/model/CrossChainSecretRequest.java +++ b/src/main/java/org/qortal/api/model/CrossChainSecretRequest.java @@ -1,10 +1,10 @@ package org.qortal.api.model; +import io.swagger.v3.oas.annotations.media.Schema; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; -import io.swagger.v3.oas.annotations.media.Schema; - @XmlAccessorType(XmlAccessType.FIELD) public class CrossChainSecretRequest { diff --git a/src/main/java/org/qortal/api/model/CrossChainTradeRequest.java b/src/main/java/org/qortal/api/model/CrossChainTradeRequest.java index 1afd7290..60b49a03 100644 --- a/src/main/java/org/qortal/api/model/CrossChainTradeRequest.java +++ b/src/main/java/org/qortal/api/model/CrossChainTradeRequest.java @@ -1,10 +1,10 @@ package org.qortal.api.model; +import io.swagger.v3.oas.annotations.media.Schema; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; -import io.swagger.v3.oas.annotations.media.Schema; - @XmlAccessorType(XmlAccessType.FIELD) public class CrossChainTradeRequest { diff --git a/src/main/java/org/qortal/api/model/CrossChainTradeSummary.java b/src/main/java/org/qortal/api/model/CrossChainTradeSummary.java index edc137c0..0e12b8a4 100644 --- a/src/main/java/org/qortal/api/model/CrossChainTradeSummary.java +++ b/src/main/java/org/qortal/api/model/CrossChainTradeSummary.java @@ -1,13 +1,12 @@ package org.qortal.api.model; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.data.crosschain.CrossChainTradeData; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import org.qortal.data.crosschain.CrossChainTradeData; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) public class CrossChainTradeSummary { diff --git a/src/main/java/org/qortal/api/model/GroupMembers.java b/src/main/java/org/qortal/api/model/GroupMembers.java index 1cd13efa..b2833779 100644 --- a/src/main/java/org/qortal/api/model/GroupMembers.java +++ b/src/main/java/org/qortal/api/model/GroupMembers.java @@ -1,12 +1,11 @@ package org.qortal.api.model; -import java.util.List; +import io.swagger.v3.oas.annotations.media.Schema; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; - -import io.swagger.v3.oas.annotations.media.Schema; +import java.util.List; @Schema(description = "Group info, maybe including members") // All properties to be converted to JSON via JAX-RS diff --git a/src/main/java/org/qortal/api/model/NameSummary.java b/src/main/java/org/qortal/api/model/NameSummary.java index 1e2caa87..63bc7158 100644 --- a/src/main/java/org/qortal/api/model/NameSummary.java +++ b/src/main/java/org/qortal/api/model/NameSummary.java @@ -1,11 +1,11 @@ package org.qortal.api.model; +import org.qortal.data.naming.NameData; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; -import org.qortal.data.naming.NameData; - @XmlAccessorType(XmlAccessType.NONE) public class NameSummary { diff --git a/src/main/java/org/qortal/api/model/NodeStatus.java b/src/main/java/org/qortal/api/model/NodeStatus.java index ab5e766e..16e407b8 100644 --- a/src/main/java/org/qortal/api/model/NodeStatus.java +++ b/src/main/java/org/qortal/api/model/NodeStatus.java @@ -1,13 +1,13 @@ package org.qortal.api.model; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; - import org.qortal.controller.Controller; import org.qortal.controller.OnlineAccountsManager; import org.qortal.controller.Synchronizer; import org.qortal.network.Network; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; + @XmlAccessorType(XmlAccessType.FIELD) public class NodeStatus { diff --git a/src/main/java/org/qortal/api/model/PollVotes.java b/src/main/java/org/qortal/api/model/PollVotes.java index c57ebc37..2768694f 100644 --- a/src/main/java/org/qortal/api/model/PollVotes.java +++ b/src/main/java/org/qortal/api/model/PollVotes.java @@ -1,13 +1,12 @@ package org.qortal.api.model; -import java.util.List; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.data.voting.VoteOnPollData; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; - -import io.swagger.v3.oas.annotations.media.Schema; - -import org.qortal.data.voting.VoteOnPollData; +import java.util.List; @Schema(description = "Poll vote info, including voters") // All properties to be converted to JSON via JAX-RS diff --git a/src/main/java/org/qortal/api/model/RewardShareKeyRequest.java b/src/main/java/org/qortal/api/model/RewardShareKeyRequest.java index 9448dba0..a3bcbdf5 100644 --- a/src/main/java/org/qortal/api/model/RewardShareKeyRequest.java +++ b/src/main/java/org/qortal/api/model/RewardShareKeyRequest.java @@ -1,10 +1,10 @@ package org.qortal.api.model; +import io.swagger.v3.oas.annotations.media.Schema; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; -import io.swagger.v3.oas.annotations.media.Schema; - @XmlAccessorType(XmlAccessType.FIELD) public class RewardShareKeyRequest { diff --git a/src/main/java/org/qortal/api/model/SimpleForeignTransaction.java b/src/main/java/org/qortal/api/model/SimpleForeignTransaction.java index acc1120f..927f9baa 100644 --- a/src/main/java/org/qortal/api/model/SimpleForeignTransaction.java +++ b/src/main/java/org/qortal/api/model/SimpleForeignTransaction.java @@ -1,13 +1,12 @@ package org.qortal.api.model; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Objects; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; - @XmlAccessorType(XmlAccessType.FIELD) public class SimpleForeignTransaction { diff --git a/src/main/java/org/qortal/api/model/SimpleTransactionSignRequest.java b/src/main/java/org/qortal/api/model/SimpleTransactionSignRequest.java index 2ee80289..443e8b4b 100644 --- a/src/main/java/org/qortal/api/model/SimpleTransactionSignRequest.java +++ b/src/main/java/org/qortal/api/model/SimpleTransactionSignRequest.java @@ -1,10 +1,10 @@ package org.qortal.api.model; +import io.swagger.v3.oas.annotations.media.Schema; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; -import io.swagger.v3.oas.annotations.media.Schema; - @XmlAccessorType(XmlAccessType.FIELD) public class SimpleTransactionSignRequest { diff --git a/src/main/java/org/qortal/api/model/TradeWithOrderInfo.java b/src/main/java/org/qortal/api/model/TradeWithOrderInfo.java index f773487b..c43856a7 100644 --- a/src/main/java/org/qortal/api/model/TradeWithOrderInfo.java +++ b/src/main/java/org/qortal/api/model/TradeWithOrderInfo.java @@ -1,13 +1,12 @@ package org.qortal.api.model; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; - +import io.swagger.v3.oas.annotations.media.Schema; import org.qortal.data.asset.OrderData; import org.qortal.data.asset.TradeData; -import io.swagger.v3.oas.annotations.media.Schema; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; @Schema(description = "Asset trade, including order info") // All properties to be converted to JSON via JAX-RS diff --git a/src/main/java/org/qortal/api/model/crosschain/BitcoinSendRequest.java b/src/main/java/org/qortal/api/model/crosschain/BitcoinSendRequest.java index 86d3d7c8..0c5d089a 100644 --- a/src/main/java/org/qortal/api/model/crosschain/BitcoinSendRequest.java +++ b/src/main/java/org/qortal/api/model/crosschain/BitcoinSendRequest.java @@ -1,11 +1,11 @@ package org.qortal.api.model.crosschain; +import io.swagger.v3.oas.annotations.media.Schema; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import io.swagger.v3.oas.annotations.media.Schema; - @XmlAccessorType(XmlAccessType.FIELD) public class BitcoinSendRequest { diff --git a/src/main/java/org/qortal/api/model/crosschain/DigibyteSendRequest.java b/src/main/java/org/qortal/api/model/crosschain/DigibyteSendRequest.java index a09c14a3..63c2f328 100644 --- a/src/main/java/org/qortal/api/model/crosschain/DigibyteSendRequest.java +++ b/src/main/java/org/qortal/api/model/crosschain/DigibyteSendRequest.java @@ -1,11 +1,11 @@ package org.qortal.api.model.crosschain; +import io.swagger.v3.oas.annotations.media.Schema; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import io.swagger.v3.oas.annotations.media.Schema; - @XmlAccessorType(XmlAccessType.FIELD) public class DigibyteSendRequest { diff --git a/src/main/java/org/qortal/api/model/crosschain/LitecoinSendRequest.java b/src/main/java/org/qortal/api/model/crosschain/LitecoinSendRequest.java index 5f215740..79ee6ed2 100644 --- a/src/main/java/org/qortal/api/model/crosschain/LitecoinSendRequest.java +++ b/src/main/java/org/qortal/api/model/crosschain/LitecoinSendRequest.java @@ -1,11 +1,11 @@ package org.qortal.api.model.crosschain; +import io.swagger.v3.oas.annotations.media.Schema; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import io.swagger.v3.oas.annotations.media.Schema; - @XmlAccessorType(XmlAccessType.FIELD) public class LitecoinSendRequest { diff --git a/src/main/java/org/qortal/api/model/crosschain/RavencoinSendRequest.java b/src/main/java/org/qortal/api/model/crosschain/RavencoinSendRequest.java index 0165b91d..a585bf45 100644 --- a/src/main/java/org/qortal/api/model/crosschain/RavencoinSendRequest.java +++ b/src/main/java/org/qortal/api/model/crosschain/RavencoinSendRequest.java @@ -1,11 +1,11 @@ package org.qortal.api.model.crosschain; +import io.swagger.v3.oas.annotations.media.Schema; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import io.swagger.v3.oas.annotations.media.Schema; - @XmlAccessorType(XmlAccessType.FIELD) public class RavencoinSendRequest { diff --git a/src/main/java/org/qortal/api/model/crosschain/TradeBotCreateRequest.java b/src/main/java/org/qortal/api/model/crosschain/TradeBotCreateRequest.java index 1f96488e..09e58bcc 100644 --- a/src/main/java/org/qortal/api/model/crosschain/TradeBotCreateRequest.java +++ b/src/main/java/org/qortal/api/model/crosschain/TradeBotCreateRequest.java @@ -1,13 +1,12 @@ package org.qortal.api.model.crosschain; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.crosschain.SupportedBlockchain; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import org.qortal.crosschain.SupportedBlockchain; - -import io.swagger.v3.oas.annotations.media.Schema; - @XmlAccessorType(XmlAccessType.FIELD) public class TradeBotCreateRequest { diff --git a/src/main/java/org/qortal/api/model/crosschain/TradeBotRespondRequest.java b/src/main/java/org/qortal/api/model/crosschain/TradeBotRespondRequest.java index ecc8ed6f..25a4282b 100644 --- a/src/main/java/org/qortal/api/model/crosschain/TradeBotRespondRequest.java +++ b/src/main/java/org/qortal/api/model/crosschain/TradeBotRespondRequest.java @@ -1,10 +1,10 @@ package org.qortal.api.model.crosschain; +import io.swagger.v3.oas.annotations.media.Schema; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; -import io.swagger.v3.oas.annotations.media.Schema; - @XmlAccessorType(XmlAccessType.FIELD) public class TradeBotRespondRequest { diff --git a/src/main/java/org/qortal/api/resource/AddressesResource.java b/src/main/java/org/qortal/api/resource/AddressesResource.java index 79cb6e05..688b17fc 100644 --- a/src/main/java/org/qortal/api/resource/AddressesResource.java +++ b/src/main/java/org/qortal/api/resource/AddressesResource.java @@ -1,5 +1,6 @@ package org.qortal.api.resource; +import com.google.common.primitives.Bytes; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; @@ -9,25 +10,9 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.stream.Collectors; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.*; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; - import org.qortal.account.Account; import org.qortal.account.PrivateKeyAccount; -import org.qortal.api.ApiError; -import org.qortal.api.ApiErrors; -import org.qortal.api.ApiException; -import org.qortal.api.ApiExceptionFactory; -import org.qortal.api.Security; +import org.qortal.api.*; import org.qortal.api.model.AccountPenaltyStats; import org.qortal.api.model.ApiOnlineAccount; import org.qortal.api.model.RewardShareKeyRequest; @@ -59,7 +44,15 @@ import org.qortal.transform.transaction.TransactionTransformer; import org.qortal.utils.Amounts; import org.qortal.utils.Base58; -import com.google.common.primitives.Bytes; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.*; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; @Path("/addresses") @Tag(name = "Addresses") diff --git a/src/main/java/org/qortal/api/resource/AnnotationPostProcessor.java b/src/main/java/org/qortal/api/resource/AnnotationPostProcessor.java index 7b4a1ab2..da2fdc7c 100644 --- a/src/main/java/org/qortal/api/resource/AnnotationPostProcessor.java +++ b/src/main/java/org/qortal/api/resource/AnnotationPostProcessor.java @@ -13,12 +13,6 @@ import io.swagger.v3.oas.models.media.MediaType; import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.parameters.Parameter; import io.swagger.v3.oas.models.responses.ApiResponse; - -import java.lang.reflect.Method; -import java.util.Locale; - -import javax.ws.rs.Path; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.qortal.api.ApiError; @@ -27,6 +21,10 @@ import org.qortal.api.ApiErrors; import org.qortal.api.ApiService; import org.qortal.globalization.Translator; +import javax.ws.rs.Path; +import java.lang.reflect.Method; +import java.util.Locale; + public class AnnotationPostProcessor implements ReaderListener { private static final Logger LOGGER = LogManager.getLogger(AnnotationPostProcessor.class); diff --git a/src/main/java/org/qortal/api/resource/ApiDefinition.java b/src/main/java/org/qortal/api/resource/ApiDefinition.java index f9ec7459..98db58c7 100644 --- a/src/main/java/org/qortal/api/resource/ApiDefinition.java +++ b/src/main/java/org/qortal/api/resource/ApiDefinition.java @@ -9,7 +9,6 @@ import io.swagger.v3.oas.annotations.info.Info; import io.swagger.v3.oas.annotations.security.SecurityScheme; import io.swagger.v3.oas.annotations.security.SecuritySchemes; import io.swagger.v3.oas.annotations.tags.Tag; - import org.qortal.api.Security; @OpenAPIDefinition( diff --git a/src/main/java/org/qortal/api/resource/ApiExceptionMapper.java b/src/main/java/org/qortal/api/resource/ApiExceptionMapper.java index d0f7ada7..15bb1913 100644 --- a/src/main/java/org/qortal/api/resource/ApiExceptionMapper.java +++ b/src/main/java/org/qortal/api/resource/ApiExceptionMapper.java @@ -1,5 +1,10 @@ package org.qortal.api.resource; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.glassfish.jersey.server.ParamException; +import org.qortal.settings.Settings; + import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.WebApplicationException; @@ -8,11 +13,6 @@ import javax.ws.rs.core.Response; import javax.ws.rs.ext.ExceptionMapper; import javax.ws.rs.ext.Provider; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.glassfish.jersey.server.ParamException; -import org.qortal.settings.Settings; - @Provider public class ApiExceptionMapper implements ExceptionMapper { diff --git a/src/main/java/org/qortal/api/resource/AppsResource.java b/src/main/java/org/qortal/api/resource/AppsResource.java index 19a4a184..a5f50935 100644 --- a/src/main/java/org/qortal/api/resource/AppsResource.java +++ b/src/main/java/org/qortal/api/resource/AppsResource.java @@ -1,18 +1,20 @@ package org.qortal.api.resource; import com.google.common.io.Resources; +import io.swagger.v3.oas.annotations.Hidden; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.Hidden; import io.swagger.v3.oas.annotations.tags.Tag; -import org.qortal.api.*; +import org.qortal.api.ApiError; +import org.qortal.api.ApiExceptionFactory; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.*; +import javax.ws.rs.GET; +import javax.ws.rs.Path; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import java.io.IOException; diff --git a/src/main/java/org/qortal/api/resource/ArbitraryResource.java b/src/main/java/org/qortal/api/resource/ArbitraryResource.java index e7a20d0e..7752be8c 100644 --- a/src/main/java/org/qortal/api/resource/ArbitraryResource.java +++ b/src/main/java/org/qortal/api/resource/ArbitraryResource.java @@ -12,24 +12,6 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; - -import java.io.*; -import java.net.FileNameMap; -import java.net.URLConnection; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Objects; - -import javax.servlet.ServletContext; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.*; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; - import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.ArrayUtils; import org.apache.logging.log4j.LogManager; @@ -45,11 +27,15 @@ import org.qortal.arbitrary.metadata.ArbitraryDataTransactionMetadata; import org.qortal.arbitrary.misc.Category; import org.qortal.arbitrary.misc.Service; import org.qortal.controller.Controller; +import org.qortal.controller.arbitrary.ArbitraryDataCacheManager; import org.qortal.controller.arbitrary.ArbitraryDataRenderManager; import org.qortal.controller.arbitrary.ArbitraryDataStorageManager; import org.qortal.controller.arbitrary.ArbitraryMetadataManager; import org.qortal.data.account.AccountData; -import org.qortal.data.arbitrary.*; +import org.qortal.data.arbitrary.ArbitraryCategoryInfo; +import org.qortal.data.arbitrary.ArbitraryResourceData; +import org.qortal.data.arbitrary.ArbitraryResourceMetadata; +import org.qortal.data.arbitrary.ArbitraryResourceStatus; import org.qortal.data.naming.NameData; import org.qortal.data.transaction.ArbitraryTransactionData; import org.qortal.data.transaction.TransactionData; @@ -67,6 +53,25 @@ import org.qortal.transform.transaction.ArbitraryTransactionTransformer; import org.qortal.transform.transaction.TransactionTransformer; import org.qortal.utils.*; +import javax.servlet.ServletContext; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.*; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.FileNameMap; +import java.net.URLConnection; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; + @Path("/arbitrary") @Tag(name = "Arbitrary") public class ArbitraryResource { @@ -86,12 +91,12 @@ public class ArbitraryResource { "- If default is set to true, only resources without identifiers will be returned.", responses = { @ApiResponse( - content = @Content(mediaType = MediaType.APPLICATION_JSON, schema = @Schema(implementation = ArbitraryResourceInfo.class)) + content = @Content(mediaType = MediaType.APPLICATION_JSON, schema = @Schema(implementation = ArbitraryResourceData.class)) ) } ) @ApiErrors({ApiError.REPOSITORY_ISSUE}) - public List getResources( + public List getResources( @QueryParam("service") Service service, @QueryParam("name") String name, @QueryParam("identifier") String identifier, @@ -133,20 +138,14 @@ public class ArbitraryResource { } } - List resources = repository.getArbitraryRepository() - .getArbitraryResources(service, identifier, names, defaultRes, followedOnly, excludeBlocked, limit, offset, reverse); + List resources = repository.getArbitraryRepository() + .getArbitraryResources(service, identifier, names, defaultRes, followedOnly, excludeBlocked, + includeMetadata, includeStatus, limit, offset, reverse); if (resources == null) { return new ArrayList<>(); } - if (includeStatus != null && includeStatus) { - resources = ArbitraryTransactionUtils.addStatusToResources(resources); - } - if (includeMetadata != null && includeMetadata) { - resources = ArbitraryTransactionUtils.addMetadataToResources(resources); - } - return resources; } catch (DataException e) { @@ -161,24 +160,30 @@ public class ArbitraryResource { "If default is set to true, only resources without identifiers will be returned.", responses = { @ApiResponse( - content = @Content(mediaType = MediaType.APPLICATION_JSON, schema = @Schema(implementation = ArbitraryResourceInfo.class)) + content = @Content(mediaType = MediaType.APPLICATION_JSON, schema = @Schema(implementation = ArbitraryResourceData.class)) ) } ) @ApiErrors({ApiError.REPOSITORY_ISSUE}) - public List searchResources( + public List searchResources( @QueryParam("service") Service service, - @Parameter(description = "Query (searches both name and identifier fields)") @QueryParam("query") String query, + @Parameter(description = "Query (searches name, identifier, title and description fields)") @QueryParam("query") String query, @Parameter(description = "Identifier (searches identifier field only)") @QueryParam("identifier") String identifier, @Parameter(description = "Name (searches name field only)") @QueryParam("name") List names, + @Parameter(description = "Title (searches title metadata field only)") @QueryParam("title") String title, + @Parameter(description = "Description (searches description metadata field only)") @QueryParam("description") String description, @Parameter(description = "Prefix only (if true, only the beginning of fields are matched)") @QueryParam("prefix") Boolean prefixOnly, @Parameter(description = "Exact match names only (if true, partial name matches are excluded)") @QueryParam("exactmatchnames") Boolean exactMatchNamesOnly, @Parameter(description = "Default resources (without identifiers) only") @QueryParam("default") Boolean defaultResource, + @Parameter(description = "Search mode") @QueryParam("mode") SearchMode mode, + @Parameter(description = "Min level") @QueryParam("minlevel") Integer minLevel, @Parameter(description = "Filter names by list (exact matches only)") @QueryParam("namefilter") String nameListFilter, @Parameter(description = "Include followed names only") @QueryParam("followedonly") Boolean followedOnly, @Parameter(description = "Exclude blocked content") @QueryParam("excludeblocked") Boolean excludeBlocked, @Parameter(description = "Include status") @QueryParam("includestatus") Boolean includeStatus, @Parameter(description = "Include metadata") @QueryParam("includemetadata") Boolean includeMetadata, + @Parameter(description = "Creation date before timestamp") @QueryParam("before") Long before, + @Parameter(description = "Creation date after timestamp") @QueryParam("after") Long after, @Parameter(ref = "limit") @QueryParam("limit") Integer limit, @Parameter(ref = "offset") @QueryParam("offset") Integer offset, @Parameter(ref = "reverse") @QueryParam("reverse") Boolean reverse) { @@ -206,20 +211,15 @@ public class ArbitraryResource { names = null; } - List resources = repository.getArbitraryRepository() - .searchArbitraryResources(service, query, identifier, names, usePrefixOnly, exactMatchNames, defaultRes, followedOnly, excludeBlocked, limit, offset, reverse); + List resources = repository.getArbitraryRepository() + .searchArbitraryResources(service, query, identifier, names, title, description, usePrefixOnly, + exactMatchNames, defaultRes, mode, minLevel, followedOnly, excludeBlocked, includeMetadata, includeStatus, + before, after, limit, offset, reverse); if (resources == null) { return new ArrayList<>(); } - if (includeStatus != null && includeStatus) { - resources = ArbitraryTransactionUtils.addStatusToResources(resources); - } - if (includeMetadata != null && includeMetadata) { - resources = ArbitraryTransactionUtils.addMetadataToResources(resources); - } - return resources; } catch (DataException e) { @@ -238,16 +238,14 @@ public class ArbitraryResource { ) } ) - @SecurityRequirement(name = "apiKey") - public ArbitraryResourceStatus getDefaultResourceStatus(@HeaderParam(Security.API_KEY_HEADER) String apiKey, - @PathParam("service") Service service, + public ArbitraryResourceStatus getDefaultResourceStatus(@PathParam("service") Service service, @PathParam("name") String name, @QueryParam("build") Boolean build) { if (!Settings.getInstance().isQDNAuthBypassEnabled()) - Security.requirePriorAuthorizationOrApiKey(request, name, service, null, apiKey); + Security.requirePriorAuthorizationOrApiKey(request, name, service, null, null); - return ArbitraryTransactionUtils.getStatus(service, name, null, build); + return ArbitraryTransactionUtils.getStatus(service, name, null, build, true); } @GET @@ -261,14 +259,12 @@ public class ArbitraryResource { ) } ) - @SecurityRequirement(name = "apiKey") - public FileProperties getResourceProperties(@HeaderParam(Security.API_KEY_HEADER) String apiKey, - @PathParam("service") Service service, - @PathParam("name") String name, - @PathParam("identifier") String identifier) { + public FileProperties getResourceProperties(@PathParam("service") Service service, + @PathParam("name") String name, + @PathParam("identifier") String identifier) { if (!Settings.getInstance().isQDNAuthBypassEnabled()) - Security.requirePriorAuthorizationOrApiKey(request, name, service, identifier, apiKey); + Security.requirePriorAuthorizationOrApiKey(request, name, service, identifier, null); return this.getFileProperties(service, name, identifier); } @@ -284,17 +280,15 @@ public class ArbitraryResource { ) } ) - @SecurityRequirement(name = "apiKey") - public ArbitraryResourceStatus getResourceStatus(@HeaderParam(Security.API_KEY_HEADER) String apiKey, - @PathParam("service") Service service, + public ArbitraryResourceStatus getResourceStatus(@PathParam("service") Service service, @PathParam("name") String name, @PathParam("identifier") String identifier, @QueryParam("build") Boolean build) { if (!Settings.getInstance().isQDNAuthBypassEnabled()) - Security.requirePriorAuthorizationOrApiKey(request, name, service, identifier, apiKey); + Security.requirePriorAuthorizationOrApiKey(request, name, service, identifier, null); - return ArbitraryTransactionUtils.getStatus(service, name, identifier, build); + return ArbitraryTransactionUtils.getStatus(service, name, identifier, build, true); } @@ -479,21 +473,19 @@ public class ArbitraryResource { summary = "List arbitrary resources hosted by this node", responses = { @ApiResponse( - content = @Content(mediaType = MediaType.APPLICATION_JSON, schema = @Schema(implementation = ArbitraryResourceInfo.class)) + content = @Content(mediaType = MediaType.APPLICATION_JSON, schema = @Schema(implementation = ArbitraryResourceData.class)) ) } ) @ApiErrors({ApiError.REPOSITORY_ISSUE}) - public List getHostedResources( + public List getHostedResources( @HeaderParam(Security.API_KEY_HEADER) String apiKey, - @Parameter(description = "Include status") @QueryParam("includestatus") Boolean includeStatus, - @Parameter(description = "Include metadata") @QueryParam("includemetadata") Boolean includeMetadata, @Parameter(ref = "limit") @QueryParam("limit") Integer limit, @Parameter(ref = "offset") @QueryParam("offset") Integer offset, @QueryParam("query") String query) { Security.checkApiCallAllowed(request); - List resources = new ArrayList<>(); + List resources = new ArrayList<>(); try (final Repository repository = RepositoryManager.getRepository()) { @@ -509,22 +501,15 @@ public class ArbitraryResource { if (transactionData.getService() == null) { continue; } - ArbitraryResourceInfo arbitraryResourceInfo = new ArbitraryResourceInfo(); - arbitraryResourceInfo.name = transactionData.getName(); - arbitraryResourceInfo.service = transactionData.getService(); - arbitraryResourceInfo.identifier = transactionData.getIdentifier(); - if (!resources.contains(arbitraryResourceInfo)) { - resources.add(arbitraryResourceInfo); + ArbitraryResourceData arbitraryResourceData = new ArbitraryResourceData(); + arbitraryResourceData.name = transactionData.getName(); + arbitraryResourceData.service = transactionData.getService(); + arbitraryResourceData.identifier = transactionData.getIdentifier(); + if (!resources.contains(arbitraryResourceData)) { + resources.add(arbitraryResourceData); } } - if (includeStatus != null && includeStatus) { - resources = ArbitraryTransactionUtils.addStatusToResources(resources); - } - if (includeMetadata != null && includeMetadata) { - resources = ArbitraryTransactionUtils.addMetadataToResources(resources); - } - return resources; } catch (DataException e) { @@ -551,8 +536,14 @@ public class ArbitraryResource { @PathParam("identifier") String identifier) { Security.checkApiCallAllowed(request); - ArbitraryDataResource resource = new ArbitraryDataResource(name, ResourceIdType.NAME, service, identifier); - return resource.delete(false); + + try (final Repository repository = RepositoryManager.getRepository()) { + ArbitraryDataResource resource = new ArbitraryDataResource(name, ResourceIdType.NAME, service, identifier); + return resource.delete(repository, false); + + } catch (DataException e) { + throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.REPOSITORY_ISSUE, e); + } } @POST @@ -644,9 +635,7 @@ public class ArbitraryResource { ) } ) - @SecurityRequirement(name = "apiKey") - public HttpServletResponse get(@HeaderParam(Security.API_KEY_HEADER) String apiKey, - @PathParam("service") Service service, + public HttpServletResponse get(@PathParam("service") Service service, @PathParam("name") String name, @QueryParam("filepath") String filepath, @QueryParam("encoding") String encoding, @@ -679,9 +668,7 @@ public class ArbitraryResource { ) } ) - @SecurityRequirement(name = "apiKey") - public HttpServletResponse get(@HeaderParam(Security.API_KEY_HEADER) String apiKey, - @PathParam("service") Service service, + public HttpServletResponse get(@PathParam("service") Service service, @PathParam("name") String name, @PathParam("identifier") String identifier, @QueryParam("filepath") String filepath, @@ -692,7 +679,7 @@ public class ArbitraryResource { // Authentication can be bypassed in the settings, for those running public QDN nodes if (!Settings.getInstance().isQDNAuthBypassEnabled()) { - Security.checkApiCallAllowed(request, apiKey); + Security.checkApiCallAllowed(request, null); } return this.download(service, name, identifier, filepath, encoding, rebuild, async, attempts); @@ -717,7 +704,6 @@ public class ArbitraryResource { ) } ) - @SecurityRequirement(name = "apiKey") public ArbitraryResourceMetadata getMetadata(@PathParam("service") Service service, @PathParam("name") String name, @PathParam("identifier") String identifier) { @@ -1127,6 +1113,36 @@ public class ArbitraryResource { } + @POST + @Path("/resources/cache/rebuild") + @Operation( + summary = "Rebuild arbitrary resources cache from transactions", + responses = { + @ApiResponse( + description = "true on success", + content = @Content( + mediaType = MediaType.TEXT_PLAIN, + schema = @Schema( + type = "boolean" + ) + ) + ) + } + ) + @SecurityRequirement(name = "apiKey") + public String rebuildCache(@HeaderParam(Security.API_KEY_HEADER) String apiKey) { + Security.checkApiCallAllowed(request); + + try (final Repository repository = RepositoryManager.getRepository()) { + ArbitraryDataCacheManager.getInstance().buildArbitraryResourcesCache(repository, true); + + return "true"; + } catch (DataException e) { + throw ApiExceptionFactory.INSTANCE.createCustomException(request, ApiError.REPOSITORY_ISSUE, e.getMessage()); + } + } + + // Shared methods private String preview(String directoryPath, Service service) { @@ -1275,8 +1291,8 @@ public class ArbitraryResource { private HttpServletResponse download(Service service, String name, String identifier, String filepath, String encoding, boolean rebuild, boolean async, Integer maxAttempts) { - ArbitraryDataReader arbitraryDataReader = new ArbitraryDataReader(name, ArbitraryDataFile.ResourceIdType.NAME, service, identifier); try { + ArbitraryDataReader arbitraryDataReader = new ArbitraryDataReader(name, ArbitraryDataFile.ResourceIdType.NAME, service, identifier); int attempts = 0; if (maxAttempts == null) { @@ -1382,8 +1398,8 @@ public class ArbitraryResource { } private FileProperties getFileProperties(Service service, String name, String identifier) { - ArbitraryDataReader arbitraryDataReader = new ArbitraryDataReader(name, ArbitraryDataFile.ResourceIdType.NAME, service, identifier); try { + ArbitraryDataReader arbitraryDataReader = new ArbitraryDataReader(name, ArbitraryDataFile.ResourceIdType.NAME, service, identifier); arbitraryDataReader.loadSynchronously(false); java.nio.file.Path outputPath = arbitraryDataReader.getFilePath(); if (outputPath == null) { diff --git a/src/main/java/org/qortal/api/resource/AssetsResource.java b/src/main/java/org/qortal/api/resource/AssetsResource.java index 8af91e45..40e04256 100644 --- a/src/main/java/org/qortal/api/resource/AssetsResource.java +++ b/src/main/java/org/qortal/api/resource/AssetsResource.java @@ -8,22 +8,6 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.stream.Collectors; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.DefaultValue; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; - import org.qortal.api.ApiError; import org.qortal.api.ApiErrors; import org.qortal.api.ApiException; @@ -39,27 +23,27 @@ import org.qortal.data.asset.AssetData; import org.qortal.data.asset.OrderData; import org.qortal.data.asset.RecentTradeData; import org.qortal.data.asset.TradeData; -import org.qortal.data.transaction.CancelAssetOrderTransactionData; -import org.qortal.data.transaction.CreateAssetOrderTransactionData; -import org.qortal.data.transaction.IssueAssetTransactionData; -import org.qortal.data.transaction.TransactionData; -import org.qortal.data.transaction.TransferAssetTransactionData; -import org.qortal.data.transaction.UpdateAssetTransactionData; +import org.qortal.data.transaction.*; +import org.qortal.repository.AccountRepository.BalanceOrdering; import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.repository.RepositoryManager; -import org.qortal.repository.AccountRepository.BalanceOrdering; import org.qortal.settings.Settings; import org.qortal.transaction.Transaction; import org.qortal.transaction.Transaction.ValidationResult; import org.qortal.transform.TransformationException; -import org.qortal.transform.transaction.CancelAssetOrderTransactionTransformer; -import org.qortal.transform.transaction.CreateAssetOrderTransactionTransformer; -import org.qortal.transform.transaction.IssueAssetTransactionTransformer; -import org.qortal.transform.transaction.TransferAssetTransactionTransformer; -import org.qortal.transform.transaction.UpdateAssetTransactionTransformer; +import org.qortal.transform.transaction.*; import org.qortal.utils.Base58; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.*; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + @Path("/assets") @Tag(name = "Assets") public class AssetsResource { diff --git a/src/main/java/org/qortal/api/resource/AtResource.java b/src/main/java/org/qortal/api/resource/AtResource.java index 13bfec83..a9661a1c 100644 --- a/src/main/java/org/qortal/api/resource/AtResource.java +++ b/src/main/java/org/qortal/api/resource/AtResource.java @@ -8,26 +8,14 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; - -import java.util.List; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; - import org.ciyam.at.MachineState; import org.qortal.api.ApiError; import org.qortal.api.ApiErrors; import org.qortal.api.ApiException; import org.qortal.api.ApiExceptionFactory; +import org.qortal.api.model.AtCreationRequest; import org.qortal.data.at.ATData; import org.qortal.data.at.ATStateData; -import org.qortal.api.model.AtCreationRequest; import org.qortal.data.transaction.DeployAtTransactionData; import org.qortal.repository.DataException; import org.qortal.repository.Repository; @@ -38,10 +26,15 @@ import org.qortal.transaction.Transaction.ValidationResult; import org.qortal.transform.TransformationException; import org.qortal.transform.transaction.DeployAtTransactionTransformer; import org.qortal.utils.Base58; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.*; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.List; + @Path("/at") @Tag(name = "Automated Transactions") diff --git a/src/main/java/org/qortal/api/resource/BlocksResource.java b/src/main/java/org/qortal/api/resource/BlocksResource.java index ad5e466d..22b40a1f 100644 --- a/src/main/java/org/qortal/api/resource/BlocksResource.java +++ b/src/main/java/org/qortal/api/resource/BlocksResource.java @@ -8,26 +8,6 @@ import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.math.BigDecimal; -import java.math.BigInteger; -import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; -import java.util.List; - -import javax.servlet.http.HttpServletRequest; - -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; - import org.qortal.account.Account; import org.qortal.api.ApiError; import org.qortal.api.ApiErrors; @@ -35,7 +15,6 @@ import org.qortal.api.ApiExceptionFactory; import org.qortal.api.model.BlockMintingInfo; import org.qortal.api.model.BlockSignerSummary; import org.qortal.block.Block; -import org.qortal.controller.Controller; import org.qortal.crypto.Crypto; import org.qortal.data.account.AccountData; import org.qortal.data.block.BlockData; @@ -50,6 +29,23 @@ import org.qortal.transform.block.BlockTransformer; import org.qortal.utils.Base58; import org.qortal.utils.Triple; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; + @Path("/blocks") @Tag(name = "Blocks") public class BlocksResource { diff --git a/src/main/java/org/qortal/api/resource/ChatResource.java b/src/main/java/org/qortal/api/resource/ChatResource.java index 22e90a43..66a2bd46 100644 --- a/src/main/java/org/qortal/api/resource/ChatResource.java +++ b/src/main/java/org/qortal/api/resource/ChatResource.java @@ -1,5 +1,6 @@ package org.qortal.api.resource; +import com.google.common.primitives.Bytes; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; @@ -9,14 +10,6 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; - -import java.util.List; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.*; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; - import org.qortal.api.ApiError; import org.qortal.api.ApiErrors; import org.qortal.api.ApiExceptionFactory; @@ -38,7 +31,11 @@ import org.qortal.transform.transaction.ChatTransactionTransformer; import org.qortal.transform.transaction.TransactionTransformer; import org.qortal.utils.Base58; -import com.google.common.primitives.Bytes; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.*; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.List; import static org.qortal.data.chat.ChatMessage.Encoding; diff --git a/src/main/java/org/qortal/api/resource/CrossChainBitcoinACCTv1Resource.java b/src/main/java/org/qortal/api/resource/CrossChainBitcoinACCTv1Resource.java index 6cfa130a..59472621 100644 --- a/src/main/java/org/qortal/api/resource/CrossChainBitcoinACCTv1Resource.java +++ b/src/main/java/org/qortal/api/resource/CrossChainBitcoinACCTv1Resource.java @@ -7,17 +7,6 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; - -import java.util.Arrays; -import java.util.Random; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; - import org.qortal.account.PublicKeyAccount; import org.qortal.api.ApiError; import org.qortal.api.ApiErrors; @@ -27,9 +16,9 @@ import org.qortal.api.model.CrossChainBuildRequest; import org.qortal.api.model.CrossChainDualSecretRequest; import org.qortal.api.model.CrossChainTradeRequest; import org.qortal.asset.Asset; +import org.qortal.crosschain.AcctMode; import org.qortal.crosschain.BitcoinACCTv1; import org.qortal.crosschain.Bitcoiny; -import org.qortal.crosschain.AcctMode; import org.qortal.crypto.Crypto; import org.qortal.data.at.ATData; import org.qortal.data.crosschain.CrossChainTradeData; @@ -53,6 +42,15 @@ import org.qortal.transform.transaction.MessageTransactionTransformer; import org.qortal.utils.Base58; import org.qortal.utils.NTP; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.HeaderParam; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.Arrays; +import java.util.Random; + @Path("/crosschain/BitcoinACCTv1") @Tag(name = "Cross-Chain (BitcoinACCTv1)") public class CrossChainBitcoinACCTv1Resource { diff --git a/src/main/java/org/qortal/api/resource/CrossChainBitcoinResource.java b/src/main/java/org/qortal/api/resource/CrossChainBitcoinResource.java index 1e276e59..efefd4c9 100644 --- a/src/main/java/org/qortal/api/resource/CrossChainBitcoinResource.java +++ b/src/main/java/org/qortal/api/resource/CrossChainBitcoinResource.java @@ -8,17 +8,6 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; - -import java.util.List; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.POST; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; - import org.bitcoinj.core.Transaction; import org.qortal.api.ApiError; import org.qortal.api.ApiErrors; @@ -29,6 +18,15 @@ import org.qortal.crosschain.Bitcoin; import org.qortal.crosschain.ForeignBlockchainException; import org.qortal.crosschain.SimpleTransaction; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.GET; +import javax.ws.rs.HeaderParam; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.List; + @Path("/crosschain/btc") @Tag(name = "Cross-Chain (Bitcoin)") public class CrossChainBitcoinResource { diff --git a/src/main/java/org/qortal/api/resource/CrossChainDigibyteResource.java b/src/main/java/org/qortal/api/resource/CrossChainDigibyteResource.java index 781d78f6..60a4aa0d 100644 --- a/src/main/java/org/qortal/api/resource/CrossChainDigibyteResource.java +++ b/src/main/java/org/qortal/api/resource/CrossChainDigibyteResource.java @@ -8,17 +8,6 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; - -import java.util.List; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.POST; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; - import org.bitcoinj.core.Transaction; import org.qortal.api.ApiError; import org.qortal.api.ApiErrors; @@ -29,6 +18,15 @@ import org.qortal.crosschain.Digibyte; import org.qortal.crosschain.ForeignBlockchainException; import org.qortal.crosschain.SimpleTransaction; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.GET; +import javax.ws.rs.HeaderParam; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.List; + @Path("/crosschain/dgb") @Tag(name = "Cross-Chain (Digibyte)") public class CrossChainDigibyteResource { diff --git a/src/main/java/org/qortal/api/resource/CrossChainDogecoinResource.java b/src/main/java/org/qortal/api/resource/CrossChainDogecoinResource.java index ff1d6d14..3c04b0e8 100644 --- a/src/main/java/org/qortal/api/resource/CrossChainDogecoinResource.java +++ b/src/main/java/org/qortal/api/resource/CrossChainDogecoinResource.java @@ -14,14 +14,14 @@ import org.qortal.api.ApiErrors; import org.qortal.api.ApiExceptionFactory; import org.qortal.api.Security; import org.qortal.api.model.crosschain.DogecoinSendRequest; -import org.qortal.crosschain.ForeignBlockchainException; import org.qortal.crosschain.Dogecoin; +import org.qortal.crosschain.ForeignBlockchainException; import org.qortal.crosschain.SimpleTransaction; import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.GET; import javax.ws.rs.HeaderParam; import javax.ws.rs.POST; -import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; diff --git a/src/main/java/org/qortal/api/resource/CrossChainHtlcResource.java b/src/main/java/org/qortal/api/resource/CrossChainHtlcResource.java index 45b92c7c..3f05643d 100644 --- a/src/main/java/org/qortal/api/resource/CrossChainHtlcResource.java +++ b/src/main/java/org/qortal/api/resource/CrossChainHtlcResource.java @@ -7,17 +7,6 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; - -import java.math.BigDecimal; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.*; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.bitcoinj.core.*; @@ -35,6 +24,15 @@ import org.qortal.repository.RepositoryManager; import org.qortal.utils.Base58; import org.qortal.utils.NTP; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.*; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.math.BigDecimal; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + @Path("/crosschain/htlc") @Tag(name = "Cross-Chain (Hash time-locked contracts)") public class CrossChainHtlcResource { diff --git a/src/main/java/org/qortal/api/resource/CrossChainLitecoinACCTv1Resource.java b/src/main/java/org/qortal/api/resource/CrossChainLitecoinACCTv1Resource.java index 7b6bc962..b768d8a1 100644 --- a/src/main/java/org/qortal/api/resource/CrossChainLitecoinACCTv1Resource.java +++ b/src/main/java/org/qortal/api/resource/CrossChainLitecoinACCTv1Resource.java @@ -24,11 +24,7 @@ import org.qortal.repository.Repository; import org.qortal.repository.RepositoryManager; import org.qortal.transaction.MessageTransaction; import org.qortal.transaction.Transaction.ValidationResult; -import org.qortal.transform.TransformationException; import org.qortal.transform.Transformer; -import org.qortal.transform.transaction.MessageTransactionTransformer; -import org.qortal.utils.Base58; -import org.qortal.utils.NTP; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.HeaderParam; @@ -37,7 +33,6 @@ import javax.ws.rs.Path; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import java.util.Arrays; -import java.util.Random; @Path("/crosschain/LitecoinACCTv1") @Tag(name = "Cross-Chain (LitecoinACCTv1)") diff --git a/src/main/java/org/qortal/api/resource/CrossChainLitecoinResource.java b/src/main/java/org/qortal/api/resource/CrossChainLitecoinResource.java index 3e2ff799..e96e27a7 100644 --- a/src/main/java/org/qortal/api/resource/CrossChainLitecoinResource.java +++ b/src/main/java/org/qortal/api/resource/CrossChainLitecoinResource.java @@ -8,17 +8,6 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; - -import java.util.List; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.POST; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; - import org.bitcoinj.core.Transaction; import org.qortal.api.ApiError; import org.qortal.api.ApiErrors; @@ -29,6 +18,15 @@ import org.qortal.crosschain.ForeignBlockchainException; import org.qortal.crosschain.Litecoin; import org.qortal.crosschain.SimpleTransaction; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.GET; +import javax.ws.rs.HeaderParam; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.List; + @Path("/crosschain/ltc") @Tag(name = "Cross-Chain (Litecoin)") public class CrossChainLitecoinResource { diff --git a/src/main/java/org/qortal/api/resource/CrossChainPirateChainResource.java b/src/main/java/org/qortal/api/resource/CrossChainPirateChainResource.java index 6989e7c7..550b86b9 100644 --- a/src/main/java/org/qortal/api/resource/CrossChainPirateChainResource.java +++ b/src/main/java/org/qortal/api/resource/CrossChainPirateChainResource.java @@ -18,9 +18,9 @@ import org.qortal.crosschain.PirateChain; import org.qortal.crosschain.SimpleTransaction; import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.GET; import javax.ws.rs.HeaderParam; import javax.ws.rs.POST; -import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; diff --git a/src/main/java/org/qortal/api/resource/CrossChainRavencoinResource.java b/src/main/java/org/qortal/api/resource/CrossChainRavencoinResource.java index b1d6aed4..fc66ba8c 100644 --- a/src/main/java/org/qortal/api/resource/CrossChainRavencoinResource.java +++ b/src/main/java/org/qortal/api/resource/CrossChainRavencoinResource.java @@ -8,27 +8,25 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; - -import java.util.List; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.POST; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; - import org.bitcoinj.core.Transaction; import org.qortal.api.ApiError; import org.qortal.api.ApiErrors; import org.qortal.api.ApiExceptionFactory; import org.qortal.api.Security; import org.qortal.api.model.crosschain.RavencoinSendRequest; -import org.qortal.crosschain.Ravencoin; import org.qortal.crosschain.ForeignBlockchainException; +import org.qortal.crosschain.Ravencoin; import org.qortal.crosschain.SimpleTransaction; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.GET; +import javax.ws.rs.HeaderParam; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.List; + @Path("/crosschain/rvn") @Tag(name = "Cross-Chain (Ravencoin)") public class CrossChainRavencoinResource { diff --git a/src/main/java/org/qortal/api/resource/CrossChainResource.java b/src/main/java/org/qortal/api/resource/CrossChainResource.java index 44ef62ad..1161dc63 100644 --- a/src/main/java/org/qortal/api/resource/CrossChainResource.java +++ b/src/main/java/org/qortal/api/resource/CrossChainResource.java @@ -10,15 +10,6 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; - -import java.util.*; -import java.util.function.Supplier; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.*; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; - import org.qortal.api.ApiError; import org.qortal.api.ApiErrors; import org.qortal.api.ApiExceptionFactory; @@ -26,9 +17,9 @@ import org.qortal.api.Security; import org.qortal.api.model.CrossChainCancelRequest; import org.qortal.api.model.CrossChainTradeSummary; import org.qortal.controller.tradebot.TradeBot; -import org.qortal.crosschain.SupportedBlockchain; import org.qortal.crosschain.ACCT; import org.qortal.crosschain.AcctMode; +import org.qortal.crosschain.SupportedBlockchain; import org.qortal.crypto.Crypto; import org.qortal.data.at.ATData; import org.qortal.data.at.ATStateData; @@ -50,6 +41,13 @@ import org.qortal.utils.Base58; import org.qortal.utils.ByteArray; import org.qortal.utils.NTP; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.*; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.*; +import java.util.function.Supplier; + @Path("/crosschain") @Tag(name = "Cross-Chain") public class CrossChainResource { diff --git a/src/main/java/org/qortal/api/resource/CrossChainTradeBotResource.java b/src/main/java/org/qortal/api/resource/CrossChainTradeBotResource.java index aefca016..5a50222a 100644 --- a/src/main/java/org/qortal/api/resource/CrossChainTradeBotResource.java +++ b/src/main/java/org/qortal/api/resource/CrossChainTradeBotResource.java @@ -9,16 +9,6 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; - -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.*; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; - import org.qortal.account.Account; import org.qortal.account.PublicKeyAccount; import org.qortal.api.ApiError; @@ -31,10 +21,10 @@ import org.qortal.asset.Asset; import org.qortal.controller.Controller; import org.qortal.controller.tradebot.AcctTradeBot; import org.qortal.controller.tradebot.TradeBot; -import org.qortal.crosschain.ForeignBlockchain; -import org.qortal.crosschain.SupportedBlockchain; import org.qortal.crosschain.ACCT; import org.qortal.crosschain.AcctMode; +import org.qortal.crosschain.ForeignBlockchain; +import org.qortal.crosschain.SupportedBlockchain; import org.qortal.crypto.Crypto; import org.qortal.data.at.ATData; import org.qortal.data.crosschain.CrossChainTradeData; @@ -48,6 +38,14 @@ import org.qortal.transaction.Transaction; import org.qortal.utils.Base58; import org.qortal.utils.NTP; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.*; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + @Path("/crosschain/tradebot") @Tag(name = "Cross-Chain (Trade-Bot)") public class CrossChainTradeBotResource { diff --git a/src/main/java/org/qortal/api/resource/GroupsResource.java b/src/main/java/org/qortal/api/resource/GroupsResource.java index 187687a9..7c3054e1 100644 --- a/src/main/java/org/qortal/api/resource/GroupsResource.java +++ b/src/main/java/org/qortal/api/resource/GroupsResource.java @@ -8,45 +8,14 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; - -import java.util.List; -import java.util.function.Predicate; -import java.util.stream.Collectors; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; - import org.qortal.api.ApiError; import org.qortal.api.ApiErrors; import org.qortal.api.ApiExceptionFactory; import org.qortal.api.model.GroupMembers; import org.qortal.api.model.GroupMembers.MemberInfo; import org.qortal.crypto.Crypto; -import org.qortal.data.group.GroupAdminData; -import org.qortal.data.group.GroupBanData; -import org.qortal.data.group.GroupData; -import org.qortal.data.group.GroupInviteData; -import org.qortal.data.group.GroupJoinRequestData; -import org.qortal.data.group.GroupMemberData; -import org.qortal.data.transaction.AddGroupAdminTransactionData; -import org.qortal.data.transaction.CancelGroupBanTransactionData; -import org.qortal.data.transaction.CancelGroupInviteTransactionData; -import org.qortal.data.transaction.CreateGroupTransactionData; -import org.qortal.data.transaction.GroupApprovalTransactionData; -import org.qortal.data.transaction.GroupBanTransactionData; -import org.qortal.data.transaction.GroupInviteTransactionData; -import org.qortal.data.transaction.GroupKickTransactionData; -import org.qortal.data.transaction.JoinGroupTransactionData; -import org.qortal.data.transaction.LeaveGroupTransactionData; -import org.qortal.data.transaction.RemoveGroupAdminTransactionData; -import org.qortal.data.transaction.SetGroupTransactionData; -import org.qortal.data.transaction.UpdateGroupTransactionData; +import org.qortal.data.group.*; +import org.qortal.data.transaction.*; import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.repository.RepositoryManager; @@ -54,21 +23,17 @@ import org.qortal.settings.Settings; import org.qortal.transaction.Transaction; import org.qortal.transaction.Transaction.ValidationResult; import org.qortal.transform.TransformationException; -import org.qortal.transform.transaction.AddGroupAdminTransactionTransformer; -import org.qortal.transform.transaction.CancelGroupBanTransactionTransformer; -import org.qortal.transform.transaction.CancelGroupInviteTransactionTransformer; -import org.qortal.transform.transaction.CreateGroupTransactionTransformer; -import org.qortal.transform.transaction.GroupApprovalTransactionTransformer; -import org.qortal.transform.transaction.GroupBanTransactionTransformer; -import org.qortal.transform.transaction.GroupInviteTransactionTransformer; -import org.qortal.transform.transaction.GroupKickTransactionTransformer; -import org.qortal.transform.transaction.JoinGroupTransactionTransformer; -import org.qortal.transform.transaction.LeaveGroupTransactionTransformer; -import org.qortal.transform.transaction.RemoveGroupAdminTransactionTransformer; -import org.qortal.transform.transaction.SetGroupTransactionTransformer; -import org.qortal.transform.transaction.UpdateGroupTransactionTransformer; +import org.qortal.transform.transaction.*; import org.qortal.utils.Base58; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.*; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.List; +import java.util.function.Predicate; +import java.util.stream.Collectors; + @Path("/groups") @Tag(name = "Groups") public class GroupsResource { diff --git a/src/main/java/org/qortal/api/resource/ListsResource.java b/src/main/java/org/qortal/api/resource/ListsResource.java index e0f558df..68747889 100644 --- a/src/main/java/org/qortal/api/resource/ListsResource.java +++ b/src/main/java/org/qortal/api/resource/ListsResource.java @@ -8,15 +8,12 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; - -import org.qortal.api.*; +import org.qortal.api.ApiError; +import org.qortal.api.ApiErrors; +import org.qortal.api.ApiExceptionFactory; +import org.qortal.api.Security; import org.qortal.api.model.ListRequest; -import org.qortal.crypto.Crypto; -import org.qortal.data.account.AccountData; import org.qortal.list.ResourceListManager; -import org.qortal.repository.DataException; -import org.qortal.repository.Repository; -import org.qortal.repository.RepositoryManager; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.*; diff --git a/src/main/java/org/qortal/api/resource/NamesResource.java b/src/main/java/org/qortal/api/resource/NamesResource.java index 6cde26b3..c7d4a425 100644 --- a/src/main/java/org/qortal/api/resource/NamesResource.java +++ b/src/main/java/org/qortal/api/resource/NamesResource.java @@ -8,19 +8,6 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; - -import java.util.List; -import java.util.stream.Collectors; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; - import org.qortal.api.ApiError; import org.qortal.api.ApiErrors; import org.qortal.api.ApiException; @@ -29,11 +16,7 @@ import org.qortal.api.model.NameSummary; import org.qortal.controller.LiteNode; import org.qortal.crypto.Crypto; import org.qortal.data.naming.NameData; -import org.qortal.data.transaction.BuyNameTransactionData; -import org.qortal.data.transaction.CancelSellNameTransactionData; -import org.qortal.data.transaction.RegisterNameTransactionData; -import org.qortal.data.transaction.SellNameTransactionData; -import org.qortal.data.transaction.UpdateNameTransactionData; +import org.qortal.data.transaction.*; import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.repository.RepositoryManager; @@ -41,14 +24,17 @@ import org.qortal.settings.Settings; import org.qortal.transaction.Transaction; import org.qortal.transaction.Transaction.ValidationResult; import org.qortal.transform.TransformationException; -import org.qortal.transform.transaction.BuyNameTransactionTransformer; -import org.qortal.transform.transaction.CancelSellNameTransactionTransformer; -import org.qortal.transform.transaction.RegisterNameTransactionTransformer; -import org.qortal.transform.transaction.SellNameTransactionTransformer; -import org.qortal.transform.transaction.UpdateNameTransactionTransformer; +import org.qortal.transform.transaction.*; import org.qortal.utils.Base58; import org.qortal.utils.Unicode; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.*; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.List; +import java.util.stream.Collectors; + @Path("/names") @Tag(name = "Names") public class NamesResource { diff --git a/src/main/java/org/qortal/api/resource/PaymentsResource.java b/src/main/java/org/qortal/api/resource/PaymentsResource.java index 111a3fee..6bfa5d42 100644 --- a/src/main/java/org/qortal/api/resource/PaymentsResource.java +++ b/src/main/java/org/qortal/api/resource/PaymentsResource.java @@ -6,13 +6,6 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; - import org.qortal.api.ApiError; import org.qortal.api.ApiErrors; import org.qortal.api.ApiExceptionFactory; @@ -27,6 +20,12 @@ import org.qortal.transform.TransformationException; import org.qortal.transform.transaction.PaymentTransactionTransformer; import org.qortal.utils.Base58; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; + @Path("/payments") @Tag(name = "Payments") public class PaymentsResource { diff --git a/src/main/java/org/qortal/api/resource/PeersResource.java b/src/main/java/org/qortal/api/resource/PeersResource.java index d89f99c4..4008d7ed 100644 --- a/src/main/java/org/qortal/api/resource/PeersResource.java +++ b/src/main/java/org/qortal/api/resource/PeersResource.java @@ -8,23 +8,11 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; - -import java.net.InetSocketAddress; -import java.net.UnknownHostException; -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.*; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; - import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.config.Configuration; import org.apache.logging.log4j.core.config.LoggerConfig; -import org.apache.logging.log4j.core.LoggerContext; import org.qortal.api.*; import org.qortal.api.model.ConnectedPeer; import org.qortal.api.model.PeersSummary; @@ -42,6 +30,16 @@ import org.qortal.repository.RepositoryManager; import org.qortal.utils.ExecuteProduceConsume; import org.qortal.utils.NTP; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.*; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.net.InetSocketAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + @Path("/peers") @Tag(name = "Peers") public class PeersResource { diff --git a/src/main/java/org/qortal/api/resource/PollsResource.java b/src/main/java/org/qortal/api/resource/PollsResource.java index c64a8caf..aaa4f79c 100644 --- a/src/main/java/org/qortal/api/resource/PollsResource.java +++ b/src/main/java/org/qortal/api/resource/PollsResource.java @@ -1,6 +1,8 @@ package org.qortal.api.resource; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.parameters.RequestBody; @@ -8,10 +10,14 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; import org.qortal.api.ApiError; import org.qortal.api.ApiErrors; +import org.qortal.api.ApiException; import org.qortal.api.ApiExceptionFactory; +import org.qortal.api.model.PollVotes; import org.qortal.data.transaction.CreatePollTransactionData; -import org.qortal.data.transaction.PaymentTransactionData; import org.qortal.data.transaction.VoteOnPollTransactionData; +import org.qortal.data.voting.PollData; +import org.qortal.data.voting.PollOptionData; +import org.qortal.data.voting.VoteOnPollData; import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.repository.RepositoryManager; @@ -19,30 +25,17 @@ import org.qortal.settings.Settings; import org.qortal.transaction.Transaction; import org.qortal.transform.TransformationException; import org.qortal.transform.transaction.CreatePollTransactionTransformer; -import org.qortal.transform.transaction.PaymentTransactionTransformer; import org.qortal.transform.transaction.VoteOnPollTransactionTransformer; import org.qortal.utils.Base58; import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.POST; -import javax.ws.rs.Path; +import javax.ws.rs.*; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; - -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.ArraySchema; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import javax.ws.rs.GET; -import javax.ws.rs.PathParam; -import javax.ws.rs.QueryParam; -import org.qortal.api.ApiException; -import org.qortal.api.model.PollVotes; -import org.qortal.data.voting.PollData; -import org.qortal.data.voting.PollOptionData; -import org.qortal.data.voting.VoteOnPollData; @Path("/polls") @Tag(name = "Polls") diff --git a/src/main/java/org/qortal/api/resource/StatsResource.java b/src/main/java/org/qortal/api/resource/StatsResource.java index c1588490..35761cf4 100644 --- a/src/main/java/org/qortal/api/resource/StatsResource.java +++ b/src/main/java/org/qortal/api/resource/StatsResource.java @@ -7,7 +7,8 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.qortal.api.*; +import org.qortal.api.ApiError; +import org.qortal.api.ApiExceptionFactory; import org.qortal.block.BlockChain; import org.qortal.repository.DataException; import org.qortal.repository.Repository; @@ -15,7 +16,8 @@ import org.qortal.repository.RepositoryManager; import org.qortal.utils.Amounts; import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.*; +import javax.ws.rs.GET; +import javax.ws.rs.Path; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import java.math.BigDecimal; diff --git a/src/main/java/org/qortal/api/resource/TransactionsResource.java b/src/main/java/org/qortal/api/resource/TransactionsResource.java index 61cef867..ca2404ea 100644 --- a/src/main/java/org/qortal/api/resource/TransactionsResource.java +++ b/src/main/java/org/qortal/api/resource/TransactionsResource.java @@ -1,5 +1,6 @@ package org.qortal.api.resource; +import com.google.common.primitives.Bytes; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; @@ -8,22 +9,6 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; - -import java.io.IOException; -import java.io.StringWriter; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.locks.ReentrantLock; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.*; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; - import org.qortal.account.PrivateKeyAccount; import org.qortal.api.*; import org.qortal.api.model.SimpleTransactionSignRequest; @@ -42,10 +27,22 @@ import org.qortal.transaction.Transaction.ValidationResult; import org.qortal.transform.TransformationException; import org.qortal.transform.transaction.TransactionTransformer; import org.qortal.utils.Base58; - -import com.google.common.primitives.Bytes; import org.qortal.utils.NTP; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.*; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.io.IOException; +import java.io.StringWriter; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.locks.ReentrantLock; + @Path("/transactions") @Tag(name = "Transactions") public class TransactionsResource { diff --git a/src/main/java/org/qortal/api/resource/UtilsResource.java b/src/main/java/org/qortal/api/resource/UtilsResource.java index 54ea660b..097a321e 100644 --- a/src/main/java/org/qortal/api/resource/UtilsResource.java +++ b/src/main/java/org/qortal/api/resource/UtilsResource.java @@ -1,5 +1,6 @@ package org.qortal.api.resource; +import com.google.common.hash.HashCode; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; @@ -7,22 +8,6 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; - -import java.security.SecureRandom; -import java.util.Arrays; -import java.util.Base64; -import java.util.List; -import java.util.UUID; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; - import org.qortal.account.PrivateKeyAccount; import org.qortal.api.ApiError; import org.qortal.api.ApiErrors; @@ -35,9 +20,13 @@ import org.qortal.transform.transaction.TransactionTransformer; import org.qortal.transform.transaction.TransactionTransformer.Transformation; import org.qortal.utils.Base58; -import com.google.common.hash.HashCode; -import com.google.common.primitives.Bytes; -import com.google.common.primitives.Longs; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.*; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.security.SecureRandom; +import java.util.Base64; +import java.util.List; @Path("/utils") @Tag(name = "Utilities") diff --git a/src/main/java/org/qortal/api/restricted/resource/AdminResource.java b/src/main/java/org/qortal/api/restricted/resource/AdminResource.java index 178d7547..57bf59c0 100644 --- a/src/main/java/org/qortal/api/restricted/resource/AdminResource.java +++ b/src/main/java/org/qortal/api/restricted/resource/AdminResource.java @@ -1,5 +1,6 @@ package org.qortal.api.restricted.resource; +import com.google.common.collect.Lists; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.enums.ParameterIn; @@ -10,23 +11,6 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; - -import java.io.IOException; -import java.net.InetSocketAddress; -import java.net.UnknownHostException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.List; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; -import java.util.concurrent.locks.ReentrantLock; -import java.util.stream.Collectors; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.*; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; - import org.apache.commons.lang3.reflect.FieldUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -57,7 +41,20 @@ import org.qortal.settings.Settings; import org.qortal.utils.Base58; import org.qortal.utils.NTP; -import com.google.common.collect.Lists; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.*; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.io.IOException; +import java.net.InetSocketAddress; +import java.net.UnknownHostException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.List; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import java.util.concurrent.locks.ReentrantLock; +import java.util.stream.Collectors; @Path("/admin") @Tag(name = "Admin") diff --git a/src/main/java/org/qortal/api/restricted/resource/BootstrapResource.java b/src/main/java/org/qortal/api/restricted/resource/BootstrapResource.java index 47b7cf42..dc12161d 100644 --- a/src/main/java/org/qortal/api/restricted/resource/BootstrapResource.java +++ b/src/main/java/org/qortal/api/restricted/resource/BootstrapResource.java @@ -17,10 +17,12 @@ import org.qortal.repository.Repository; import org.qortal.repository.RepositoryManager; import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.*; +import javax.ws.rs.GET; +import javax.ws.rs.HeaderParam; +import javax.ws.rs.POST; +import javax.ws.rs.Path; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; -import java.io.IOException; @Path("/bootstrap") diff --git a/src/main/java/org/qortal/api/restricted/resource/RenderResource.java b/src/main/java/org/qortal/api/restricted/resource/RenderResource.java index 92f72032..5eb169a4 100644 --- a/src/main/java/org/qortal/api/restricted/resource/RenderResource.java +++ b/src/main/java/org/qortal/api/restricted/resource/RenderResource.java @@ -1,35 +1,22 @@ package org.qortal.api.restricted.resource; -import javax.servlet.ServletContext; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.*; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import java.io.*; -import java.nio.file.Paths; - -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.parameters.RequestBody; -import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.qortal.api.ApiError; -import org.qortal.api.ApiExceptionFactory; import org.qortal.api.Security; +import org.qortal.arbitrary.ArbitraryDataFile.ResourceIdType; +import org.qortal.arbitrary.ArbitraryDataRenderer; +import org.qortal.arbitrary.ArbitraryDataResource; import org.qortal.arbitrary.misc.Service; -import org.qortal.arbitrary.*; -import org.qortal.arbitrary.exception.MissingDataException; import org.qortal.controller.arbitrary.ArbitraryDataRenderManager; -import org.qortal.data.transaction.ArbitraryTransactionData.*; -import org.qortal.repository.DataException; -import org.qortal.arbitrary.ArbitraryDataFile.*; import org.qortal.settings.Settings; -import org.qortal.utils.Base58; + +import javax.servlet.ServletContext; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.*; +import javax.ws.rs.core.Context; @Path("/render") diff --git a/src/main/java/org/qortal/api/websocket/ActiveChatsWebSocket.java b/src/main/java/org/qortal/api/websocket/ActiveChatsWebSocket.java index 9ac9f87d..b92fb19f 100644 --- a/src/main/java/org/qortal/api/websocket/ActiveChatsWebSocket.java +++ b/src/main/java/org/qortal/api/websocket/ActiveChatsWebSocket.java @@ -1,19 +1,8 @@ package org.qortal.api.websocket; -import java.io.IOException; -import java.io.StringWriter; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.concurrent.atomic.AtomicReference; - import org.eclipse.jetty.websocket.api.Session; import org.eclipse.jetty.websocket.api.WebSocketException; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketError; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage; -import org.eclipse.jetty.websocket.api.annotations.WebSocket; +import org.eclipse.jetty.websocket.api.annotations.*; import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory; import org.qortal.controller.ChatNotifier; import org.qortal.crypto.Crypto; @@ -23,6 +12,13 @@ import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.repository.RepositoryManager; +import java.io.IOException; +import java.io.StringWriter; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.concurrent.atomic.AtomicReference; + import static org.qortal.data.chat.ChatMessage.Encoding; @WebSocket diff --git a/src/main/java/org/qortal/api/websocket/AdminStatusWebSocket.java b/src/main/java/org/qortal/api/websocket/AdminStatusWebSocket.java index 6556d140..4d65956e 100644 --- a/src/main/java/org/qortal/api/websocket/AdminStatusWebSocket.java +++ b/src/main/java/org/qortal/api/websocket/AdminStatusWebSocket.java @@ -1,16 +1,8 @@ package org.qortal.api.websocket; -import java.io.IOException; -import java.io.StringWriter; -import java.util.concurrent.atomic.AtomicReference; - import org.eclipse.jetty.websocket.api.Session; import org.eclipse.jetty.websocket.api.WebSocketException; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketError; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage; -import org.eclipse.jetty.websocket.api.annotations.WebSocket; +import org.eclipse.jetty.websocket.api.annotations.*; import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory; import org.qortal.api.model.NodeStatus; import org.qortal.controller.Controller; @@ -18,6 +10,10 @@ import org.qortal.event.Event; import org.qortal.event.EventBus; import org.qortal.event.Listener; +import java.io.IOException; +import java.io.StringWriter; +import java.util.concurrent.atomic.AtomicReference; + @WebSocket @SuppressWarnings("serial") public class AdminStatusWebSocket extends ApiWebSocket implements Listener { diff --git a/src/main/java/org/qortal/api/websocket/ApiWebSocket.java b/src/main/java/org/qortal/api/websocket/ApiWebSocket.java index f6a439ea..d402250f 100644 --- a/src/main/java/org/qortal/api/websocket/ApiWebSocket.java +++ b/src/main/java/org/qortal/api/websocket/ApiWebSocket.java @@ -1,18 +1,5 @@ package org.qortal.api.websocket; -import java.io.IOException; -import java.io.StringWriter; -import java.io.Writer; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Marshaller; - import org.eclipse.jetty.http.pathmap.UriTemplatePathSpec; import org.eclipse.jetty.websocket.api.Session; import org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest; @@ -22,6 +9,14 @@ import org.eclipse.persistence.jaxb.MarshallerProperties; import org.qortal.api.ApiError; import org.qortal.api.ApiErrorRoot; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Marshaller; +import java.io.IOException; +import java.io.StringWriter; +import java.io.Writer; +import java.util.*; + @SuppressWarnings("serial") abstract class ApiWebSocket extends WebSocketServlet { diff --git a/src/main/java/org/qortal/api/websocket/BlocksWebSocket.java b/src/main/java/org/qortal/api/websocket/BlocksWebSocket.java index 20847b7b..01235755 100644 --- a/src/main/java/org/qortal/api/websocket/BlocksWebSocket.java +++ b/src/main/java/org/qortal/api/websocket/BlocksWebSocket.java @@ -1,16 +1,8 @@ package org.qortal.api.websocket; -import java.io.IOException; -import java.io.StringWriter; -import java.util.List; - import org.eclipse.jetty.websocket.api.Session; import org.eclipse.jetty.websocket.api.WebSocketException; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketError; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage; -import org.eclipse.jetty.websocket.api.annotations.WebSocket; +import org.eclipse.jetty.websocket.api.annotations.*; import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory; import org.qortal.api.ApiError; import org.qortal.controller.Controller; @@ -24,6 +16,10 @@ import org.qortal.repository.Repository; import org.qortal.repository.RepositoryManager; import org.qortal.utils.Base58; +import java.io.IOException; +import java.io.StringWriter; +import java.util.List; + @WebSocket @SuppressWarnings("serial") public class BlocksWebSocket extends ApiWebSocket implements Listener { diff --git a/src/main/java/org/qortal/api/websocket/ChatMessagesWebSocket.java b/src/main/java/org/qortal/api/websocket/ChatMessagesWebSocket.java index 3046c1c1..4340ad58 100644 --- a/src/main/java/org/qortal/api/websocket/ChatMessagesWebSocket.java +++ b/src/main/java/org/qortal/api/websocket/ChatMessagesWebSocket.java @@ -1,16 +1,8 @@ package org.qortal.api.websocket; -import java.io.IOException; -import java.io.StringWriter; -import java.util.*; - import org.eclipse.jetty.websocket.api.Session; import org.eclipse.jetty.websocket.api.WebSocketException; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketError; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage; -import org.eclipse.jetty.websocket.api.annotations.WebSocket; +import org.eclipse.jetty.websocket.api.annotations.*; import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory; import org.qortal.controller.ChatNotifier; import org.qortal.data.chat.ChatMessage; @@ -19,6 +11,10 @@ import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.repository.RepositoryManager; +import java.io.IOException; +import java.io.StringWriter; +import java.util.*; + import static org.qortal.data.chat.ChatMessage.Encoding; @WebSocket diff --git a/src/main/java/org/qortal/api/websocket/PresenceWebSocket.java b/src/main/java/org/qortal/api/websocket/PresenceWebSocket.java index c579ac86..510b712f 100644 --- a/src/main/java/org/qortal/api/websocket/PresenceWebSocket.java +++ b/src/main/java/org/qortal/api/websocket/PresenceWebSocket.java @@ -1,23 +1,7 @@ package org.qortal.api.websocket; -import java.io.IOException; -import java.io.StringWriter; -import java.util.Collections; -import java.util.EnumMap; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; - import org.eclipse.jetty.websocket.api.Session; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketError; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage; -import org.eclipse.jetty.websocket.api.annotations.WebSocket; +import org.eclipse.jetty.websocket.api.annotations.*; import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory; import org.qortal.controller.Controller; import org.qortal.controller.Synchronizer; @@ -35,6 +19,13 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.utils.Base58; import org.qortal.utils.NTP; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import java.io.IOException; +import java.io.StringWriter; +import java.util.*; +import java.util.stream.Collectors; + @WebSocket @SuppressWarnings("serial") public class PresenceWebSocket extends ApiWebSocket implements Listener { diff --git a/src/main/java/org/qortal/api/websocket/TradeBotWebSocket.java b/src/main/java/org/qortal/api/websocket/TradeBotWebSocket.java index 8d7a13cd..7746f8f8 100644 --- a/src/main/java/org/qortal/api/websocket/TradeBotWebSocket.java +++ b/src/main/java/org/qortal/api/websocket/TradeBotWebSocket.java @@ -1,16 +1,7 @@ package org.qortal.api.websocket; -import java.io.IOException; -import java.io.StringWriter; -import java.util.*; -import java.util.stream.Collectors; - import org.eclipse.jetty.websocket.api.Session; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketError; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage; -import org.eclipse.jetty.websocket.api.annotations.WebSocket; +import org.eclipse.jetty.websocket.api.annotations.*; import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory; import org.qortal.controller.tradebot.TradeBot; import org.qortal.crosschain.SupportedBlockchain; @@ -23,6 +14,11 @@ import org.qortal.repository.Repository; import org.qortal.repository.RepositoryManager; import org.qortal.utils.Base58; +import java.io.IOException; +import java.io.StringWriter; +import java.util.*; +import java.util.stream.Collectors; + @WebSocket @SuppressWarnings("serial") public class TradeBotWebSocket extends ApiWebSocket implements Listener { diff --git a/src/main/java/org/qortal/api/websocket/TradeOffersWebSocket.java b/src/main/java/org/qortal/api/websocket/TradeOffersWebSocket.java index 9c48b018..3f61fb98 100644 --- a/src/main/java/org/qortal/api/websocket/TradeOffersWebSocket.java +++ b/src/main/java/org/qortal/api/websocket/TradeOffersWebSocket.java @@ -1,33 +1,16 @@ package org.qortal.api.websocket; -import java.io.IOException; -import java.io.StringWriter; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Predicate; -import java.util.function.Supplier; -import java.util.stream.Collectors; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.eclipse.jetty.websocket.api.Session; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketError; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage; -import org.eclipse.jetty.websocket.api.annotations.WebSocket; +import org.eclipse.jetty.websocket.api.annotations.*; import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory; import org.qortal.api.model.CrossChainOfferSummary; -import org.qortal.controller.Controller; import org.qortal.controller.Synchronizer; import org.qortal.controller.tradebot.TradeBot; -import org.qortal.crosschain.SupportedBlockchain; import org.qortal.crosschain.ACCT; import org.qortal.crosschain.AcctMode; +import org.qortal.crosschain.SupportedBlockchain; import org.qortal.data.at.ATStateData; import org.qortal.data.block.BlockData; import org.qortal.data.crosschain.CrossChainTradeData; @@ -40,6 +23,13 @@ import org.qortal.repository.RepositoryManager; import org.qortal.utils.ByteArray; import org.qortal.utils.NTP; +import java.io.IOException; +import java.io.StringWriter; +import java.util.*; +import java.util.function.Predicate; +import java.util.function.Supplier; +import java.util.stream.Collectors; + @WebSocket @SuppressWarnings("serial") public class TradeOffersWebSocket extends ApiWebSocket implements Listener { diff --git a/src/main/java/org/qortal/arbitrary/ArbitraryDataBuildQueueItem.java b/src/main/java/org/qortal/arbitrary/ArbitraryDataBuildQueueItem.java index 4a02f092..bab4cc38 100644 --- a/src/main/java/org/qortal/arbitrary/ArbitraryDataBuildQueueItem.java +++ b/src/main/java/org/qortal/arbitrary/ArbitraryDataBuildQueueItem.java @@ -1,9 +1,10 @@ package org.qortal.arbitrary; +import org.qortal.arbitrary.ArbitraryDataFile.ResourceIdType; import org.qortal.arbitrary.exception.MissingDataException; -import org.qortal.arbitrary.ArbitraryDataFile.*; import org.qortal.arbitrary.misc.Service; import org.qortal.repository.DataException; +import org.qortal.utils.ArbitraryTransactionUtils; import org.qortal.utils.NTP; import java.io.IOException; @@ -51,6 +52,9 @@ public class ArbitraryDataBuildQueueItem extends ArbitraryDataResource { arbitraryDataReader.loadSynchronously(true); } finally { this.buildEndTimestamp = NTP.getTime(); + + // Update status after build + ArbitraryTransactionUtils.getStatus(service, resourceId, identifier, false, true); } } diff --git a/src/main/java/org/qortal/arbitrary/ArbitraryDataBuilder.java b/src/main/java/org/qortal/arbitrary/ArbitraryDataBuilder.java index fba6a32b..f438cef6 100644 --- a/src/main/java/org/qortal/arbitrary/ArbitraryDataBuilder.java +++ b/src/main/java/org/qortal/arbitrary/ArbitraryDataBuilder.java @@ -2,6 +2,7 @@ package org.qortal.arbitrary; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.qortal.arbitrary.ArbitraryDataFile.ResourceIdType; import org.qortal.arbitrary.exception.DataNotPublishedException; import org.qortal.arbitrary.exception.MissingDataException; import org.qortal.arbitrary.metadata.ArbitraryDataMetadataCache; @@ -11,7 +12,6 @@ import org.qortal.data.transaction.ArbitraryTransactionData.Method; import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.repository.RepositoryManager; -import org.qortal.arbitrary.ArbitraryDataFile.ResourceIdType; import org.qortal.settings.Settings; import org.qortal.utils.Base58; import org.qortal.utils.NTP; diff --git a/src/main/java/org/qortal/arbitrary/ArbitraryDataCache.java b/src/main/java/org/qortal/arbitrary/ArbitraryDataCache.java index accd808d..a6a63e5f 100644 --- a/src/main/java/org/qortal/arbitrary/ArbitraryDataCache.java +++ b/src/main/java/org/qortal/arbitrary/ArbitraryDataCache.java @@ -1,6 +1,6 @@ package org.qortal.arbitrary; -import org.qortal.arbitrary.ArbitraryDataFile.*; +import org.qortal.arbitrary.ArbitraryDataFile.ResourceIdType; import org.qortal.arbitrary.metadata.ArbitraryDataMetadataCache; import org.qortal.arbitrary.misc.Service; import org.qortal.controller.arbitrary.ArbitraryDataManager; diff --git a/src/main/java/org/qortal/arbitrary/ArbitraryDataDiff.java b/src/main/java/org/qortal/arbitrary/ArbitraryDataDiff.java index 93bc9636..13e22964 100644 --- a/src/main/java/org/qortal/arbitrary/ArbitraryDataDiff.java +++ b/src/main/java/org/qortal/arbitrary/ArbitraryDataDiff.java @@ -9,10 +9,14 @@ import org.qortal.crypto.Crypto; import org.qortal.repository.DataException; import org.qortal.settings.Settings; -import java.io.*; +import java.io.File; +import java.io.IOException; import java.nio.file.*; import java.nio.file.attribute.BasicFileAttributes; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; public class ArbitraryDataDiff { diff --git a/src/main/java/org/qortal/arbitrary/ArbitraryDataMerge.java b/src/main/java/org/qortal/arbitrary/ArbitraryDataMerge.java index eab5c828..d3e31c1d 100644 --- a/src/main/java/org/qortal/arbitrary/ArbitraryDataMerge.java +++ b/src/main/java/org/qortal/arbitrary/ArbitraryDataMerge.java @@ -3,7 +3,8 @@ package org.qortal.arbitrary; import org.apache.commons.io.FileUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.qortal.arbitrary.ArbitraryDataDiff.*; +import org.qortal.arbitrary.ArbitraryDataDiff.DiffType; +import org.qortal.arbitrary.ArbitraryDataDiff.ModifiedPath; import org.qortal.arbitrary.metadata.ArbitraryDataMetadataPatch; import org.qortal.arbitrary.patch.UnifiedDiffPatch; import org.qortal.repository.DataException; @@ -12,7 +13,10 @@ import org.qortal.utils.FilesystemUtils; import java.io.File; import java.io.IOException; -import java.nio.file.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; import java.util.List; import java.util.UUID; diff --git a/src/main/java/org/qortal/arbitrary/ArbitraryDataReader.java b/src/main/java/org/qortal/arbitrary/ArbitraryDataReader.java index b9e62e56..09154a32 100644 --- a/src/main/java/org/qortal/arbitrary/ArbitraryDataReader.java +++ b/src/main/java/org/qortal/arbitrary/ArbitraryDataReader.java @@ -3,7 +3,7 @@ package org.qortal.arbitrary; import org.apache.commons.io.FileUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - +import org.qortal.arbitrary.ArbitraryDataFile.ResourceIdType; import org.qortal.arbitrary.exception.DataNotPublishedException; import org.qortal.arbitrary.exception.MissingDataException; import org.qortal.arbitrary.misc.Service; @@ -11,11 +11,11 @@ import org.qortal.controller.arbitrary.ArbitraryDataBuildManager; import org.qortal.controller.arbitrary.ArbitraryDataManager; import org.qortal.crypto.AES; import org.qortal.data.transaction.ArbitraryTransactionData; -import org.qortal.data.transaction.ArbitraryTransactionData.*; +import org.qortal.data.transaction.ArbitraryTransactionData.Compression; +import org.qortal.data.transaction.ArbitraryTransactionData.DataType; import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.repository.RepositoryManager; -import org.qortal.arbitrary.ArbitraryDataFile.*; import org.qortal.settings.Settings; import org.qortal.transform.Transformer; import org.qortal.utils.*; @@ -66,7 +66,7 @@ public class ArbitraryDataReader { // TODO: all builds could be handled by the build queue (even synchronous ones), to avoid the need for this private static Map inProgress = Collections.synchronizedMap(new HashMap<>()); - public ArbitraryDataReader(String resourceId, ResourceIdType resourceIdType, Service service, String identifier) { + public ArbitraryDataReader(String resourceId, ResourceIdType resourceIdType, Service service, String identifier) throws DataException { // Ensure names are always lowercase if (resourceIdType == ResourceIdType.NAME) { resourceId = resourceId.toLowerCase(); @@ -90,11 +90,16 @@ public class ArbitraryDataReader { this.canRequestMissingFiles = true; } - private Path buildWorkingPath() { + private Path buildWorkingPath() throws DataException { // Use the user-specified temp dir, as it is deterministic, and is more likely to be located on reusable storage hardware String baseDir = Settings.getInstance().getTempDataPath(); String identifier = this.identifier != null ? this.identifier : "default"; - return Paths.get(baseDir, "reader", this.resourceIdType.toString(), this.resourceId, this.service.toString(), identifier); + + try { + return Paths.get(baseDir, "reader", this.resourceIdType.toString(), StringUtils.sanitizeString(this.resourceId), this.service.toString(), StringUtils.sanitizeString(identifier)); + } catch (InvalidPathException e) { + throw new DataException(String.format("Invalid path: %s", e.getMessage())); + } } public boolean isCachedDataAvailable() { @@ -240,7 +245,7 @@ public class ArbitraryDataReader { try { Files.createDirectories(this.workingPath); } catch (IOException e) { - throw new DataException("Unable to create temp directory"); + throw new DataException(String.format("Unable to create temp directory %s: %s", this.workingPath, e.getMessage())); } } diff --git a/src/main/java/org/qortal/arbitrary/ArbitraryDataRenderer.java b/src/main/java/org/qortal/arbitrary/ArbitraryDataRenderer.java index 5c6cda63..9d20df14 100644 --- a/src/main/java/org/qortal/arbitrary/ArbitraryDataRenderer.java +++ b/src/main/java/org/qortal/arbitrary/ArbitraryDataRenderer.java @@ -6,7 +6,7 @@ import org.apache.commons.lang3.ArrayUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.qortal.api.HTMLParser; -import org.qortal.arbitrary.ArbitraryDataFile.*; +import org.qortal.arbitrary.ArbitraryDataFile.ResourceIdType; import org.qortal.arbitrary.exception.MissingDataException; import org.qortal.arbitrary.misc.Service; import org.qortal.controller.Controller; @@ -76,9 +76,11 @@ public class ArbitraryDataRenderer { return ArbitraryDataRenderer.getResponse(response, 500, "QDN is disabled in settings"); } - ArbitraryDataReader arbitraryDataReader = new ArbitraryDataReader(resourceId, resourceIdType, service, identifier); - arbitraryDataReader.setSecret58(secret58); // Optional, used for loading encrypted file hashes only + ArbitraryDataReader arbitraryDataReader; try { + arbitraryDataReader = new ArbitraryDataReader(resourceId, resourceIdType, service, identifier); + arbitraryDataReader.setSecret58(secret58); // Optional, used for loading encrypted file hashes only + if (!arbitraryDataReader.isCachedDataAvailable()) { // If async is requested, show a loading screen whilst build is in progress if (async) { diff --git a/src/main/java/org/qortal/arbitrary/ArbitraryDataResource.java b/src/main/java/org/qortal/arbitrary/ArbitraryDataResource.java index a4650dfc..16faf838 100644 --- a/src/main/java/org/qortal/arbitrary/ArbitraryDataResource.java +++ b/src/main/java/org/qortal/arbitrary/ArbitraryDataResource.java @@ -9,6 +9,7 @@ import org.qortal.arbitrary.misc.Service; import org.qortal.controller.arbitrary.ArbitraryDataBuildManager; import org.qortal.controller.arbitrary.ArbitraryDataManager; import org.qortal.controller.arbitrary.ArbitraryDataStorageManager; +import org.qortal.data.arbitrary.ArbitraryResourceData; import org.qortal.data.arbitrary.ArbitraryResourceStatus; import org.qortal.data.transaction.ArbitraryTransactionData; import org.qortal.repository.DataException; @@ -57,15 +58,39 @@ public class ArbitraryDataResource { this.identifier = identifier; } - public ArbitraryResourceStatus getStatus(boolean quick) { - // Calculate the chunk counts - // Avoid this for "quick" statuses, to speed things up - if (!quick) { - this.calculateChunkCounts(); + public ArbitraryResourceStatus getStatusAndUpdateCache(boolean updateCache) { + ArbitraryResourceStatus arbitraryResourceStatus = null; - if (!this.exists) { - return new ArbitraryResourceStatus(Status.NOT_PUBLISHED, this.localChunkCount, this.totalChunkCount); + try (final Repository repository = RepositoryManager.getRepository()) { + arbitraryResourceStatus = this.getStatus(repository); + + if (updateCache) { + // Update cache if possible + ArbitraryResourceStatus.Status status = arbitraryResourceStatus != null ? arbitraryResourceStatus.getStatus() : null; + ArbitraryResourceData arbitraryResourceData = new ArbitraryResourceData(this.service, this.resourceId, this.identifier); + repository.discardChanges(); + repository.getArbitraryRepository().setStatus(arbitraryResourceData, status); + repository.saveChanges(); } + } catch (DataException e) { + LOGGER.info("Unable to update status cache for resource {}: {}", this.toString(), e.getMessage()); + } + + return arbitraryResourceStatus; + } + + /** + * Get current status of resource + * + * @param repository + * @return the resource's status + */ + public ArbitraryResourceStatus getStatus(Repository repository) { + // Calculate the chunk counts + this.calculateChunkCounts(repository); + + if (!this.exists) { + return new ArbitraryResourceStatus(Status.NOT_PUBLISHED, this.localChunkCount, this.totalChunkCount); } if (resourceIdType != ResourceIdType.NAME) { @@ -86,18 +111,23 @@ public class ArbitraryDataResource { } // Firstly check the cache to see if it's already built - ArbitraryDataReader arbitraryDataReader = new ArbitraryDataReader( - resourceId, resourceIdType, service, identifier); - if (arbitraryDataReader.isCachedDataAvailable()) { - return new ArbitraryResourceStatus(Status.READY, this.localChunkCount, this.totalChunkCount); + try { + ArbitraryDataReader arbitraryDataReader = new ArbitraryDataReader( + resourceId, resourceIdType, service, identifier); + if (arbitraryDataReader.isCachedDataAvailable()) { + return new ArbitraryResourceStatus(Status.READY, this.localChunkCount, this.totalChunkCount); + } + } catch (DataException e) { + // Assume no usable data + return new ArbitraryResourceStatus(Status.PUBLISHED, this.localChunkCount, this.totalChunkCount); } // Check if we have all data locally for this resource - if (!this.allFilesDownloaded()) { - if (this.isDownloading()) { + if (!this.allFilesDownloaded(repository)) { + if (this.isDownloading(repository)) { return new ArbitraryResourceStatus(Status.DOWNLOADING, this.localChunkCount, this.totalChunkCount); } - else if (this.isDataPotentiallyAvailable()) { + else if (this.isDataPotentiallyAvailable(repository)) { return new ArbitraryResourceStatus(Status.PUBLISHED, this.localChunkCount, this.totalChunkCount); } return new ArbitraryResourceStatus(Status.MISSING_DATA, this.localChunkCount, this.totalChunkCount); @@ -139,9 +169,9 @@ public class ArbitraryDataResource { return null; } - public boolean delete(boolean deleteMetadata) { + public boolean delete(Repository repository, boolean deleteMetadata) { try { - this.fetchTransactions(); + this.fetchTransactions(repository); if (this.transactions == null) { return false; } @@ -190,7 +220,7 @@ public class ArbitraryDataResource { } } - private boolean allFilesDownloaded() { + private boolean allFilesDownloaded(Repository repository) { // Use chunk counts to speed things up if we can if (this.localChunkCount != null && this.totalChunkCount != null && this.localChunkCount >= this.totalChunkCount) { @@ -198,7 +228,7 @@ public class ArbitraryDataResource { } try { - this.fetchTransactions(); + this.fetchTransactions(repository); if (this.transactions == null) { return false; } @@ -218,9 +248,14 @@ public class ArbitraryDataResource { } } - private void calculateChunkCounts() { + /** + * Calculate chunk counts of a resource + * + * @param repository optional - a new instance will be created if null + */ + private void calculateChunkCounts(Repository repository) { try { - this.fetchTransactions(); + this.fetchTransactions(repository); if (this.transactions == null) { this.exists = false; this.localChunkCount = 0; @@ -245,9 +280,9 @@ public class ArbitraryDataResource { } catch (DataException e) {} } - private boolean isRateLimited() { + private boolean isRateLimited(Repository repository) { try { - this.fetchTransactions(); + this.fetchTransactions(repository); if (this.transactions == null) { return true; } @@ -271,9 +306,9 @@ public class ArbitraryDataResource { * This is only used to give an indication to the user of progress * @return - whether data might be available on the network */ - private boolean isDataPotentiallyAvailable() { + private boolean isDataPotentiallyAvailable(Repository repository) { try { - this.fetchTransactions(); + this.fetchTransactions(repository); if (this.transactions == null) { return false; } @@ -306,9 +341,9 @@ public class ArbitraryDataResource { * This is only used to give an indication to the user of progress * @return - whether we are trying to download the resource */ - private boolean isDownloading() { + private boolean isDownloading(Repository repository) { try { - this.fetchTransactions(); + this.fetchTransactions(repository); if (this.transactions == null) { return false; } @@ -339,15 +374,19 @@ public class ArbitraryDataResource { } - - private void fetchTransactions() throws DataException { + /** + * Fetch relevant arbitrary transactions for resource + * + * @param repository + * @throws DataException + */ + private void fetchTransactions(Repository repository) throws DataException { if (this.transactions != null && !this.transactions.isEmpty()) { // Already fetched return; } - try (final Repository repository = RepositoryManager.getRepository()) { - + try { // Get the most recent PUT ArbitraryTransactionData latestPut = repository.getArbitraryRepository() .getLatestTransaction(this.resourceId, this.service, ArbitraryTransactionData.Method.PUT, this.identifier); diff --git a/src/main/java/org/qortal/arbitrary/ArbitraryDataTransactionBuilder.java b/src/main/java/org/qortal/arbitrary/ArbitraryDataTransactionBuilder.java index a9dd4fcf..9cfc686a 100644 --- a/src/main/java/org/qortal/arbitrary/ArbitraryDataTransactionBuilder.java +++ b/src/main/java/org/qortal/arbitrary/ArbitraryDataTransactionBuilder.java @@ -2,9 +2,10 @@ package org.qortal.arbitrary; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.qortal.arbitrary.exception.MissingDataException; +import org.qortal.arbitrary.ArbitraryDataDiff.DiffType; +import org.qortal.arbitrary.ArbitraryDataDiff.ModifiedPath; import org.qortal.arbitrary.ArbitraryDataFile.ResourceIdType; -import org.qortal.arbitrary.ArbitraryDataDiff.*; +import org.qortal.arbitrary.exception.MissingDataException; import org.qortal.arbitrary.metadata.ArbitraryDataMetadataPatch; import org.qortal.arbitrary.metadata.ArbitraryDataTransactionMetadata; import org.qortal.arbitrary.misc.Category; @@ -13,7 +14,9 @@ import org.qortal.crypto.AES; import org.qortal.crypto.Crypto; import org.qortal.data.PaymentData; import org.qortal.data.transaction.ArbitraryTransactionData; -import org.qortal.data.transaction.ArbitraryTransactionData.*; +import org.qortal.data.transaction.ArbitraryTransactionData.Compression; +import org.qortal.data.transaction.ArbitraryTransactionData.DataType; +import org.qortal.data.transaction.ArbitraryTransactionData.Method; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.group.Group; import org.qortal.repository.DataException; @@ -117,8 +120,9 @@ public class ArbitraryDataTransactionBuilder { } private Method determineMethodAutomatically() throws DataException { - ArbitraryDataReader reader = new ArbitraryDataReader(this.name, ResourceIdType.NAME, this.service, this.identifier); + ArbitraryDataReader reader; try { + reader = new ArbitraryDataReader(this.name, ResourceIdType.NAME, this.service, this.identifier); reader.loadSynchronously(true); } catch (Exception e) { // Catch all exceptions if the existing resource cannot be loaded first time diff --git a/src/main/java/org/qortal/arbitrary/ArbitraryDataWriter.java b/src/main/java/org/qortal/arbitrary/ArbitraryDataWriter.java index db29ee20..0098e4fa 100644 --- a/src/main/java/org/qortal/arbitrary/ArbitraryDataWriter.java +++ b/src/main/java/org/qortal/arbitrary/ArbitraryDataWriter.java @@ -5,15 +5,16 @@ import com.j256.simplemagic.ContentInfoUtil; import org.apache.commons.io.FileUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.qortal.arbitrary.ArbitraryDataFile.ValidationResult; import org.qortal.arbitrary.exception.MissingDataException; import org.qortal.arbitrary.metadata.ArbitraryDataTransactionMetadata; import org.qortal.arbitrary.misc.Category; import org.qortal.arbitrary.misc.Service; -import org.qortal.crypto.Crypto; -import org.qortal.data.transaction.ArbitraryTransactionData.*; import org.qortal.crypto.AES; +import org.qortal.crypto.Crypto; +import org.qortal.data.transaction.ArbitraryTransactionData.Compression; +import org.qortal.data.transaction.ArbitraryTransactionData.Method; import org.qortal.repository.DataException; -import org.qortal.arbitrary.ArbitraryDataFile.*; import org.qortal.settings.Settings; import org.qortal.utils.Base58; import org.qortal.utils.FilesystemUtils; @@ -27,11 +28,15 @@ import java.io.File; import java.io.IOException; import java.net.FileNameMap; import java.net.URLConnection; -import java.nio.file.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; import java.util.stream.Stream; diff --git a/src/main/java/org/qortal/arbitrary/metadata/ArbitraryDataMetadataPatch.java b/src/main/java/org/qortal/arbitrary/metadata/ArbitraryDataMetadataPatch.java index 46a1f57e..200df844 100644 --- a/src/main/java/org/qortal/arbitrary/metadata/ArbitraryDataMetadataPatch.java +++ b/src/main/java/org/qortal/arbitrary/metadata/ArbitraryDataMetadataPatch.java @@ -5,7 +5,7 @@ import org.apache.logging.log4j.Logger; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; -import org.qortal.arbitrary.ArbitraryDataDiff.*; +import org.qortal.arbitrary.ArbitraryDataDiff.ModifiedPath; import org.qortal.repository.DataException; import org.qortal.utils.Base58; diff --git a/src/main/java/org/qortal/arbitrary/metadata/ArbitraryDataQortalMetadata.java b/src/main/java/org/qortal/arbitrary/metadata/ArbitraryDataQortalMetadata.java index eb3d6cc9..c1e6563d 100644 --- a/src/main/java/org/qortal/arbitrary/metadata/ArbitraryDataQortalMetadata.java +++ b/src/main/java/org/qortal/arbitrary/metadata/ArbitraryDataQortalMetadata.java @@ -2,7 +2,6 @@ package org.qortal.arbitrary.metadata; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.json.JSONException; import org.qortal.repository.DataException; import java.io.BufferedWriter; diff --git a/src/main/java/org/qortal/arbitrary/misc/Category.java b/src/main/java/org/qortal/arbitrary/misc/Category.java index d56e3d5d..3a1489b8 100644 --- a/src/main/java/org/qortal/arbitrary/misc/Category.java +++ b/src/main/java/org/qortal/arbitrary/misc/Category.java @@ -67,9 +67,12 @@ public enum Category { /** * Same as valueOf() but with fallback to UNCATEGORIZED if there's no match * @param name - * @return a Category (using UNCATEGORIZED if no match found) + * @return a Category (using UNCATEGORIZED if no match found), or null if null name passed */ public static Category uncategorizedValueOf(String name) { + if (name == null) { + return null; + } try { return Category.valueOf(name); } diff --git a/src/main/java/org/qortal/arbitrary/misc/Service.java b/src/main/java/org/qortal/arbitrary/misc/Service.java index 2b8f8d02..02a513fd 100644 --- a/src/main/java/org/qortal/arbitrary/misc/Service.java +++ b/src/main/java/org/qortal/arbitrary/misc/Service.java @@ -1,5 +1,6 @@ package org.qortal.arbitrary.misc; +import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.io.FilenameUtils; import org.json.JSONObject; import org.qortal.arbitrary.ArbitraryDataRenderer; @@ -13,8 +14,6 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.*; -import com.fasterxml.jackson.databind.ObjectMapper; - import static java.util.Arrays.stream; import static java.util.stream.Collectors.toMap; diff --git a/src/main/java/org/qortal/asset/Order.java b/src/main/java/org/qortal/asset/Order.java index 953ff6ac..77affe55 100644 --- a/src/main/java/org/qortal/asset/Order.java +++ b/src/main/java/org/qortal/asset/Order.java @@ -1,11 +1,5 @@ package org.qortal.asset; -import static org.qortal.utils.Amounts.prettyAmount; - -import java.math.BigInteger; -import java.util.Arrays; -import java.util.List; - import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -19,6 +13,12 @@ import org.qortal.repository.Repository; import org.qortal.utils.Amounts; import org.qortal.utils.Base58; +import java.math.BigInteger; +import java.util.Arrays; +import java.util.List; + +import static org.qortal.utils.Amounts.prettyAmount; + public class Order { private static final Logger LOGGER = LogManager.getLogger(Order.class); diff --git a/src/main/java/org/qortal/at/AT.java b/src/main/java/org/qortal/at/AT.java index 005bb0cd..e5cbf4e7 100644 --- a/src/main/java/org/qortal/at/AT.java +++ b/src/main/java/org/qortal/at/AT.java @@ -1,9 +1,5 @@ package org.qortal.at; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - import org.ciyam.at.MachineState; import org.ciyam.at.Timestamp; import org.qortal.crypto.Crypto; @@ -15,6 +11,10 @@ import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.transaction.AtTransaction; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + public class AT { // Properties diff --git a/src/main/java/org/qortal/at/QortalATAPI.java b/src/main/java/org/qortal/at/QortalATAPI.java index 829c391f..93dac568 100644 --- a/src/main/java/org/qortal/at/QortalATAPI.java +++ b/src/main/java/org/qortal/at/QortalATAPI.java @@ -1,18 +1,9 @@ package org.qortal.at; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - +import com.google.common.primitives.Bytes; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.ciyam.at.API; -import org.ciyam.at.ExecutionException; -import org.ciyam.at.FunctionData; -import org.ciyam.at.IllegalFunctionCodeException; -import org.ciyam.at.MachineState; -import org.ciyam.at.OpCode; -import org.ciyam.at.Timestamp; +import org.ciyam.at.*; import org.qortal.account.Account; import org.qortal.account.NullAccount; import org.qortal.account.PublicKeyAccount; @@ -23,22 +14,20 @@ import org.qortal.crypto.Crypto; import org.qortal.data.at.ATData; import org.qortal.data.block.BlockData; import org.qortal.data.block.BlockSummaryData; -import org.qortal.data.transaction.ATTransactionData; -import org.qortal.data.transaction.BaseTransactionData; -import org.qortal.data.transaction.MessageTransactionData; -import org.qortal.data.transaction.PaymentTransactionData; -import org.qortal.data.transaction.TransactionData; +import org.qortal.data.transaction.*; import org.qortal.group.Group; import org.qortal.repository.ATRepository; +import org.qortal.repository.ATRepository.NextTransactionInfo; import org.qortal.repository.DataException; import org.qortal.repository.Repository; -import org.qortal.repository.ATRepository.NextTransactionInfo; import org.qortal.transaction.AtTransaction; import org.qortal.transaction.Transaction.TransactionType; import org.qortal.utils.Base58; import org.qortal.utils.BitTwiddling; -import com.google.common.primitives.Bytes; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; public class QortalATAPI extends API { diff --git a/src/main/java/org/qortal/at/QortalFunctionCode.java b/src/main/java/org/qortal/at/QortalFunctionCode.java index a2d43ac8..152f310e 100644 --- a/src/main/java/org/qortal/at/QortalFunctionCode.java +++ b/src/main/java/org/qortal/at/QortalFunctionCode.java @@ -1,9 +1,5 @@ package org.qortal.at; -import java.util.Arrays; -import java.util.Map; -import java.util.stream.Collectors; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.ciyam.at.ExecutionException; @@ -17,6 +13,10 @@ import org.qortal.data.transaction.TransactionData; import org.qortal.repository.DataException; import org.qortal.settings.Settings; +import java.util.Arrays; +import java.util.Map; +import java.util.stream.Collectors; + /** * Qortal-specific CIYAM-AT Functions. *

diff --git a/src/main/java/org/qortal/block/Block.java b/src/main/java/org/qortal/block/Block.java index 16c061da..51d55eb4 100644 --- a/src/main/java/org/qortal/block/Block.java +++ b/src/main/java/org/qortal/block/Block.java @@ -1,19 +1,8 @@ package org.qortal.block; -import static java.util.Arrays.stream; -import static java.util.stream.Collectors.toMap; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.math.BigDecimal; -import java.math.BigInteger; -import java.math.RoundingMode; -import java.nio.charset.StandardCharsets; -import java.text.DecimalFormat; -import java.text.NumberFormat; -import java.util.*; -import java.util.stream.Collectors; - +import com.google.common.primitives.Bytes; +import com.google.common.primitives.Longs; +import io.druid.extendedset.intset.ConciseSet; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -23,16 +12,12 @@ import org.qortal.account.PrivateKeyAccount; import org.qortal.account.PublicKeyAccount; import org.qortal.asset.Asset; import org.qortal.at.AT; -import org.qortal.block.BlockChain.BlockTimingByHeight; import org.qortal.block.BlockChain.AccountLevelShareBin; +import org.qortal.block.BlockChain.BlockTimingByHeight; import org.qortal.controller.OnlineAccountsManager; import org.qortal.crypto.Crypto; import org.qortal.crypto.Qortal25519Extras; -import org.qortal.data.account.AccountBalanceData; -import org.qortal.data.account.AccountData; -import org.qortal.data.account.EligibleQoraHolderData; -import org.qortal.data.account.QortFromQoraData; -import org.qortal.data.account.RewardShareData; +import org.qortal.data.account.*; import org.qortal.data.at.ATData; import org.qortal.data.at.ATStateData; import org.qortal.data.block.BlockData; @@ -56,10 +41,19 @@ import org.qortal.utils.Amounts; import org.qortal.utils.Base58; import org.qortal.utils.NTP; -import com.google.common.primitives.Bytes; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.math.RoundingMode; +import java.nio.charset.StandardCharsets; +import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.util.*; +import java.util.stream.Collectors; -import io.druid.extendedset.intset.ConciseSet; +import static java.util.Arrays.stream; +import static java.util.stream.Collectors.toMap; public class Block { diff --git a/src/main/java/org/qortal/block/Block212937.java b/src/main/java/org/qortal/block/Block212937.java index a53c9d31..a7cc42e8 100644 --- a/src/main/java/org/qortal/block/Block212937.java +++ b/src/main/java/org/qortal/block/Block212937.java @@ -1,15 +1,5 @@ package org.qortal.block; -import java.io.InputStream; -import java.util.List; -import java.util.stream.Collectors; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.UnmarshalException; -import javax.xml.bind.Unmarshaller; -import javax.xml.transform.stream.StreamSource; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.eclipse.persistence.jaxb.JAXBContextFactory; @@ -17,6 +7,15 @@ import org.eclipse.persistence.jaxb.UnmarshallerProperties; import org.qortal.data.account.AccountBalanceData; import org.qortal.repository.DataException; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.UnmarshalException; +import javax.xml.bind.Unmarshaller; +import javax.xml.transform.stream.StreamSource; +import java.io.InputStream; +import java.util.List; +import java.util.stream.Collectors; + /** * Block 212937 *

diff --git a/src/main/java/org/qortal/block/BlockChain.java b/src/main/java/org/qortal/block/BlockChain.java index 540e6cf4..4dcc148d 100644 --- a/src/main/java/org/qortal/block/BlockChain.java +++ b/src/main/java/org/qortal/block/BlockChain.java @@ -1,21 +1,5 @@ package org.qortal.block; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.InputStream; -import java.sql.SQLException; -import java.util.*; -import java.util.concurrent.locks.ReentrantLock; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.UnmarshalException; -import javax.xml.bind.Unmarshaller; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import javax.xml.transform.stream.StreamSource; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.eclipse.persistence.exceptions.XMLMarshalException; @@ -29,6 +13,21 @@ import org.qortal.settings.Settings; import org.qortal.utils.Base58; import org.qortal.utils.StringLongMapXmlAdapter; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.UnmarshalException; +import javax.xml.bind.Unmarshaller; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; +import javax.xml.transform.stream.StreamSource; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.sql.SQLException; +import java.util.*; +import java.util.concurrent.locks.ReentrantLock; + /** * Class representing the blockchain as a whole. * diff --git a/src/main/java/org/qortal/block/GenesisBlock.java b/src/main/java/org/qortal/block/GenesisBlock.java index 4d4c407a..991db4b5 100644 --- a/src/main/java/org/qortal/block/GenesisBlock.java +++ b/src/main/java/org/qortal/block/GenesisBlock.java @@ -1,15 +1,8 @@ package org.qortal.block; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; - +import com.google.common.primitives.Bytes; +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.qortal.account.NullAccount; @@ -24,9 +17,14 @@ import org.qortal.transaction.Transaction.ApprovalStatus; import org.qortal.transform.TransformationException; import org.qortal.transform.transaction.TransactionTransformer; -import com.google.common.primitives.Bytes; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; public class GenesisBlock extends Block { diff --git a/src/main/java/org/qortal/block/SelfSponsorshipAlgoV1Block.java b/src/main/java/org/qortal/block/SelfSponsorshipAlgoV1Block.java index a9a016b6..c3c374d1 100644 --- a/src/main/java/org/qortal/block/SelfSponsorshipAlgoV1Block.java +++ b/src/main/java/org/qortal/block/SelfSponsorshipAlgoV1Block.java @@ -13,7 +13,10 @@ import org.qortal.repository.Repository; import org.qortal.utils.Base58; import java.nio.charset.StandardCharsets; -import java.util.*; +import java.util.Collections; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; import java.util.stream.Collectors; /** diff --git a/src/main/java/org/qortal/controller/AutoUpdate.java b/src/main/java/org/qortal/controller/AutoUpdate.java index fde52fb1..bc232e1b 100644 --- a/src/main/java/org/qortal/controller/AutoUpdate.java +++ b/src/main/java/org/qortal/controller/AutoUpdate.java @@ -1,22 +1,6 @@ package org.qortal.controller; -import java.awt.TrayIcon.MessageType; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.lang.management.ManagementFactory; -import java.nio.ByteBuffer; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.concurrent.TimeoutException; -import java.util.stream.Collectors; - +import com.google.common.hash.HashCode; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.qortal.ApplyUpdate; @@ -33,7 +17,22 @@ import org.qortal.transaction.ArbitraryTransaction; import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.Transformer; -import com.google.common.hash.HashCode; +import java.awt.TrayIcon.MessageType; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.lang.management.ManagementFactory; +import java.nio.ByteBuffer; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.TimeoutException; +import java.util.stream.Collectors; /* NOTE: It is CRITICAL that we use OpenJDK and not Java SE because our uber jar repacks BouncyCastle which, in turn, unsigns BC causing it to be rejected as a security provider by Java SE. */ diff --git a/src/main/java/org/qortal/controller/BlockMinter.java b/src/main/java/org/qortal/controller/BlockMinter.java index 35c89778..15660f97 100644 --- a/src/main/java/org/qortal/controller/BlockMinter.java +++ b/src/main/java/org/qortal/controller/BlockMinter.java @@ -1,16 +1,5 @@ package org.qortal.controller; -import java.math.BigInteger; -import java.text.DecimalFormat; -import java.text.NumberFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.locks.ReentrantLock; -import java.util.stream.Collectors; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.qortal.account.Account; @@ -35,6 +24,17 @@ import org.qortal.transaction.Transaction; import org.qortal.utils.Base58; import org.qortal.utils.NTP; +import java.math.BigInteger; +import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.locks.ReentrantLock; +import java.util.stream.Collectors; + import static org.junit.Assert.assertNotNull; // Minting new blocks diff --git a/src/main/java/org/qortal/controller/ChatNotifier.java b/src/main/java/org/qortal/controller/ChatNotifier.java index 61146faa..abfcee0d 100644 --- a/src/main/java/org/qortal/controller/ChatNotifier.java +++ b/src/main/java/org/qortal/controller/ChatNotifier.java @@ -1,13 +1,13 @@ package org.qortal.controller; +import org.eclipse.jetty.websocket.api.Session; +import org.qortal.data.transaction.ChatTransactionData; + import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Map; -import org.eclipse.jetty.websocket.api.Session; -import org.qortal.data.transaction.ChatTransactionData; - public class ChatNotifier { private static ChatNotifier instance; diff --git a/src/main/java/org/qortal/controller/Controller.java b/src/main/java/org/qortal/controller/Controller.java index 2cab24ec..6d2562ab 100644 --- a/src/main/java/org/qortal/controller/Controller.java +++ b/src/main/java/org/qortal/controller/Controller.java @@ -1,30 +1,5 @@ package org.qortal.controller; -import java.awt.TrayIcon.MessageType; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.security.Security; -import java.time.LocalDateTime; -import java.time.ZoneOffset; -import java.time.format.DateTimeFormatter; -import java.util.*; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; -import java.util.concurrent.atomic.AtomicLong; -import java.util.concurrent.locks.ReentrantLock; -import java.util.function.Function; -import java.util.function.Predicate; -import java.util.stream.Collectors; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.bouncycastle.jce.provider.BouncyCastleProvider; @@ -38,8 +13,8 @@ import org.qortal.block.Block; import org.qortal.block.BlockChain; import org.qortal.block.BlockChain.BlockTimingByHeight; import org.qortal.controller.arbitrary.*; -import org.qortal.controller.repository.PruneManager; import org.qortal.controller.repository.NamesDatabaseIntegrityCheck; +import org.qortal.controller.repository.PruneManager; import org.qortal.controller.tradebot.TradeBot; import org.qortal.data.account.AccountBalanceData; import org.qortal.data.account.AccountData; @@ -47,6 +22,7 @@ import org.qortal.data.block.BlockData; import org.qortal.data.block.BlockSummaryData; import org.qortal.data.naming.NameData; import org.qortal.data.network.PeerData; +import org.qortal.data.transaction.ArbitraryTransactionData; import org.qortal.data.transaction.ChatTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.event.Event; @@ -65,6 +41,30 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.*; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import java.awt.TrayIcon.MessageType; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.security.Security; +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import java.util.concurrent.atomic.AtomicLong; +import java.util.concurrent.locks.ReentrantLock; +import java.util.function.Function; +import java.util.function.Predicate; +import java.util.stream.Collectors; + public class Controller extends Thread { static { @@ -403,6 +403,7 @@ public class Controller extends Thread { try (final Repository repository = RepositoryManager.getRepository()) { RepositoryManager.rebuildTransactionSequences(repository); + ArbitraryDataCacheManager.getInstance().buildArbitraryResourcesCache(repository, false); } } catch (DataException e) { // If exception has no cause or message then repository is in use by some other process. @@ -448,6 +449,13 @@ public class Controller extends Thread { Gui.getInstance().fatalError("Database upgrade needed", "Please restart the core to complete the upgrade process."); return; } + if (ArbitraryDataCacheManager.getInstance().needsArbitraryResourcesCacheRebuild(repository)) { + // Don't allow the node to start if arbitrary resources cache hasn't been built yet + // This is needed to handle a case when bootstrapping + LOGGER.error("Database upgrade needed. Please restart the core to complete the upgrade process."); + Gui.getInstance().fatalError("Database upgrade needed", "Please restart the core to complete the upgrade process."); + return; + } } catch (DataException e) { LOGGER.error("Error checking transaction sequences in repository", e); return; @@ -496,6 +504,7 @@ public class Controller extends Thread { LOGGER.info("Starting arbitrary-transaction controllers"); ArbitraryDataManager.getInstance().start(); ArbitraryDataFileManager.getInstance().start(); + ArbitraryDataCacheManager.getInstance().start(); ArbitraryDataBuildManager.getInstance().start(); ArbitraryDataCleanupManager.getInstance().start(); ArbitraryDataStorageManager.getInstance().start(); @@ -907,6 +916,7 @@ public class Controller extends Thread { if (now >= transaction.getDeadline()) { LOGGER.debug(() -> String.format("Deleting expired, unconfirmed transaction %s", Base58.encode(transactionData.getSignature()))); repository.getTransactionRepository().delete(transactionData); + this.onExpiredTransaction(transactionData); deletedCount++; } } @@ -949,6 +959,7 @@ public class Controller extends Thread { LOGGER.info("Shutting down arbitrary-transaction controllers"); ArbitraryDataManager.getInstance().shutdown(); ArbitraryDataFileManager.getInstance().shutdown(); + ArbitraryDataCacheManager.getInstance().shutdown(); ArbitraryDataBuildManager.getInstance().shutdown(); ArbitraryDataCleanupManager.getInstance().shutdown(); ArbitraryDataStorageManager.getInstance().shutdown(); @@ -1219,6 +1230,21 @@ public class Controller extends Thread { }); } + /** + * Callback for when we've deleted an expired, unconfirmed transaction. + *

+ * @implSpec performs actions in a new thread + */ + public void onExpiredTransaction(TransactionData transactionData) { + this.callbackExecutor.execute(() -> { + + // If this is an ARBITRARY transaction, we may need to update the cache + if (transactionData.getType() == TransactionType.ARBITRARY) { + ArbitraryDataManager.getInstance().onExpiredArbitraryTransaction((ArbitraryTransactionData)transactionData); + } + }); + } + public void onPeerHandshakeCompleted(Peer peer) { // Only send if outbound if (peer.isOutbound()) { diff --git a/src/main/java/org/qortal/controller/OnlineAccountsManager.java b/src/main/java/org/qortal/controller/OnlineAccountsManager.java index 25cace2f..17501a75 100644 --- a/src/main/java/org/qortal/controller/OnlineAccountsManager.java +++ b/src/main/java/org/qortal/controller/OnlineAccountsManager.java @@ -16,7 +16,9 @@ import org.qortal.data.account.RewardShareData; import org.qortal.data.network.OnlineAccountData; import org.qortal.network.Network; import org.qortal.network.Peer; -import org.qortal.network.message.*; +import org.qortal.network.message.GetOnlineAccountsV3Message; +import org.qortal.network.message.Message; +import org.qortal.network.message.OnlineAccountsV3Message; import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.repository.RepositoryManager; diff --git a/src/main/java/org/qortal/controller/PirateChainWalletController.java b/src/main/java/org/qortal/controller/PirateChainWalletController.java index 90e65329..e009d531 100644 --- a/src/main/java/org/qortal/controller/PirateChainWalletController.java +++ b/src/main/java/org/qortal/controller/PirateChainWalletController.java @@ -187,7 +187,7 @@ public class PirateChainWalletController extends Thread { // Check its status ArbitraryResourceStatus status = ArbitraryTransactionUtils.getStatus( - t.getService(), t.getName(), t.getIdentifier(), false); + t.getService(), t.getName(), t.getIdentifier(), false, true); if (status.getStatus() != ArbitraryResourceStatus.Status.READY) { LOGGER.info("Not ready yet: {}", status.getTitle()); diff --git a/src/main/java/org/qortal/controller/Synchronizer.java b/src/main/java/org/qortal/controller/Synchronizer.java index 804bacbb..113b5846 100644 --- a/src/main/java/org/qortal/controller/Synchronizer.java +++ b/src/main/java/org/qortal/controller/Synchronizer.java @@ -1,14 +1,5 @@ package org.qortal.controller; -import java.math.BigInteger; -import java.security.SecureRandom; -import java.text.DecimalFormat; -import java.text.NumberFormat; -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.locks.ReentrantLock; -import java.util.stream.Collectors; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.qortal.account.Account; @@ -35,6 +26,15 @@ import org.qortal.utils.Base58; import org.qortal.utils.ByteArray; import org.qortal.utils.NTP; +import java.math.BigInteger; +import java.security.SecureRandom; +import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.locks.ReentrantLock; +import java.util.stream.Collectors; + public class Synchronizer extends Thread { private static final Logger LOGGER = LogManager.getLogger(Synchronizer.class); diff --git a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataBuilderThread.java b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataBuilderThread.java index 0fb685a3..11f613ae 100644 --- a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataBuilderThread.java +++ b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataBuilderThread.java @@ -5,13 +5,17 @@ import org.apache.logging.log4j.Logger; import org.qortal.arbitrary.ArbitraryDataBuildQueueItem; import org.qortal.arbitrary.exception.MissingDataException; import org.qortal.controller.Controller; +import org.qortal.data.arbitrary.ArbitraryResourceStatus; import org.qortal.repository.DataException; +import org.qortal.utils.ArbitraryTransactionUtils; import org.qortal.utils.NTP; import java.io.IOException; import java.util.Comparator; import java.util.Map; +import static org.qortal.data.arbitrary.ArbitraryResourceStatus.Status.NOT_PUBLISHED; + public class ArbitraryDataBuilderThread implements Runnable { @@ -69,6 +73,14 @@ public class ArbitraryDataBuilderThread implements Runnable { continue; } + // Get status before build + ArbitraryResourceStatus arbitraryResourceStatus = ArbitraryTransactionUtils.getStatus(queueItem.getService(), queueItem.getResourceId(), queueItem.getIdentifier(), false, true); + if (arbitraryResourceStatus.getStatus() == NOT_PUBLISHED) { + // No point in building a non-existent resource + this.removeFromQueue(queueItem); + continue; + } + // Set the start timestamp, to prevent other threads from building it at the same time queueItem.prepareForBuild(); } diff --git a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataCacheManager.java b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataCacheManager.java new file mode 100644 index 00000000..36d53761 --- /dev/null +++ b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataCacheManager.java @@ -0,0 +1,238 @@ +package org.qortal.controller.arbitrary; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.qortal.api.resource.TransactionsResource; +import org.qortal.controller.Controller; +import org.qortal.data.arbitrary.ArbitraryResourceData; +import org.qortal.data.transaction.ArbitraryTransactionData; +import org.qortal.gui.SplashFrame; +import org.qortal.repository.DataException; +import org.qortal.repository.Repository; +import org.qortal.repository.RepositoryManager; +import org.qortal.settings.Settings; +import org.qortal.transaction.ArbitraryTransaction; +import org.qortal.transaction.Transaction; +import org.qortal.utils.Base58; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class ArbitraryDataCacheManager extends Thread { + + private static final Logger LOGGER = LogManager.getLogger(ArbitraryDataCacheManager.class); + + private static ArbitraryDataCacheManager instance; + private volatile boolean isStopping = false; + + /** Queue of arbitrary transactions that require cache updates */ + private final List updateQueue = Collections.synchronizedList(new ArrayList<>()); + + + public static synchronized ArbitraryDataCacheManager getInstance() { + if (instance == null) { + instance = new ArbitraryDataCacheManager(); + } + + return instance; + } + + @Override + public void run() { + Thread.currentThread().setName("Arbitrary Data Cache Manager"); + + try { + while (!Controller.isStopping()) { + Thread.sleep(500L); + + // Process queue + processResourceQueue(); + } + } catch (InterruptedException e) { + // Fall through to exit thread + } + + // Clear queue before terminating thread + processResourceQueue(); + } + + public void shutdown() { + isStopping = true; + this.interrupt(); + } + + + private void processResourceQueue() { + if (this.updateQueue.isEmpty()) { + // Nothing to do + return; + } + + try (final Repository repository = RepositoryManager.getRepository()) { + // Take a snapshot of resourceQueue, so we don't need to lock it while processing + List resourceQueueCopy = List.copyOf(this.updateQueue); + + for (ArbitraryTransactionData transactionData : resourceQueueCopy) { + // Best not to return when controller is stopping, as ideally we need to finish processing + + LOGGER.debug(() -> String.format("Processing transaction %.8s in arbitrary resource queue...", Base58.encode(transactionData.getSignature()))); + + // Remove from the queue regardless of outcome + this.updateQueue.remove(transactionData); + + // Update arbitrary resource caches + try { + ArbitraryTransaction arbitraryTransaction = new ArbitraryTransaction(repository, transactionData); + arbitraryTransaction.updateArbitraryResourceCache(repository); + arbitraryTransaction.updateArbitraryMetadataCache(repository); + repository.saveChanges(); + + // Update status as separate commit, as this is more prone to failure + arbitraryTransaction.updateArbitraryResourceStatus(repository); + repository.saveChanges(); + + LOGGER.debug(() -> String.format("Finished processing transaction %.8s in arbitrary resource queue...", Base58.encode(transactionData.getSignature()))); + + } catch (DataException e) { + repository.discardChanges(); + LOGGER.error("Repository issue while updating arbitrary resource caches", e); + } + } + } catch (DataException e) { + LOGGER.error("Repository issue while processing arbitrary resource cache updates", e); + } + } + + public void addToUpdateQueue(ArbitraryTransactionData transactionData) { + this.updateQueue.add(transactionData); + LOGGER.debug(() -> String.format("Transaction %.8s added to queue", Base58.encode(transactionData.getSignature()))); + } + + public boolean needsArbitraryResourcesCacheRebuild(Repository repository) throws DataException { + // Check if we have an entry in the cache for the oldest ARBITRARY transaction with a name + List oldestCacheableTransactions = repository.getArbitraryRepository().getArbitraryTransactions(true, 1, 0, false); + if (oldestCacheableTransactions == null || oldestCacheableTransactions.isEmpty()) { + // No relevant arbitrary transactions yet on this chain + LOGGER.debug("No relevant arbitrary transactions exist to build cache from"); + return false; + } + // We have an arbitrary transaction, so check if it's in the cache + ArbitraryTransactionData txn = oldestCacheableTransactions.get(0); + ArbitraryResourceData cachedResource = repository.getArbitraryRepository().getArbitraryResource(txn.getService(), txn.getName(), txn.getIdentifier()); + if (cachedResource != null) { + // Earliest resource exists in the cache, so assume it has been built. + // We avoid checkpointing and prevent the node from starting up in the case of a rebuild failure, so + // we shouldn't ever be left in a partially rebuilt state. + LOGGER.debug("Arbitrary resources cache already built"); + return false; + } + + return true; + } + + public boolean buildArbitraryResourcesCache(Repository repository, boolean forceRebuild) throws DataException { + if (Settings.getInstance().isLite()) { + // Lite nodes have no blockchain + return false; + } + + try { + // Skip if already built + if (!needsArbitraryResourcesCacheRebuild(repository) && !forceRebuild) { + LOGGER.debug("Arbitrary resources cache already built"); + return false; + } + + LOGGER.info("Building arbitrary resources cache..."); + SplashFrame.getInstance().updateStatus("Building QDN cache - please wait..."); + + final int batchSize = 100; + int offset = 0; + + // Loop through all ARBITRARY transactions, and determine latest state + while (!Controller.isStopping()) { + LOGGER.info("Fetching arbitrary transactions {} - {}", offset, offset+batchSize-1); + + List signatures = repository.getTransactionRepository().getSignaturesMatchingCriteria(null, null, null, List.of(Transaction.TransactionType.ARBITRARY), null, null, null, TransactionsResource.ConfirmationStatus.BOTH, batchSize, offset, false); + if (signatures.isEmpty()) { + // Complete + break; + } + + // Expand signatures to transactions + for (byte[] signature : signatures) { + ArbitraryTransactionData transactionData = (ArbitraryTransactionData) repository + .getTransactionRepository().fromSignature(signature); + + if (transactionData.getService() == null) { + // Unsupported service - ignore this resource + continue; + } + + // Update arbitrary resource caches + ArbitraryTransaction arbitraryTransaction = new ArbitraryTransaction(repository, transactionData); + arbitraryTransaction.updateArbitraryResourceCache(repository); + arbitraryTransaction.updateArbitraryMetadataCache(repository); + repository.saveChanges(); + } + offset += batchSize; + } + + // Now refresh all statuses + refreshArbitraryStatuses(repository); + + LOGGER.info("Completed build of arbitrary resources cache."); + return true; + } + catch (DataException e) { + LOGGER.info("Unable to build arbitrary resources cache: {}. The database may have been left in an inconsistent state.", e.getMessage()); + + // Throw an exception so that the node startup is halted, allowing for a retry next time. + repository.discardChanges(); + throw new DataException("Build of arbitrary resources cache failed."); + } + } + + private boolean refreshArbitraryStatuses(Repository repository) throws DataException { + try { + LOGGER.info("Refreshing arbitrary resource statuses for locally hosted transactions..."); + SplashFrame.getInstance().updateStatus("Refreshing statuses - please wait..."); + + final int batchSize = 100; + int offset = 0; + + // Loop through all ARBITRARY transactions, and determine latest state + while (!Controller.isStopping()) { + LOGGER.info("Fetching hosted transactions {} - {}", offset, offset+batchSize-1); + + List hostedTransactions = ArbitraryDataStorageManager.getInstance().listAllHostedTransactions(repository, batchSize, offset); + if (hostedTransactions.isEmpty()) { + // Complete + break; + } + + // Loop through hosted transactions + for (ArbitraryTransactionData transactionData : hostedTransactions) { + + // Determine status and update cache + ArbitraryTransaction arbitraryTransaction = new ArbitraryTransaction(repository, transactionData); + arbitraryTransaction.updateArbitraryResourceStatus(repository); + repository.saveChanges(); + } + offset += batchSize; + } + + LOGGER.info("Completed refresh of arbitrary resource statuses."); + return true; + } + catch (DataException e) { + LOGGER.info("Unable to refresh arbitrary resource statuses: {}. The database may have been left in an inconsistent state.", e.getMessage()); + + // Throw an exception so that the node startup is halted, allowing for a retry next time. + repository.discardChanges(); + throw new DataException("Refresh of arbitrary resource statuses failed."); + } + } + +} diff --git a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataCleanupManager.java b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataCleanupManager.java index e0c62acb..8611ab88 100644 --- a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataCleanupManager.java +++ b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataCleanupManager.java @@ -19,7 +19,10 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.security.SecureRandom; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; import static org.qortal.controller.arbitrary.ArbitraryDataStorageManager.DELETION_THRESHOLD; diff --git a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileManager.java b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileManager.java index 48c41496..69a1150a 100644 --- a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileManager.java +++ b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileManager.java @@ -146,7 +146,7 @@ public class ArbitraryDataFileManager extends Thread { if (!arbitraryDataFileRequests.containsKey(Base58.encode(hash))) { LOGGER.debug("Requesting data file {} from peer {}", hash58, peer); Long startTime = NTP.getTime(); - ArbitraryDataFile receivedArbitraryDataFile = fetchArbitraryDataFile(peer, null, signature, hash, null); + ArbitraryDataFile receivedArbitraryDataFile = fetchArbitraryDataFile(peer, null, arbitraryTransactionData, signature, hash, null); Long endTime = NTP.getTime(); if (receivedArbitraryDataFile != null) { LOGGER.debug("Received data file {} from peer {}. Time taken: {} ms", receivedArbitraryDataFile.getHash58(), peer, (endTime-startTime)); @@ -191,7 +191,7 @@ public class ArbitraryDataFileManager extends Thread { return receivedAtLeastOneFile; } - private ArbitraryDataFile fetchArbitraryDataFile(Peer peer, Peer requestingPeer, byte[] signature, byte[] hash, Message originalMessage) throws DataException { + private ArbitraryDataFile fetchArbitraryDataFile(Peer peer, Peer requestingPeer, ArbitraryTransactionData arbitraryTransactionData, byte[] signature, byte[] hash, Message originalMessage) throws DataException { ArbitraryDataFile existingFile = ArbitraryDataFile.fromHash(hash, signature); boolean fileAlreadyExists = existingFile.exists(); String hash58 = Base58.encode(hash); @@ -250,6 +250,13 @@ public class ArbitraryDataFileManager extends Thread { } } + // If this is a metadata file then we need to update the cache + if (arbitraryTransactionData != null && arbitraryTransactionData.getMetadataHash() != null) { + if (Arrays.equals(arbitraryTransactionData.getMetadataHash(), hash)) { + ArbitraryDataCacheManager.getInstance().addToUpdateQueue(arbitraryTransactionData); + } + } + return arbitraryDataFile; } @@ -585,7 +592,9 @@ public class ArbitraryDataFileManager extends Thread { // Forward the message to this peer LOGGER.debug("Asking peer {} for hash {}", peerToAsk, hash58); - this.fetchArbitraryDataFile(peerToAsk, peer, signature, hash, message); + // No need to pass arbitraryTransactionData below because this is only used for metadata caching, + // and metadata isn't retained when relaying. + this.fetchArbitraryDataFile(peerToAsk, peer, null, signature, hash, message); } else { LOGGER.debug("Peer {} not found in relay info", peer); diff --git a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileRequestThread.java b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileRequestThread.java index 654c6844..12a03aee 100644 --- a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileRequestThread.java +++ b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileRequestThread.java @@ -13,8 +13,9 @@ import org.qortal.utils.ArbitraryTransactionUtils; import org.qortal.utils.Base58; import org.qortal.utils.NTP; -import java.util.*; -import java.util.stream.Collectors; +import java.util.Arrays; +import java.util.Comparator; +import java.util.Iterator; public class ArbitraryDataFileRequestThread implements Runnable { diff --git a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java index 470fbda9..398dcb5b 100644 --- a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java +++ b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java @@ -1,11 +1,5 @@ package org.qortal.controller.arbitrary; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.*; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.qortal.api.resource.TransactionsResource.ConfirmationStatus; @@ -29,6 +23,12 @@ import org.qortal.utils.Base58; import org.qortal.utils.ListUtils; import org.qortal.utils.NTP; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.*; + public class ArbitraryDataManager extends Thread { private static final Logger LOGGER = LogManager.getLogger(ArbitraryDataManager.class); @@ -542,6 +542,17 @@ public class ArbitraryDataManager extends Thread { return true; } + public void onExpiredArbitraryTransaction(ArbitraryTransactionData arbitraryTransactionData) { + if (arbitraryTransactionData.getName() == null) { + // No name, so we don't care about this transaction + return; + } + + // Add to queue for update/deletion + ArbitraryDataCacheManager.getInstance().addToUpdateQueue(arbitraryTransactionData); + + } + public int getPowDifficulty() { return this.powDifficulty; } diff --git a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataRenderManager.java b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataRenderManager.java index 2844cef8..809db7af 100644 --- a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataRenderManager.java +++ b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataRenderManager.java @@ -3,7 +3,10 @@ package org.qortal.controller.arbitrary; import org.qortal.arbitrary.ArbitraryDataResource; import org.qortal.utils.NTP; -import java.util.*; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; public class ArbitraryDataRenderManager extends Thread { diff --git a/src/main/java/org/qortal/controller/arbitrary/ArbitraryMetadataManager.java b/src/main/java/org/qortal/controller/arbitrary/ArbitraryMetadataManager.java index 663bc22a..9133e86c 100644 --- a/src/main/java/org/qortal/controller/arbitrary/ArbitraryMetadataManager.java +++ b/src/main/java/org/qortal/controller/arbitrary/ArbitraryMetadataManager.java @@ -10,7 +10,9 @@ import org.qortal.data.transaction.ArbitraryTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.network.Network; import org.qortal.network.Peer; -import org.qortal.network.message.*; +import org.qortal.network.message.ArbitraryMetadataMessage; +import org.qortal.network.message.GetArbitraryMetadataMessage; +import org.qortal.network.message.Message; import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.repository.RepositoryManager; @@ -320,41 +322,46 @@ public class ArbitraryMetadataManager { return; } - // Update requests map to reflect that we've received all chunks + // Update requests map to reflect that we've received this metadata Triple newEntry = new Triple<>(null, null, request.getC()); arbitraryMetadataRequests.put(message.getId(), newEntry); - ArbitraryTransactionData arbitraryTransactionData = null; - - // Forwarding - if (isRelayRequest && Settings.getInstance().isRelayModeEnabled()) { - - // Get transaction info - try (final Repository repository = RepositoryManager.getRepository()) { - TransactionData transactionData = repository.getTransactionRepository().fromSignature(signature); - if (!(transactionData instanceof ArbitraryTransactionData)) - return; - arbitraryTransactionData = (ArbitraryTransactionData) transactionData; - } catch (DataException e) { - LOGGER.error(String.format("Repository issue while finding arbitrary transaction metadata for peer %s", peer), e); + // Get transaction info + try (final Repository repository = RepositoryManager.getRepository()) { + TransactionData transactionData = repository.getTransactionRepository().fromSignature(signature); + if (!(transactionData instanceof ArbitraryTransactionData)) { + return; } + ArbitraryTransactionData arbitraryTransactionData = (ArbitraryTransactionData) transactionData; + + // Forwarding + if (isRelayRequest && Settings.getInstance().isRelayModeEnabled()) { - // Check if the name is blocked - boolean isBlocked = (arbitraryTransactionData == null || ListUtils.isNameBlocked(arbitraryTransactionData.getName())); - if (!isBlocked) { - Peer requestingPeer = request.getB(); - if (requestingPeer != null) { + // Check if the name is blocked + boolean isBlocked = (arbitraryTransactionData == null || ListUtils.isNameBlocked(arbitraryTransactionData.getName())); + if (!isBlocked) { + Peer requestingPeer = request.getB(); + if (requestingPeer != null) { - ArbitraryMetadataMessage forwardArbitraryMetadataMessage = new ArbitraryMetadataMessage(signature, arbitraryMetadataMessage.getArbitraryMetadataFile()); - forwardArbitraryMetadataMessage.setId(arbitraryMetadataMessage.getId()); + ArbitraryMetadataMessage forwardArbitraryMetadataMessage = new ArbitraryMetadataMessage(signature, arbitraryMetadataMessage.getArbitraryMetadataFile()); + forwardArbitraryMetadataMessage.setId(arbitraryMetadataMessage.getId()); - // Forward to requesting peer - LOGGER.debug("Forwarding metadata to requesting peer: {}", requestingPeer); - if (!requestingPeer.sendMessage(forwardArbitraryMetadataMessage)) { - requestingPeer.disconnect("failed to forward arbitrary metadata"); + // Forward to requesting peer + LOGGER.debug("Forwarding metadata to requesting peer: {}", requestingPeer); + if (!requestingPeer.sendMessage(forwardArbitraryMetadataMessage)) { + requestingPeer.disconnect("failed to forward arbitrary metadata"); + } } } } + + // Add to resource queue to update arbitrary resource caches + if (arbitraryTransactionData != null) { + ArbitraryDataCacheManager.getInstance().addToUpdateQueue(arbitraryTransactionData); + } + + } catch (DataException e) { + LOGGER.error(String.format("Repository issue while saving arbitrary transaction metadata from peer %s", peer), e); } } diff --git a/src/main/java/org/qortal/controller/repository/BlockArchiver.java b/src/main/java/org/qortal/controller/repository/BlockArchiver.java index 63d61ef8..a643d9b9 100644 --- a/src/main/java/org/qortal/controller/repository/BlockArchiver.java +++ b/src/main/java/org/qortal/controller/repository/BlockArchiver.java @@ -5,7 +5,10 @@ import org.apache.logging.log4j.Logger; import org.qortal.controller.Controller; import org.qortal.controller.Synchronizer; import org.qortal.data.block.BlockData; -import org.qortal.repository.*; +import org.qortal.repository.BlockArchiveWriter; +import org.qortal.repository.DataException; +import org.qortal.repository.Repository; +import org.qortal.repository.RepositoryManager; import org.qortal.settings.Settings; import org.qortal.transform.TransformationException; import org.qortal.utils.NTP; diff --git a/src/main/java/org/qortal/controller/repository/PruneManager.java b/src/main/java/org/qortal/controller/repository/PruneManager.java index dfb6290b..d48f85f7 100644 --- a/src/main/java/org/qortal/controller/repository/PruneManager.java +++ b/src/main/java/org/qortal/controller/repository/PruneManager.java @@ -4,7 +4,6 @@ import org.apache.commons.io.FileUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.qortal.controller.Controller; - import org.qortal.data.block.BlockData; import org.qortal.repository.DataException; import org.qortal.repository.Repository; diff --git a/src/main/java/org/qortal/controller/tradebot/AcctTradeBot.java b/src/main/java/org/qortal/controller/tradebot/AcctTradeBot.java index 84a0d484..5c93b3e9 100644 --- a/src/main/java/org/qortal/controller/tradebot/AcctTradeBot.java +++ b/src/main/java/org/qortal/controller/tradebot/AcctTradeBot.java @@ -1,7 +1,5 @@ package org.qortal.controller.tradebot; -import java.util.List; - import org.qortal.api.model.crosschain.TradeBotCreateRequest; import org.qortal.crosschain.ACCT; import org.qortal.crosschain.ForeignBlockchainException; @@ -11,6 +9,8 @@ import org.qortal.data.crosschain.TradeBotData; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.List; + public interface AcctTradeBot { public enum ResponseResult { OK, BALANCE_ISSUE, NETWORK_ISSUE, TRADE_ALREADY_EXISTS } diff --git a/src/main/java/org/qortal/controller/tradebot/BitcoinACCTv1TradeBot.java b/src/main/java/org/qortal/controller/tradebot/BitcoinACCTv1TradeBot.java index 038ecded..259a16b8 100644 --- a/src/main/java/org/qortal/controller/tradebot/BitcoinACCTv1TradeBot.java +++ b/src/main/java/org/qortal/controller/tradebot/BitcoinACCTv1TradeBot.java @@ -1,33 +1,14 @@ package org.qortal.controller.tradebot; -import static java.util.Arrays.stream; -import static java.util.stream.Collectors.toMap; - -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.bitcoinj.core.Address; -import org.bitcoinj.core.AddressFormatException; -import org.bitcoinj.core.Coin; -import org.bitcoinj.core.ECKey; -import org.bitcoinj.core.Transaction; -import org.bitcoinj.core.TransactionOutput; +import org.bitcoinj.core.*; import org.bitcoinj.script.Script.ScriptType; import org.qortal.account.PrivateKeyAccount; import org.qortal.account.PublicKeyAccount; import org.qortal.api.model.crosschain.TradeBotCreateRequest; import org.qortal.asset.Asset; -import org.qortal.crosschain.ACCT; -import org.qortal.crosschain.AcctMode; -import org.qortal.crosschain.Bitcoin; -import org.qortal.crosschain.BitcoinACCTv1; -import org.qortal.crosschain.ForeignBlockchainException; -import org.qortal.crosschain.SupportedBlockchain; -import org.qortal.crosschain.BitcoinyHTLC; +import org.qortal.crosschain.*; import org.qortal.crypto.Crypto; import org.qortal.data.at.ATData; import org.qortal.data.crosschain.CrossChainTradeData; @@ -46,6 +27,14 @@ import org.qortal.transform.transaction.DeployAtTransactionTransformer; import org.qortal.utils.Base58; import org.qortal.utils.NTP; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static java.util.Arrays.stream; +import static java.util.stream.Collectors.toMap; + /** * Performing cross-chain trading steps on behalf of user. *

diff --git a/src/main/java/org/qortal/controller/tradebot/LitecoinACCTv1TradeBot.java b/src/main/java/org/qortal/controller/tradebot/LitecoinACCTv1TradeBot.java index fd0682b6..0b612d11 100644 --- a/src/main/java/org/qortal/controller/tradebot/LitecoinACCTv1TradeBot.java +++ b/src/main/java/org/qortal/controller/tradebot/LitecoinACCTv1TradeBot.java @@ -1,33 +1,14 @@ package org.qortal.controller.tradebot; -import static java.util.Arrays.stream; -import static java.util.stream.Collectors.toMap; - -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.bitcoinj.core.Address; -import org.bitcoinj.core.AddressFormatException; -import org.bitcoinj.core.Coin; -import org.bitcoinj.core.ECKey; -import org.bitcoinj.core.Transaction; -import org.bitcoinj.core.TransactionOutput; +import org.bitcoinj.core.*; import org.bitcoinj.script.Script.ScriptType; import org.qortal.account.PrivateKeyAccount; import org.qortal.account.PublicKeyAccount; import org.qortal.api.model.crosschain.TradeBotCreateRequest; import org.qortal.asset.Asset; -import org.qortal.crosschain.ACCT; -import org.qortal.crosschain.AcctMode; -import org.qortal.crosschain.ForeignBlockchainException; -import org.qortal.crosschain.Litecoin; -import org.qortal.crosschain.LitecoinACCTv1; -import org.qortal.crosschain.SupportedBlockchain; -import org.qortal.crosschain.BitcoinyHTLC; +import org.qortal.crosschain.*; import org.qortal.crypto.Crypto; import org.qortal.data.at.ATData; import org.qortal.data.crosschain.CrossChainTradeData; @@ -46,6 +27,14 @@ import org.qortal.transform.transaction.DeployAtTransactionTransformer; import org.qortal.utils.Base58; import org.qortal.utils.NTP; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static java.util.Arrays.stream; +import static java.util.stream.Collectors.toMap; + /** * Performing cross-chain trading steps on behalf of user. *

diff --git a/src/main/java/org/qortal/controller/tradebot/PirateChainACCTv3TradeBot.java b/src/main/java/org/qortal/controller/tradebot/PirateChainACCTv3TradeBot.java index 4b5126d9..c48f23e2 100644 --- a/src/main/java/org/qortal/controller/tradebot/PirateChainACCTv3TradeBot.java +++ b/src/main/java/org/qortal/controller/tradebot/PirateChainACCTv3TradeBot.java @@ -4,7 +4,8 @@ import com.google.common.hash.HashCode; import com.rust.litewalletjni.LiteWalletJni; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.bitcoinj.core.*; +import org.bitcoinj.core.Bech32; +import org.bitcoinj.core.Coin; import org.qortal.account.PrivateKeyAccount; import org.qortal.account.PublicKeyAccount; import org.qortal.api.model.crosschain.TradeBotCreateRequest; diff --git a/src/main/java/org/qortal/controller/tradebot/TradeBot.java b/src/main/java/org/qortal/controller/tradebot/TradeBot.java index e17f642f..43330b07 100644 --- a/src/main/java/org/qortal/controller/tradebot/TradeBot.java +++ b/src/main/java/org/qortal/controller/tradebot/TradeBot.java @@ -1,16 +1,11 @@ package org.qortal.controller.tradebot; -import java.awt.TrayIcon.MessageType; -import java.security.SecureRandom; -import java.util.*; -import java.util.function.Supplier; - +import com.google.common.primitives.Longs; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.bitcoinj.core.ECKey; import org.qortal.account.PrivateKeyAccount; import org.qortal.api.model.crosschain.TradeBotCreateRequest; -import org.qortal.api.resource.TransactionsResource; import org.qortal.controller.Controller; import org.qortal.controller.Synchronizer; import org.qortal.controller.tradebot.AcctTradeBot.ResponseResult; @@ -39,7 +34,10 @@ import org.qortal.transaction.Transaction; import org.qortal.utils.ByteArray; import org.qortal.utils.NTP; -import com.google.common.primitives.Longs; +import java.awt.TrayIcon.MessageType; +import java.security.SecureRandom; +import java.util.*; +import java.util.function.Supplier; /** * Performing cross-chain trading steps on behalf of user. diff --git a/src/main/java/org/qortal/crosschain/AcctMode.java b/src/main/java/org/qortal/crosschain/AcctMode.java index 21496032..5c871943 100644 --- a/src/main/java/org/qortal/crosschain/AcctMode.java +++ b/src/main/java/org/qortal/crosschain/AcctMode.java @@ -1,10 +1,10 @@ package org.qortal.crosschain; +import java.util.Map; + import static java.util.Arrays.stream; import static java.util.stream.Collectors.toMap; -import java.util.Map; - public enum AcctMode { OFFERING(0), TRADING(1), CANCELLED(2), REFUNDED(3), REDEEMED(4); diff --git a/src/main/java/org/qortal/crosschain/Bitcoin.java b/src/main/java/org/qortal/crosschain/Bitcoin.java index 7925dd4e..801b141c 100644 --- a/src/main/java/org/qortal/crosschain/Bitcoin.java +++ b/src/main/java/org/qortal/crosschain/Bitcoin.java @@ -1,10 +1,5 @@ package org.qortal.crosschain; -import java.util.Arrays; -import java.util.Collection; -import java.util.EnumMap; -import java.util.Map; - import org.bitcoinj.core.Context; import org.bitcoinj.core.NetworkParameters; import org.bitcoinj.core.Transaction; @@ -15,6 +10,11 @@ import org.qortal.crosschain.ElectrumX.Server; import org.qortal.crosschain.ElectrumX.Server.ConnectionType; import org.qortal.settings.Settings; +import java.util.Arrays; +import java.util.Collection; +import java.util.EnumMap; +import java.util.Map; + public class Bitcoin extends Bitcoiny { public static final String CURRENCY_CODE = "BTC"; diff --git a/src/main/java/org/qortal/crosschain/BitcoinACCTv1.java b/src/main/java/org/qortal/crosschain/BitcoinACCTv1.java index eea541ad..9de95c17 100644 --- a/src/main/java/org/qortal/crosschain/BitcoinACCTv1.java +++ b/src/main/java/org/qortal/crosschain/BitcoinACCTv1.java @@ -1,17 +1,8 @@ package org.qortal.crosschain; -import static org.ciyam.at.OpCode.calcOffset; - -import java.nio.ByteBuffer; -import java.util.Arrays; -import java.util.List; - -import org.ciyam.at.API; -import org.ciyam.at.CompilationException; -import org.ciyam.at.FunctionCode; -import org.ciyam.at.MachineState; -import org.ciyam.at.OpCode; -import org.ciyam.at.Timestamp; +import com.google.common.hash.HashCode; +import com.google.common.primitives.Bytes; +import org.ciyam.at.*; import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.at.QortalFunctionCode; @@ -25,8 +16,11 @@ import org.qortal.repository.Repository; import org.qortal.utils.Base58; import org.qortal.utils.BitTwiddling; -import com.google.common.hash.HashCode; -import com.google.common.primitives.Bytes; +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.List; + +import static org.ciyam.at.OpCode.calcOffset; /** * Cross-chain trade AT diff --git a/src/main/java/org/qortal/crosschain/Bitcoiny.java b/src/main/java/org/qortal/crosschain/Bitcoiny.java index d1523b50..db901395 100644 --- a/src/main/java/org/qortal/crosschain/Bitcoiny.java +++ b/src/main/java/org/qortal/crosschain/Bitcoiny.java @@ -1,24 +1,9 @@ package org.qortal.crosschain; -import java.util.*; -import java.util.stream.Collectors; - +import com.google.common.hash.HashCode; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.bitcoinj.core.Address; -import org.bitcoinj.core.AddressFormatException; -import org.bitcoinj.core.Coin; -import org.bitcoinj.core.Context; -import org.bitcoinj.core.ECKey; -import org.bitcoinj.core.InsufficientMoneyException; -import org.bitcoinj.core.LegacyAddress; -import org.bitcoinj.core.NetworkParameters; -import org.bitcoinj.core.Sha256Hash; -import org.bitcoinj.core.Transaction; -import org.bitcoinj.core.TransactionOutput; -import org.bitcoinj.core.UTXO; -import org.bitcoinj.core.UTXOProvider; -import org.bitcoinj.core.UTXOProviderException; +import org.bitcoinj.core.*; import org.bitcoinj.crypto.ChildNumber; import org.bitcoinj.crypto.DeterministicHierarchy; import org.bitcoinj.crypto.DeterministicKey; @@ -32,10 +17,11 @@ import org.qortal.crypto.Crypto; import org.qortal.settings.Settings; import org.qortal.utils.Amounts; import org.qortal.utils.BitTwiddling; - -import com.google.common.hash.HashCode; import org.qortal.utils.NTP; +import java.util.*; +import java.util.stream.Collectors; + /** Bitcoin-like (Bitcoin, Litecoin, etc.) support */ public abstract class Bitcoiny implements ForeignBlockchain { diff --git a/src/main/java/org/qortal/crosschain/BitcoinyBlockchainProvider.java b/src/main/java/org/qortal/crosschain/BitcoinyBlockchainProvider.java index 8075bfff..d8b4f653 100644 --- a/src/main/java/org/qortal/crosschain/BitcoinyBlockchainProvider.java +++ b/src/main/java/org/qortal/crosschain/BitcoinyBlockchainProvider.java @@ -1,6 +1,6 @@ package org.qortal.crosschain; -import cash.z.wallet.sdk.rpc.CompactFormats.*; +import cash.z.wallet.sdk.rpc.CompactFormats.CompactBlock; import java.util.List; diff --git a/src/main/java/org/qortal/crosschain/BitcoinyHTLC.java b/src/main/java/org/qortal/crosschain/BitcoinyHTLC.java index 8ebfffa2..8b6a6b07 100644 --- a/src/main/java/org/qortal/crosschain/BitcoinyHTLC.java +++ b/src/main/java/org/qortal/crosschain/BitcoinyHTLC.java @@ -1,23 +1,9 @@ package org.qortal.crosschain; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Function; - -import org.bitcoinj.core.Address; -import org.bitcoinj.core.Coin; -import org.bitcoinj.core.ECKey; -import org.bitcoinj.core.LegacyAddress; -import org.bitcoinj.core.NetworkParameters; -import org.bitcoinj.core.Transaction; +import com.google.common.hash.HashCode; +import com.google.common.primitives.Bytes; +import org.bitcoinj.core.*; import org.bitcoinj.core.Transaction.SigHash; -import org.bitcoinj.core.TransactionInput; -import org.bitcoinj.core.TransactionOutput; import org.bitcoinj.crypto.TransactionSignature; import org.bitcoinj.script.Script; import org.bitcoinj.script.ScriptBuilder; @@ -27,8 +13,8 @@ import org.qortal.crypto.Crypto; import org.qortal.utils.Base58; import org.qortal.utils.BitTwiddling; -import com.google.common.hash.HashCode; -import com.google.common.primitives.Bytes; +import java.util.*; +import java.util.function.Function; public class BitcoinyHTLC { diff --git a/src/main/java/org/qortal/crosschain/BitcoinyTransaction.java b/src/main/java/org/qortal/crosschain/BitcoinyTransaction.java index 90ee2b23..203e11f8 100644 --- a/src/main/java/org/qortal/crosschain/BitcoinyTransaction.java +++ b/src/main/java/org/qortal/crosschain/BitcoinyTransaction.java @@ -1,12 +1,11 @@ package org.qortal.crosschain; -import java.util.Comparator; -import java.util.List; -import java.util.stream.Collectors; - import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; @XmlAccessorType(XmlAccessType.FIELD) public class BitcoinyTransaction { diff --git a/src/main/java/org/qortal/crosschain/Digibyte.java b/src/main/java/org/qortal/crosschain/Digibyte.java index 8e316173..4e725e89 100644 --- a/src/main/java/org/qortal/crosschain/Digibyte.java +++ b/src/main/java/org/qortal/crosschain/Digibyte.java @@ -1,10 +1,5 @@ package org.qortal.crosschain; -import java.util.Arrays; -import java.util.Collection; -import java.util.EnumMap; -import java.util.Map; - import org.bitcoinj.core.Coin; import org.bitcoinj.core.Context; import org.bitcoinj.core.NetworkParameters; @@ -15,6 +10,11 @@ import org.qortal.crosschain.ElectrumX.Server; import org.qortal.crosschain.ElectrumX.Server.ConnectionType; import org.qortal.settings.Settings; +import java.util.Arrays; +import java.util.Collection; +import java.util.EnumMap; +import java.util.Map; + public class Digibyte extends Bitcoiny { public static final String CURRENCY_CODE = "DGB"; diff --git a/src/main/java/org/qortal/crosschain/ElectrumX.java b/src/main/java/org/qortal/crosschain/ElectrumX.java index a331b111..5915ba04 100644 --- a/src/main/java/org/qortal/crosschain/ElectrumX.java +++ b/src/main/java/org/qortal/crosschain/ElectrumX.java @@ -1,5 +1,18 @@ package org.qortal.crosschain; +import cash.z.wallet.sdk.rpc.CompactFormats.CompactBlock; +import com.google.common.hash.HashCode; +import com.google.common.primitives.Bytes; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; +import org.json.simple.JSONValue; +import org.qortal.crypto.Crypto; +import org.qortal.crypto.TrustlessSSLSocketFactory; +import org.qortal.utils.BitTwiddling; + +import javax.net.ssl.SSLSocketFactory; import java.io.IOException; import java.math.BigDecimal; import java.net.InetSocketAddress; @@ -10,21 +23,6 @@ import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; -import javax.net.ssl.SSLSocketFactory; - -import cash.z.wallet.sdk.rpc.CompactFormats.*; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.JSONValue; -import org.qortal.crypto.Crypto; -import org.qortal.crypto.TrustlessSSLSocketFactory; - -import com.google.common.hash.HashCode; -import com.google.common.primitives.Bytes; -import org.qortal.utils.BitTwiddling; - /** ElectrumX network support for querying Bitcoiny-related info like block headers, transaction outputs, etc. */ public class ElectrumX extends BitcoinyBlockchainProvider { diff --git a/src/main/java/org/qortal/crosschain/Litecoin.java b/src/main/java/org/qortal/crosschain/Litecoin.java index 22825c74..a0f7c1cb 100644 --- a/src/main/java/org/qortal/crosschain/Litecoin.java +++ b/src/main/java/org/qortal/crosschain/Litecoin.java @@ -1,10 +1,5 @@ package org.qortal.crosschain; -import java.util.Arrays; -import java.util.Collection; -import java.util.EnumMap; -import java.util.Map; - import org.bitcoinj.core.Coin; import org.bitcoinj.core.Context; import org.bitcoinj.core.NetworkParameters; @@ -15,6 +10,11 @@ import org.qortal.crosschain.ElectrumX.Server; import org.qortal.crosschain.ElectrumX.Server.ConnectionType; import org.qortal.settings.Settings; +import java.util.Arrays; +import java.util.Collection; +import java.util.EnumMap; +import java.util.Map; + public class Litecoin extends Bitcoiny { public static final String CURRENCY_CODE = "LTC"; diff --git a/src/main/java/org/qortal/crosschain/LitecoinACCTv1.java b/src/main/java/org/qortal/crosschain/LitecoinACCTv1.java index efd7043e..ea91501e 100644 --- a/src/main/java/org/qortal/crosschain/LitecoinACCTv1.java +++ b/src/main/java/org/qortal/crosschain/LitecoinACCTv1.java @@ -1,17 +1,8 @@ package org.qortal.crosschain; -import static org.ciyam.at.OpCode.calcOffset; - -import java.nio.ByteBuffer; -import java.util.Arrays; -import java.util.List; - -import org.ciyam.at.API; -import org.ciyam.at.CompilationException; -import org.ciyam.at.FunctionCode; -import org.ciyam.at.MachineState; -import org.ciyam.at.OpCode; -import org.ciyam.at.Timestamp; +import com.google.common.hash.HashCode; +import com.google.common.primitives.Bytes; +import org.ciyam.at.*; import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.at.QortalFunctionCode; @@ -25,8 +16,11 @@ import org.qortal.repository.Repository; import org.qortal.utils.Base58; import org.qortal.utils.BitTwiddling; -import com.google.common.hash.HashCode; -import com.google.common.primitives.Bytes; +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.List; + +import static org.ciyam.at.OpCode.calcOffset; /** * Cross-chain trade AT diff --git a/src/main/java/org/qortal/crosschain/PirateChain.java b/src/main/java/org/qortal/crosschain/PirateChain.java index 4881c8bb..403d90e5 100644 --- a/src/main/java/org/qortal/crosschain/PirateChain.java +++ b/src/main/java/org/qortal/crosschain/PirateChain.java @@ -4,12 +4,6 @@ import cash.z.wallet.sdk.rpc.CompactFormats; import com.google.common.hash.HashCode; import com.rust.litewalletjni.LiteWalletJni; import org.bitcoinj.core.*; -import org.bitcoinj.crypto.ChildNumber; -import org.bitcoinj.crypto.DeterministicKey; -import org.bitcoinj.script.Script; -import org.bitcoinj.script.ScriptBuilder; -import org.bitcoinj.wallet.DeterministicKeyChain; -import org.bitcoinj.wallet.Wallet; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; diff --git a/src/main/java/org/qortal/crosschain/PirateChainHTLC.java b/src/main/java/org/qortal/crosschain/PirateChainHTLC.java index 17f7ad74..cf933951 100644 --- a/src/main/java/org/qortal/crosschain/PirateChainHTLC.java +++ b/src/main/java/org/qortal/crosschain/PirateChainHTLC.java @@ -10,6 +10,7 @@ import org.qortal.utils.Base58; import org.qortal.utils.BitTwiddling; import java.util.*; + import static org.qortal.crosschain.BitcoinyHTLC.Status; public class PirateChainHTLC { diff --git a/src/main/java/org/qortal/crosschain/PirateLightClient.java b/src/main/java/org/qortal/crosschain/PirateLightClient.java index 63bcd5fa..be4370a0 100644 --- a/src/main/java/org/qortal/crosschain/PirateLightClient.java +++ b/src/main/java/org/qortal/crosschain/PirateLightClient.java @@ -1,6 +1,6 @@ package org.qortal.crosschain; -import cash.z.wallet.sdk.rpc.CompactFormats.*; +import cash.z.wallet.sdk.rpc.CompactFormats.CompactBlock; import cash.z.wallet.sdk.rpc.CompactTxStreamerGrpc; import cash.z.wallet.sdk.rpc.Service; import cash.z.wallet.sdk.rpc.Service.*; diff --git a/src/main/java/org/qortal/crosschain/Ravencoin.java b/src/main/java/org/qortal/crosschain/Ravencoin.java index 51b65f68..6b267a00 100644 --- a/src/main/java/org/qortal/crosschain/Ravencoin.java +++ b/src/main/java/org/qortal/crosschain/Ravencoin.java @@ -1,10 +1,5 @@ package org.qortal.crosschain; -import java.util.Arrays; -import java.util.Collection; -import java.util.EnumMap; -import java.util.Map; - import org.bitcoinj.core.Coin; import org.bitcoinj.core.Context; import org.bitcoinj.core.NetworkParameters; @@ -15,6 +10,11 @@ import org.qortal.crosschain.ElectrumX.Server; import org.qortal.crosschain.ElectrumX.Server.ConnectionType; import org.qortal.settings.Settings; +import java.util.Arrays; +import java.util.Collection; +import java.util.EnumMap; +import java.util.Map; + public class Ravencoin extends Bitcoiny { public static final String CURRENCY_CODE = "RVN"; diff --git a/src/main/java/org/qortal/crosschain/SupportedBlockchain.java b/src/main/java/org/qortal/crosschain/SupportedBlockchain.java index 5ddb6aec..7b692644 100644 --- a/src/main/java/org/qortal/crosschain/SupportedBlockchain.java +++ b/src/main/java/org/qortal/crosschain/SupportedBlockchain.java @@ -1,5 +1,8 @@ package org.qortal.crosschain; +import org.qortal.utils.ByteArray; +import org.qortal.utils.Triple; + import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -7,9 +10,6 @@ import java.util.Map; import java.util.function.Supplier; import java.util.stream.Collectors; -import org.qortal.utils.ByteArray; -import org.qortal.utils.Triple; - public enum SupportedBlockchain { BITCOIN(Arrays.asList( diff --git a/src/main/java/org/qortal/crypto/AES.java b/src/main/java/org/qortal/crypto/AES.java index 1286fb81..d42e22f9 100644 --- a/src/main/java/org/qortal/crypto/AES.java +++ b/src/main/java/org/qortal/crypto/AES.java @@ -26,22 +26,11 @@ package org.qortal.crypto; -import javax.crypto.Cipher; -import javax.crypto.IllegalBlockSizeException; -import javax.crypto.NoSuchPaddingException; -import javax.crypto.SecretKey; -import javax.crypto.BadPaddingException; -import javax.crypto.KeyGenerator; -import javax.crypto.SecretKeyFactory; -import javax.crypto.SealedObject; +import javax.crypto.*; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.SecretKeySpec; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.Serializable; +import java.io.*; import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; diff --git a/src/main/java/org/qortal/crypto/BouncyCastleEd25519.java b/src/main/java/org/qortal/crypto/BouncyCastleEd25519.java index ebcf0f97..41f61023 100644 --- a/src/main/java/org/qortal/crypto/BouncyCastleEd25519.java +++ b/src/main/java/org/qortal/crypto/BouncyCastleEd25519.java @@ -1,7 +1,5 @@ package org.qortal.crypto; -import java.security.SecureRandom; - import org.bouncycastle.crypto.Digest; import org.bouncycastle.crypto.digests.SHA512Digest; import org.bouncycastle.math.ec.rfc7748.X25519; @@ -11,6 +9,8 @@ import org.bouncycastle.math.raw.Nat; import org.bouncycastle.math.raw.Nat256; import org.bouncycastle.util.Arrays; +import java.security.SecureRandom; + /** * Duplicate of {@link org.bouncycastle.math.ec.rfc8032.Ed25519}, * but with {@code private} modifiers replaced with {@code protected}, diff --git a/src/main/java/org/qortal/crypto/Credentials.java b/src/main/java/org/qortal/crypto/Credentials.java index 8fee58b2..2061d1eb 100644 --- a/src/main/java/org/qortal/crypto/Credentials.java +++ b/src/main/java/org/qortal/crypto/Credentials.java @@ -1,10 +1,6 @@ package org.qortal.crypto; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; +import java.io.*; import java.security.KeyFactory; import java.security.NoSuchAlgorithmException; import java.security.NoSuchProviderException; diff --git a/src/main/java/org/qortal/crypto/Crypto.java b/src/main/java/org/qortal/crypto/Crypto.java index 75e5028e..3beb7abd 100644 --- a/src/main/java/org/qortal/crypto/Crypto.java +++ b/src/main/java/org/qortal/crypto/Crypto.java @@ -1,13 +1,6 @@ package org.qortal.crypto; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.util.Arrays; - +import com.google.common.primitives.Bytes; import org.bouncycastle.crypto.params.Ed25519PrivateKeyParameters; import org.bouncycastle.crypto.params.X25519PrivateKeyParameters; import org.bouncycastle.crypto.params.X25519PublicKeyParameters; @@ -15,7 +8,13 @@ import org.bouncycastle.math.ec.rfc8032.Ed25519; import org.qortal.account.Account; import org.qortal.utils.Base58; -import com.google.common.primitives.Bytes; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Arrays; public abstract class Crypto { diff --git a/src/main/java/org/qortal/crypto/TrustlessSSLSocketFactory.java b/src/main/java/org/qortal/crypto/TrustlessSSLSocketFactory.java index f723e651..f14efae8 100644 --- a/src/main/java/org/qortal/crypto/TrustlessSSLSocketFactory.java +++ b/src/main/java/org/qortal/crypto/TrustlessSSLSocketFactory.java @@ -1,11 +1,10 @@ package org.qortal.crypto; -import java.security.cert.X509Certificate; - import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; +import java.security.cert.X509Certificate; public abstract class TrustlessSSLSocketFactory { diff --git a/src/main/java/org/qortal/data/account/AccountBalanceData.java b/src/main/java/org/qortal/data/account/AccountBalanceData.java index 94c03ab4..37408baf 100644 --- a/src/main/java/org/qortal/data/account/AccountBalanceData.java +++ b/src/main/java/org/qortal/data/account/AccountBalanceData.java @@ -1,12 +1,12 @@ package org.qortal.data.account; +import org.qortal.utils.Amounts; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import org.qortal.utils.Amounts; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) public class AccountBalanceData { diff --git a/src/main/java/org/qortal/data/account/AccountData.java b/src/main/java/org/qortal/data/account/AccountData.java index 868d1bc1..eb998a08 100644 --- a/src/main/java/org/qortal/data/account/AccountData.java +++ b/src/main/java/org/qortal/data/account/AccountData.java @@ -1,10 +1,10 @@ package org.qortal.data.account; +import org.qortal.group.Group; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; -import org.qortal.group.Group; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) public class AccountData { diff --git a/src/main/java/org/qortal/data/account/MintingAccountData.java b/src/main/java/org/qortal/data/account/MintingAccountData.java index 63c6c723..26bc4e27 100644 --- a/src/main/java/org/qortal/data/account/MintingAccountData.java +++ b/src/main/java/org/qortal/data/account/MintingAccountData.java @@ -1,16 +1,15 @@ package org.qortal.data.account; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlTransient; - -import org.json.JSONObject; -import org.qortal.crypto.Crypto; - import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema.AccessMode; +import org.json.JSONObject; +import org.qortal.crypto.Crypto; import org.qortal.utils.Base58; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlTransient; + // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) public class MintingAccountData { diff --git a/src/main/java/org/qortal/data/account/RewardShareData.java b/src/main/java/org/qortal/data/account/RewardShareData.java index ead1bbd9..b93fb945 100644 --- a/src/main/java/org/qortal/data/account/RewardShareData.java +++ b/src/main/java/org/qortal/data/account/RewardShareData.java @@ -1,16 +1,14 @@ package org.qortal.data.account; -import java.math.BigDecimal; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.utils.Base58; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlTransient; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; - -import org.qortal.utils.Base58; - -import io.swagger.v3.oas.annotations.media.Schema; +import java.math.BigDecimal; // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) diff --git a/src/main/java/org/qortal/data/arbitrary/ArbitraryRelayInfo.java b/src/main/java/org/qortal/data/arbitrary/ArbitraryRelayInfo.java index 17c1acac..80b4efcf 100644 --- a/src/main/java/org/qortal/data/arbitrary/ArbitraryRelayInfo.java +++ b/src/main/java/org/qortal/data/arbitrary/ArbitraryRelayInfo.java @@ -1,6 +1,7 @@ package org.qortal.data.arbitrary; import org.qortal.network.Peer; + import java.util.Objects; public class ArbitraryRelayInfo { diff --git a/src/main/java/org/qortal/data/arbitrary/ArbitraryResourceInfo.java b/src/main/java/org/qortal/data/arbitrary/ArbitraryResourceData.java similarity index 55% rename from src/main/java/org/qortal/data/arbitrary/ArbitraryResourceInfo.java rename to src/main/java/org/qortal/data/arbitrary/ArbitraryResourceData.java index a09fc5ff..ffd30209 100644 --- a/src/main/java/org/qortal/data/arbitrary/ArbitraryResourceInfo.java +++ b/src/main/java/org/qortal/data/arbitrary/ArbitraryResourceData.java @@ -6,8 +6,10 @@ import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import java.util.Objects; +import static org.qortal.data.arbitrary.ArbitraryResourceStatus.Status; + @XmlAccessorType(XmlAccessType.FIELD) -public class ArbitraryResourceInfo { +public class ArbitraryResourceData { public String name; public Service service; @@ -15,11 +17,21 @@ public class ArbitraryResourceInfo { public ArbitraryResourceStatus status; public ArbitraryResourceMetadata metadata; - public Long size; + public Integer size; public Long created; public Long updated; - public ArbitraryResourceInfo() { + public ArbitraryResourceData() { + } + + public ArbitraryResourceData(Service service, String name, String identifier) { + if (identifier == null) { + identifier = "default"; + } + + this.service = service; + this.name = name; + this.identifier = identifier; } @Override @@ -27,15 +39,24 @@ public class ArbitraryResourceInfo { return String.format("%s %s %s", name, service, identifier); } + public void setStatus(Status status) { + if (status == null) { + this.status = null; + } + else { + this.status = new ArbitraryResourceStatus(status); + } + } + @Override public boolean equals(Object o) { if (o == this) return true; - if (!(o instanceof ArbitraryResourceInfo)) + if (!(o instanceof ArbitraryResourceData)) return false; - ArbitraryResourceInfo other = (ArbitraryResourceInfo) o; + ArbitraryResourceData other = (ArbitraryResourceData) o; return Objects.equals(this.name, other.name) && Objects.equals(this.service, other.service) && diff --git a/src/main/java/org/qortal/data/arbitrary/ArbitraryResourceMetadata.java b/src/main/java/org/qortal/data/arbitrary/ArbitraryResourceMetadata.java index a6aa6e26..c6f0ae62 100644 --- a/src/main/java/org/qortal/data/arbitrary/ArbitraryResourceMetadata.java +++ b/src/main/java/org/qortal/data/arbitrary/ArbitraryResourceMetadata.java @@ -18,6 +18,9 @@ public class ArbitraryResourceMetadata { private List files; private String mimeType; + // Only included when updating database + private ArbitraryResourceData arbitraryResourceData; + public ArbitraryResourceMetadata() { } @@ -60,4 +63,52 @@ public class ArbitraryResourceMetadata { public List getFiles() { return this.files; } + + public void setTitle(String title) { + this.title = title; + } + + public String getTitle() { + return this.title; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getDescription() { + return this.description; + } + + public void setTags(List tags) { + this.tags = tags; + } + + public List getTags() { + return this.tags; + } + + public void setCategory(Category category) { + this.category = category; + + // Also set categoryName + if (category != null) { + this.categoryName = category.getName(); + } + } + + public Category getCategory() { + return this.category; + } + + public boolean hasMetadata() { + return title != null || description != null || tags != null || category != null || files != null || mimeType != null; + } + + public void setArbitraryResourceData(ArbitraryResourceData arbitraryResourceData) { + this.arbitraryResourceData = arbitraryResourceData; + } + public ArbitraryResourceData getArbitraryResourceData() { + return this.arbitraryResourceData; + } } diff --git a/src/main/java/org/qortal/data/arbitrary/ArbitraryResourceNameInfo.java b/src/main/java/org/qortal/data/arbitrary/ArbitraryResourceNameInfo.java index b9be8034..0f91c2c2 100644 --- a/src/main/java/org/qortal/data/arbitrary/ArbitraryResourceNameInfo.java +++ b/src/main/java/org/qortal/data/arbitrary/ArbitraryResourceNameInfo.java @@ -9,7 +9,7 @@ import java.util.List; public class ArbitraryResourceNameInfo { public String name; - public List resources = new ArrayList<>(); + public List resources = new ArrayList<>(); public ArbitraryResourceNameInfo() { } diff --git a/src/main/java/org/qortal/data/arbitrary/ArbitraryResourceStatus.java b/src/main/java/org/qortal/data/arbitrary/ArbitraryResourceStatus.java index 54dd2af6..6513776a 100644 --- a/src/main/java/org/qortal/data/arbitrary/ArbitraryResourceStatus.java +++ b/src/main/java/org/qortal/data/arbitrary/ArbitraryResourceStatus.java @@ -2,29 +2,46 @@ package org.qortal.data.arbitrary; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; +import java.util.Map; + +import static java.util.Arrays.stream; +import static java.util.stream.Collectors.toMap; @XmlAccessorType(XmlAccessType.FIELD) public class ArbitraryResourceStatus { public enum Status { - PUBLISHED("Published", "Published but not yet downloaded"), - NOT_PUBLISHED("Not published", "Resource does not exist"), - DOWNLOADING("Downloading", "Locating and downloading files..."), - DOWNLOADED("Downloaded", "Files downloaded"), - BUILDING("Building", "Building..."), - READY("Ready", "Ready"), - MISSING_DATA("Missing data", "Unable to locate all files. Please try again later"), - BUILD_FAILED("Build failed", "Build failed. Please try again later"), - UNSUPPORTED("Unsupported", "Unsupported request"), - BLOCKED("Blocked", "Name is blocked so content cannot be served"); + // Note: integer values must not be updated, as they are stored in the db + PUBLISHED(1, "Published", "Published but not yet downloaded"), + NOT_PUBLISHED(2, "Not published", "Resource does not exist"), + DOWNLOADING(3, "Downloading", "Locating and downloading files..."), + DOWNLOADED(4, "Downloaded", "Files downloaded"), + BUILDING(5, "Building", "Building..."), + READY(6, "Ready", "Ready"), + MISSING_DATA(7, "Missing data", "Unable to locate all files. Please try again later"), + BUILD_FAILED(8, "Build failed", "Build failed. Please try again later"), + UNSUPPORTED(9, "Unsupported", "Unsupported request"), + BLOCKED(10, "Blocked", "Name is blocked so content cannot be served"); + public int value; private String title; private String description; - Status(String title, String description) { + private static final Map map = stream(Status.values()) + .collect(toMap(status -> status.value, status -> status)); + + Status(int value, String title, String description) { + this.value = value; this.title = title; this.description = description; } + + public static Status valueOf(Integer value) { + if (value == null) { + return null; + } + return map.get(value); + } } private Status status; diff --git a/src/main/java/org/qortal/data/asset/AssetData.java b/src/main/java/org/qortal/data/asset/AssetData.java index 2477f751..8e944720 100644 --- a/src/main/java/org/qortal/data/asset/AssetData.java +++ b/src/main/java/org/qortal/data/asset/AssetData.java @@ -1,11 +1,11 @@ package org.qortal.data.asset; +import io.swagger.v3.oas.annotations.media.Schema; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAX-RS @XmlAccessorType(XmlAccessType.FIELD) public class AssetData { diff --git a/src/main/java/org/qortal/data/asset/OrderData.java b/src/main/java/org/qortal/data/asset/OrderData.java index eb4e5c63..76fca4c6 100644 --- a/src/main/java/org/qortal/data/asset/OrderData.java +++ b/src/main/java/org/qortal/data/asset/OrderData.java @@ -1,15 +1,14 @@ package org.qortal.data.asset; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.media.Schema.AccessMode; +import org.qortal.crypto.Crypto; + import javax.xml.bind.Marshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import org.qortal.crypto.Crypto; - -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.media.Schema.AccessMode; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) public class OrderData implements Comparable { diff --git a/src/main/java/org/qortal/data/asset/RecentTradeData.java b/src/main/java/org/qortal/data/asset/RecentTradeData.java index 56a83180..37bd63ef 100644 --- a/src/main/java/org/qortal/data/asset/RecentTradeData.java +++ b/src/main/java/org/qortal/data/asset/RecentTradeData.java @@ -1,11 +1,10 @@ package org.qortal.data.asset; -import java.math.BigDecimal; +import io.swagger.v3.oas.annotations.media.Schema; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; - -import io.swagger.v3.oas.annotations.media.Schema; +import java.math.BigDecimal; // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) diff --git a/src/main/java/org/qortal/data/asset/TradeData.java b/src/main/java/org/qortal/data/asset/TradeData.java index af827f38..74ad2a62 100644 --- a/src/main/java/org/qortal/data/asset/TradeData.java +++ b/src/main/java/org/qortal/data/asset/TradeData.java @@ -1,5 +1,8 @@ package org.qortal.data.asset; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.media.Schema.AccessMode; + import javax.xml.bind.Marshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; @@ -7,9 +10,6 @@ import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlTransient; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.media.Schema.AccessMode; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) public class TradeData { diff --git a/src/main/java/org/qortal/data/block/BlockArchiveData.java b/src/main/java/org/qortal/data/block/BlockArchiveData.java index c9db4032..27898a52 100644 --- a/src/main/java/org/qortal/data/block/BlockArchiveData.java +++ b/src/main/java/org/qortal/data/block/BlockArchiveData.java @@ -1,7 +1,5 @@ package org.qortal.data.block; -import org.qortal.block.Block; - public class BlockArchiveData { // Properties diff --git a/src/main/java/org/qortal/data/block/BlockData.java b/src/main/java/org/qortal/data/block/BlockData.java index 763bca45..ffae8751 100644 --- a/src/main/java/org/qortal/data/block/BlockData.java +++ b/src/main/java/org/qortal/data/block/BlockData.java @@ -1,18 +1,16 @@ package org.qortal.data.block; import com.google.common.primitives.Bytes; - -import java.io.Serializable; +import org.qortal.block.BlockChain; +import org.qortal.crypto.Crypto; +import org.qortal.settings.Settings; +import org.qortal.utils.NTP; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; - -import org.qortal.block.BlockChain; -import org.qortal.settings.Settings; -import org.qortal.crypto.Crypto; -import org.qortal.utils.NTP; +import java.io.Serializable; // All properties to be converted to JSON via JAX-RS @XmlAccessorType(XmlAccessType.FIELD) diff --git a/src/main/java/org/qortal/data/chat/ActiveChats.java b/src/main/java/org/qortal/data/chat/ActiveChats.java index 248af82e..f24c2666 100644 --- a/src/main/java/org/qortal/data/chat/ActiveChats.java +++ b/src/main/java/org/qortal/data/chat/ActiveChats.java @@ -3,10 +3,9 @@ package org.qortal.data.chat; import org.bouncycastle.util.encoders.Base64; import org.qortal.utils.Base58; -import java.util.List; - import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; +import java.util.List; import static org.qortal.data.chat.ChatMessage.Encoding; diff --git a/src/main/java/org/qortal/data/crosschain/CrossChainTradeData.java b/src/main/java/org/qortal/data/crosschain/CrossChainTradeData.java index edc115b6..d3656107 100644 --- a/src/main/java/org/qortal/data/crosschain/CrossChainTradeData.java +++ b/src/main/java/org/qortal/data/crosschain/CrossChainTradeData.java @@ -1,13 +1,12 @@ package org.qortal.data.crosschain; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.crosschain.AcctMode; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import org.qortal.crosschain.AcctMode; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) public class CrossChainTradeData { diff --git a/src/main/java/org/qortal/data/crosschain/TradeBotData.java b/src/main/java/org/qortal/data/crosschain/TradeBotData.java index 19481466..15b7c448 100644 --- a/src/main/java/org/qortal/data/crosschain/TradeBotData.java +++ b/src/main/java/org/qortal/data/crosschain/TradeBotData.java @@ -1,15 +1,14 @@ package org.qortal.data.crosschain; +import io.swagger.v3.oas.annotations.media.Schema; +import org.json.JSONObject; +import org.qortal.utils.Base58; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import io.swagger.v3.oas.annotations.media.Schema; -import org.json.JSONObject; - -import org.qortal.utils.Base58; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) public class TradeBotData { diff --git a/src/main/java/org/qortal/data/group/GroupAdminData.java b/src/main/java/org/qortal/data/group/GroupAdminData.java index b9fea54b..6a7f8776 100644 --- a/src/main/java/org/qortal/data/group/GroupAdminData.java +++ b/src/main/java/org/qortal/data/group/GroupAdminData.java @@ -1,11 +1,11 @@ package org.qortal.data.group; +import io.swagger.v3.oas.annotations.media.Schema; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAX-RS @XmlAccessorType(XmlAccessType.FIELD) public class GroupAdminData { diff --git a/src/main/java/org/qortal/data/group/GroupBanData.java b/src/main/java/org/qortal/data/group/GroupBanData.java index 5e2abe52..e7f456dc 100644 --- a/src/main/java/org/qortal/data/group/GroupBanData.java +++ b/src/main/java/org/qortal/data/group/GroupBanData.java @@ -1,11 +1,11 @@ package org.qortal.data.group; +import io.swagger.v3.oas.annotations.media.Schema; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAX-RS @XmlAccessorType(XmlAccessType.FIELD) public class GroupBanData { diff --git a/src/main/java/org/qortal/data/group/GroupData.java b/src/main/java/org/qortal/data/group/GroupData.java index ae9a0388..3ecca0ef 100644 --- a/src/main/java/org/qortal/data/group/GroupData.java +++ b/src/main/java/org/qortal/data/group/GroupData.java @@ -1,13 +1,12 @@ package org.qortal.data.group; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.group.Group.ApprovalThreshold; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; -import org.qortal.group.Group.ApprovalThreshold; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAX-RS @XmlAccessorType(XmlAccessType.FIELD) public class GroupData { diff --git a/src/main/java/org/qortal/data/group/GroupInviteData.java b/src/main/java/org/qortal/data/group/GroupInviteData.java index 50c0a8c2..2b01a8dd 100644 --- a/src/main/java/org/qortal/data/group/GroupInviteData.java +++ b/src/main/java/org/qortal/data/group/GroupInviteData.java @@ -1,11 +1,11 @@ package org.qortal.data.group; +import io.swagger.v3.oas.annotations.media.Schema; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAX-RS @XmlAccessorType(XmlAccessType.FIELD) public class GroupInviteData { diff --git a/src/main/java/org/qortal/data/group/GroupJoinRequestData.java b/src/main/java/org/qortal/data/group/GroupJoinRequestData.java index b084aa66..5338ba3d 100644 --- a/src/main/java/org/qortal/data/group/GroupJoinRequestData.java +++ b/src/main/java/org/qortal/data/group/GroupJoinRequestData.java @@ -1,11 +1,11 @@ package org.qortal.data.group; +import io.swagger.v3.oas.annotations.media.Schema; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAX-RS @XmlAccessorType(XmlAccessType.FIELD) public class GroupJoinRequestData { diff --git a/src/main/java/org/qortal/data/group/GroupMemberData.java b/src/main/java/org/qortal/data/group/GroupMemberData.java index 87b1ae41..b82fe327 100644 --- a/src/main/java/org/qortal/data/group/GroupMemberData.java +++ b/src/main/java/org/qortal/data/group/GroupMemberData.java @@ -1,11 +1,11 @@ package org.qortal.data.group; +import io.swagger.v3.oas.annotations.media.Schema; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAX-RS @XmlAccessorType(XmlAccessType.FIELD) public class GroupMemberData { diff --git a/src/main/java/org/qortal/data/naming/NameData.java b/src/main/java/org/qortal/data/naming/NameData.java index 83681712..16e490a2 100644 --- a/src/main/java/org/qortal/data/naming/NameData.java +++ b/src/main/java/org/qortal/data/naming/NameData.java @@ -1,12 +1,12 @@ package org.qortal.data.naming; +import io.swagger.v3.oas.annotations.media.Schema; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAX-RS @XmlAccessorType(XmlAccessType.FIELD) public class NameData { diff --git a/src/main/java/org/qortal/data/network/OnlineAccountData.java b/src/main/java/org/qortal/data/network/OnlineAccountData.java index a1e1b30f..8b763bd9 100644 --- a/src/main/java/org/qortal/data/network/OnlineAccountData.java +++ b/src/main/java/org/qortal/data/network/OnlineAccountData.java @@ -1,14 +1,13 @@ package org.qortal.data.network; -import java.util.Arrays; -import java.util.Objects; +import org.qortal.account.PublicKeyAccount; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlTransient; - -import org.qortal.account.PublicKeyAccount; +import java.util.Arrays; +import java.util.Objects; // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) diff --git a/src/main/java/org/qortal/data/network/PeerData.java b/src/main/java/org/qortal/data/network/PeerData.java index 471685dd..0b776d6c 100644 --- a/src/main/java/org/qortal/data/network/PeerData.java +++ b/src/main/java/org/qortal/data/network/PeerData.java @@ -1,14 +1,13 @@ package org.qortal.data.network; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.network.PeerAddress; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlTransient; -import org.qortal.network.PeerAddress; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) public class PeerData { diff --git a/src/main/java/org/qortal/data/transaction/ATTransactionData.java b/src/main/java/org/qortal/data/transaction/ATTransactionData.java index 5d5d640b..9cd50055 100644 --- a/src/main/java/org/qortal/data/transaction/ATTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/ATTransactionData.java @@ -1,16 +1,15 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.account.NullAccount; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import org.qortal.account.NullAccount; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema(allOf = { TransactionData.class }) diff --git a/src/main/java/org/qortal/data/transaction/AccountFlagsTransactionData.java b/src/main/java/org/qortal/data/transaction/AccountFlagsTransactionData.java index f5f29e1b..75c8d29e 100644 --- a/src/main/java/org/qortal/data/transaction/AccountFlagsTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/AccountFlagsTransactionData.java @@ -1,16 +1,15 @@ package org.qortal.data.transaction; -import javax.xml.bind.Unmarshaller; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; - +import io.swagger.v3.oas.annotations.media.Schema; import org.eclipse.persistence.oxm.annotations.XmlDiscriminatorValue; import org.qortal.account.NullAccount; import org.qortal.block.GenesisBlock; import org.qortal.transaction.Transaction.TransactionType; -import io.swagger.v3.oas.annotations.media.Schema; +import javax.xml.bind.Unmarshaller; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) diff --git a/src/main/java/org/qortal/data/transaction/AccountLevelTransactionData.java b/src/main/java/org/qortal/data/transaction/AccountLevelTransactionData.java index 4b55e375..86de8677 100644 --- a/src/main/java/org/qortal/data/transaction/AccountLevelTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/AccountLevelTransactionData.java @@ -1,16 +1,15 @@ package org.qortal.data.transaction; -import javax.xml.bind.Unmarshaller; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; - +import io.swagger.v3.oas.annotations.media.Schema; import org.eclipse.persistence.oxm.annotations.XmlDiscriminatorValue; import org.qortal.account.NullAccount; import org.qortal.block.GenesisBlock; import org.qortal.transaction.Transaction.TransactionType; -import io.swagger.v3.oas.annotations.media.Schema; +import javax.xml.bind.Unmarshaller; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) diff --git a/src/main/java/org/qortal/data/transaction/AddGroupAdminTransactionData.java b/src/main/java/org/qortal/data/transaction/AddGroupAdminTransactionData.java index 3c2930b6..e77a6f6a 100644 --- a/src/main/java/org/qortal/data/transaction/AddGroupAdminTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/AddGroupAdminTransactionData.java @@ -1,13 +1,12 @@ package org.qortal.data.transaction; -import javax.xml.bind.Unmarshaller; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; - +import io.swagger.v3.oas.annotations.media.Schema; import org.eclipse.persistence.oxm.annotations.XmlDiscriminatorValue; import org.qortal.transaction.Transaction.TransactionType; -import io.swagger.v3.oas.annotations.media.Schema; +import javax.xml.bind.Unmarshaller; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) diff --git a/src/main/java/org/qortal/data/transaction/ArbitraryTransactionData.java b/src/main/java/org/qortal/data/transaction/ArbitraryTransactionData.java index 3ab06ecc..6e55e280 100644 --- a/src/main/java/org/qortal/data/transaction/ArbitraryTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/ArbitraryTransactionData.java @@ -1,18 +1,16 @@ package org.qortal.data.transaction; -import java.util.List; -import java.util.Map; - -import javax.xml.bind.Unmarshaller; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; - +import io.swagger.v3.oas.annotations.media.Schema; import org.eclipse.persistence.oxm.annotations.XmlDiscriminatorValue; import org.qortal.arbitrary.misc.Service; import org.qortal.data.PaymentData; import org.qortal.transaction.Transaction.TransactionType; -import io.swagger.v3.oas.annotations.media.Schema; +import javax.xml.bind.Unmarshaller; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import java.util.List; +import java.util.Map; import static java.util.Arrays.stream; import static java.util.stream.Collectors.toMap; diff --git a/src/main/java/org/qortal/data/transaction/BuyNameTransactionData.java b/src/main/java/org/qortal/data/transaction/BuyNameTransactionData.java index 014e1f54..fffdc293 100644 --- a/src/main/java/org/qortal/data/transaction/BuyNameTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/BuyNameTransactionData.java @@ -1,15 +1,14 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema(allOf = { TransactionData.class }) diff --git a/src/main/java/org/qortal/data/transaction/CancelAssetOrderTransactionData.java b/src/main/java/org/qortal/data/transaction/CancelAssetOrderTransactionData.java index 5582d5a5..9688162f 100644 --- a/src/main/java/org/qortal/data/transaction/CancelAssetOrderTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/CancelAssetOrderTransactionData.java @@ -1,13 +1,12 @@ package org.qortal.data.transaction; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; - +import io.swagger.v3.oas.annotations.media.Schema; import org.qortal.transaction.Transaction; import org.qortal.transaction.Transaction.TransactionType; -import io.swagger.v3.oas.annotations.media.Schema; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) diff --git a/src/main/java/org/qortal/data/transaction/CancelGroupBanTransactionData.java b/src/main/java/org/qortal/data/transaction/CancelGroupBanTransactionData.java index 20af8321..d4cbeee4 100644 --- a/src/main/java/org/qortal/data/transaction/CancelGroupBanTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/CancelGroupBanTransactionData.java @@ -1,15 +1,14 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema(allOf = { TransactionData.class }) diff --git a/src/main/java/org/qortal/data/transaction/CancelGroupInviteTransactionData.java b/src/main/java/org/qortal/data/transaction/CancelGroupInviteTransactionData.java index 3b3405c5..f30130ea 100644 --- a/src/main/java/org/qortal/data/transaction/CancelGroupInviteTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/CancelGroupInviteTransactionData.java @@ -1,14 +1,13 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema(allOf = { TransactionData.class }) diff --git a/src/main/java/org/qortal/data/transaction/CancelSellNameTransactionData.java b/src/main/java/org/qortal/data/transaction/CancelSellNameTransactionData.java index 14677daf..602db975 100644 --- a/src/main/java/org/qortal/data/transaction/CancelSellNameTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/CancelSellNameTransactionData.java @@ -1,14 +1,13 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema(allOf = { TransactionData.class }) diff --git a/src/main/java/org/qortal/data/transaction/ChatTransactionData.java b/src/main/java/org/qortal/data/transaction/ChatTransactionData.java index 5a6adf7f..aaa5e9b8 100644 --- a/src/main/java/org/qortal/data/transaction/ChatTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/ChatTransactionData.java @@ -1,14 +1,13 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.media.Schema.AccessMode; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.media.Schema.AccessMode; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema(allOf = { TransactionData.class }) diff --git a/src/main/java/org/qortal/data/transaction/CreateAssetOrderTransactionData.java b/src/main/java/org/qortal/data/transaction/CreateAssetOrderTransactionData.java index 6b048541..00379976 100644 --- a/src/main/java/org/qortal/data/transaction/CreateAssetOrderTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/CreateAssetOrderTransactionData.java @@ -1,16 +1,15 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.media.Schema.AccessMode; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Marshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.media.Schema.AccessMode; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema(allOf = { TransactionData.class }) diff --git a/src/main/java/org/qortal/data/transaction/CreateGroupTransactionData.java b/src/main/java/org/qortal/data/transaction/CreateGroupTransactionData.java index 2471bb2f..8f770668 100644 --- a/src/main/java/org/qortal/data/transaction/CreateGroupTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/CreateGroupTransactionData.java @@ -1,19 +1,18 @@ package org.qortal.data.transaction; -import javax.xml.bind.Unmarshaller; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlTransient; - +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.media.Schema.AccessMode; import org.eclipse.persistence.oxm.annotations.XmlDiscriminatorValue; import org.qortal.block.GenesisBlock; import org.qortal.group.Group.ApprovalThreshold; import org.qortal.transaction.Transaction.TransactionType; import org.qortal.utils.Unicode; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.media.Schema.AccessMode; +import javax.xml.bind.Unmarshaller; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlTransient; // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) diff --git a/src/main/java/org/qortal/data/transaction/CreatePollTransactionData.java b/src/main/java/org/qortal/data/transaction/CreatePollTransactionData.java index 8b904aa0..1a04d0b8 100644 --- a/src/main/java/org/qortal/data/transaction/CreatePollTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/CreatePollTransactionData.java @@ -1,17 +1,15 @@ package org.qortal.data.transaction; -import java.util.List; - -import javax.xml.bind.Unmarshaller; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; - +import io.swagger.v3.oas.annotations.media.Schema; import org.eclipse.persistence.oxm.annotations.XmlDiscriminatorValue; import org.qortal.data.voting.PollOptionData; import org.qortal.transaction.Transaction; import org.qortal.transaction.Transaction.TransactionType; -import io.swagger.v3.oas.annotations.media.Schema; +import javax.xml.bind.Unmarshaller; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import java.util.List; // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) diff --git a/src/main/java/org/qortal/data/transaction/DeployAtTransactionData.java b/src/main/java/org/qortal/data/transaction/DeployAtTransactionData.java index fed69cd5..72c1fee0 100644 --- a/src/main/java/org/qortal/data/transaction/DeployAtTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/DeployAtTransactionData.java @@ -1,14 +1,13 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema(allOf = { TransactionData.class }) diff --git a/src/main/java/org/qortal/data/transaction/GenesisTransactionData.java b/src/main/java/org/qortal/data/transaction/GenesisTransactionData.java index e425f136..7d3b4a52 100644 --- a/src/main/java/org/qortal/data/transaction/GenesisTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/GenesisTransactionData.java @@ -1,14 +1,13 @@ package org.qortal.data.transaction; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; - +import io.swagger.v3.oas.annotations.media.Schema; import org.eclipse.persistence.oxm.annotations.XmlDiscriminatorValue; import org.qortal.asset.Asset; import org.qortal.transaction.Transaction.TransactionType; -import io.swagger.v3.oas.annotations.media.Schema; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) diff --git a/src/main/java/org/qortal/data/transaction/GroupApprovalTransactionData.java b/src/main/java/org/qortal/data/transaction/GroupApprovalTransactionData.java index fbf764de..a44cdbd8 100644 --- a/src/main/java/org/qortal/data/transaction/GroupApprovalTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/GroupApprovalTransactionData.java @@ -1,14 +1,13 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema( diff --git a/src/main/java/org/qortal/data/transaction/GroupBanTransactionData.java b/src/main/java/org/qortal/data/transaction/GroupBanTransactionData.java index 18b89f73..d4e5e148 100644 --- a/src/main/java/org/qortal/data/transaction/GroupBanTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/GroupBanTransactionData.java @@ -1,14 +1,13 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema( diff --git a/src/main/java/org/qortal/data/transaction/GroupInviteTransactionData.java b/src/main/java/org/qortal/data/transaction/GroupInviteTransactionData.java index bc1b515e..0428e2b0 100644 --- a/src/main/java/org/qortal/data/transaction/GroupInviteTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/GroupInviteTransactionData.java @@ -1,15 +1,14 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import org.eclipse.persistence.oxm.annotations.XmlDiscriminatorValue; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; -import org.eclipse.persistence.oxm.annotations.XmlDiscriminatorValue; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema(allOf = { TransactionData.class }) diff --git a/src/main/java/org/qortal/data/transaction/GroupKickTransactionData.java b/src/main/java/org/qortal/data/transaction/GroupKickTransactionData.java index aba68a15..36a4ed66 100644 --- a/src/main/java/org/qortal/data/transaction/GroupKickTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/GroupKickTransactionData.java @@ -1,14 +1,13 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema( diff --git a/src/main/java/org/qortal/data/transaction/IssueAssetTransactionData.java b/src/main/java/org/qortal/data/transaction/IssueAssetTransactionData.java index b24a9634..c4101e48 100644 --- a/src/main/java/org/qortal/data/transaction/IssueAssetTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/IssueAssetTransactionData.java @@ -1,19 +1,18 @@ package org.qortal.data.transaction; -import javax.xml.bind.Unmarshaller; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlTransient; -import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; - +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.media.Schema.AccessMode; import org.eclipse.persistence.oxm.annotations.XmlDiscriminatorValue; import org.qortal.account.NullAccount; import org.qortal.block.GenesisBlock; import org.qortal.transaction.Transaction.TransactionType; import org.qortal.utils.Unicode; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.media.Schema.AccessMode; +import javax.xml.bind.Unmarshaller; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlTransient; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) diff --git a/src/main/java/org/qortal/data/transaction/JoinGroupTransactionData.java b/src/main/java/org/qortal/data/transaction/JoinGroupTransactionData.java index b64324ca..103d8ec5 100644 --- a/src/main/java/org/qortal/data/transaction/JoinGroupTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/JoinGroupTransactionData.java @@ -1,15 +1,14 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import org.eclipse.persistence.oxm.annotations.XmlDiscriminatorValue; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; -import org.eclipse.persistence.oxm.annotations.XmlDiscriminatorValue; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema(allOf = { TransactionData.class }) diff --git a/src/main/java/org/qortal/data/transaction/LeaveGroupTransactionData.java b/src/main/java/org/qortal/data/transaction/LeaveGroupTransactionData.java index 46c6742d..5946a0ad 100644 --- a/src/main/java/org/qortal/data/transaction/LeaveGroupTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/LeaveGroupTransactionData.java @@ -1,14 +1,13 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema(allOf = { TransactionData.class }) diff --git a/src/main/java/org/qortal/data/transaction/MessageTransactionData.java b/src/main/java/org/qortal/data/transaction/MessageTransactionData.java index a61dbca6..446967d5 100644 --- a/src/main/java/org/qortal/data/transaction/MessageTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/MessageTransactionData.java @@ -1,15 +1,14 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.media.Schema.AccessMode; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.media.Schema.AccessMode; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema(allOf = { TransactionData.class }) diff --git a/src/main/java/org/qortal/data/transaction/MultiPaymentTransactionData.java b/src/main/java/org/qortal/data/transaction/MultiPaymentTransactionData.java index 027116f5..c7d31f27 100644 --- a/src/main/java/org/qortal/data/transaction/MultiPaymentTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/MultiPaymentTransactionData.java @@ -1,16 +1,14 @@ package org.qortal.data.transaction; -import java.util.List; - -import javax.xml.bind.Unmarshaller; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; - +import io.swagger.v3.oas.annotations.media.Schema; import org.qortal.data.PaymentData; import org.qortal.transaction.Transaction; import org.qortal.transaction.Transaction.TransactionType; -import io.swagger.v3.oas.annotations.media.Schema; +import javax.xml.bind.Unmarshaller; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import java.util.List; // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) diff --git a/src/main/java/org/qortal/data/transaction/PaymentTransactionData.java b/src/main/java/org/qortal/data/transaction/PaymentTransactionData.java index 94d8ab45..b760bf6c 100644 --- a/src/main/java/org/qortal/data/transaction/PaymentTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/PaymentTransactionData.java @@ -1,14 +1,13 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema( allOf = { TransactionData.class } ) diff --git a/src/main/java/org/qortal/data/transaction/PresenceTransactionData.java b/src/main/java/org/qortal/data/transaction/PresenceTransactionData.java index 001bd5b4..d3957a0d 100644 --- a/src/main/java/org/qortal/data/transaction/PresenceTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/PresenceTransactionData.java @@ -1,14 +1,13 @@ package org.qortal.data.transaction; -import javax.xml.bind.Unmarshaller; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; - +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.media.Schema.AccessMode; import org.qortal.transaction.PresenceTransaction.PresenceType; import org.qortal.transaction.Transaction.TransactionType; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.media.Schema.AccessMode; +import javax.xml.bind.Unmarshaller; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) diff --git a/src/main/java/org/qortal/data/transaction/PublicizeTransactionData.java b/src/main/java/org/qortal/data/transaction/PublicizeTransactionData.java index cdb9129d..73c49941 100644 --- a/src/main/java/org/qortal/data/transaction/PublicizeTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/PublicizeTransactionData.java @@ -1,14 +1,13 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.media.Schema.AccessMode; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.media.Schema.AccessMode; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema(allOf = { TransactionData.class }) diff --git a/src/main/java/org/qortal/data/transaction/RegisterNameTransactionData.java b/src/main/java/org/qortal/data/transaction/RegisterNameTransactionData.java index c2b06fd2..39e84e3f 100644 --- a/src/main/java/org/qortal/data/transaction/RegisterNameTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/RegisterNameTransactionData.java @@ -1,15 +1,14 @@ package org.qortal.data.transaction; -import javax.xml.bind.Unmarshaller; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlTransient; - +import io.swagger.v3.oas.annotations.media.Schema; import org.eclipse.persistence.oxm.annotations.XmlDiscriminatorValue; import org.qortal.transaction.Transaction.TransactionType; import org.qortal.utils.Unicode; -import io.swagger.v3.oas.annotations.media.Schema; +import javax.xml.bind.Unmarshaller; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlTransient; // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) diff --git a/src/main/java/org/qortal/data/transaction/RemoveGroupAdminTransactionData.java b/src/main/java/org/qortal/data/transaction/RemoveGroupAdminTransactionData.java index 4501488d..b9c1470a 100644 --- a/src/main/java/org/qortal/data/transaction/RemoveGroupAdminTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/RemoveGroupAdminTransactionData.java @@ -1,14 +1,13 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema(allOf = { TransactionData.class }) diff --git a/src/main/java/org/qortal/data/transaction/RewardShareTransactionData.java b/src/main/java/org/qortal/data/transaction/RewardShareTransactionData.java index 5513d605..04d2b112 100644 --- a/src/main/java/org/qortal/data/transaction/RewardShareTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/RewardShareTransactionData.java @@ -1,16 +1,15 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import org.eclipse.persistence.oxm.annotations.XmlDiscriminatorValue; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import org.eclipse.persistence.oxm.annotations.XmlDiscriminatorValue; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema(allOf = {TransactionData.class}) diff --git a/src/main/java/org/qortal/data/transaction/SellNameTransactionData.java b/src/main/java/org/qortal/data/transaction/SellNameTransactionData.java index eb74ecde..d8501428 100644 --- a/src/main/java/org/qortal/data/transaction/SellNameTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/SellNameTransactionData.java @@ -1,14 +1,13 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema(allOf = { TransactionData.class }) diff --git a/src/main/java/org/qortal/data/transaction/SetGroupTransactionData.java b/src/main/java/org/qortal/data/transaction/SetGroupTransactionData.java index f971bb08..b3346756 100644 --- a/src/main/java/org/qortal/data/transaction/SetGroupTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/SetGroupTransactionData.java @@ -1,14 +1,13 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlTransient; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema( diff --git a/src/main/java/org/qortal/data/transaction/TransactionData.java b/src/main/java/org/qortal/data/transaction/TransactionData.java index 21628bb9..467eafa6 100644 --- a/src/main/java/org/qortal/data/transaction/TransactionData.java +++ b/src/main/java/org/qortal/data/transaction/TransactionData.java @@ -1,15 +1,7 @@ package org.qortal.data.transaction; -import java.math.BigInteger; -import java.util.Arrays; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlSeeAlso; -import javax.xml.bind.annotation.XmlTransient; -import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; - +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.media.Schema.AccessMode; import org.eclipse.persistence.oxm.annotations.XmlDiscriminatorNode; import org.qortal.crypto.Crypto; import org.qortal.data.voting.PollData; @@ -17,8 +9,10 @@ import org.qortal.data.voting.VoteOnPollData; import org.qortal.transaction.Transaction.ApprovalStatus; import org.qortal.transaction.Transaction.TransactionType; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.media.Schema.AccessMode; +import javax.xml.bind.annotation.*; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; +import java.math.BigInteger; +import java.util.Arrays; /* * If you encounter an error like: diff --git a/src/main/java/org/qortal/data/transaction/TransferAssetTransactionData.java b/src/main/java/org/qortal/data/transaction/TransferAssetTransactionData.java index e1036aeb..78a7f278 100644 --- a/src/main/java/org/qortal/data/transaction/TransferAssetTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/TransferAssetTransactionData.java @@ -1,15 +1,14 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.media.Schema.AccessMode; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.media.Schema.AccessMode; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema(allOf = { TransactionData.class }) diff --git a/src/main/java/org/qortal/data/transaction/TransferPrivsTransactionData.java b/src/main/java/org/qortal/data/transaction/TransferPrivsTransactionData.java index bd2ea5bb..238a1f23 100644 --- a/src/main/java/org/qortal/data/transaction/TransferPrivsTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/TransferPrivsTransactionData.java @@ -1,14 +1,13 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema(allOf = { TransactionData.class }) diff --git a/src/main/java/org/qortal/data/transaction/UpdateAssetTransactionData.java b/src/main/java/org/qortal/data/transaction/UpdateAssetTransactionData.java index 70c3a969..17ae55f2 100644 --- a/src/main/java/org/qortal/data/transaction/UpdateAssetTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/UpdateAssetTransactionData.java @@ -1,14 +1,13 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema(allOf = { TransactionData.class }) diff --git a/src/main/java/org/qortal/data/transaction/UpdateGroupTransactionData.java b/src/main/java/org/qortal/data/transaction/UpdateGroupTransactionData.java index 871a8339..a24f912d 100644 --- a/src/main/java/org/qortal/data/transaction/UpdateGroupTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/UpdateGroupTransactionData.java @@ -1,15 +1,14 @@ package org.qortal.data.transaction; -import javax.xml.bind.Unmarshaller; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlTransient; - +import io.swagger.v3.oas.annotations.media.Schema; import org.eclipse.persistence.oxm.annotations.XmlDiscriminatorValue; import org.qortal.group.Group.ApprovalThreshold; import org.qortal.transaction.Transaction.TransactionType; -import io.swagger.v3.oas.annotations.media.Schema; +import javax.xml.bind.Unmarshaller; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlTransient; // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) diff --git a/src/main/java/org/qortal/data/transaction/UpdateNameTransactionData.java b/src/main/java/org/qortal/data/transaction/UpdateNameTransactionData.java index 1fda16a5..2c959612 100644 --- a/src/main/java/org/qortal/data/transaction/UpdateNameTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/UpdateNameTransactionData.java @@ -1,15 +1,14 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import org.qortal.transaction.Transaction.TransactionType; +import org.qortal.utils.Unicode; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; -import org.qortal.transaction.Transaction.TransactionType; -import org.qortal.utils.Unicode; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema(allOf = { TransactionData.class }) diff --git a/src/main/java/org/qortal/data/transaction/VoteOnPollTransactionData.java b/src/main/java/org/qortal/data/transaction/VoteOnPollTransactionData.java index a23d5e2b..ab233d2e 100644 --- a/src/main/java/org/qortal/data/transaction/VoteOnPollTransactionData.java +++ b/src/main/java/org/qortal/data/transaction/VoteOnPollTransactionData.java @@ -1,15 +1,14 @@ package org.qortal.data.transaction; +import io.swagger.v3.oas.annotations.media.Schema; +import org.eclipse.persistence.oxm.annotations.XmlDiscriminatorValue; +import org.qortal.transaction.Transaction.TransactionType; + import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlTransient; -import org.eclipse.persistence.oxm.annotations.XmlDiscriminatorValue; -import org.qortal.transaction.Transaction.TransactionType; - -import io.swagger.v3.oas.annotations.media.Schema; - // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) @Schema(allOf = { TransactionData.class }) diff --git a/src/main/java/org/qortal/event/EventBus.java b/src/main/java/org/qortal/event/EventBus.java index 6114c2c6..5656708c 100644 --- a/src/main/java/org/qortal/event/EventBus.java +++ b/src/main/java/org/qortal/event/EventBus.java @@ -1,11 +1,11 @@ package org.qortal.event; -import java.util.ArrayList; -import java.util.List; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import java.util.ArrayList; +import java.util.List; + public enum EventBus { INSTANCE; diff --git a/src/main/java/org/qortal/globalization/BIP39WordList.java b/src/main/java/org/qortal/globalization/BIP39WordList.java index 3f1c7a11..8203c46d 100644 --- a/src/main/java/org/qortal/globalization/BIP39WordList.java +++ b/src/main/java/org/qortal/globalization/BIP39WordList.java @@ -1,5 +1,8 @@ package org.qortal.globalization; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; @@ -10,9 +13,6 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - /** Providing multi-language BIP39 word lists, downloaded from https://github.com/bitcoin/bips/tree/master/bip-0039 */ public enum BIP39WordList { INSTANCE; diff --git a/src/main/java/org/qortal/globalization/Translator.java b/src/main/java/org/qortal/globalization/Translator.java index 6481dde7..6f1ffa3f 100644 --- a/src/main/java/org/qortal/globalization/Translator.java +++ b/src/main/java/org/qortal/globalization/Translator.java @@ -1,17 +1,11 @@ package org.qortal.globalization; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; -import java.util.MissingFormatArgumentException; -import java.util.MissingResourceException; -import java.util.ResourceBundle; -import java.util.Set; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.qortal.settings.Settings; +import java.util.*; + public enum Translator { INSTANCE; diff --git a/src/main/java/org/qortal/group/Group.java b/src/main/java/org/qortal/group/Group.java index 465743a9..59e32545 100644 --- a/src/main/java/org/qortal/group/Group.java +++ b/src/main/java/org/qortal/group/Group.java @@ -1,37 +1,21 @@ package org.qortal.group; -import static java.util.Arrays.stream; -import static java.util.stream.Collectors.toMap; - -import java.util.Arrays; -import java.util.Map; - import org.qortal.account.Account; import org.qortal.account.PublicKeyAccount; import org.qortal.controller.Controller; import org.qortal.crypto.Crypto; -import org.qortal.data.group.GroupAdminData; -import org.qortal.data.group.GroupBanData; -import org.qortal.data.group.GroupData; -import org.qortal.data.group.GroupInviteData; -import org.qortal.data.group.GroupJoinRequestData; -import org.qortal.data.group.GroupMemberData; -import org.qortal.data.transaction.AddGroupAdminTransactionData; -import org.qortal.data.transaction.CancelGroupBanTransactionData; -import org.qortal.data.transaction.CancelGroupInviteTransactionData; -import org.qortal.data.transaction.CreateGroupTransactionData; -import org.qortal.data.transaction.GroupBanTransactionData; -import org.qortal.data.transaction.GroupInviteTransactionData; -import org.qortal.data.transaction.GroupKickTransactionData; -import org.qortal.data.transaction.JoinGroupTransactionData; -import org.qortal.data.transaction.LeaveGroupTransactionData; -import org.qortal.data.transaction.RemoveGroupAdminTransactionData; -import org.qortal.data.transaction.TransactionData; -import org.qortal.data.transaction.UpdateGroupTransactionData; +import org.qortal.data.group.*; +import org.qortal.data.transaction.*; import org.qortal.repository.DataException; import org.qortal.repository.GroupRepository; import org.qortal.repository.Repository; +import java.util.Arrays; +import java.util.Map; + +import static java.util.Arrays.stream; +import static java.util.stream.Collectors.toMap; + public class Group { /** Group-admin quora threshold for approving transactions */ diff --git a/src/main/java/org/qortal/gui/Gui.java b/src/main/java/org/qortal/gui/Gui.java index 4944db52..5d7d4533 100644 --- a/src/main/java/org/qortal/gui/Gui.java +++ b/src/main/java/org/qortal/gui/Gui.java @@ -1,19 +1,16 @@ package org.qortal.gui; -import java.awt.GraphicsEnvironment; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import javax.imageio.ImageIO; +import javax.swing.*; +import java.awt.*; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.InputStream; import java.util.ServiceConfigurationError; -import javax.imageio.ImageIO; -import javax.swing.JOptionPane; -import javax.swing.UIManager; -import javax.swing.UnsupportedLookAndFeelException; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - public class Gui { private static final Logger LOGGER = LogManager.getLogger(Gui.class); diff --git a/src/main/java/org/qortal/gui/SplashFrame.java b/src/main/java/org/qortal/gui/SplashFrame.java index c4ea51d0..de2e2d34 100644 --- a/src/main/java/org/qortal/gui/SplashFrame.java +++ b/src/main/java/org/qortal/gui/SplashFrame.java @@ -1,17 +1,16 @@ package org.qortal.gui; -import java.awt.*; -import java.util.ArrayList; -import java.util.List; -import java.awt.image.BufferedImage; - -import javax.swing.*; -import javax.swing.border.EmptyBorder; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.qortal.controller.Controller; +import javax.swing.*; +import javax.swing.border.EmptyBorder; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.util.ArrayList; +import java.util.List; + public class SplashFrame { protected static final Logger LOGGER = LogManager.getLogger(SplashFrame.class); diff --git a/src/main/java/org/qortal/gui/SysTray.java b/src/main/java/org/qortal/gui/SysTray.java index 4d02658d..abd433f3 100644 --- a/src/main/java/org/qortal/gui/SysTray.java +++ b/src/main/java/org/qortal/gui/SysTray.java @@ -1,9 +1,17 @@ package org.qortal.gui; -import java.awt.AWTError; -import java.awt.AWTException; -import java.awt.SystemTray; -import java.awt.TrayIcon; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.qortal.controller.Controller; +import org.qortal.globalization.Translator; +import org.qortal.settings.Settings; +import org.qortal.utils.RandomizeList; +import org.qortal.utils.URLViewer; + +import javax.swing.*; +import javax.swing.event.PopupMenuEvent; +import javax.swing.event.PopupMenuListener; +import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowEvent; @@ -21,22 +29,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import javax.swing.JDialog; -import javax.swing.JMenuItem; -import javax.swing.JOptionPane; -import javax.swing.JPopupMenu; -import javax.swing.SwingWorker; -import javax.swing.event.PopupMenuEvent; -import javax.swing.event.PopupMenuListener; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.qortal.controller.Controller; -import org.qortal.globalization.Translator; -import org.qortal.settings.Settings; -import org.qortal.utils.RandomizeList; -import org.qortal.utils.URLViewer; - public class SysTray { protected static final Logger LOGGER = LogManager.getLogger(SysTray.class); diff --git a/src/main/java/org/qortal/naming/Name.java b/src/main/java/org/qortal/naming/Name.java index 1751cca8..704200dc 100644 --- a/src/main/java/org/qortal/naming/Name.java +++ b/src/main/java/org/qortal/naming/Name.java @@ -5,12 +5,7 @@ import org.qortal.account.PublicKeyAccount; import org.qortal.asset.Asset; import org.qortal.crypto.Crypto; import org.qortal.data.naming.NameData; -import org.qortal.data.transaction.BuyNameTransactionData; -import org.qortal.data.transaction.CancelSellNameTransactionData; -import org.qortal.data.transaction.RegisterNameTransactionData; -import org.qortal.data.transaction.SellNameTransactionData; -import org.qortal.data.transaction.TransactionData; -import org.qortal.data.transaction.UpdateNameTransactionData; +import org.qortal.data.transaction.*; import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.transaction.Transaction.TransactionType; diff --git a/src/main/java/org/qortal/network/Handshake.java b/src/main/java/org/qortal/network/Handshake.java index 341f4e21..221e5e74 100644 --- a/src/main/java/org/qortal/network/Handshake.java +++ b/src/main/java/org/qortal/network/Handshake.java @@ -1,25 +1,20 @@ package org.qortal.network; -import java.util.Arrays; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.regex.Matcher; - +import com.google.common.primitives.Bytes; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.qortal.controller.Controller; import org.qortal.crypto.Crypto; import org.qortal.crypto.MemoryPoW; -import org.qortal.network.message.ChallengeMessage; -import org.qortal.network.message.HelloMessage; -import org.qortal.network.message.Message; -import org.qortal.network.message.MessageType; +import org.qortal.network.message.*; import org.qortal.settings.Settings; -import org.qortal.network.message.ResponseMessage; import org.qortal.utils.DaemonThreadFactory; import org.qortal.utils.NTP; -import com.google.common.primitives.Bytes; +import java.util.Arrays; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.regex.Matcher; public enum Handshake { STARTED(null) { diff --git a/src/main/java/org/qortal/network/Peer.java b/src/main/java/org/qortal/network/Peer.java index 4c05d5b9..821f368c 100644 --- a/src/main/java/org/qortal/network/Peer.java +++ b/src/main/java/org/qortal/network/Peer.java @@ -27,7 +27,6 @@ import java.nio.channels.SocketChannel; import java.security.SecureRandom; import java.util.*; import java.util.concurrent.*; -import java.util.concurrent.atomic.LongAccumulator; import java.util.concurrent.atomic.LongAdder; import java.util.regex.Matcher; import java.util.regex.Pattern; diff --git a/src/main/java/org/qortal/network/PeerAddress.java b/src/main/java/org/qortal/network/PeerAddress.java index 332ff484..66426093 100644 --- a/src/main/java/org/qortal/network/PeerAddress.java +++ b/src/main/java/org/qortal/network/PeerAddress.java @@ -1,18 +1,12 @@ package org.qortal.network; -import java.net.Inet6Address; -import java.net.InetAddress; -import java.net.InetSocketAddress; -import java.net.Socket; -import java.net.UnknownHostException; +import com.google.common.net.HostAndPort; +import com.google.common.net.InetAddresses; +import org.qortal.settings.Settings; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; - -import org.qortal.settings.Settings; - -import com.google.common.net.HostAndPort; -import com.google.common.net.InetAddresses; +import java.net.*; /** * Convenience class for encapsulating/parsing/rendering/converting peer addresses diff --git a/src/main/java/org/qortal/network/message/ArbitraryDataMessage.java b/src/main/java/org/qortal/network/message/ArbitraryDataMessage.java index 142e35cc..8a5eb636 100644 --- a/src/main/java/org/qortal/network/message/ArbitraryDataMessage.java +++ b/src/main/java/org/qortal/network/message/ArbitraryDataMessage.java @@ -1,14 +1,13 @@ package org.qortal.network.message; +import com.google.common.primitives.Ints; +import org.qortal.transform.Transformer; + import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.BufferUnderflowException; import java.nio.ByteBuffer; -import org.qortal.transform.Transformer; - -import com.google.common.primitives.Ints; - public class ArbitraryDataMessage extends Message { private byte[] signature; diff --git a/src/main/java/org/qortal/network/message/BlockMessage.java b/src/main/java/org/qortal/network/message/BlockMessage.java index 0a8a23de..83b6d89e 100644 --- a/src/main/java/org/qortal/network/message/BlockMessage.java +++ b/src/main/java/org/qortal/network/message/BlockMessage.java @@ -1,8 +1,5 @@ package org.qortal.network.message; -import java.nio.ByteBuffer; -import java.util.List; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.qortal.data.at.ATStateData; @@ -11,7 +8,9 @@ import org.qortal.data.transaction.TransactionData; import org.qortal.transform.TransformationException; import org.qortal.transform.block.BlockTransformation; import org.qortal.transform.block.BlockTransformer; -import org.qortal.utils.Triple; + +import java.nio.ByteBuffer; +import java.util.List; public class BlockMessage extends Message { diff --git a/src/main/java/org/qortal/network/message/BlockSummariesMessage.java b/src/main/java/org/qortal/network/message/BlockSummariesMessage.java index 513e30ae..f00c0a36 100644 --- a/src/main/java/org/qortal/network/message/BlockSummariesMessage.java +++ b/src/main/java/org/qortal/network/message/BlockSummariesMessage.java @@ -1,5 +1,10 @@ package org.qortal.network.message; +import com.google.common.primitives.Ints; +import org.qortal.data.block.BlockSummaryData; +import org.qortal.transform.Transformer; +import org.qortal.transform.block.BlockTransformer; + import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.BufferUnderflowException; @@ -7,12 +12,6 @@ import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; -import org.qortal.data.block.BlockSummaryData; -import org.qortal.transform.Transformer; -import org.qortal.transform.block.BlockTransformer; - -import com.google.common.primitives.Ints; - public class BlockSummariesMessage extends Message { private static final int BLOCK_SUMMARY_LENGTH = BlockTransformer.BLOCK_SIGNATURE_LENGTH + Transformer.INT_LENGTH + Transformer.PUBLIC_KEY_LENGTH + Transformer.INT_LENGTH; diff --git a/src/main/java/org/qortal/network/message/CachedBlockMessage.java b/src/main/java/org/qortal/network/message/CachedBlockMessage.java index 48e9ef36..e140f6fc 100644 --- a/src/main/java/org/qortal/network/message/CachedBlockMessage.java +++ b/src/main/java/org/qortal/network/message/CachedBlockMessage.java @@ -1,14 +1,13 @@ package org.qortal.network.message; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Ints; import org.qortal.block.Block; import org.qortal.transform.TransformationException; import org.qortal.transform.block.BlockTransformer; -import com.google.common.primitives.Ints; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; // This is an OUTGOING-only Message which more readily lends itself to being cached public class CachedBlockMessage extends Message implements Cloneable { diff --git a/src/main/java/org/qortal/network/message/ChallengeMessage.java b/src/main/java/org/qortal/network/message/ChallengeMessage.java index bb5b2ae9..21a02baa 100644 --- a/src/main/java/org/qortal/network/message/ChallengeMessage.java +++ b/src/main/java/org/qortal/network/message/ChallengeMessage.java @@ -1,11 +1,11 @@ package org.qortal.network.message; +import org.qortal.transform.Transformer; + import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.ByteBuffer; -import org.qortal.transform.Transformer; - public class ChallengeMessage extends Message { public static final int CHALLENGE_LENGTH = 32; diff --git a/src/main/java/org/qortal/network/message/GetArbitraryDataMessage.java b/src/main/java/org/qortal/network/message/GetArbitraryDataMessage.java index bf604fe7..273d5532 100644 --- a/src/main/java/org/qortal/network/message/GetArbitraryDataMessage.java +++ b/src/main/java/org/qortal/network/message/GetArbitraryDataMessage.java @@ -1,10 +1,10 @@ package org.qortal.network.message; +import org.qortal.transform.Transformer; + import java.nio.ByteBuffer; import java.util.Arrays; -import org.qortal.transform.Transformer; - public class GetArbitraryDataMessage extends Message { private byte[] signature; diff --git a/src/main/java/org/qortal/network/message/GetBlockMessage.java b/src/main/java/org/qortal/network/message/GetBlockMessage.java index d39dcca0..1cf5da4e 100644 --- a/src/main/java/org/qortal/network/message/GetBlockMessage.java +++ b/src/main/java/org/qortal/network/message/GetBlockMessage.java @@ -1,10 +1,10 @@ package org.qortal.network.message; +import org.qortal.transform.block.BlockTransformer; + import java.nio.ByteBuffer; import java.util.Arrays; -import org.qortal.transform.block.BlockTransformer; - public class GetBlockMessage extends Message { private byte[] signature; diff --git a/src/main/java/org/qortal/network/message/GetBlockSummariesMessage.java b/src/main/java/org/qortal/network/message/GetBlockSummariesMessage.java index 70f0d5c5..f1867e3d 100644 --- a/src/main/java/org/qortal/network/message/GetBlockSummariesMessage.java +++ b/src/main/java/org/qortal/network/message/GetBlockSummariesMessage.java @@ -1,13 +1,12 @@ package org.qortal.network.message; +import com.google.common.primitives.Ints; +import org.qortal.transform.block.BlockTransformer; + import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.ByteBuffer; -import org.qortal.transform.block.BlockTransformer; - -import com.google.common.primitives.Ints; - public class GetBlockSummariesMessage extends Message { private byte[] parentSignature; diff --git a/src/main/java/org/qortal/network/message/GetOnlineAccountsV3Message.java b/src/main/java/org/qortal/network/message/GetOnlineAccountsV3Message.java index 66c7c47a..e1359023 100644 --- a/src/main/java/org/qortal/network/message/GetOnlineAccountsV3Message.java +++ b/src/main/java/org/qortal/network/message/GetOnlineAccountsV3Message.java @@ -6,7 +6,9 @@ import org.qortal.transform.Transformer; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.ByteBuffer; -import java.util.*; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; /** * For requesting online accounts info from remote peer, given our list of online accounts. diff --git a/src/main/java/org/qortal/network/message/GetSignaturesV2Message.java b/src/main/java/org/qortal/network/message/GetSignaturesV2Message.java index 0f88ba7d..01500dd9 100644 --- a/src/main/java/org/qortal/network/message/GetSignaturesV2Message.java +++ b/src/main/java/org/qortal/network/message/GetSignaturesV2Message.java @@ -1,13 +1,12 @@ package org.qortal.network.message; +import com.google.common.primitives.Ints; +import org.qortal.transform.block.BlockTransformer; + import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.ByteBuffer; -import org.qortal.transform.block.BlockTransformer; - -import com.google.common.primitives.Ints; - public class GetSignaturesV2Message extends Message { private byte[] parentSignature; diff --git a/src/main/java/org/qortal/network/message/GetTransactionMessage.java b/src/main/java/org/qortal/network/message/GetTransactionMessage.java index fe0c750f..149f7bff 100644 --- a/src/main/java/org/qortal/network/message/GetTransactionMessage.java +++ b/src/main/java/org/qortal/network/message/GetTransactionMessage.java @@ -1,10 +1,10 @@ package org.qortal.network.message; +import org.qortal.transform.Transformer; + import java.nio.ByteBuffer; import java.util.Arrays; -import org.qortal.transform.Transformer; - public class GetTransactionMessage extends Message { private byte[] signature; diff --git a/src/main/java/org/qortal/network/message/GoodbyeMessage.java b/src/main/java/org/qortal/network/message/GoodbyeMessage.java index 74130be2..dd6e13ee 100644 --- a/src/main/java/org/qortal/network/message/GoodbyeMessage.java +++ b/src/main/java/org/qortal/network/message/GoodbyeMessage.java @@ -1,12 +1,12 @@ package org.qortal.network.message; -import static java.util.Arrays.stream; -import static java.util.stream.Collectors.toMap; +import com.google.common.primitives.Ints; import java.nio.ByteBuffer; import java.util.Map; -import com.google.common.primitives.Ints; +import static java.util.Arrays.stream; +import static java.util.stream.Collectors.toMap; public class GoodbyeMessage extends Message { diff --git a/src/main/java/org/qortal/network/message/HeightV2Message.java b/src/main/java/org/qortal/network/message/HeightV2Message.java index 0e775a84..6626b430 100644 --- a/src/main/java/org/qortal/network/message/HeightV2Message.java +++ b/src/main/java/org/qortal/network/message/HeightV2Message.java @@ -1,14 +1,13 @@ package org.qortal.network.message; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.transform.Transformer; import org.qortal.transform.block.BlockTransformer; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class HeightV2Message extends Message { diff --git a/src/main/java/org/qortal/network/message/HelloMessage.java b/src/main/java/org/qortal/network/message/HelloMessage.java index 30b7d9be..bb2d0eef 100644 --- a/src/main/java/org/qortal/network/message/HelloMessage.java +++ b/src/main/java/org/qortal/network/message/HelloMessage.java @@ -1,13 +1,12 @@ package org.qortal.network.message; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Longs; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class HelloMessage extends Message { diff --git a/src/main/java/org/qortal/network/message/Message.java b/src/main/java/org/qortal/network/message/Message.java index d8467d90..65262321 100644 --- a/src/main/java/org/qortal/network/message/Message.java +++ b/src/main/java/org/qortal/network/message/Message.java @@ -1,10 +1,9 @@ package org.qortal.network.message; +import com.google.common.primitives.Ints; import org.qortal.crypto.Crypto; import org.qortal.network.Network; -import com.google.common.primitives.Ints; - import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.BufferUnderflowException; diff --git a/src/main/java/org/qortal/network/message/PeersV2Message.java b/src/main/java/org/qortal/network/message/PeersV2Message.java index e844246f..bd240131 100644 --- a/src/main/java/org/qortal/network/message/PeersV2Message.java +++ b/src/main/java/org/qortal/network/message/PeersV2Message.java @@ -1,5 +1,9 @@ package org.qortal.network.message; +import com.google.common.primitives.Ints; +import org.qortal.network.PeerAddress; +import org.qortal.settings.Settings; + import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.ByteBuffer; @@ -7,11 +11,6 @@ import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; -import org.qortal.network.PeerAddress; -import org.qortal.settings.Settings; - -import com.google.common.primitives.Ints; - // NOTE: this message supports hostnames, literal IP addresses (IPv4 and IPv6) with port numbers public class PeersV2Message extends Message { diff --git a/src/main/java/org/qortal/network/message/ResponseMessage.java b/src/main/java/org/qortal/network/message/ResponseMessage.java index 292fe697..11e8a3d0 100644 --- a/src/main/java/org/qortal/network/message/ResponseMessage.java +++ b/src/main/java/org/qortal/network/message/ResponseMessage.java @@ -1,11 +1,11 @@ package org.qortal.network.message; +import com.google.common.primitives.Ints; + import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.ByteBuffer; -import com.google.common.primitives.Ints; - public class ResponseMessage extends Message { public static final int DATA_LENGTH = 32; diff --git a/src/main/java/org/qortal/network/message/SignaturesMessage.java b/src/main/java/org/qortal/network/message/SignaturesMessage.java index c0b44fcd..029cf74d 100644 --- a/src/main/java/org/qortal/network/message/SignaturesMessage.java +++ b/src/main/java/org/qortal/network/message/SignaturesMessage.java @@ -1,5 +1,8 @@ package org.qortal.network.message; +import com.google.common.primitives.Ints; +import org.qortal.transform.block.BlockTransformer; + import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.BufferUnderflowException; @@ -7,10 +10,6 @@ import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; -import org.qortal.transform.block.BlockTransformer; - -import com.google.common.primitives.Ints; - public class SignaturesMessage extends Message { private List signatures; diff --git a/src/main/java/org/qortal/network/message/TransactionMessage.java b/src/main/java/org/qortal/network/message/TransactionMessage.java index 51db6cf9..7ef4825a 100644 --- a/src/main/java/org/qortal/network/message/TransactionMessage.java +++ b/src/main/java/org/qortal/network/message/TransactionMessage.java @@ -1,11 +1,11 @@ package org.qortal.network.message; -import java.nio.ByteBuffer; - import org.qortal.data.transaction.TransactionData; import org.qortal.transform.TransformationException; import org.qortal.transform.transaction.TransactionTransformer; +import java.nio.ByteBuffer; + public class TransactionMessage extends Message { private TransactionData transactionData; diff --git a/src/main/java/org/qortal/network/message/TransactionSignaturesMessage.java b/src/main/java/org/qortal/network/message/TransactionSignaturesMessage.java index 395d3f00..0c56b416 100644 --- a/src/main/java/org/qortal/network/message/TransactionSignaturesMessage.java +++ b/src/main/java/org/qortal/network/message/TransactionSignaturesMessage.java @@ -1,5 +1,8 @@ package org.qortal.network.message; +import com.google.common.primitives.Ints; +import org.qortal.transform.Transformer; + import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.BufferUnderflowException; @@ -7,10 +10,6 @@ import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; -import org.qortal.transform.Transformer; - -import com.google.common.primitives.Ints; - public class TransactionSignaturesMessage extends Message { private List signatures; diff --git a/src/main/java/org/qortal/network/task/BroadcastTask.java b/src/main/java/org/qortal/network/task/BroadcastTask.java index 5714ebf6..c0617250 100644 --- a/src/main/java/org/qortal/network/task/BroadcastTask.java +++ b/src/main/java/org/qortal/network/task/BroadcastTask.java @@ -1,9 +1,6 @@ package org.qortal.network.task; import org.qortal.controller.Controller; -import org.qortal.network.Network; -import org.qortal.network.Peer; -import org.qortal.network.message.Message; import org.qortal.utils.ExecuteProduceConsume.Task; public class BroadcastTask implements Task { diff --git a/src/main/java/org/qortal/network/task/ChannelReadTask.java b/src/main/java/org/qortal/network/task/ChannelReadTask.java index edd4e8c0..ea7576c5 100644 --- a/src/main/java/org/qortal/network/task/ChannelReadTask.java +++ b/src/main/java/org/qortal/network/task/ChannelReadTask.java @@ -2,7 +2,6 @@ package org.qortal.network.task; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - import org.qortal.network.Network; import org.qortal.network.Peer; import org.qortal.utils.ExecuteProduceConsume.Task; diff --git a/src/main/java/org/qortal/network/task/PeerConnectTask.java b/src/main/java/org/qortal/network/task/PeerConnectTask.java index 759cabce..7eec4e6b 100644 --- a/src/main/java/org/qortal/network/task/PeerConnectTask.java +++ b/src/main/java/org/qortal/network/task/PeerConnectTask.java @@ -4,11 +4,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.qortal.network.Network; import org.qortal.network.Peer; -import org.qortal.network.message.Message; -import org.qortal.network.message.MessageType; -import org.qortal.network.message.PingMessage; import org.qortal.utils.ExecuteProduceConsume.Task; -import org.qortal.utils.NTP; public class PeerConnectTask implements Task { private static final Logger LOGGER = LogManager.getLogger(PeerConnectTask.class); diff --git a/src/main/java/org/qortal/payment/Payment.java b/src/main/java/org/qortal/payment/Payment.java index 8b6070ee..f9bc5826 100644 --- a/src/main/java/org/qortal/payment/Payment.java +++ b/src/main/java/org/qortal/payment/Payment.java @@ -1,12 +1,5 @@ package org.qortal.payment; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - import org.qortal.account.Account; import org.qortal.account.PublicKeyAccount; import org.qortal.asset.Asset; @@ -20,6 +13,9 @@ import org.qortal.repository.Repository; import org.qortal.transaction.Transaction.ValidationResult; import org.qortal.utils.Amounts; +import java.util.*; +import java.util.Map.Entry; + public class Payment { // Properties diff --git a/src/main/java/org/qortal/repository/ATRepository.java b/src/main/java/org/qortal/repository/ATRepository.java index 93da924c..455ba393 100644 --- a/src/main/java/org/qortal/repository/ATRepository.java +++ b/src/main/java/org/qortal/repository/ATRepository.java @@ -1,14 +1,12 @@ package org.qortal.repository; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.List; -import java.util.Set; - import org.qortal.data.at.ATData; import org.qortal.data.at.ATStateData; import org.qortal.utils.ByteArray; +import java.util.List; +import java.util.Set; + public interface ATRepository { // CIYAM AutomatedTransactions diff --git a/src/main/java/org/qortal/repository/AccountRepository.java b/src/main/java/org/qortal/repository/AccountRepository.java index 1175337c..bdad187b 100644 --- a/src/main/java/org/qortal/repository/AccountRepository.java +++ b/src/main/java/org/qortal/repository/AccountRepository.java @@ -1,10 +1,10 @@ package org.qortal.repository; +import org.qortal.data.account.*; + import java.util.List; import java.util.Set; -import org.qortal.data.account.*; - public interface AccountRepository { // General account diff --git a/src/main/java/org/qortal/repository/ArbitraryRepository.java b/src/main/java/org/qortal/repository/ArbitraryRepository.java index 9d9ed8ce..175f1daf 100644 --- a/src/main/java/org/qortal/repository/ArbitraryRepository.java +++ b/src/main/java/org/qortal/repository/ArbitraryRepository.java @@ -1,33 +1,56 @@ package org.qortal.repository; +import org.qortal.api.SearchMode; import org.qortal.arbitrary.misc.Service; -import org.qortal.data.arbitrary.ArbitraryResourceInfo; -import org.qortal.data.arbitrary.ArbitraryResourceNameInfo; -import org.qortal.data.network.ArbitraryPeerData; +import org.qortal.data.arbitrary.ArbitraryResourceData; +import org.qortal.data.arbitrary.ArbitraryResourceMetadata; +import org.qortal.data.arbitrary.ArbitraryResourceStatus; import org.qortal.data.transaction.ArbitraryTransactionData; -import org.qortal.data.transaction.ArbitraryTransactionData.*; +import org.qortal.data.transaction.ArbitraryTransactionData.Method; import java.util.List; public interface ArbitraryRepository { + // Utils + public boolean isDataLocal(byte[] signature) throws DataException; public byte[] fetchData(byte[] signature) throws DataException; + + // Transaction related + public void save(ArbitraryTransactionData arbitraryTransactionData) throws DataException; public void delete(ArbitraryTransactionData arbitraryTransactionData) throws DataException; public List getArbitraryTransactions(String name, Service service, String identifier, long since) throws DataException; + public ArbitraryTransactionData getInitialTransaction(String name, Service service, Method method, String identifier) throws DataException; + public ArbitraryTransactionData getLatestTransaction(String name, Service service, Method method, String identifier) throws DataException; + public List getArbitraryTransactions(boolean requireName, Integer limit, Integer offset, Boolean reverse) throws DataException; + + + // Resource related + + public ArbitraryResourceData getArbitraryResource(Service service, String name, String identifier) throws DataException; + + public List getArbitraryResources(Integer limit, Integer offset, Boolean reverse) throws DataException; + + public List getArbitraryResources(Service service, String identifier, List names, boolean defaultResource, Boolean followedOnly, Boolean excludeBlocked, Boolean includeMetadata, Boolean includeStatus, Integer limit, Integer offset, Boolean reverse) throws DataException; + + public List searchArbitraryResources(Service service, String query, String identifier, List names, String title, String description, boolean prefixOnly, List namesFilter, boolean defaultResource, SearchMode mode, Integer minLevel, Boolean followedOnly, Boolean excludeBlocked, Boolean includeMetadata, Boolean includeStatus, Long before, Long after, Integer limit, Integer offset, Boolean reverse) throws DataException; - public List getArbitraryResources(Service service, String identifier, List names, boolean defaultResource, Boolean followedOnly, Boolean excludeBlocked, Integer limit, Integer offset, Boolean reverse) throws DataException; - public List searchArbitraryResources(Service service, String query, String identifier, List names, boolean prefixOnly, List namesFilter, boolean defaultResource, Boolean followedOnly, Boolean excludeBlocked, Integer limit, Integer offset, Boolean reverse) throws DataException; + // Arbitrary resources cache save/load - public List getArbitraryResourceCreatorNames(Service service, String identifier, boolean defaultResource, Integer limit, Integer offset, Boolean reverse) throws DataException; + public void save(ArbitraryResourceData arbitraryResourceData) throws DataException; + public void setStatus(ArbitraryResourceData arbitraryResourceData, ArbitraryResourceStatus.Status status) throws DataException; + public void delete(ArbitraryResourceData arbitraryResourceData) throws DataException; + public void save(ArbitraryResourceMetadata metadata) throws DataException; + public void delete(ArbitraryResourceMetadata metadata) throws DataException; } diff --git a/src/main/java/org/qortal/repository/AssetRepository.java b/src/main/java/org/qortal/repository/AssetRepository.java index fb516880..4dbc90fe 100644 --- a/src/main/java/org/qortal/repository/AssetRepository.java +++ b/src/main/java/org/qortal/repository/AssetRepository.java @@ -1,12 +1,12 @@ package org.qortal.repository; -import java.util.List; - import org.qortal.data.asset.AssetData; import org.qortal.data.asset.OrderData; import org.qortal.data.asset.RecentTradeData; import org.qortal.data.asset.TradeData; +import java.util.List; + public interface AssetRepository { // Assets diff --git a/src/main/java/org/qortal/repository/BlockArchiveReader.java b/src/main/java/org/qortal/repository/BlockArchiveReader.java index 1f04bced..7b2e098a 100644 --- a/src/main/java/org/qortal/repository/BlockArchiveReader.java +++ b/src/main/java/org/qortal/repository/BlockArchiveReader.java @@ -10,14 +10,14 @@ import org.qortal.transform.block.BlockTransformation; import org.qortal.transform.block.BlockTransformer; import org.qortal.utils.Triple; -import static org.qortal.transform.Transformer.INT_LENGTH; - import java.io.*; import java.nio.ByteBuffer; import java.nio.file.Path; import java.nio.file.Paths; import java.util.*; +import static org.qortal.transform.Transformer.INT_LENGTH; + public class BlockArchiveReader { private static BlockArchiveReader instance; diff --git a/src/main/java/org/qortal/repository/BlockRepository.java b/src/main/java/org/qortal/repository/BlockRepository.java index 76891c36..429e34cb 100644 --- a/src/main/java/org/qortal/repository/BlockRepository.java +++ b/src/main/java/org/qortal/repository/BlockRepository.java @@ -1,13 +1,13 @@ package org.qortal.repository; -import java.util.List; - import org.qortal.api.model.BlockSignerSummary; import org.qortal.data.block.BlockData; import org.qortal.data.block.BlockSummaryData; import org.qortal.data.block.BlockTransactionData; import org.qortal.data.transaction.TransactionData; +import java.util.List; + public interface BlockRepository { /** diff --git a/src/main/java/org/qortal/repository/ChatRepository.java b/src/main/java/org/qortal/repository/ChatRepository.java index 7443fb51..d046fe6b 100644 --- a/src/main/java/org/qortal/repository/ChatRepository.java +++ b/src/main/java/org/qortal/repository/ChatRepository.java @@ -1,11 +1,11 @@ package org.qortal.repository; -import java.util.List; - import org.qortal.data.chat.ActiveChats; import org.qortal.data.chat.ChatMessage; import org.qortal.data.transaction.ChatTransactionData; +import java.util.List; + import static org.qortal.data.chat.ChatMessage.Encoding; public interface ChatRepository { diff --git a/src/main/java/org/qortal/repository/CrossChainRepository.java b/src/main/java/org/qortal/repository/CrossChainRepository.java index 70ebdbf9..405fdfb5 100644 --- a/src/main/java/org/qortal/repository/CrossChainRepository.java +++ b/src/main/java/org/qortal/repository/CrossChainRepository.java @@ -1,9 +1,9 @@ package org.qortal.repository; -import java.util.List; - import org.qortal.data.crosschain.TradeBotData; +import java.util.List; + public interface CrossChainRepository { public TradeBotData getTradeBotData(byte[] tradePrivateKey) throws DataException; diff --git a/src/main/java/org/qortal/repository/GroupRepository.java b/src/main/java/org/qortal/repository/GroupRepository.java index 94c97992..49427b02 100644 --- a/src/main/java/org/qortal/repository/GroupRepository.java +++ b/src/main/java/org/qortal/repository/GroupRepository.java @@ -1,13 +1,8 @@ package org.qortal.repository; -import java.util.List; +import org.qortal.data.group.*; -import org.qortal.data.group.GroupAdminData; -import org.qortal.data.group.GroupBanData; -import org.qortal.data.group.GroupData; -import org.qortal.data.group.GroupInviteData; -import org.qortal.data.group.GroupJoinRequestData; -import org.qortal.data.group.GroupMemberData; +import java.util.List; public interface GroupRepository { diff --git a/src/main/java/org/qortal/repository/MessageRepository.java b/src/main/java/org/qortal/repository/MessageRepository.java index db74f0e6..da43cf7e 100644 --- a/src/main/java/org/qortal/repository/MessageRepository.java +++ b/src/main/java/org/qortal/repository/MessageRepository.java @@ -1,9 +1,9 @@ package org.qortal.repository; -import java.util.List; - import org.qortal.data.transaction.MessageTransactionData; +import java.util.List; + public interface MessageRepository { /** diff --git a/src/main/java/org/qortal/repository/NameRepository.java b/src/main/java/org/qortal/repository/NameRepository.java index 52a43a18..c49d5d18 100644 --- a/src/main/java/org/qortal/repository/NameRepository.java +++ b/src/main/java/org/qortal/repository/NameRepository.java @@ -1,9 +1,9 @@ package org.qortal.repository; -import java.util.List; - import org.qortal.data.naming.NameData; +import java.util.List; + public interface NameRepository { public NameData fromName(String name) throws DataException; diff --git a/src/main/java/org/qortal/repository/NetworkRepository.java b/src/main/java/org/qortal/repository/NetworkRepository.java index e7a5126d..a6f1775a 100644 --- a/src/main/java/org/qortal/repository/NetworkRepository.java +++ b/src/main/java/org/qortal/repository/NetworkRepository.java @@ -1,10 +1,10 @@ package org.qortal.repository; -import java.util.List; - import org.qortal.data.network.PeerData; import org.qortal.network.PeerAddress; +import java.util.List; + public interface NetworkRepository { public List getAllPeers() throws DataException; diff --git a/src/main/java/org/qortal/repository/TransactionRepository.java b/src/main/java/org/qortal/repository/TransactionRepository.java index 41986cad..e007586e 100644 --- a/src/main/java/org/qortal/repository/TransactionRepository.java +++ b/src/main/java/org/qortal/repository/TransactionRepository.java @@ -1,9 +1,5 @@ package org.qortal.repository; -import java.util.EnumSet; -import java.util.List; -import java.util.Map; - import org.qortal.api.resource.TransactionsResource.ConfirmationStatus; import org.qortal.arbitrary.misc.Service; import org.qortal.data.group.GroupApprovalData; @@ -12,6 +8,10 @@ import org.qortal.data.transaction.TransactionData; import org.qortal.data.transaction.TransferAssetTransactionData; import org.qortal.transaction.Transaction.TransactionType; +import java.util.EnumSet; +import java.util.List; +import java.util.Map; + public interface TransactionRepository { // Fetching transactions / transaction height diff --git a/src/main/java/org/qortal/repository/VotingRepository.java b/src/main/java/org/qortal/repository/VotingRepository.java index b0e2954c..d5ce1585 100644 --- a/src/main/java/org/qortal/repository/VotingRepository.java +++ b/src/main/java/org/qortal/repository/VotingRepository.java @@ -1,10 +1,10 @@ package org.qortal.repository; -import java.util.List; - import org.qortal.data.voting.PollData; import org.qortal.data.voting.VoteOnPollData; +import java.util.List; + public interface VotingRepository { // Polls diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBATRepository.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBATRepository.java index 33817309..80fc62dc 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBATRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBATRepository.java @@ -1,11 +1,6 @@ package org.qortal.repository.hsqldb; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - +import com.google.common.primitives.Longs; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.qortal.controller.Controller; @@ -15,7 +10,11 @@ import org.qortal.repository.ATRepository; import org.qortal.repository.DataException; import org.qortal.utils.ByteArray; -import com.google.common.primitives.Longs; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; public class HSQLDBATRepository implements ATRepository { diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBAccountRepository.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBAccountRepository.java index cb188502..7aef66ce 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBAccountRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBAccountRepository.java @@ -1,6 +1,9 @@ package org.qortal.repository.hsqldb; -import static org.qortal.utils.Amounts.prettyAmount; +import org.qortal.asset.Asset; +import org.qortal.data.account.*; +import org.qortal.repository.AccountRepository; +import org.qortal.repository.DataException; import java.sql.ResultSet; import java.sql.SQLException; @@ -9,10 +12,7 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; -import org.qortal.asset.Asset; -import org.qortal.data.account.*; -import org.qortal.repository.AccountRepository; -import org.qortal.repository.DataException; +import static org.qortal.utils.Amounts.prettyAmount; public class HSQLDBAccountRepository implements AccountRepository { diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBArbitraryRepository.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBArbitraryRepository.java index 87841ca9..eaa7be2a 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBArbitraryRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBArbitraryRepository.java @@ -2,17 +2,22 @@ package org.qortal.repository.hsqldb; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.bouncycastle.util.Longs; +import org.qortal.api.SearchMode; +import org.qortal.arbitrary.ArbitraryDataFile; +import org.qortal.arbitrary.metadata.ArbitraryDataTransactionMetadata; +import org.qortal.arbitrary.misc.Category; import org.qortal.arbitrary.misc.Service; -import org.qortal.data.arbitrary.ArbitraryResourceInfo; -import org.qortal.data.arbitrary.ArbitraryResourceNameInfo; +import org.qortal.data.arbitrary.ArbitraryResourceData; +import org.qortal.data.arbitrary.ArbitraryResourceMetadata; +import org.qortal.data.arbitrary.ArbitraryResourceStatus; import org.qortal.data.transaction.ArbitraryTransactionData; -import org.qortal.data.transaction.ArbitraryTransactionData.*; +import org.qortal.data.transaction.ArbitraryTransactionData.Compression; +import org.qortal.data.transaction.ArbitraryTransactionData.DataType; +import org.qortal.data.transaction.ArbitraryTransactionData.Method; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.repository.ArbitraryRepository; import org.qortal.repository.DataException; -import org.qortal.arbitrary.ArbitraryDataFile; import org.qortal.transaction.ArbitraryTransaction; import org.qortal.transaction.Transaction.ApprovalStatus; import org.qortal.utils.Base58; @@ -22,6 +27,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; +import java.util.Objects; public class HSQLDBArbitraryRepository implements ArbitraryRepository { @@ -41,6 +47,9 @@ public class HSQLDBArbitraryRepository implements ArbitraryRepository { return (ArbitraryTransactionData) transactionData; } + + // Utils + @Override public boolean isDataLocal(byte[] signature) throws DataException { ArbitraryTransactionData transactionData = getTransactionData(signature); @@ -113,6 +122,9 @@ public class HSQLDBArbitraryRepository implements ArbitraryRepository { return null; } + + // Transaction related + @Override public void save(ArbitraryTransactionData arbitraryTransactionData) throws DataException { // Already hashed? Nothing to do @@ -211,8 +223,12 @@ public class HSQLDBArbitraryRepository implements ArbitraryRepository { } } - @Override - public ArbitraryTransactionData getLatestTransaction(String name, Service service, Method method, String identifier) throws DataException { + private ArbitraryTransactionData getSingleTransaction(String name, Service service, Method method, String identifier, boolean firstNotLast) throws DataException { + if (name == null || service == null) { + // Required fields + return null; + } + StringBuilder sql = new StringBuilder(1024); sql.append("SELECT type, reference, signature, creator, created_when, fee, " + @@ -228,7 +244,16 @@ public class HSQLDBArbitraryRepository implements ArbitraryRepository { sql.append(method.value); } - sql.append("ORDER BY created_when DESC LIMIT 1"); + sql.append(" ORDER BY created_when"); + + if (firstNotLast) { + sql.append(" ASC"); + } + else { + sql.append(" DESC"); + } + + sql.append(" LIMIT 1"); try (ResultSet resultSet = this.repository.checkedExecute(sql.toString(), name.toLowerCase(), service.value, identifier, identifier)) { if (resultSet == null) @@ -284,22 +309,286 @@ public class HSQLDBArbitraryRepository implements ArbitraryRepository { } @Override - public List getArbitraryResources(Service service, String identifier, List names, - boolean defaultResource, Boolean followedOnly, Boolean excludeBlocked, + public ArbitraryTransactionData getInitialTransaction(String name, Service service, Method method, String identifier) throws DataException { + return this.getSingleTransaction(name, service, method, identifier, true); + } + + @Override + public ArbitraryTransactionData getLatestTransaction(String name, Service service, Method method, String identifier) throws DataException { + return this.getSingleTransaction(name, service, method, identifier, false); + } + + public List getArbitraryTransactions(boolean requireName, Integer limit, Integer offset, Boolean reverse) throws DataException { + StringBuilder sql = new StringBuilder(512); + sql.append("SELECT type, reference, signature, creator, created_when, fee, " + + "tx_group_id, block_height, approval_status, approval_height, " + + "version, nonce, service, size, is_data_raw, data, metadata_hash, " + + "name, identifier, update_method, secret, compression FROM ArbitraryTransactions " + + "JOIN Transactions USING (signature)"); + + if (requireName) { + sql.append(" WHERE name IS NOT NULL"); + } + + sql.append(" ORDER BY created_when"); + + if (reverse != null && reverse) { + sql.append(" DESC"); + } + + HSQLDBRepository.limitOffsetSql(sql, limit, offset); + + List arbitraryTransactionData = new ArrayList<>(); + + try (ResultSet resultSet = this.repository.checkedExecute(sql.toString())) { + if (resultSet == null) + return null; + + do { + //TransactionType type = TransactionType.valueOf(resultSet.getInt(1)); + + byte[] reference = resultSet.getBytes(2); + byte[] signature = resultSet.getBytes(3); + byte[] creatorPublicKey = resultSet.getBytes(4); + long timestamp = resultSet.getLong(5); + + Long fee = resultSet.getLong(6); + if (fee == 0 && resultSet.wasNull()) + fee = null; + + int txGroupId = resultSet.getInt(7); + + Integer blockHeight = resultSet.getInt(8); + if (blockHeight == 0 && resultSet.wasNull()) + blockHeight = null; + + ApprovalStatus approvalStatus = ApprovalStatus.valueOf(resultSet.getInt(9)); + Integer approvalHeight = resultSet.getInt(10); + if (approvalHeight == 0 && resultSet.wasNull()) + approvalHeight = null; + + BaseTransactionData baseTransactionData = new BaseTransactionData(timestamp, txGroupId, reference, creatorPublicKey, fee, approvalStatus, blockHeight, approvalHeight, signature); + + int version = resultSet.getInt(11); + int nonce = resultSet.getInt(12); + int serviceInt = resultSet.getInt(13); + int size = resultSet.getInt(14); + boolean isDataRaw = resultSet.getBoolean(15); // NOT NULL, so no null to false + DataType dataType = isDataRaw ? DataType.RAW_DATA : DataType.DATA_HASH; + byte[] data = resultSet.getBytes(16); + byte[] metadataHash = resultSet.getBytes(17); + String nameResult = resultSet.getString(18); + String identifierResult = resultSet.getString(19); + Method method = Method.valueOf(resultSet.getInt(20)); + byte[] secret = resultSet.getBytes(21); + Compression compression = Compression.valueOf(resultSet.getInt(22)); + // FUTURE: get payments from signature if needed. Avoiding for now to reduce database calls. + + ArbitraryTransactionData transactionData = new ArbitraryTransactionData(baseTransactionData, + version, serviceInt, nonce, size, nameResult, identifierResult, method, secret, + compression, data, dataType, metadataHash, null); + + arbitraryTransactionData.add(transactionData); + } while (resultSet.next()); + + return arbitraryTransactionData; + } catch (SQLException e) { + throw new DataException("Unable to fetch arbitrary transactions from repository", e); + } + } + + + // Resource related + + @Override + public ArbitraryResourceData getArbitraryResource(Service service, String name, String identifier) throws DataException { + StringBuilder sql = new StringBuilder(512); + List bindParams = new ArrayList<>(); + + // Name is required + if (name == null) { + return null; + } + + sql.append("SELECT name, service, identifier, size, status, created_when, updated_when, " + + "title, description, category, tag1, tag2, tag3, tag4, tag5 " + + "FROM ArbitraryResourcesCache " + + "LEFT JOIN ArbitraryMetadataCache USING (service, name, identifier) " + + "WHERE ArbitraryResourcesCache.service = ? AND ArbitraryResourcesCache.name = ?"); + + bindParams.add(service.value); + bindParams.add(name); + + if (identifier != null) { + sql.append(" AND identifier = ?"); + bindParams.add(identifier); + } + else { + sql.append(" AND identifier IS NULL"); + } + + try (ResultSet resultSet = this.repository.checkedExecute(sql.toString(), bindParams.toArray())) { + if (resultSet == null) + return null; + + String nameResult = resultSet.getString(1); + Service serviceResult = Service.valueOf(resultSet.getInt(2)); + String identifierResult = resultSet.getString(3); + Integer sizeResult = resultSet.getInt(4); + Integer status = resultSet.getInt(5); + Long created = resultSet.getLong(6); + Long updated = resultSet.getLong(7); + + // Optional metadata fields + String title = resultSet.getString(8); + String description = resultSet.getString(9); + String category = resultSet.getString(10); + String tag1 = resultSet.getString(11); + String tag2 = resultSet.getString(12); + String tag3 = resultSet.getString(13); + String tag4 = resultSet.getString(14); + String tag5 = resultSet.getString(15); + + if (Objects.equals(identifierResult, "default")) { + // Map "default" back to null. This is optional but probably less confusing than returning "default". + identifierResult = null; + } + + ArbitraryResourceData arbitraryResourceData = new ArbitraryResourceData(); + arbitraryResourceData.name = nameResult; + arbitraryResourceData.service = serviceResult; + arbitraryResourceData.identifier = identifierResult; + arbitraryResourceData.size = sizeResult; + arbitraryResourceData.setStatus(ArbitraryResourceStatus.Status.valueOf(status)); + arbitraryResourceData.created = created; + arbitraryResourceData.updated = (updated == 0) ? null : updated; + + ArbitraryResourceMetadata metadata = new ArbitraryResourceMetadata(); + metadata.setTitle(title); + metadata.setDescription(description); + metadata.setCategory(Category.uncategorizedValueOf(category)); + + List tags = new ArrayList<>(); + if (tag1 != null) tags.add(tag1); + if (tag2 != null) tags.add(tag2); + if (tag3 != null) tags.add(tag3); + if (tag4 != null) tags.add(tag4); + if (tag5 != null) tags.add(tag5); + metadata.setTags(!tags.isEmpty() ? tags : null); + + if (metadata.hasMetadata()) { + arbitraryResourceData.metadata = metadata; + } + + return arbitraryResourceData; + } catch (SQLException e) { + throw new DataException("Unable to fetch arbitrary resource from repository", e); + } + } + @Override + public List getArbitraryResources(Integer limit, Integer offset, Boolean reverse) throws DataException { + StringBuilder sql = new StringBuilder(512); + List bindParams = new ArrayList<>(); + + sql.append("SELECT name, service, identifier, size, status, created_when, updated_when, " + + "title, description, category, tag1, tag2, tag3, tag4, tag5 " + + "FROM ArbitraryResourcesCache " + + "LEFT JOIN ArbitraryMetadataCache USING (service, name, identifier) " + + "WHERE name IS NOT NULL ORDER BY created_when"); + + if (reverse != null && reverse) { + sql.append(" DESC"); + } + + HSQLDBRepository.limitOffsetSql(sql, limit, offset); + + List arbitraryResources = new ArrayList<>(); + + try (ResultSet resultSet = this.repository.checkedExecute(sql.toString(), bindParams.toArray())) { + if (resultSet == null) + return arbitraryResources; + + do { + String nameResult = resultSet.getString(1); + Service serviceResult = Service.valueOf(resultSet.getInt(2)); + String identifierResult = resultSet.getString(3); + Integer sizeResult = resultSet.getInt(4); + Integer status = resultSet.getInt(5); + Long created = resultSet.getLong(6); + Long updated = resultSet.getLong(7); + + // Optional metadata fields + String title = resultSet.getString(8); + String description = resultSet.getString(9); + String category = resultSet.getString(10); + String tag1 = resultSet.getString(11); + String tag2 = resultSet.getString(12); + String tag3 = resultSet.getString(13); + String tag4 = resultSet.getString(14); + String tag5 = resultSet.getString(15); + + if (Objects.equals(identifierResult, "default")) { + // Map "default" back to null. This is optional but probably less confusing than returning "default". + identifierResult = null; + } + + ArbitraryResourceData arbitraryResourceData = new ArbitraryResourceData(); + arbitraryResourceData.name = nameResult; + arbitraryResourceData.service = serviceResult; + arbitraryResourceData.identifier = identifierResult; + arbitraryResourceData.size = sizeResult; + arbitraryResourceData.setStatus(ArbitraryResourceStatus.Status.valueOf(status)); + arbitraryResourceData.created = created; + arbitraryResourceData.updated = (updated == 0) ? null : updated; + + ArbitraryResourceMetadata metadata = new ArbitraryResourceMetadata(); + metadata.setTitle(title); + metadata.setDescription(description); + metadata.setCategory(Category.uncategorizedValueOf(category)); + + List tags = new ArrayList<>(); + if (tag1 != null) tags.add(tag1); + if (tag2 != null) tags.add(tag2); + if (tag3 != null) tags.add(tag3); + if (tag4 != null) tags.add(tag4); + if (tag5 != null) tags.add(tag5); + metadata.setTags(!tags.isEmpty() ? tags : null); + + if (metadata.hasMetadata()) { + arbitraryResourceData.metadata = metadata; + } + + arbitraryResources.add(arbitraryResourceData); + } while (resultSet.next()); + + return arbitraryResources; + } catch (SQLException e) { + throw new DataException("Unable to fetch arbitrary resources from repository", e); + } + } + + @Override + public List getArbitraryResources(Service service, String identifier, List names, + boolean defaultResource, Boolean followedOnly, Boolean excludeBlocked, + Boolean includeMetadata, Boolean includeStatus, Integer limit, Integer offset, Boolean reverse) throws DataException { StringBuilder sql = new StringBuilder(512); List bindParams = new ArrayList<>(); - sql.append("SELECT name, service, identifier, MAX(size) AS max_size FROM ArbitraryTransactions WHERE 1=1"); + sql.append("SELECT name, service, identifier, size, status, created_when, updated_when, " + + "title, description, category, tag1, tag2, tag3, tag4, tag5 " + + "FROM ArbitraryResourcesCache " + + "LEFT JOIN ArbitraryMetadataCache USING (service, name, identifier) " + + "WHERE name IS NOT NULL"); if (service != null) { - sql.append(" AND service = "); - sql.append(service.value); + sql.append(" AND service = ?"); + bindParams.add(service.value); } if (defaultResource) { // Default resource requested - use NULL identifier - sql.append(" AND identifier IS NULL"); + sql.append(" AND identifier='default'"); } else { // Non-default resource requested @@ -351,7 +640,7 @@ public class HSQLDBArbitraryRepository implements ArbitraryRepository { } } - sql.append(" GROUP BY name, service, identifier ORDER BY name COLLATE SQL_TEXT_UCC_NO_PAD"); + sql.append(" ORDER BY name COLLATE SQL_TEXT_UCC_NO_PAD"); if (reverse != null && reverse) { sql.append(" DESC"); @@ -359,53 +648,122 @@ public class HSQLDBArbitraryRepository implements ArbitraryRepository { HSQLDBRepository.limitOffsetSql(sql, limit, offset); - List arbitraryResources = new ArrayList<>(); + List arbitraryResources = new ArrayList<>(); try (ResultSet resultSet = this.repository.checkedExecute(sql.toString(), bindParams.toArray())) { if (resultSet == null) - return null; + return arbitraryResources; do { String nameResult = resultSet.getString(1); Service serviceResult = Service.valueOf(resultSet.getInt(2)); String identifierResult = resultSet.getString(3); Integer sizeResult = resultSet.getInt(4); + Integer status = resultSet.getInt(5); + Long created = resultSet.getLong(6); + Long updated = resultSet.getLong(7); + + // Optional metadata fields + String title = resultSet.getString(8); + String description = resultSet.getString(9); + String category = resultSet.getString(10); + String tag1 = resultSet.getString(11); + String tag2 = resultSet.getString(12); + String tag3 = resultSet.getString(13); + String tag4 = resultSet.getString(14); + String tag5 = resultSet.getString(15); + + if (Objects.equals(identifierResult, "default")) { + // Map "default" back to null. This is optional but probably less confusing than returning "default". + identifierResult = null; + } - // We should filter out resources without names - if (nameResult == null) { - continue; + ArbitraryResourceData arbitraryResourceData = new ArbitraryResourceData(); + arbitraryResourceData.name = nameResult; + arbitraryResourceData.service = serviceResult; + arbitraryResourceData.identifier = identifierResult; + arbitraryResourceData.size = sizeResult; + arbitraryResourceData.created = created; + arbitraryResourceData.updated = (updated == 0) ? null : updated; + + if (includeStatus != null && includeStatus) { + arbitraryResourceData.setStatus(ArbitraryResourceStatus.Status.valueOf(status)); } - ArbitraryResourceInfo arbitraryResourceInfo = new ArbitraryResourceInfo(); - arbitraryResourceInfo.name = nameResult; - arbitraryResourceInfo.service = serviceResult; - arbitraryResourceInfo.identifier = identifierResult; - arbitraryResourceInfo.size = Longs.valueOf(sizeResult); + if (includeMetadata != null && includeMetadata) { + // TODO: we could avoid the join altogether + ArbitraryResourceMetadata metadata = new ArbitraryResourceMetadata(); + metadata.setTitle(title); + metadata.setDescription(description); + metadata.setCategory(Category.uncategorizedValueOf(category)); + + List tags = new ArrayList<>(); + if (tag1 != null) tags.add(tag1); + if (tag2 != null) tags.add(tag2); + if (tag3 != null) tags.add(tag3); + if (tag4 != null) tags.add(tag4); + if (tag5 != null) tags.add(tag5); + metadata.setTags(!tags.isEmpty() ? tags : null); + + if (metadata.hasMetadata()) { + arbitraryResourceData.metadata = metadata; + } + } - arbitraryResources.add(arbitraryResourceInfo); + arbitraryResources.add(arbitraryResourceData); } while (resultSet.next()); return arbitraryResources; } catch (SQLException e) { - throw new DataException("Unable to fetch arbitrary transactions from repository", e); + throw new DataException("Unable to fetch arbitrary resources from repository", e); } } @Override - public List searchArbitraryResources(Service service, String query, String identifier, List names, boolean prefixOnly, - List exactMatchNames, boolean defaultResource, Boolean followedOnly, Boolean excludeBlocked, - Integer limit, Integer offset, Boolean reverse) throws DataException { + public List searchArbitraryResources(Service service, String query, String identifier, List names, String title, String description, boolean prefixOnly, + List exactMatchNames, boolean defaultResource, SearchMode mode, Integer minLevel, Boolean followedOnly, Boolean excludeBlocked, + Boolean includeMetadata, Boolean includeStatus, Long before, Long after, Integer limit, Integer offset, Boolean reverse) throws DataException { StringBuilder sql = new StringBuilder(512); List bindParams = new ArrayList<>(); - sql.append("SELECT name, service, identifier, MAX(size) AS max_size, MIN(created_when) AS date_created, MAX(created_when) AS date_updated " + - "FROM ArbitraryTransactions " + - "JOIN Transactions USING (signature) " + - "WHERE 1=1"); + sql.append("SELECT name, service, identifier, size, status, created_when, updated_when, " + + "title, description, category, tag1, tag2, tag3, tag4, tag5 " + + "FROM ArbitraryResourcesCache"); + + // Default to "latest" mode + if (mode == null) { + mode = SearchMode.LATEST; + } + + switch (mode) { + case LATEST: + // Include latest item only for a name/service combination + sql.append(" JOIN (SELECT name, service, MAX(created_when) AS latest " + + "FROM ArbitraryResourcesCache GROUP BY name, service) LatestResources " + + "ON name=LatestResources.name AND service=LatestResources.service " + + "AND created_when=LatestResources.latest"); + break; + + case ALL: + break; + } + + if (minLevel != null) { + // Join tables necessary for level filter + sql.append(" JOIN Names USING (name) JOIN Accounts ON Accounts.account=Names.owner"); + } + + sql.append(" LEFT JOIN ArbitraryMetadataCache USING (service, name, identifier) WHERE name IS NOT NULL"); + + if (minLevel != null) { + // Add level filter + sql.append(" AND Accounts.level >= ?"); + bindParams.add(minLevel); + } if (service != null) { - sql.append(" AND service = "); - sql.append(service.value); + sql.append(" AND service = ?"); + bindParams.add(service.value); } // Handle general query matches @@ -417,14 +775,13 @@ public class HSQLDBArbitraryRepository implements ArbitraryRepository { if (defaultResource) { // Default resource requested - use NULL identifier and search name only - sql.append(" AND LCASE(name) LIKE ? AND identifier IS NULL"); + sql.append(" AND LCASE(name) LIKE ? AND identifier='default'"); bindParams.add(queryWildcard); } else { // Non-default resource requested // In this case we search the identifier as well as the name - sql.append(" AND (LCASE(name) LIKE ? OR LCASE(identifier) LIKE ?)"); - bindParams.add(queryWildcard); - bindParams.add(queryWildcard); + sql.append(" AND (LCASE(name) LIKE ? OR LCASE(identifier) LIKE ? OR LCASE(title) LIKE ? OR LCASE(description) LIKE ?)"); + bindParams.add(queryWildcard); bindParams.add(queryWildcard); bindParams.add(queryWildcard); bindParams.add(queryWildcard); } } @@ -436,6 +793,22 @@ public class HSQLDBArbitraryRepository implements ArbitraryRepository { bindParams.add(queryWildcard); } + // Handle title metadata matches + if (title != null) { + // Search anywhere in the title, unless "prefixOnly" has been requested + String queryWildcard = prefixOnly ? String.format("%s%%", title.toLowerCase()) : String.format("%%%s%%", title.toLowerCase()); + sql.append(" AND LCASE(title) LIKE ?"); + bindParams.add(queryWildcard); + } + + // Handle description metadata matches + if (description != null) { + // Search anywhere in the description, unless "prefixOnly" has been requested + String queryWildcard = prefixOnly ? String.format("%s%%", description.toLowerCase()) : String.format("%%%s%%", description.toLowerCase()); + sql.append(" AND LCASE(description) LIKE ?"); + bindParams.add(queryWildcard); + } + // Handle name searches if (names != null && !names.isEmpty()) { sql.append(" AND ("); @@ -462,6 +835,16 @@ public class HSQLDBArbitraryRepository implements ArbitraryRepository { sql.append(")"); } + // Timestamp range + if (before != null) { + sql.append(" AND created_when < ?"); + bindParams.add(before); + } + if (after != null) { + sql.append(" AND created_when > ?"); + bindParams.add(after); + } + // Handle "followed only" if (followedOnly != null && followedOnly) { List followedNames = ListUtils.followedNames(); @@ -492,7 +875,7 @@ public class HSQLDBArbitraryRepository implements ArbitraryRepository { } } - sql.append(" GROUP BY name, service, identifier ORDER BY date_created"); + sql.append(" ORDER BY created_when"); if (reverse != null && reverse) { sql.append(" DESC"); @@ -500,98 +883,182 @@ public class HSQLDBArbitraryRepository implements ArbitraryRepository { HSQLDBRepository.limitOffsetSql(sql, limit, offset); - List arbitraryResources = new ArrayList<>(); + List arbitraryResources = new ArrayList<>(); try (ResultSet resultSet = this.repository.checkedExecute(sql.toString(), bindParams.toArray())) { if (resultSet == null) - return null; + return arbitraryResources; do { String nameResult = resultSet.getString(1); Service serviceResult = Service.valueOf(resultSet.getInt(2)); String identifierResult = resultSet.getString(3); Integer sizeResult = resultSet.getInt(4); - long dateCreated = resultSet.getLong(5); - long dateUpdated = resultSet.getLong(6); + Integer status = resultSet.getInt(5); + Long created = resultSet.getLong(6); + Long updated = resultSet.getLong(7); + + // Optional metadata fields + String titleResult = resultSet.getString(8); + String descriptionResult = resultSet.getString(9); + String category = resultSet.getString(10); + String tag1 = resultSet.getString(11); + String tag2 = resultSet.getString(12); + String tag3 = resultSet.getString(13); + String tag4 = resultSet.getString(14); + String tag5 = resultSet.getString(15); + + if (Objects.equals(identifierResult, "default")) { + // Map "default" back to null. This is optional but probably less confusing than returning "default". + identifierResult = null; + } + + ArbitraryResourceData arbitraryResourceData = new ArbitraryResourceData(); + arbitraryResourceData.name = nameResult; + arbitraryResourceData.service = serviceResult; + arbitraryResourceData.identifier = identifierResult; + arbitraryResourceData.size = sizeResult; + arbitraryResourceData.created = created; + arbitraryResourceData.updated = (updated == 0) ? null : updated; - // We should filter out resources without names - if (nameResult == null) { - continue; + if (includeStatus != null && includeStatus) { + arbitraryResourceData.setStatus(ArbitraryResourceStatus.Status.valueOf(status)); } - ArbitraryResourceInfo arbitraryResourceInfo = new ArbitraryResourceInfo(); - arbitraryResourceInfo.name = nameResult; - arbitraryResourceInfo.service = serviceResult; - arbitraryResourceInfo.identifier = identifierResult; - arbitraryResourceInfo.size = Longs.valueOf(sizeResult); - arbitraryResourceInfo.created = dateCreated; - arbitraryResourceInfo.updated = dateUpdated; + if (includeMetadata != null && includeMetadata) { + // TODO: we could avoid the join altogether + ArbitraryResourceMetadata metadata = new ArbitraryResourceMetadata(); + metadata.setTitle(titleResult); + metadata.setDescription(descriptionResult); + metadata.setCategory(Category.uncategorizedValueOf(category)); + + List tags = new ArrayList<>(); + if (tag1 != null) tags.add(tag1); + if (tag2 != null) tags.add(tag2); + if (tag3 != null) tags.add(tag3); + if (tag4 != null) tags.add(tag4); + if (tag5 != null) tags.add(tag5); + metadata.setTags(!tags.isEmpty() ? tags : null); + + if (metadata.hasMetadata()) { + arbitraryResourceData.metadata = metadata; + } + } - arbitraryResources.add(arbitraryResourceInfo); + arbitraryResources.add(arbitraryResourceData); } while (resultSet.next()); return arbitraryResources; } catch (SQLException e) { - throw new DataException("Unable to fetch arbitrary transactions from repository", e); + throw new DataException("Unable to fetch arbitrary resources from repository", e); } } + + // Arbitrary resources cache save/load + @Override - public List getArbitraryResourceCreatorNames(Service service, String identifier, - boolean defaultResource, Integer limit, Integer offset, Boolean reverse) throws DataException { - StringBuilder sql = new StringBuilder(512); + public void save(ArbitraryResourceData arbitraryResourceData) throws DataException { + HSQLDBSaver saveHelper = new HSQLDBSaver("ArbitraryResourcesCache"); - sql.append("SELECT name FROM ArbitraryTransactions WHERE 1=1"); + // "status" isn't saved here as we update this field separately + saveHelper.bind("service", arbitraryResourceData.service.value).bind("name", arbitraryResourceData.name) + .bind("identifier", arbitraryResourceData.identifier).bind("size", arbitraryResourceData.size) + .bind("created_when", arbitraryResourceData.created).bind("updated_when", arbitraryResourceData.updated); - if (service != null) { - sql.append(" AND service = "); - sql.append(service.value); + try { + saveHelper.execute(this.repository); + } catch (SQLException e) { + throw new DataException("Unable to save arbitrary resource info into repository", e); } + } - if (defaultResource) { - // Default resource requested - use NULL identifier - // The AND ? IS NULL AND ? IS NULL is a hack to make use of the identifier params in checkedExecute() - identifier = null; - sql.append(" AND (identifier IS NULL AND ? IS NULL AND ? IS NULL)"); + @Override + public void setStatus(ArbitraryResourceData arbitraryResourceData, ArbitraryResourceStatus.Status status) throws DataException { + if (status == null) { + return; } - else { - // Non-default resource requested - // Use an exact match identifier, or list all if supplied identifier is null - sql.append(" AND (identifier = ? OR (? IS NULL))"); + String updateSql = "UPDATE ArbitraryResourcesCache SET status = ? WHERE service = ? AND LCASE(name) = ? AND LCASE(identifier) = ?"; + + try { + this.repository.executeCheckedUpdate(updateSql, status.value, arbitraryResourceData.service.value, arbitraryResourceData.name.toLowerCase(), arbitraryResourceData.identifier.toLowerCase()); + } catch (SQLException e) { + throw new DataException("Unable to set status for arbitrary resource", e); } + } - sql.append(" GROUP BY name ORDER BY name COLLATE SQL_TEXT_UCC_NO_PAD"); + @Override + public void delete(ArbitraryResourceData arbitraryResourceData) throws DataException { + // NOTE: arbitrary metadata are deleted automatically by the database thanks to "ON DELETE CASCADE" + // in ArbitraryMetadataCache' FOREIGN KEY definition. + try { + this.repository.delete("ArbitraryResourcesCache", "service = ? AND name = ? AND identifier = ?", + arbitraryResourceData.service.value, arbitraryResourceData.name, arbitraryResourceData.identifier); - if (reverse != null && reverse) { - sql.append(" DESC"); + } catch (SQLException e) { + throw new DataException("Unable to delete account from repository", e); } + } - HSQLDBRepository.limitOffsetSql(sql, limit, offset); - List arbitraryResources = new ArrayList<>(); + /* Arbitrary metadata cache */ - try (ResultSet resultSet = this.repository.checkedExecute(sql.toString(), identifier, identifier)) { - if (resultSet == null) - return null; + @Override + public void save(ArbitraryResourceMetadata metadata) throws DataException { + HSQLDBSaver saveHelper = new HSQLDBSaver("ArbitraryMetadataCache"); - do { - String name = resultSet.getString(1); + ArbitraryResourceData arbitraryResourceData = metadata.getArbitraryResourceData(); + if (arbitraryResourceData == null) { + throw new DataException("Can't save metadata without a referenced resource"); + } - // We should filter out resources without names - if (name == null) { - continue; - } + // Trim metadata values if they are too long to fit in the db + String title = ArbitraryDataTransactionMetadata.limitTitle(metadata.getTitle()); + String description = ArbitraryDataTransactionMetadata.limitDescription(metadata.getDescription()); + List tags = ArbitraryDataTransactionMetadata.limitTags(metadata.getTags()); + + String tag1 = null; + String tag2 = null; + String tag3 = null; + String tag4 = null; + String tag5 = null; + + if (tags != null) { + if (tags.size() > 0) tag1 = tags.get(0); + if (tags.size() > 1) tag2 = tags.get(1); + if (tags.size() > 2) tag3 = tags.get(2); + if (tags.size() > 3) tag4 = tags.get(3); + if (tags.size() > 4) tag5 = tags.get(4); + } - ArbitraryResourceNameInfo arbitraryResourceNameInfo = new ArbitraryResourceNameInfo(); - arbitraryResourceNameInfo.name = name; + String category = metadata.getCategory() != null ? metadata.getCategory().toString() : null; - arbitraryResources.add(arbitraryResourceNameInfo); - } while (resultSet.next()); + saveHelper.bind("service", arbitraryResourceData.service.value).bind("name", arbitraryResourceData.name) + .bind("identifier", arbitraryResourceData.identifier).bind("title", title) + .bind("description", description).bind("category", category) + .bind("tag1", tag1).bind("tag2", tag2).bind("tag3", tag3).bind("tag4", tag4) + .bind("tag5", tag5); - return arbitraryResources; + try { + saveHelper.execute(this.repository); } catch (SQLException e) { - throw new DataException("Unable to fetch arbitrary transactions from repository", e); + throw new DataException("Unable to save arbitrary metadata into repository", e); } } + @Override + public void delete(ArbitraryResourceMetadata metadata) throws DataException { + ArbitraryResourceData arbitraryResourceData = metadata.getArbitraryResourceData(); + if (arbitraryResourceData == null) { + throw new DataException("Can't delete metadata without a referenced resource"); + } + + try { + this.repository.delete("ArbitraryMetadataCache", "service = ? AND name = ? AND identifier = ?", + arbitraryResourceData.service.value, arbitraryResourceData.name, arbitraryResourceData.identifier); + + } catch (SQLException e) { + throw new DataException("Unable to delete account from repository", e); + } + } } diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBAssetRepository.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBAssetRepository.java index 6610a4f3..6e68cda8 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBAssetRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBAssetRepository.java @@ -1,11 +1,5 @@ package org.qortal.repository.hsqldb; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - import org.qortal.data.asset.AssetData; import org.qortal.data.asset.OrderData; import org.qortal.data.asset.RecentTradeData; @@ -13,6 +7,12 @@ import org.qortal.data.asset.TradeData; import org.qortal.repository.AssetRepository; import org.qortal.repository.DataException; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + public class HSQLDBAssetRepository implements AssetRepository { protected HSQLDBRepository repository; diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBBlockRepository.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBBlockRepository.java index f38d549c..f592a79d 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBBlockRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBBlockRepository.java @@ -1,21 +1,20 @@ package org.qortal.repository.hsqldb; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - import org.qortal.api.model.BlockSignerSummary; import org.qortal.data.block.BlockData; import org.qortal.data.block.BlockSummaryData; import org.qortal.data.block.BlockTransactionData; -import org.qortal.data.block.BlockArchiveData; import org.qortal.data.transaction.TransactionData; import org.qortal.repository.BlockRepository; import org.qortal.repository.DataException; import org.qortal.repository.TransactionRepository; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + public class HSQLDBBlockRepository implements BlockRepository { private static final String BLOCK_DB_COLUMNS = "version, reference, transaction_count, total_fees, " diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBChatRepository.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBChatRepository.java index 9e310e78..6bc4fa49 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBChatRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBChatRepository.java @@ -1,10 +1,5 @@ package org.qortal.repository.hsqldb; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; - import org.qortal.data.chat.ActiveChats; import org.qortal.data.chat.ActiveChats.DirectChat; import org.qortal.data.chat.ActiveChats.GroupChat; @@ -14,6 +9,11 @@ import org.qortal.repository.ChatRepository; import org.qortal.repository.DataException; import org.qortal.transaction.Transaction.TransactionType; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + import static org.qortal.data.chat.ChatMessage.Encoding; public class HSQLDBChatRepository implements ChatRepository { diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBCrossChainRepository.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBCrossChainRepository.java index 29f2994c..6305a468 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBCrossChainRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBCrossChainRepository.java @@ -1,15 +1,15 @@ package org.qortal.repository.hsqldb; +import org.qortal.data.crosschain.TradeBotData; +import org.qortal.repository.CrossChainRepository; +import org.qortal.repository.DataException; + import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import org.qortal.data.crosschain.TradeBotData; -import org.qortal.repository.CrossChainRepository; -import org.qortal.repository.DataException; - public class HSQLDBCrossChainRepository implements CrossChainRepository { protected HSQLDBRepository repository; diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBDatabaseUpdates.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBDatabaseUpdates.java index 8763961d..829f7aab 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBDatabaseUpdates.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBDatabaseUpdates.java @@ -1,5 +1,11 @@ package org.qortal.repository.hsqldb; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.qortal.controller.Controller; +import org.qortal.controller.tradebot.BitcoinACCTv1TradeBot; +import org.qortal.gui.SplashFrame; + import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; @@ -7,12 +13,6 @@ import java.sql.Statement; import java.util.Arrays; import java.util.stream.Collectors; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.qortal.controller.Controller; -import org.qortal.controller.tradebot.BitcoinACCTv1TradeBot; -import org.qortal.gui.SplashFrame; - public class HSQLDBDatabaseUpdates { private static final Logger LOGGER = LogManager.getLogger(HSQLDBDatabaseUpdates.class); @@ -901,7 +901,7 @@ public class HSQLDBDatabaseUpdates { case 37: // ARBITRARY transaction updates for off-chain data storage - // We may want to use a nonce rather than a transaction fee on the data chain + // We may want to use a nonce rather than a transaction fee for ARBITRARY transactions stmt.execute("ALTER TABLE ArbitraryTransactions ADD nonce INT NOT NULL DEFAULT 0"); // We need to know the total size of the data file(s) associated with each transaction stmt.execute("ALTER TABLE ArbitraryTransactions ADD size INT NOT NULL DEFAULT 0"); @@ -1004,6 +1004,49 @@ public class HSQLDBDatabaseUpdates { stmt.execute("CREATE INDEX TransactionHeightSequenceIndex on Transactions (block_height, block_sequence)"); break; + case 48: + // We need to keep a local cache of arbitrary resources (items published to QDN), for easier searching. + // IMPORTANT: this is a cache of the last known state of a resource (both confirmed + // and valid unconfirmed). It cannot be assumed that all nodes will contain the same state at a + // given block height, and therefore must NOT be used for any consensus/validation code. It is + // simply a cache, to avoid having to query the raw transactions and the metadata in flat files + // when serving API requests. + // ARBITRARY transactions aren't really suitable for updating resources in the same way we'd update + // names or groups for instance, as there is no distinction between creations and updates, and metadata + // is off-chain. Plus, QDN allows (valid) unconfirmed data to be queried and viewed. It is very + // easy to keep a cache of the latest transaction's data, but anything more than that would need + // considerable thought (and most likely a rewrite). + + stmt.execute("CREATE TABLE ArbitraryResourcesCache (service SMALLINT NOT NULL, " + + "name RegisteredName NOT NULL, identifier VARCHAR(64), size INT NOT NULL, " + + "status INTEGER DEFAULT 1, created_when EpochMillis NOT NULL, updated_when EpochMillis, " + + "PRIMARY KEY (service, name, identifier))"); + // For finding resources by service. + stmt.execute("CREATE INDEX ArbitraryResourcesServiceIndex ON ArbitraryResourcesCache (service)"); + // For finding resources by name. + stmt.execute("CREATE INDEX ArbitraryResourcesNameIndex ON ArbitraryResourcesCache (name)"); + // For finding resources by identifier. + stmt.execute("CREATE INDEX ArbitraryResourcesIdentifierIndex ON ArbitraryResourcesCache (identifier)"); + // For finding resources by creation date (the default column when ordering). + stmt.execute("CREATE INDEX ArbitraryResourcesCreatedIndex ON ArbitraryResourcesCache (created_when)"); + // Use a separate table space as this table will be very large. + stmt.execute("SET TABLE ArbitraryResourcesCache NEW SPACE"); + + stmt.execute("CREATE TABLE ArbitraryMetadataCache (service SMALLINT NOT NULL, " + + "name RegisteredName NOT NULL, identifier VARCHAR(64), " + + "title VARCHAR(80), description VARCHAR(240), category VARCHAR(64), " + + "tag1 VARCHAR(20), tag2 VARCHAR(20), tag3 VARCHAR(20), tag4 VARCHAR(20), tag5 VARCHAR(20), " + + "PRIMARY KEY (service, name, identifier), FOREIGN KEY (service, name, identifier) " + + "REFERENCES ArbitraryResourcesCache (service, name, identifier) ON DELETE CASCADE)"); + // For finding metadata by title. + stmt.execute("CREATE INDEX ArbitraryMetadataTitleIndex ON ArbitraryMetadataCache (title)"); + + // For finding arbitrary transactions by service + stmt.execute("CREATE INDEX ArbitraryServiceIndex ON ArbitraryTransactions (service)"); + // For finding arbitrary transactions by identifier + stmt.execute("CREATE INDEX ArbitraryIdentifierIndex ON ArbitraryTransactions (identifier)"); + break; + default: // nothing to do return false; @@ -1014,4 +1057,4 @@ public class HSQLDBDatabaseUpdates { LOGGER.info(() -> String.format("HSQLDB repository updated to version %d", databaseVersion + 1)); return true; } -} \ No newline at end of file +} diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBGroupRepository.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBGroupRepository.java index b1cd40a0..9c7521fc 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBGroupRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBGroupRepository.java @@ -1,20 +1,15 @@ package org.qortal.repository.hsqldb; +import org.qortal.data.group.*; +import org.qortal.group.Group.ApprovalThreshold; +import org.qortal.repository.DataException; +import org.qortal.repository.GroupRepository; + import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -import org.qortal.data.group.GroupAdminData; -import org.qortal.data.group.GroupBanData; -import org.qortal.data.group.GroupData; -import org.qortal.data.group.GroupInviteData; -import org.qortal.data.group.GroupJoinRequestData; -import org.qortal.data.group.GroupMemberData; -import org.qortal.group.Group.ApprovalThreshold; -import org.qortal.repository.DataException; -import org.qortal.repository.GroupRepository; - public class HSQLDBGroupRepository implements GroupRepository { protected HSQLDBRepository repository; diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBMessageRepository.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBMessageRepository.java index f31c5cd8..7a0e9677 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBMessageRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBMessageRepository.java @@ -1,16 +1,16 @@ package org.qortal.repository.hsqldb; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; - import org.qortal.data.transaction.MessageTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.repository.DataException; import org.qortal.repository.MessageRepository; import org.qortal.transaction.Transaction.TransactionType; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + public class HSQLDBMessageRepository implements MessageRepository { protected HSQLDBRepository repository; diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBNameRepository.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBNameRepository.java index 2fefcf8b..06e41663 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBNameRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBNameRepository.java @@ -1,14 +1,14 @@ package org.qortal.repository.hsqldb; +import org.qortal.data.naming.NameData; +import org.qortal.repository.DataException; +import org.qortal.repository.NameRepository; + import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -import org.qortal.data.naming.NameData; -import org.qortal.repository.DataException; -import org.qortal.repository.NameRepository; - public class HSQLDBNameRepository implements NameRepository { protected HSQLDBRepository repository; diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBNetworkRepository.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBNetworkRepository.java index 9f865160..cc9ad068 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBNetworkRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBNetworkRepository.java @@ -1,15 +1,15 @@ package org.qortal.repository.hsqldb; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; - import org.qortal.data.network.PeerData; import org.qortal.network.PeerAddress; import org.qortal.repository.DataException; import org.qortal.repository.NetworkRepository; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + public class HSQLDBNetworkRepository implements NetworkRepository { protected HSQLDBRepository repository; diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBRepository.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBRepository.java index 6ec30e20..4a41ed68 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBRepository.java @@ -1,5 +1,14 @@ package org.qortal.repository.hsqldb; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.qortal.crypto.Crypto; +import org.qortal.globalization.Translator; +import org.qortal.gui.SysTray; +import org.qortal.repository.*; +import org.qortal.repository.hsqldb.transaction.HSQLDBTransactionRepository; +import org.qortal.settings.Settings; + import java.awt.TrayIcon.MessageType; import java.io.File; import java.io.IOException; @@ -8,28 +17,13 @@ import java.nio.file.Files; import java.nio.file.NoSuchFileException; import java.nio.file.Path; import java.nio.file.Paths; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Savepoint; -import java.sql.Statement; +import java.sql.*; import java.util.*; import java.util.concurrent.TimeoutException; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Stream; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.qortal.crypto.Crypto; -import org.qortal.globalization.Translator; -import org.qortal.gui.SysTray; -import org.qortal.repository.*; -import org.qortal.repository.hsqldb.transaction.HSQLDBTransactionRepository; -import org.qortal.settings.Settings; - public class HSQLDBRepository implements Repository { private static final Logger LOGGER = LogManager.getLogger(HSQLDBRepository.class); diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBRepositoryFactory.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBRepositoryFactory.java index 64f6be8c..fdaf41a2 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBRepositoryFactory.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBRepositoryFactory.java @@ -1,11 +1,5 @@ package org.qortal.repository.hsqldb; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.Properties; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.hsqldb.HsqlException; @@ -16,6 +10,12 @@ import org.qortal.repository.Repository; import org.qortal.repository.RepositoryFactory; import org.qortal.settings.Settings; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.Properties; + public class HSQLDBRepositoryFactory implements RepositoryFactory { private static final Logger LOGGER = LogManager.getLogger(HSQLDBRepositoryFactory.class); diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBVotingRepository.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBVotingRepository.java index cc33426b..9bae8ec5 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBVotingRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBVotingRepository.java @@ -1,16 +1,16 @@ package org.qortal.repository.hsqldb; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; - import org.qortal.data.voting.PollData; import org.qortal.data.voting.PollOptionData; import org.qortal.data.voting.VoteOnPollData; import org.qortal.repository.DataException; import org.qortal.repository.VotingRepository; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + public class HSQLDBVotingRepository implements VotingRepository { protected HSQLDBRepository repository; diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBAccountFlagsTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBAccountFlagsTransactionRepository.java index 9d9b8800..f6c6c82a 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBAccountFlagsTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBAccountFlagsTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.AccountFlagsTransactionData; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBAccountFlagsTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBAccountFlagsTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBAccountLevelTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBAccountLevelTransactionRepository.java index c4aa37de..3f2b3247 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBAccountLevelTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBAccountLevelTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.AccountLevelTransactionData; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBAccountLevelTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBAccountLevelTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBAddGroupAdminTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBAddGroupAdminTransactionRepository.java index 686308c1..56116da8 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBAddGroupAdminTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBAddGroupAdminTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.AddGroupAdminTransactionData; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBAddGroupAdminTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBAddGroupAdminTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBArbitraryTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBArbitraryTransactionRepository.java index 57b75a29..c9737520 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBArbitraryTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBArbitraryTransactionRepository.java @@ -1,19 +1,18 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.List; - -import org.qortal.arbitrary.misc.Service; import org.qortal.data.PaymentData; import org.qortal.data.transaction.ArbitraryTransactionData; +import org.qortal.data.transaction.ArbitraryTransactionData.DataType; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.TransactionData; -import org.qortal.data.transaction.ArbitraryTransactionData.DataType; import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; + public class HSQLDBArbitraryTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBArbitraryTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBAtTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBAtTransactionRepository.java index a816ec60..3771a0f1 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBAtTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBAtTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.ATTransactionData; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBAtTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBAtTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBBuyNameTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBBuyNameTransactionRepository.java index 8ae4ffa2..724d93dd 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBBuyNameTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBBuyNameTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.BuyNameTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBBuyNameTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBBuyNameTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCancelAssetOrderTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCancelAssetOrderTransactionRepository.java index d49e83ba..1adb9db3 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCancelAssetOrderTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCancelAssetOrderTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.CancelAssetOrderTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBCancelAssetOrderTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBCancelAssetOrderTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCancelGroupBanTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCancelGroupBanTransactionRepository.java index 76524b05..b94df99f 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCancelGroupBanTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCancelGroupBanTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.CancelGroupBanTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBCancelGroupBanTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBCancelGroupBanTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCancelGroupInviteTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCancelGroupInviteTransactionRepository.java index d61fa79b..cc17c18c 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCancelGroupInviteTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCancelGroupInviteTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.CancelGroupInviteTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBCancelGroupInviteTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBCancelGroupInviteTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCancelSellNameTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCancelSellNameTransactionRepository.java index fc8e0bb3..925b18cc 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCancelSellNameTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCancelSellNameTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.CancelSellNameTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBCancelSellNameTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBCancelSellNameTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBChatTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBChatTransactionRepository.java index 79e798a9..aea22442 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBChatTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBChatTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.ChatTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBChatTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBChatTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCreateAssetOrderTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCreateAssetOrderTransactionRepository.java index 7cea87bb..0609c82f 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCreateAssetOrderTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCreateAssetOrderTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.CreateAssetOrderTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBCreateAssetOrderTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBCreateAssetOrderTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCreateGroupTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCreateGroupTransactionRepository.java index 583b9fa6..73698aa4 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCreateGroupTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCreateGroupTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.CreateGroupTransactionData; import org.qortal.data.transaction.TransactionData; @@ -11,6 +8,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBCreateGroupTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBCreateGroupTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCreatePollTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCreatePollTransactionRepository.java index 28163ab9..e2675ac1 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCreatePollTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBCreatePollTransactionRepository.java @@ -1,10 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.CreatePollTransactionData; import org.qortal.data.transaction.TransactionData; @@ -13,6 +8,11 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + public class HSQLDBCreatePollTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBCreatePollTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBDeployAtTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBDeployAtTransactionRepository.java index 6c3b60c2..e5695483 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBDeployAtTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBDeployAtTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.DeployAtTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBDeployAtTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBDeployAtTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBGenesisTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBGenesisTransactionRepository.java index d0a65df0..1f4ac7f5 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBGenesisTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBGenesisTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.GenesisTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBGenesisTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBGenesisTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBGroupApprovalTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBGroupApprovalTransactionRepository.java index c8afed3d..0f8953a3 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBGroupApprovalTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBGroupApprovalTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.GroupApprovalTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBGroupApprovalTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBGroupApprovalTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBGroupBanTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBGroupBanTransactionRepository.java index ae3fef43..386e1425 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBGroupBanTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBGroupBanTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.GroupBanTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBGroupBanTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBGroupBanTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBGroupInviteTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBGroupInviteTransactionRepository.java index 64ec5c64..97279c0e 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBGroupInviteTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBGroupInviteTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.GroupInviteTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBGroupInviteTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBGroupInviteTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBGroupKickTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBGroupKickTransactionRepository.java index 9dd3c98d..d84f3ad5 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBGroupKickTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBGroupKickTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.GroupKickTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBGroupKickTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBGroupKickTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBIssueAssetTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBIssueAssetTransactionRepository.java index 2386ef95..37ed9a3a 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBIssueAssetTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBIssueAssetTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.IssueAssetTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBIssueAssetTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBIssueAssetTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBJoinGroupTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBJoinGroupTransactionRepository.java index 7f9ce13d..b46fe7b6 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBJoinGroupTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBJoinGroupTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.JoinGroupTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBJoinGroupTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBJoinGroupTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBLeaveGroupTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBLeaveGroupTransactionRepository.java index c5aa3b00..cca83f88 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBLeaveGroupTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBLeaveGroupTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.LeaveGroupTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBLeaveGroupTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBLeaveGroupTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBMessageTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBMessageTransactionRepository.java index 567075e3..515d36a8 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBMessageTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBMessageTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.MessageTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBMessageTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBMessageTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBMultiPaymentTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBMultiPaymentTransactionRepository.java index 69cd9c49..1b889248 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBMultiPaymentTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBMultiPaymentTransactionRepository.java @@ -1,9 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.List; - import org.qortal.data.PaymentData; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.MultiPaymentTransactionData; @@ -12,6 +8,10 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; + public class HSQLDBMultiPaymentTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBMultiPaymentTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBPaymentTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBPaymentTransactionRepository.java index a4942e3f..d9c660ef 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBPaymentTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBPaymentTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.PaymentTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBPaymentTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBPaymentTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBPresenceTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBPresenceTransactionRepository.java index 309ffcad..c72c2ae4 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBPresenceTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBPresenceTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.PresenceTransactionData; import org.qortal.data.transaction.TransactionData; @@ -11,6 +8,9 @@ import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; import org.qortal.transaction.PresenceTransaction.PresenceType; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBPresenceTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBPresenceTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBPublicizeTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBPublicizeTransactionRepository.java index d67c61b4..53af733f 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBPublicizeTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBPublicizeTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.PublicizeTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBPublicizeTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBPublicizeTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBRegisterNameTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBRegisterNameTransactionRepository.java index 82da794f..5b81ad72 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBRegisterNameTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBRegisterNameTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.RegisterNameTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBRegisterNameTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBRegisterNameTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBRemoveGroupAdminTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBRemoveGroupAdminTransactionRepository.java index 09b6892d..5a440b22 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBRemoveGroupAdminTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBRemoveGroupAdminTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.RemoveGroupAdminTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBRemoveGroupAdminTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBRemoveGroupAdminTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBRewardShareTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBRewardShareTransactionRepository.java index 81a567ea..7437fd51 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBRewardShareTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBRewardShareTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.RewardShareTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBRewardShareTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBRewardShareTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBSellNameTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBSellNameTransactionRepository.java index f5fa3681..ae4a07dd 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBSellNameTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBSellNameTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.SellNameTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBSellNameTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBSellNameTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBSetGroupTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBSetGroupTransactionRepository.java index f3be4c04..a76361a7 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBSetGroupTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBSetGroupTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.SetGroupTransactionData; import org.qortal.data.transaction.TransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBSetGroupTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBSetGroupTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBTransactionRepository.java index 60b4e803..5b41a85d 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBTransactionRepository.java @@ -1,14 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import static org.qortal.transaction.Transaction.TransactionType.*; - -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.*; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.qortal.api.resource.TransactionsResource.ConfirmationStatus; @@ -28,6 +19,15 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.utils.Base58; import org.qortal.utils.Unicode; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.*; + +import static org.qortal.transaction.Transaction.TransactionType.*; + public class HSQLDBTransactionRepository implements TransactionRepository { private static final Logger LOGGER = LogManager.getLogger(HSQLDBTransactionRepository.class); diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBTransferAssetTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBTransferAssetTransactionRepository.java index 5c0a23d0..95db5163 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBTransferAssetTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBTransferAssetTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.data.transaction.TransferAssetTransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBTransferAssetTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBTransferAssetTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBTransferPrivsTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBTransferPrivsTransactionRepository.java index ae2ab9bb..832af73c 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBTransferPrivsTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBTransferPrivsTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.data.transaction.TransferPrivsTransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBTransferPrivsTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBTransferPrivsTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBUpdateAssetTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBUpdateAssetTransactionRepository.java index 8e0b1975..9d56f280 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBUpdateAssetTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBUpdateAssetTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.data.transaction.UpdateAssetTransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBUpdateAssetTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBUpdateAssetTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBUpdateGroupTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBUpdateGroupTransactionRepository.java index e2c2e72a..ae584171 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBUpdateGroupTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBUpdateGroupTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.data.transaction.UpdateGroupTransactionData; @@ -11,6 +8,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBUpdateGroupTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBUpdateGroupTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBUpdateNameTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBUpdateNameTransactionRepository.java index 447ab5c6..f39412f0 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBUpdateNameTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBUpdateNameTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.data.transaction.UpdateNameTransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBUpdateNameTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBUpdateNameTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBVoteOnPollTransactionRepository.java b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBVoteOnPollTransactionRepository.java index 0d260904..8ef6397d 100644 --- a/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBVoteOnPollTransactionRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/transaction/HSQLDBVoteOnPollTransactionRepository.java @@ -1,8 +1,5 @@ package org.qortal.repository.hsqldb.transaction; -import java.sql.ResultSet; -import java.sql.SQLException; - import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.data.transaction.VoteOnPollTransactionData; @@ -10,6 +7,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.repository.hsqldb.HSQLDBSaver; +import java.sql.ResultSet; +import java.sql.SQLException; + public class HSQLDBVoteOnPollTransactionRepository extends HSQLDBTransactionRepository { public HSQLDBVoteOnPollTransactionRepository(HSQLDBRepository repository) { diff --git a/src/main/java/org/qortal/settings/Settings.java b/src/main/java/org/qortal/settings/Settings.java index babef614..fc8ba4ce 100644 --- a/src/main/java/org/qortal/settings/Settings.java +++ b/src/main/java/org/qortal/settings/Settings.java @@ -1,37 +1,32 @@ package org.qortal.settings; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; -import java.io.Reader; -import java.nio.file.Paths; -import java.util.*; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.UnmarshalException; -import javax.xml.bind.Unmarshaller; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.transform.stream.StreamSource; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.eclipse.persistence.exceptions.XMLMarshalException; import org.eclipse.persistence.jaxb.JAXBContextFactory; import org.eclipse.persistence.jaxb.UnmarshallerProperties; import org.qortal.block.BlockChain; -import org.qortal.controller.arbitrary.ArbitraryDataStorageManager.*; +import org.qortal.controller.arbitrary.ArbitraryDataStorageManager.StoragePolicy; import org.qortal.crosschain.Bitcoin.BitcoinNet; -import org.qortal.crosschain.Litecoin.LitecoinNet; -import org.qortal.crosschain.Dogecoin.DogecoinNet; import org.qortal.crosschain.Digibyte.DigibyteNet; -import org.qortal.crosschain.Ravencoin.RavencoinNet; +import org.qortal.crosschain.Dogecoin.DogecoinNet; +import org.qortal.crosschain.Litecoin.LitecoinNet; import org.qortal.crosschain.PirateChain.PirateChainNet; +import org.qortal.crosschain.Ravencoin.RavencoinNet; import org.qortal.network.message.MessageType; import org.qortal.utils.EnumUtils; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.UnmarshalException; +import javax.xml.bind.Unmarshaller; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.transform.stream.StreamSource; +import java.io.*; +import java.nio.file.Paths; +import java.util.*; + // All properties to be converted to JSON via JAXB @XmlAccessorType(XmlAccessType.FIELD) public class Settings { diff --git a/src/main/java/org/qortal/transaction/AccountFlagsTransaction.java b/src/main/java/org/qortal/transaction/AccountFlagsTransaction.java index 4362b1a9..47500f9a 100644 --- a/src/main/java/org/qortal/transaction/AccountFlagsTransaction.java +++ b/src/main/java/org/qortal/transaction/AccountFlagsTransaction.java @@ -1,14 +1,14 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - import org.qortal.account.Account; import org.qortal.data.transaction.AccountFlagsTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.Collections; +import java.util.List; + public class AccountFlagsTransaction extends Transaction { // Properties diff --git a/src/main/java/org/qortal/transaction/AccountLevelTransaction.java b/src/main/java/org/qortal/transaction/AccountLevelTransaction.java index 18324c34..833e63ad 100644 --- a/src/main/java/org/qortal/transaction/AccountLevelTransaction.java +++ b/src/main/java/org/qortal/transaction/AccountLevelTransaction.java @@ -1,8 +1,5 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - import org.qortal.account.Account; import org.qortal.block.BlockChain; import org.qortal.data.transaction.AccountLevelTransactionData; @@ -10,6 +7,9 @@ import org.qortal.data.transaction.TransactionData; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.Collections; +import java.util.List; + public class AccountLevelTransaction extends Transaction { // Properties diff --git a/src/main/java/org/qortal/transaction/AddGroupAdminTransaction.java b/src/main/java/org/qortal/transaction/AddGroupAdminTransaction.java index f38638c5..7ee0e785 100644 --- a/src/main/java/org/qortal/transaction/AddGroupAdminTransaction.java +++ b/src/main/java/org/qortal/transaction/AddGroupAdminTransaction.java @@ -1,9 +1,5 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; -import java.util.Objects; - import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.crypto.Crypto; @@ -13,6 +9,10 @@ import org.qortal.group.Group; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.Collections; +import java.util.List; +import java.util.Objects; + public class AddGroupAdminTransaction extends Transaction { // Properties diff --git a/src/main/java/org/qortal/transaction/ArbitraryTransaction.java b/src/main/java/org/qortal/transaction/ArbitraryTransaction.java index a3f4827b..1a9f888b 100644 --- a/src/main/java/org/qortal/transaction/ArbitraryTransaction.java +++ b/src/main/java/org/qortal/transaction/ArbitraryTransaction.java @@ -1,23 +1,28 @@ package org.qortal.transaction; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.qortal.account.Account; +import org.qortal.arbitrary.ArbitraryDataFile; +import org.qortal.arbitrary.ArbitraryDataResource; +import org.qortal.arbitrary.metadata.ArbitraryDataTransactionMetadata; +import org.qortal.arbitrary.misc.Service; import org.qortal.block.BlockChain; import org.qortal.controller.arbitrary.ArbitraryDataManager; import org.qortal.controller.repository.NamesDatabaseIntegrityCheck; import org.qortal.crypto.Crypto; import org.qortal.crypto.MemoryPoW; import org.qortal.data.PaymentData; +import org.qortal.data.arbitrary.ArbitraryResourceData; +import org.qortal.data.arbitrary.ArbitraryResourceMetadata; +import org.qortal.data.arbitrary.ArbitraryResourceStatus; import org.qortal.data.naming.NameData; import org.qortal.data.transaction.ArbitraryTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.payment.Payment; import org.qortal.repository.DataException; import org.qortal.repository.Repository; -import org.qortal.arbitrary.ArbitraryDataFile; +import org.qortal.repository.RepositoryManager; import org.qortal.transform.TransformationException; import org.qortal.transform.Transformer; import org.qortal.transform.transaction.ArbitraryTransactionTransformer; @@ -25,8 +30,15 @@ import org.qortal.transform.transaction.TransactionTransformer; import org.qortal.utils.ArbitraryTransactionUtils; import org.qortal.utils.NTP; +import java.io.IOException; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + public class ArbitraryTransaction extends Transaction { + private static final Logger LOGGER = LogManager.getLogger(ArbitraryTransaction.class); + // Properties private ArbitraryTransactionData arbitraryTransactionData; @@ -250,14 +262,8 @@ public class ArbitraryTransaction extends Transaction { // We may need to move files from the misc_ folder ArbitraryTransactionUtils.checkAndRelocateMiscFiles(arbitraryTransactionData); - // If the data is local, we need to perform a few actions - if (isDataLocal()) { - - // We have the data for this transaction, so invalidate the cache - if (arbitraryTransactionData.getName() != null) { - ArbitraryDataManager.getInstance().invalidateCache(arbitraryTransactionData); - } - } + // Update caches + updateCaches(); } @Override @@ -277,6 +283,35 @@ public class ArbitraryTransaction extends Transaction { public void process() throws DataException { // Wrap and delegate payment processing to Payment class. new Payment(this.repository).process(arbitraryTransactionData.getSenderPublicKey(), arbitraryTransactionData.getPayments()); + + // Update caches + this.updateCaches(); + } + + private void updateCaches() { + // Very important to use a separate repository instance from the one being used for validation/processing + try (final Repository repository = RepositoryManager.getRepository()) { + // If the data is local, we need to perform a few actions + if (isDataLocal()) { + + // We have the data for this transaction, so invalidate the file cache + if (arbitraryTransactionData.getName() != null) { + ArbitraryDataManager.getInstance().invalidateCache(arbitraryTransactionData); + } + } + + // Add/update arbitrary resource caches, but don't update the status as this involves time-consuming + // disk reads, and is more prone to failure. The status will be updated on metadata retrieval, or when + // accessing the resource. + this.updateArbitraryResourceCache(repository); + this.updateArbitraryMetadataCache(repository); + + repository.saveChanges(); + + } catch (Exception e) { + // Log and ignore all exceptions. The cache is updated from other places too, and can be rebuilt if needed. + LOGGER.info("Unable to update arbitrary caches", e); + } } @Override @@ -314,4 +349,166 @@ public class ArbitraryTransaction extends Transaction { return null; } + /** + * Update the arbitrary resources cache. + * This finds the latest transaction and replaces the + * majority of the data in the cache. The current + * transaction is used for the created time, + * if it has a lower timestamp than the existing value. + * It's also used to identify the correct + * service/name/identifier combination. + * + * @throws DataException + */ + public void updateArbitraryResourceCache(Repository repository) throws DataException { + // Don't cache resources without a name (such as auto updates) + if (arbitraryTransactionData.getName() == null) { + return; + } + + Service service = arbitraryTransactionData.getService(); + String name = arbitraryTransactionData.getName(); + String identifier = arbitraryTransactionData.getIdentifier(); + + if (service == null) { + // Unsupported service - ignore this resource + return; + } + + // In the cache we store null identifiers as "default", as it is part of the primary key + if (identifier == null) { + identifier = "default"; + } + + ArbitraryResourceData arbitraryResourceData = new ArbitraryResourceData(); + arbitraryResourceData.service = service; + arbitraryResourceData.name = name; + arbitraryResourceData.identifier = identifier; + + // Get the latest transaction + ArbitraryTransactionData latestTransactionData = repository.getArbitraryRepository().getLatestTransaction(arbitraryTransactionData.getName(), arbitraryTransactionData.getService(), null, arbitraryTransactionData.getIdentifier()); + if (latestTransactionData == null) { + // We don't have a latest transaction, so delete from cache + repository.getArbitraryRepository().delete(arbitraryResourceData); + return; + } + + // Get existing cached entry if it exists + ArbitraryResourceData existingArbitraryResourceData = repository.getArbitraryRepository() + .getArbitraryResource(service, name, identifier); + + // Check for existing cached data + if (existingArbitraryResourceData == null) { + // Nothing exists yet, so set creation date from the current transaction (it will be reduced later if needed) + arbitraryResourceData.created = arbitraryTransactionData.getTimestamp(); + arbitraryResourceData.updated = null; + } + else { + // An entry already exists - update created time from current transaction if this is older + arbitraryResourceData.created = Math.min(existingArbitraryResourceData.created, arbitraryTransactionData.getTimestamp()); + + // Set updated time to the latest transaction's timestamp, unless it matches the creation time + if (existingArbitraryResourceData.created == latestTransactionData.getTimestamp()) { + // Latest transaction matches created time, so it hasn't been updated + arbitraryResourceData.updated = null; + } + else { + arbitraryResourceData.updated = latestTransactionData.getTimestamp(); + } + } + + arbitraryResourceData.size = latestTransactionData.getSize(); + + // Save + repository.getArbitraryRepository().save(arbitraryResourceData); + } + + public void updateArbitraryResourceStatus(Repository repository) throws DataException { + // Don't cache resources without a name (such as auto updates) + if (arbitraryTransactionData.getName() == null) { + return; + } + + Service service = arbitraryTransactionData.getService(); + String name = arbitraryTransactionData.getName(); + String identifier = arbitraryTransactionData.getIdentifier(); + + if (service == null) { + // Unsupported service - ignore this resource + return; + } + + // In the cache we store null identifiers as "default", as it is part of the primary key + if (identifier == null) { + identifier = "default"; + } + + ArbitraryResourceData arbitraryResourceData = new ArbitraryResourceData(); + arbitraryResourceData.service = service; + arbitraryResourceData.name = name; + arbitraryResourceData.identifier = identifier; + + // Update status + ArbitraryDataResource resource = new ArbitraryDataResource(name, ArbitraryDataFile.ResourceIdType.NAME, service, identifier); + ArbitraryResourceStatus arbitraryResourceStatus = resource.getStatus(repository); + ArbitraryResourceStatus.Status status = arbitraryResourceStatus != null ? arbitraryResourceStatus.getStatus() : null; + repository.getArbitraryRepository().setStatus(arbitraryResourceData, status); + } + + public void updateArbitraryMetadataCache(Repository repository) throws DataException { + // Get the latest transaction + ArbitraryTransactionData latestTransactionData = repository.getArbitraryRepository().getLatestTransaction(arbitraryTransactionData.getName(), arbitraryTransactionData.getService(), null, arbitraryTransactionData.getIdentifier()); + if (latestTransactionData == null) { + // We don't have a latest transaction, so give up + return; + } + + Service service = latestTransactionData.getService(); + String name = latestTransactionData.getName(); + String identifier = latestTransactionData.getIdentifier(); + + if (service == null) { + // Unsupported service - ignore this resource + return; + } + + // In the cache we store null identifiers as "default", as it is part of the primary key + if (identifier == null) { + identifier = "default"; + } + + ArbitraryResourceData arbitraryResourceData = new ArbitraryResourceData(); + arbitraryResourceData.service = service; + arbitraryResourceData.name = name; + arbitraryResourceData.identifier = identifier; + + // Update metadata for latest transaction if it is local + if (latestTransactionData.getMetadataHash() != null) { + ArbitraryDataFile metadataFile = ArbitraryDataFile.fromHash(latestTransactionData.getMetadataHash(), latestTransactionData.getSignature()); + if (metadataFile.exists()) { + ArbitraryDataTransactionMetadata transactionMetadata = new ArbitraryDataTransactionMetadata(metadataFile.getFilePath()); + try { + transactionMetadata.read(); + + ArbitraryResourceMetadata metadata = new ArbitraryResourceMetadata(); + metadata.setArbitraryResourceData(arbitraryResourceData); + metadata.setTitle(transactionMetadata.getTitle()); + metadata.setDescription(transactionMetadata.getDescription()); + metadata.setCategory(transactionMetadata.getCategory()); + metadata.setTags(transactionMetadata.getTags()); + repository.getArbitraryRepository().save(metadata); + + } catch (IOException e) { + // Ignore, as we can add it again later + } + } else { + // We don't have a local copy of this metadata file, so delete it from the cache + // It will be re-added if the file later arrives via the network + ArbitraryResourceMetadata metadata = new ArbitraryResourceMetadata(); + metadata.setArbitraryResourceData(arbitraryResourceData); + repository.getArbitraryRepository().delete(metadata); + } + } + } + } diff --git a/src/main/java/org/qortal/transaction/AtTransaction.java b/src/main/java/org/qortal/transaction/AtTransaction.java index b07f006b..398ac6c0 100644 --- a/src/main/java/org/qortal/transaction/AtTransaction.java +++ b/src/main/java/org/qortal/transaction/AtTransaction.java @@ -1,8 +1,6 @@ package org.qortal.transaction; -import java.util.Arrays; -import java.util.List; - +import com.google.common.primitives.Bytes; import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.block.BlockChain; @@ -17,7 +15,8 @@ import org.qortal.transform.Transformer; import org.qortal.transform.transaction.AtTransactionTransformer; import org.qortal.utils.Amounts; -import com.google.common.primitives.Bytes; +import java.util.Arrays; +import java.util.List; public class AtTransaction extends Transaction { diff --git a/src/main/java/org/qortal/transaction/BuyNameTransaction.java b/src/main/java/org/qortal/transaction/BuyNameTransaction.java index fe6d8d34..72c15f69 100644 --- a/src/main/java/org/qortal/transaction/BuyNameTransaction.java +++ b/src/main/java/org/qortal/transaction/BuyNameTransaction.java @@ -1,8 +1,6 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - +import com.google.common.base.Utf8; import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.block.BlockChain; @@ -16,7 +14,8 @@ import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.utils.Unicode; -import com.google.common.base.Utf8; +import java.util.Collections; +import java.util.List; public class BuyNameTransaction extends Transaction { diff --git a/src/main/java/org/qortal/transaction/CancelAssetOrderTransaction.java b/src/main/java/org/qortal/transaction/CancelAssetOrderTransaction.java index 955f62f4..946b8ab1 100644 --- a/src/main/java/org/qortal/transaction/CancelAssetOrderTransaction.java +++ b/src/main/java/org/qortal/transaction/CancelAssetOrderTransaction.java @@ -1,9 +1,5 @@ package org.qortal.transaction; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.asset.Order; @@ -14,6 +10,10 @@ import org.qortal.repository.AssetRepository; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + public class CancelAssetOrderTransaction extends Transaction { // Properties diff --git a/src/main/java/org/qortal/transaction/CancelGroupBanTransaction.java b/src/main/java/org/qortal/transaction/CancelGroupBanTransaction.java index 08d9cb3e..a9577bc5 100644 --- a/src/main/java/org/qortal/transaction/CancelGroupBanTransaction.java +++ b/src/main/java/org/qortal/transaction/CancelGroupBanTransaction.java @@ -1,8 +1,5 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.crypto.Crypto; @@ -13,6 +10,9 @@ import org.qortal.group.Group; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.Collections; +import java.util.List; + public class CancelGroupBanTransaction extends Transaction { // Properties diff --git a/src/main/java/org/qortal/transaction/CancelGroupInviteTransaction.java b/src/main/java/org/qortal/transaction/CancelGroupInviteTransaction.java index 800f2444..d4306bbe 100644 --- a/src/main/java/org/qortal/transaction/CancelGroupInviteTransaction.java +++ b/src/main/java/org/qortal/transaction/CancelGroupInviteTransaction.java @@ -1,8 +1,5 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.crypto.Crypto; @@ -13,6 +10,9 @@ import org.qortal.group.Group; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.Collections; +import java.util.List; + public class CancelGroupInviteTransaction extends Transaction { // Properties diff --git a/src/main/java/org/qortal/transaction/CancelSellNameTransaction.java b/src/main/java/org/qortal/transaction/CancelSellNameTransaction.java index 876f0aed..aa0e6a6f 100644 --- a/src/main/java/org/qortal/transaction/CancelSellNameTransaction.java +++ b/src/main/java/org/qortal/transaction/CancelSellNameTransaction.java @@ -1,8 +1,6 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - +import com.google.common.base.Utf8; import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.controller.repository.NamesDatabaseIntegrityCheck; @@ -14,7 +12,8 @@ import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.utils.Unicode; -import com.google.common.base.Utf8; +import java.util.Collections; +import java.util.List; public class CancelSellNameTransaction extends Transaction { diff --git a/src/main/java/org/qortal/transaction/ChatTransaction.java b/src/main/java/org/qortal/transaction/ChatTransaction.java index 3d968461..3004b5b9 100644 --- a/src/main/java/org/qortal/transaction/ChatTransaction.java +++ b/src/main/java/org/qortal/transaction/ChatTransaction.java @@ -1,21 +1,14 @@ package org.qortal.transaction; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.function.Predicate; - import org.qortal.account.Account; import org.qortal.account.PublicKeyAccount; import org.qortal.asset.Asset; -import org.qortal.controller.arbitrary.ArbitraryDataStorageManager; import org.qortal.crypto.Crypto; import org.qortal.crypto.MemoryPoW; import org.qortal.data.naming.NameData; import org.qortal.data.transaction.ChatTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.group.Group; -import org.qortal.list.ResourceListManager; import org.qortal.repository.DataException; import org.qortal.repository.GroupRepository; import org.qortal.repository.Repository; @@ -26,6 +19,11 @@ import org.qortal.transform.transaction.TransactionTransformer; import org.qortal.utils.ListUtils; import org.qortal.utils.NTP; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.function.Predicate; + public class ChatTransaction extends Transaction { // Properties diff --git a/src/main/java/org/qortal/transaction/CreateAssetOrderTransaction.java b/src/main/java/org/qortal/transaction/CreateAssetOrderTransaction.java index 24e57a4e..20c17562 100644 --- a/src/main/java/org/qortal/transaction/CreateAssetOrderTransaction.java +++ b/src/main/java/org/qortal/transaction/CreateAssetOrderTransaction.java @@ -1,9 +1,5 @@ package org.qortal.transaction; -import java.math.BigInteger; -import java.util.Collections; -import java.util.List; - import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.asset.Order; @@ -16,6 +12,10 @@ import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.utils.Amounts; +import java.math.BigInteger; +import java.util.Collections; +import java.util.List; + public class CreateAssetOrderTransaction extends Transaction { // Properties diff --git a/src/main/java/org/qortal/transaction/CreateGroupTransaction.java b/src/main/java/org/qortal/transaction/CreateGroupTransaction.java index 6f4a3634..d01de4a9 100644 --- a/src/main/java/org/qortal/transaction/CreateGroupTransaction.java +++ b/src/main/java/org/qortal/transaction/CreateGroupTransaction.java @@ -1,8 +1,6 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - +import com.google.common.base.Utf8; import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.data.transaction.CreateGroupTransactionData; @@ -12,7 +10,8 @@ import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.utils.Unicode; -import com.google.common.base.Utf8; +import java.util.Collections; +import java.util.List; public class CreateGroupTransaction extends Transaction { diff --git a/src/main/java/org/qortal/transaction/CreatePollTransaction.java b/src/main/java/org/qortal/transaction/CreatePollTransaction.java index a56322a7..e2e4c470 100644 --- a/src/main/java/org/qortal/transaction/CreatePollTransaction.java +++ b/src/main/java/org/qortal/transaction/CreatePollTransaction.java @@ -1,9 +1,6 @@ package org.qortal.transaction; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - +import com.google.common.base.Utf8; import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.crypto.Crypto; @@ -15,7 +12,9 @@ import org.qortal.repository.Repository; import org.qortal.utils.Unicode; import org.qortal.voting.Poll; -import com.google.common.base.Utf8; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; public class CreatePollTransaction extends Transaction { diff --git a/src/main/java/org/qortal/transaction/DeployAtTransaction.java b/src/main/java/org/qortal/transaction/DeployAtTransaction.java index f3024b57..775119ad 100644 --- a/src/main/java/org/qortal/transaction/DeployAtTransaction.java +++ b/src/main/java/org/qortal/transaction/DeployAtTransaction.java @@ -1,8 +1,6 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - +import com.google.common.base.Utf8; import org.ciyam.at.MachineState; import org.ciyam.at.Timestamp; import org.qortal.account.Account; @@ -18,10 +16,11 @@ import org.qortal.data.transaction.TransactionData; import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.transform.TransformationException; -import org.qortal.utils.Amounts; import org.qortal.transform.transaction.TransactionTransformer; +import org.qortal.utils.Amounts; -import com.google.common.base.Utf8; +import java.util.Collections; +import java.util.List; public class DeployAtTransaction extends Transaction { diff --git a/src/main/java/org/qortal/transaction/GenesisTransaction.java b/src/main/java/org/qortal/transaction/GenesisTransaction.java index 74a84a7d..48372dc9 100644 --- a/src/main/java/org/qortal/transaction/GenesisTransaction.java +++ b/src/main/java/org/qortal/transaction/GenesisTransaction.java @@ -1,9 +1,6 @@ package org.qortal.transaction; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - +import com.google.common.primitives.Bytes; import org.qortal.account.Account; import org.qortal.account.PrivateKeyAccount; import org.qortal.crypto.Crypto; @@ -14,7 +11,9 @@ import org.qortal.repository.Repository; import org.qortal.transform.TransformationException; import org.qortal.transform.transaction.TransactionTransformer; -import com.google.common.primitives.Bytes; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; public class GenesisTransaction extends Transaction { diff --git a/src/main/java/org/qortal/transaction/GroupApprovalTransaction.java b/src/main/java/org/qortal/transaction/GroupApprovalTransaction.java index 1c8bb709..a88ad3bf 100644 --- a/src/main/java/org/qortal/transaction/GroupApprovalTransaction.java +++ b/src/main/java/org/qortal/transaction/GroupApprovalTransaction.java @@ -1,8 +1,5 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.data.transaction.GroupApprovalTransactionData; @@ -10,6 +7,9 @@ import org.qortal.data.transaction.TransactionData; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.Collections; +import java.util.List; + public class GroupApprovalTransaction extends Transaction { // Properties diff --git a/src/main/java/org/qortal/transaction/GroupBanTransaction.java b/src/main/java/org/qortal/transaction/GroupBanTransaction.java index c9a6c307..27c00d5c 100644 --- a/src/main/java/org/qortal/transaction/GroupBanTransaction.java +++ b/src/main/java/org/qortal/transaction/GroupBanTransaction.java @@ -1,8 +1,5 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.crypto.Crypto; @@ -13,6 +10,9 @@ import org.qortal.group.Group; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.Collections; +import java.util.List; + public class GroupBanTransaction extends Transaction { // Properties diff --git a/src/main/java/org/qortal/transaction/GroupInviteTransaction.java b/src/main/java/org/qortal/transaction/GroupInviteTransaction.java index fa5e7b85..e58d1b9c 100644 --- a/src/main/java/org/qortal/transaction/GroupInviteTransaction.java +++ b/src/main/java/org/qortal/transaction/GroupInviteTransaction.java @@ -1,8 +1,5 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.crypto.Crypto; @@ -12,6 +9,9 @@ import org.qortal.group.Group; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.Collections; +import java.util.List; + public class GroupInviteTransaction extends Transaction { // Properties diff --git a/src/main/java/org/qortal/transaction/GroupKickTransaction.java b/src/main/java/org/qortal/transaction/GroupKickTransaction.java index 84de3a59..d67f3d15 100644 --- a/src/main/java/org/qortal/transaction/GroupKickTransaction.java +++ b/src/main/java/org/qortal/transaction/GroupKickTransaction.java @@ -1,8 +1,5 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - import org.qortal.account.Account; import org.qortal.account.PublicKeyAccount; import org.qortal.asset.Asset; @@ -15,6 +12,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.GroupRepository; import org.qortal.repository.Repository; +import java.util.Collections; +import java.util.List; + public class GroupKickTransaction extends Transaction { // Properties diff --git a/src/main/java/org/qortal/transaction/IssueAssetTransaction.java b/src/main/java/org/qortal/transaction/IssueAssetTransaction.java index 52428963..0ba41f27 100644 --- a/src/main/java/org/qortal/transaction/IssueAssetTransaction.java +++ b/src/main/java/org/qortal/transaction/IssueAssetTransaction.java @@ -1,8 +1,6 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - +import com.google.common.base.Utf8; import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.data.transaction.IssueAssetTransactionData; @@ -12,7 +10,8 @@ import org.qortal.repository.Repository; import org.qortal.utils.Amounts; import org.qortal.utils.Unicode; -import com.google.common.base.Utf8; +import java.util.Collections; +import java.util.List; public class IssueAssetTransaction extends Transaction { diff --git a/src/main/java/org/qortal/transaction/JoinGroupTransaction.java b/src/main/java/org/qortal/transaction/JoinGroupTransaction.java index 3061a3fb..56cb4d3c 100644 --- a/src/main/java/org/qortal/transaction/JoinGroupTransaction.java +++ b/src/main/java/org/qortal/transaction/JoinGroupTransaction.java @@ -1,8 +1,5 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.data.transaction.JoinGroupTransactionData; @@ -11,6 +8,9 @@ import org.qortal.group.Group; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.Collections; +import java.util.List; + public class JoinGroupTransaction extends Transaction { // Properties diff --git a/src/main/java/org/qortal/transaction/LeaveGroupTransaction.java b/src/main/java/org/qortal/transaction/LeaveGroupTransaction.java index 1e8f8c6c..2af3ba1a 100644 --- a/src/main/java/org/qortal/transaction/LeaveGroupTransaction.java +++ b/src/main/java/org/qortal/transaction/LeaveGroupTransaction.java @@ -1,8 +1,5 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.data.group.GroupData; @@ -12,6 +9,9 @@ import org.qortal.group.Group; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.Collections; +import java.util.List; + public class LeaveGroupTransaction extends Transaction { // Properties diff --git a/src/main/java/org/qortal/transaction/MessageTransaction.java b/src/main/java/org/qortal/transaction/MessageTransaction.java index b61c3d11..4ecf8e7f 100644 --- a/src/main/java/org/qortal/transaction/MessageTransaction.java +++ b/src/main/java/org/qortal/transaction/MessageTransaction.java @@ -1,9 +1,5 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; -import java.util.Random; - import org.qortal.account.Account; import org.qortal.account.PrivateKeyAccount; import org.qortal.account.PublicKeyAccount; @@ -27,6 +23,10 @@ import org.qortal.transform.transaction.MessageTransactionTransformer; import org.qortal.transform.transaction.TransactionTransformer; import org.qortal.utils.NTP; +import java.util.Collections; +import java.util.List; +import java.util.Random; + public class MessageTransaction extends Transaction { // Useful constants diff --git a/src/main/java/org/qortal/transaction/MultiPaymentTransaction.java b/src/main/java/org/qortal/transaction/MultiPaymentTransaction.java index 34cd0147..2c7c1175 100644 --- a/src/main/java/org/qortal/transaction/MultiPaymentTransaction.java +++ b/src/main/java/org/qortal/transaction/MultiPaymentTransaction.java @@ -1,8 +1,5 @@ package org.qortal.transaction; -import java.util.List; -import java.util.stream.Collectors; - import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.data.PaymentData; @@ -12,6 +9,9 @@ import org.qortal.payment.Payment; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.List; +import java.util.stream.Collectors; + public class MultiPaymentTransaction extends Transaction { // Properties diff --git a/src/main/java/org/qortal/transaction/PaymentTransaction.java b/src/main/java/org/qortal/transaction/PaymentTransaction.java index 4869db76..518939c2 100644 --- a/src/main/java/org/qortal/transaction/PaymentTransaction.java +++ b/src/main/java/org/qortal/transaction/PaymentTransaction.java @@ -1,8 +1,5 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.data.PaymentData; @@ -12,6 +9,9 @@ import org.qortal.payment.Payment; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.Collections; +import java.util.List; + public class PaymentTransaction extends Transaction { // Properties diff --git a/src/main/java/org/qortal/transaction/PresenceTransaction.java b/src/main/java/org/qortal/transaction/PresenceTransaction.java index 56a9f633..9ac31b58 100644 --- a/src/main/java/org/qortal/transaction/PresenceTransaction.java +++ b/src/main/java/org/qortal/transaction/PresenceTransaction.java @@ -1,14 +1,6 @@ package org.qortal.transaction; -import static java.util.Arrays.stream; -import static java.util.stream.Collectors.toMap; - -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.function.Supplier; - +import com.google.common.primitives.Longs; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.qortal.account.Account; @@ -31,7 +23,14 @@ import org.qortal.transform.transaction.TransactionTransformer; import org.qortal.utils.Base58; import org.qortal.utils.ByteArray; -import com.google.common.primitives.Longs; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.Supplier; + +import static java.util.Arrays.stream; +import static java.util.stream.Collectors.toMap; public class PresenceTransaction extends Transaction { diff --git a/src/main/java/org/qortal/transaction/PublicizeTransaction.java b/src/main/java/org/qortal/transaction/PublicizeTransaction.java index 44f93e6e..161eb11a 100644 --- a/src/main/java/org/qortal/transaction/PublicizeTransaction.java +++ b/src/main/java/org/qortal/transaction/PublicizeTransaction.java @@ -1,8 +1,5 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - import org.qortal.account.Account; import org.qortal.account.PublicKeyAccount; import org.qortal.api.resource.TransactionsResource.ConfirmationStatus; @@ -19,6 +16,9 @@ import org.qortal.transform.transaction.PublicizeTransactionTransformer; import org.qortal.transform.transaction.TransactionTransformer; import org.qortal.utils.NTP; +import java.util.Collections; +import java.util.List; + public class PublicizeTransaction extends Transaction { // Properties diff --git a/src/main/java/org/qortal/transaction/RegisterNameTransaction.java b/src/main/java/org/qortal/transaction/RegisterNameTransaction.java index 19f1da5a..79976199 100644 --- a/src/main/java/org/qortal/transaction/RegisterNameTransaction.java +++ b/src/main/java/org/qortal/transaction/RegisterNameTransaction.java @@ -1,8 +1,6 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - +import com.google.common.base.Utf8; import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.block.BlockChain; @@ -15,7 +13,8 @@ import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.utils.Unicode; -import com.google.common.base.Utf8; +import java.util.Collections; +import java.util.List; public class RegisterNameTransaction extends Transaction { diff --git a/src/main/java/org/qortal/transaction/RemoveGroupAdminTransaction.java b/src/main/java/org/qortal/transaction/RemoveGroupAdminTransaction.java index 043b5423..77dd8160 100644 --- a/src/main/java/org/qortal/transaction/RemoveGroupAdminTransaction.java +++ b/src/main/java/org/qortal/transaction/RemoveGroupAdminTransaction.java @@ -1,9 +1,5 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; -import java.util.Objects; - import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.crypto.Crypto; @@ -14,6 +10,10 @@ import org.qortal.group.Group; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.Collections; +import java.util.List; +import java.util.Objects; + public class RemoveGroupAdminTransaction extends Transaction { // Properties diff --git a/src/main/java/org/qortal/transaction/RewardShareTransaction.java b/src/main/java/org/qortal/transaction/RewardShareTransaction.java index d4d2434c..ab66dec6 100644 --- a/src/main/java/org/qortal/transaction/RewardShareTransaction.java +++ b/src/main/java/org/qortal/transaction/RewardShareTransaction.java @@ -1,9 +1,5 @@ package org.qortal.transaction; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - import org.qortal.account.Account; import org.qortal.account.PublicKeyAccount; import org.qortal.asset.Asset; @@ -16,6 +12,10 @@ import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.transform.Transformer; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + public class RewardShareTransaction extends Transaction { public static final int MAX_SHARE = 100 * 100; // unscaled diff --git a/src/main/java/org/qortal/transaction/SellNameTransaction.java b/src/main/java/org/qortal/transaction/SellNameTransaction.java index c2ab2eb9..b2fd1484 100644 --- a/src/main/java/org/qortal/transaction/SellNameTransaction.java +++ b/src/main/java/org/qortal/transaction/SellNameTransaction.java @@ -1,8 +1,6 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - +import com.google.common.base.Utf8; import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.controller.repository.NamesDatabaseIntegrityCheck; @@ -14,7 +12,8 @@ import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.utils.Unicode; -import com.google.common.base.Utf8; +import java.util.Collections; +import java.util.List; public class SellNameTransaction extends Transaction { diff --git a/src/main/java/org/qortal/transaction/SetGroupTransaction.java b/src/main/java/org/qortal/transaction/SetGroupTransaction.java index 48248b69..dcd2363f 100644 --- a/src/main/java/org/qortal/transaction/SetGroupTransaction.java +++ b/src/main/java/org/qortal/transaction/SetGroupTransaction.java @@ -1,8 +1,5 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.data.transaction.SetGroupTransactionData; @@ -11,6 +8,9 @@ import org.qortal.group.Group; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.Collections; +import java.util.List; + public class SetGroupTransaction extends Transaction { // Properties diff --git a/src/main/java/org/qortal/transaction/Transaction.java b/src/main/java/org/qortal/transaction/Transaction.java index e0ed1f82..61b78ade 100644 --- a/src/main/java/org/qortal/transaction/Transaction.java +++ b/src/main/java/org/qortal/transaction/Transaction.java @@ -1,10 +1,5 @@ package org.qortal.transaction; -import java.math.BigInteger; -import java.util.*; -import java.util.concurrent.locks.ReentrantLock; -import java.util.function.Predicate; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.qortal.account.Account; @@ -30,11 +25,15 @@ import org.qortal.transform.Transformer; import org.qortal.transform.transaction.TransactionTransformer; import org.qortal.utils.NTP; -import static java.util.Arrays.stream; -import static java.util.stream.Collectors.toMap; - import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; +import java.math.BigInteger; +import java.util.*; +import java.util.concurrent.locks.ReentrantLock; +import java.util.function.Predicate; + +import static java.util.Arrays.stream; +import static java.util.stream.Collectors.toMap; public abstract class Transaction { diff --git a/src/main/java/org/qortal/transaction/TransferAssetTransaction.java b/src/main/java/org/qortal/transaction/TransferAssetTransaction.java index 79d485a5..50c6f24a 100644 --- a/src/main/java/org/qortal/transaction/TransferAssetTransaction.java +++ b/src/main/java/org/qortal/transaction/TransferAssetTransaction.java @@ -1,8 +1,5 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - import org.qortal.account.Account; import org.qortal.data.PaymentData; import org.qortal.data.transaction.TransactionData; @@ -11,6 +8,9 @@ import org.qortal.payment.Payment; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.Collections; +import java.util.List; + public class TransferAssetTransaction extends Transaction { // Properties diff --git a/src/main/java/org/qortal/transaction/TransferPrivsTransaction.java b/src/main/java/org/qortal/transaction/TransferPrivsTransaction.java index 97e67160..de3038d8 100644 --- a/src/main/java/org/qortal/transaction/TransferPrivsTransaction.java +++ b/src/main/java/org/qortal/transaction/TransferPrivsTransaction.java @@ -1,9 +1,5 @@ package org.qortal.transaction; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.qortal.account.Account; @@ -17,6 +13,10 @@ import org.qortal.repository.AccountRepository; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + public class TransferPrivsTransaction extends Transaction { private static final Logger LOGGER = LogManager.getLogger(TransferPrivsTransaction.class); diff --git a/src/main/java/org/qortal/transaction/UpdateAssetTransaction.java b/src/main/java/org/qortal/transaction/UpdateAssetTransaction.java index 16e5641d..45d2c832 100644 --- a/src/main/java/org/qortal/transaction/UpdateAssetTransaction.java +++ b/src/main/java/org/qortal/transaction/UpdateAssetTransaction.java @@ -1,8 +1,6 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - +import com.google.common.base.Utf8; import org.qortal.account.Account; import org.qortal.account.PublicKeyAccount; import org.qortal.asset.Asset; @@ -13,7 +11,8 @@ import org.qortal.data.transaction.UpdateAssetTransactionData; import org.qortal.repository.DataException; import org.qortal.repository.Repository; -import com.google.common.base.Utf8; +import java.util.Collections; +import java.util.List; public class UpdateAssetTransaction extends Transaction { diff --git a/src/main/java/org/qortal/transaction/UpdateGroupTransaction.java b/src/main/java/org/qortal/transaction/UpdateGroupTransaction.java index 27580430..a2546c69 100644 --- a/src/main/java/org/qortal/transaction/UpdateGroupTransaction.java +++ b/src/main/java/org/qortal/transaction/UpdateGroupTransaction.java @@ -1,8 +1,6 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - +import com.google.common.base.Utf8; import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.crypto.Crypto; @@ -13,7 +11,8 @@ import org.qortal.group.Group; import org.qortal.repository.DataException; import org.qortal.repository.Repository; -import com.google.common.base.Utf8; +import java.util.Collections; +import java.util.List; public class UpdateGroupTransaction extends Transaction { diff --git a/src/main/java/org/qortal/transaction/UpdateNameTransaction.java b/src/main/java/org/qortal/transaction/UpdateNameTransaction.java index 8d578c85..8d42207c 100644 --- a/src/main/java/org/qortal/transaction/UpdateNameTransaction.java +++ b/src/main/java/org/qortal/transaction/UpdateNameTransaction.java @@ -1,9 +1,6 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; -import java.util.Objects; - +import com.google.common.base.Utf8; import org.qortal.account.Account; import org.qortal.asset.Asset; import org.qortal.controller.repository.NamesDatabaseIntegrityCheck; @@ -16,7 +13,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.utils.Unicode; -import com.google.common.base.Utf8; +import java.util.Collections; +import java.util.List; +import java.util.Objects; public class UpdateNameTransaction extends Transaction { diff --git a/src/main/java/org/qortal/transaction/VoteOnPollTransaction.java b/src/main/java/org/qortal/transaction/VoteOnPollTransaction.java index 89eec184..4335ec76 100644 --- a/src/main/java/org/qortal/transaction/VoteOnPollTransaction.java +++ b/src/main/java/org/qortal/transaction/VoteOnPollTransaction.java @@ -1,8 +1,6 @@ package org.qortal.transaction; -import java.util.Collections; -import java.util.List; - +import com.google.common.base.Utf8; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.qortal.account.Account; @@ -18,7 +16,8 @@ import org.qortal.repository.VotingRepository; import org.qortal.utils.Unicode; import org.qortal.voting.Poll; -import com.google.common.base.Utf8; +import java.util.Collections; +import java.util.List; public class VoteOnPollTransaction extends Transaction { diff --git a/src/main/java/org/qortal/transform/PaymentTransformer.java b/src/main/java/org/qortal/transform/PaymentTransformer.java index 56aa7ad1..34f0b030 100644 --- a/src/main/java/org/qortal/transform/PaymentTransformer.java +++ b/src/main/java/org/qortal/transform/PaymentTransformer.java @@ -1,13 +1,12 @@ package org.qortal.transform; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Longs; import org.qortal.data.PaymentData; import org.qortal.utils.Serialization; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class PaymentTransformer extends Transformer { diff --git a/src/main/java/org/qortal/transform/block/BlockTransformer.java b/src/main/java/org/qortal/transform/block/BlockTransformer.java index 15445327..fee585ca 100644 --- a/src/main/java/org/qortal/transform/block/BlockTransformer.java +++ b/src/main/java/org/qortal/transform/block/BlockTransformer.java @@ -1,13 +1,8 @@ package org.qortal.transform.block; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; +import io.druid.extendedset.intset.ConciseSet; import org.qortal.block.Block; import org.qortal.block.BlockChain; import org.qortal.crypto.Crypto; @@ -23,10 +18,13 @@ import org.qortal.transform.transaction.TransactionTransformer; import org.qortal.utils.Base58; import org.qortal.utils.Serialization; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; - -import io.druid.extendedset.intset.ConciseSet; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; public class BlockTransformer extends Transformer { diff --git a/src/main/java/org/qortal/transform/transaction/AccountFlagsTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/AccountFlagsTransactionTransformer.java index 7fe1cb61..966cdb25 100644 --- a/src/main/java/org/qortal/transform/transaction/AccountFlagsTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/AccountFlagsTransactionTransformer.java @@ -1,9 +1,7 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.AccountFlagsTransactionData; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.TransactionData; @@ -11,8 +9,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class AccountFlagsTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/AccountLevelTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/AccountLevelTransactionTransformer.java index 7572ebf7..ae9f15a5 100644 --- a/src/main/java/org/qortal/transform/transaction/AccountLevelTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/AccountLevelTransactionTransformer.java @@ -1,9 +1,6 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Longs; import org.qortal.data.transaction.AccountLevelTransactionData; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.TransactionData; @@ -11,7 +8,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class AccountLevelTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/AddGroupAdminTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/AddGroupAdminTransactionTransformer.java index 62e011af..5b4ece3e 100644 --- a/src/main/java/org/qortal/transform/transaction/AddGroupAdminTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/AddGroupAdminTransactionTransformer.java @@ -1,9 +1,7 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.AddGroupAdminTransactionData; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.TransactionData; @@ -11,8 +9,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class AddGroupAdminTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/ArbitraryTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/ArbitraryTransactionTransformer.java index 1ae80e1f..8b47b5b8 100644 --- a/src/main/java/org/qortal/transform/transaction/ArbitraryTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/ArbitraryTransactionTransformer.java @@ -1,18 +1,14 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.List; - import com.google.common.base.Utf8; +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.crypto.Crypto; import org.qortal.data.PaymentData; import org.qortal.data.transaction.ArbitraryTransactionData; +import org.qortal.data.transaction.ArbitraryTransactionData.DataType; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.TransactionData; -import org.qortal.data.transaction.ArbitraryTransactionData.DataType; import org.qortal.naming.Name; import org.qortal.transaction.ArbitraryTransaction; import org.qortal.transaction.Transaction; @@ -21,8 +17,11 @@ import org.qortal.transform.PaymentTransformer; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; public class ArbitraryTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/AtTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/AtTransactionTransformer.java index bb1381b2..a441a693 100644 --- a/src/main/java/org/qortal/transform/transaction/AtTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/AtTransactionTransformer.java @@ -1,9 +1,7 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.account.NullAccount; import org.qortal.data.transaction.ATTransactionData; import org.qortal.data.transaction.BaseTransactionData; @@ -13,8 +11,9 @@ import org.qortal.transaction.Transaction; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class AtTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/BuyNameTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/BuyNameTransactionTransformer.java index 2a00b615..8dff8a25 100644 --- a/src/main/java/org/qortal/transform/transaction/BuyNameTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/BuyNameTransactionTransformer.java @@ -1,9 +1,7 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.base.Utf8; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.BuyNameTransactionData; import org.qortal.data.transaction.TransactionData; @@ -12,8 +10,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.base.Utf8; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class BuyNameTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/CancelAssetOrderTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/CancelAssetOrderTransactionTransformer.java index d65a3f37..b38977e9 100644 --- a/src/main/java/org/qortal/transform/transaction/CancelAssetOrderTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/CancelAssetOrderTransactionTransformer.java @@ -1,9 +1,6 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.CancelAssetOrderTransactionData; import org.qortal.data.transaction.TransactionData; @@ -11,7 +8,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class CancelAssetOrderTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/CancelGroupBanTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/CancelGroupBanTransactionTransformer.java index 1444c890..2dcbd7cb 100644 --- a/src/main/java/org/qortal/transform/transaction/CancelGroupBanTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/CancelGroupBanTransactionTransformer.java @@ -1,9 +1,7 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.CancelGroupBanTransactionData; import org.qortal.data.transaction.TransactionData; @@ -11,8 +9,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class CancelGroupBanTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/CancelGroupInviteTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/CancelGroupInviteTransactionTransformer.java index 7cacbaa0..a8a01b54 100644 --- a/src/main/java/org/qortal/transform/transaction/CancelGroupInviteTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/CancelGroupInviteTransactionTransformer.java @@ -1,9 +1,7 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.CancelGroupInviteTransactionData; import org.qortal.data.transaction.TransactionData; @@ -11,8 +9,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class CancelGroupInviteTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/CancelSellNameTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/CancelSellNameTransactionTransformer.java index c91a78a4..1dc13d55 100644 --- a/src/main/java/org/qortal/transform/transaction/CancelSellNameTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/CancelSellNameTransactionTransformer.java @@ -1,9 +1,7 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.base.Utf8; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.CancelSellNameTransactionData; import org.qortal.data.transaction.TransactionData; @@ -12,8 +10,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.base.Utf8; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class CancelSellNameTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/ChatTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/ChatTransactionTransformer.java index b966ed2b..0730dad4 100644 --- a/src/main/java/org/qortal/transform/transaction/ChatTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/ChatTransactionTransformer.java @@ -1,9 +1,7 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.block.BlockChain; import org.qortal.crypto.Crypto; import org.qortal.data.transaction.BaseTransactionData; @@ -14,8 +12,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class ChatTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/CreateAssetOrderTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/CreateAssetOrderTransactionTransformer.java index 29363332..dc711594 100644 --- a/src/main/java/org/qortal/transform/transaction/CreateAssetOrderTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/CreateAssetOrderTransactionTransformer.java @@ -1,9 +1,6 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.CreateAssetOrderTransactionData; import org.qortal.data.transaction.TransactionData; @@ -11,7 +8,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class CreateAssetOrderTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/CreateGroupTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/CreateGroupTransactionTransformer.java index 29afba9d..0edc89b8 100644 --- a/src/main/java/org/qortal/transform/transaction/CreateGroupTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/CreateGroupTransactionTransformer.java @@ -1,9 +1,8 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.base.Utf8; +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.CreateGroupTransactionData; import org.qortal.data.transaction.TransactionData; @@ -13,9 +12,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.base.Utf8; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class CreateGroupTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/CreatePollTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/CreatePollTransactionTransformer.java index 442693df..0a8a1712 100644 --- a/src/main/java/org/qortal/transform/transaction/CreatePollTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/CreatePollTransactionTransformer.java @@ -1,11 +1,8 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.List; - +import com.google.common.base.Utf8; +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.CreatePollTransactionData; import org.qortal.data.transaction.TransactionData; @@ -15,9 +12,11 @@ import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; import org.qortal.voting.Poll; -import com.google.common.base.Utf8; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; public class CreatePollTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/DeployAtTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/DeployAtTransactionTransformer.java index 4a201338..8b14d74b 100644 --- a/src/main/java/org/qortal/transform/transaction/DeployAtTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/DeployAtTransactionTransformer.java @@ -1,9 +1,8 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.base.Utf8; +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.DeployAtTransactionData; import org.qortal.data.transaction.TransactionData; @@ -12,9 +11,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.base.Utf8; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class DeployAtTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/GenesisTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/GenesisTransactionTransformer.java index 41348b79..99ded558 100644 --- a/src/main/java/org/qortal/transform/transaction/GenesisTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/GenesisTransactionTransformer.java @@ -1,16 +1,15 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.GenesisTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class GenesisTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/GroupApprovalTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/GroupApprovalTransactionTransformer.java index 227e291a..cee62bc1 100644 --- a/src/main/java/org/qortal/transform/transaction/GroupApprovalTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/GroupApprovalTransactionTransformer.java @@ -1,9 +1,6 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.GroupApprovalTransactionData; import org.qortal.data.transaction.TransactionData; @@ -11,7 +8,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class GroupApprovalTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/GroupBanTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/GroupBanTransactionTransformer.java index 9454390b..8ff681a6 100644 --- a/src/main/java/org/qortal/transform/transaction/GroupBanTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/GroupBanTransactionTransformer.java @@ -1,9 +1,8 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.base.Utf8; +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.GroupBanTransactionData; import org.qortal.data.transaction.TransactionData; @@ -12,9 +11,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.base.Utf8; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class GroupBanTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/GroupInviteTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/GroupInviteTransactionTransformer.java index 93d2c895..bb8961a5 100644 --- a/src/main/java/org/qortal/transform/transaction/GroupInviteTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/GroupInviteTransactionTransformer.java @@ -1,9 +1,7 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.GroupInviteTransactionData; import org.qortal.data.transaction.TransactionData; @@ -11,8 +9,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class GroupInviteTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/GroupKickTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/GroupKickTransactionTransformer.java index 0e5ac2f2..3a6fe68c 100644 --- a/src/main/java/org/qortal/transform/transaction/GroupKickTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/GroupKickTransactionTransformer.java @@ -1,9 +1,8 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.base.Utf8; +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.GroupKickTransactionData; import org.qortal.data.transaction.TransactionData; @@ -12,9 +11,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.base.Utf8; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class GroupKickTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/IssueAssetTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/IssueAssetTransactionTransformer.java index 59cbd6bc..8c1f7d02 100644 --- a/src/main/java/org/qortal/transform/transaction/IssueAssetTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/IssueAssetTransactionTransformer.java @@ -1,9 +1,7 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.base.Utf8; +import com.google.common.primitives.Longs; import org.qortal.asset.Asset; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.IssueAssetTransactionData; @@ -12,8 +10,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.base.Utf8; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class IssueAssetTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/JoinGroupTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/JoinGroupTransactionTransformer.java index a4f33e48..a20acf53 100644 --- a/src/main/java/org/qortal/transform/transaction/JoinGroupTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/JoinGroupTransactionTransformer.java @@ -1,9 +1,7 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.JoinGroupTransactionData; import org.qortal.data.transaction.TransactionData; @@ -11,8 +9,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class JoinGroupTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/LeaveGroupTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/LeaveGroupTransactionTransformer.java index ee42ffeb..d1d6152e 100644 --- a/src/main/java/org/qortal/transform/transaction/LeaveGroupTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/LeaveGroupTransactionTransformer.java @@ -1,9 +1,7 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.LeaveGroupTransactionData; import org.qortal.data.transaction.TransactionData; @@ -11,8 +9,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class LeaveGroupTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/MessageTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/MessageTransactionTransformer.java index dccd7ba9..dcbe8a7f 100644 --- a/src/main/java/org/qortal/transform/transaction/MessageTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/MessageTransactionTransformer.java @@ -1,9 +1,7 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.MessageTransactionData; import org.qortal.data.transaction.TransactionData; @@ -13,8 +11,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class MessageTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/MultiPaymentTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/MultiPaymentTransactionTransformer.java index 1f77243f..ff969b02 100644 --- a/src/main/java/org/qortal/transform/transaction/MultiPaymentTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/MultiPaymentTransactionTransformer.java @@ -1,11 +1,7 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.List; - +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.data.PaymentData; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.MultiPaymentTransactionData; @@ -15,8 +11,11 @@ import org.qortal.transform.PaymentTransformer; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; public class MultiPaymentTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/PaymentTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/PaymentTransactionTransformer.java index af194470..d9b5488c 100644 --- a/src/main/java/org/qortal/transform/transaction/PaymentTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/PaymentTransactionTransformer.java @@ -1,9 +1,6 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.PaymentTransactionData; import org.qortal.data.transaction.TransactionData; @@ -11,7 +8,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class PaymentTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/PresenceTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/PresenceTransactionTransformer.java index bf69d102..f9fae7a7 100644 --- a/src/main/java/org/qortal/transform/transaction/PresenceTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/PresenceTransactionTransformer.java @@ -1,9 +1,7 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.PresenceTransactionData; import org.qortal.data.transaction.TransactionData; @@ -12,8 +10,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class PresenceTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/PublicizeTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/PublicizeTransactionTransformer.java index 6413db24..e778169b 100644 --- a/src/main/java/org/qortal/transform/transaction/PublicizeTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/PublicizeTransactionTransformer.java @@ -1,9 +1,7 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.PublicizeTransactionData; import org.qortal.data.transaction.TransactionData; @@ -11,8 +9,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class PublicizeTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/RegisterNameTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/RegisterNameTransactionTransformer.java index 54f86f35..29625b9d 100644 --- a/src/main/java/org/qortal/transform/transaction/RegisterNameTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/RegisterNameTransactionTransformer.java @@ -1,9 +1,7 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.base.Utf8; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.RegisterNameTransactionData; import org.qortal.data.transaction.TransactionData; @@ -12,8 +10,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.base.Utf8; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class RegisterNameTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/RemoveGroupAdminTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/RemoveGroupAdminTransactionTransformer.java index 58a8d07d..635623da 100644 --- a/src/main/java/org/qortal/transform/transaction/RemoveGroupAdminTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/RemoveGroupAdminTransactionTransformer.java @@ -1,9 +1,7 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.RemoveGroupAdminTransactionData; import org.qortal.data.transaction.TransactionData; @@ -11,8 +9,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class RemoveGroupAdminTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/RewardShareTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/RewardShareTransactionTransformer.java index 3611e07e..dfc0b90c 100644 --- a/src/main/java/org/qortal/transform/transaction/RewardShareTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/RewardShareTransactionTransformer.java @@ -1,9 +1,6 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.RewardShareTransactionData; import org.qortal.data.transaction.TransactionData; @@ -11,7 +8,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class RewardShareTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/SellNameTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/SellNameTransactionTransformer.java index 3fded96e..b0ba3f3e 100644 --- a/src/main/java/org/qortal/transform/transaction/SellNameTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/SellNameTransactionTransformer.java @@ -1,9 +1,7 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.base.Utf8; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.SellNameTransactionData; import org.qortal.data.transaction.TransactionData; @@ -12,8 +10,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.base.Utf8; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class SellNameTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/SetGroupTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/SetGroupTransactionTransformer.java index 586e084a..62ea78a3 100644 --- a/src/main/java/org/qortal/transform/transaction/SetGroupTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/SetGroupTransactionTransformer.java @@ -1,9 +1,7 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.SetGroupTransactionData; import org.qortal.data.transaction.TransactionData; @@ -11,8 +9,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class SetGroupTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/TransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/TransactionTransformer.java index ae029eaf..293f89fd 100644 --- a/src/main/java/org/qortal/transform/transaction/TransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/TransactionTransformer.java @@ -1,5 +1,20 @@ package org.qortal.transform.transaction; +import com.google.common.hash.HashCode; +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.qortal.account.PrivateKeyAccount; +import org.qortal.data.transaction.TransactionData; +import org.qortal.transaction.Transaction; +import org.qortal.transaction.Transaction.TransactionType; +import org.qortal.transform.TransformationException; +import org.qortal.transform.Transformer; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.lang.reflect.Field; @@ -11,23 +26,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.qortal.account.PrivateKeyAccount; -import org.qortal.data.transaction.TransactionData; -import org.qortal.transaction.Transaction; -import org.qortal.transaction.Transaction.TransactionType; -import org.qortal.transform.TransformationException; -import org.qortal.transform.Transformer; - -import com.google.common.hash.HashCode; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; - public abstract class TransactionTransformer extends Transformer { private static final Logger LOGGER = LogManager.getLogger(TransactionTransformer.class); diff --git a/src/main/java/org/qortal/transform/transaction/TransferAssetTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/TransferAssetTransactionTransformer.java index 1f124289..0b408ca6 100644 --- a/src/main/java/org/qortal/transform/transaction/TransferAssetTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/TransferAssetTransactionTransformer.java @@ -1,9 +1,6 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.data.transaction.TransferAssetTransactionData; @@ -11,7 +8,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class TransferAssetTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/TransferPrivsTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/TransferPrivsTransactionTransformer.java index 59c3dd2a..7663f36f 100644 --- a/src/main/java/org/qortal/transform/transaction/TransferPrivsTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/TransferPrivsTransactionTransformer.java @@ -1,9 +1,6 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.data.transaction.TransferPrivsTransactionData; @@ -11,7 +8,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class TransferPrivsTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/UpdateAssetTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/UpdateAssetTransactionTransformer.java index ba27d939..829545f4 100644 --- a/src/main/java/org/qortal/transform/transaction/UpdateAssetTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/UpdateAssetTransactionTransformer.java @@ -1,9 +1,7 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.base.Utf8; +import com.google.common.primitives.Longs; import org.qortal.asset.Asset; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.TransactionData; @@ -12,8 +10,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.base.Utf8; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class UpdateAssetTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/UpdateGroupTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/UpdateGroupTransactionTransformer.java index 673694c3..67c20f74 100644 --- a/src/main/java/org/qortal/transform/transaction/UpdateGroupTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/UpdateGroupTransactionTransformer.java @@ -1,9 +1,8 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.base.Utf8; +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.data.transaction.UpdateGroupTransactionData; @@ -13,9 +12,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.base.Utf8; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class UpdateGroupTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/UpdateNameTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/UpdateNameTransactionTransformer.java index 6e3aa06b..8a5152d7 100644 --- a/src/main/java/org/qortal/transform/transaction/UpdateNameTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/UpdateNameTransactionTransformer.java @@ -1,9 +1,7 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.base.Utf8; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.data.transaction.UpdateNameTransactionData; @@ -12,8 +10,9 @@ import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; -import com.google.common.base.Utf8; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class UpdateNameTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/transform/transaction/VoteOnPollTransactionTransformer.java b/src/main/java/org/qortal/transform/transaction/VoteOnPollTransactionTransformer.java index 10045e3f..7315b775 100644 --- a/src/main/java/org/qortal/transform/transaction/VoteOnPollTransactionTransformer.java +++ b/src/main/java/org/qortal/transform/transaction/VoteOnPollTransactionTransformer.java @@ -1,9 +1,8 @@ package org.qortal.transform.transaction; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - +import com.google.common.base.Utf8; +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.data.transaction.VoteOnPollTransactionData; @@ -12,9 +11,9 @@ import org.qortal.transform.TransformationException; import org.qortal.utils.Serialization; import org.qortal.voting.Poll; -import com.google.common.base.Utf8; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; public class VoteOnPollTransactionTransformer extends TransactionTransformer { diff --git a/src/main/java/org/qortal/utils/ArbitraryTransactionUtils.java b/src/main/java/org/qortal/utils/ArbitraryTransactionUtils.java index efd84110..2d3a2358 100644 --- a/src/main/java/org/qortal/utils/ArbitraryTransactionUtils.java +++ b/src/main/java/org/qortal/utils/ArbitraryTransactionUtils.java @@ -3,11 +3,11 @@ package org.qortal.utils; import org.apache.commons.lang3.ArrayUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.qortal.arbitrary.*; -import org.qortal.arbitrary.metadata.ArbitraryDataTransactionMetadata; +import org.qortal.arbitrary.ArbitraryDataFile; +import org.qortal.arbitrary.ArbitraryDataFileChunk; +import org.qortal.arbitrary.ArbitraryDataReader; +import org.qortal.arbitrary.ArbitraryDataResource; import org.qortal.arbitrary.misc.Service; -import org.qortal.data.arbitrary.ArbitraryResourceInfo; -import org.qortal.data.arbitrary.ArbitraryResourceMetadata; import org.qortal.data.arbitrary.ArbitraryResourceStatus; import org.qortal.data.transaction.ArbitraryTransactionData; import org.qortal.data.transaction.TransactionData; @@ -258,8 +258,7 @@ public class ArbitraryTransactionUtils { "chunks if needed", Base58.encode(completeHash)); ArbitraryTransactionUtils.deleteCompleteFile(arbitraryTransactionData, now, cleanupAfter); - } - else { + } else { // File might be in use. It's best to leave it and it it will be cleaned up later. } } @@ -271,6 +270,7 @@ public class ArbitraryTransactionUtils { * When first uploaded, files go into a _misc folder as they are not yet associated with a * transaction signature. Once the transaction is broadcast, they need to be moved to the * correct location, keyed by the transaction signature. + * * @param arbitraryTransactionData * @return * @throws DataException @@ -356,8 +356,7 @@ public class ArbitraryTransactionUtils { file.createNewFile(); } } - } - catch (DataException | IOException e) { + } catch (DataException | IOException e) { LOGGER.info("Unable to check and relocate all files for signature {}: {}", Base58.encode(arbitraryTransactionData.getSignature()), e.getMessage()); } @@ -366,7 +365,7 @@ public class ArbitraryTransactionUtils { } public static List limitOffsetTransactions(List transactions, - Integer limit, Integer offset) { + Integer limit, Integer offset) { if (limit != null && limit == 0) { limit = null; } @@ -389,18 +388,19 @@ public class ArbitraryTransactionUtils { /** * Lookup status of resource + * * @param service * @param name * @param identifier * @param build * @return */ - public static ArbitraryResourceStatus getStatus(Service service, String name, String identifier, Boolean build) { + public static ArbitraryResourceStatus getStatus(Service service, String name, String identifier, Boolean build, boolean updateCache) { // If "build" has been specified, build the resource before returning its status if (build != null && build == true) { - ArbitraryDataReader reader = new ArbitraryDataReader(name, ArbitraryDataFile.ResourceIdType.NAME, service, identifier); try { + ArbitraryDataReader reader = new ArbitraryDataReader(name, ArbitraryDataFile.ResourceIdType.NAME, service, identifier); if (!reader.isBuilding()) { reader.loadSynchronously(false); } @@ -410,44 +410,6 @@ public class ArbitraryTransactionUtils { } ArbitraryDataResource resource = new ArbitraryDataResource(name, ArbitraryDataFile.ResourceIdType.NAME, service, identifier); - return resource.getStatus(false); + return resource.getStatusAndUpdateCache(updateCache); } - - public static List addStatusToResources(List resources) { - // Determine and add the status of each resource - List updatedResources = new ArrayList<>(); - for (ArbitraryResourceInfo resourceInfo : resources) { - try { - ArbitraryDataResource resource = new ArbitraryDataResource(resourceInfo.name, ArbitraryDataFile.ResourceIdType.NAME, - resourceInfo.service, resourceInfo.identifier); - ArbitraryResourceStatus status = resource.getStatus(true); - if (status != null) { - resourceInfo.status = status; - } - updatedResources.add(resourceInfo); - - } catch (Exception e) { - // Catch and log all exceptions, since some systems are experiencing 500 errors when including statuses - LOGGER.info("Caught exception when adding status to resource {}: {}", resourceInfo, e.toString()); - } - } - return updatedResources; - } - - public static List addMetadataToResources(List resources) { - // Add metadata fields to each resource if they exist - List updatedResources = new ArrayList<>(); - for (ArbitraryResourceInfo resourceInfo : resources) { - ArbitraryDataResource resource = new ArbitraryDataResource(resourceInfo.name, ArbitraryDataFile.ResourceIdType.NAME, - resourceInfo.service, resourceInfo.identifier); - ArbitraryDataTransactionMetadata transactionMetadata = resource.getLatestTransactionMetadata(); - ArbitraryResourceMetadata resourceMetadata = ArbitraryResourceMetadata.fromTransactionMetadata(transactionMetadata, false); - if (resourceMetadata != null) { - resourceInfo.metadata = resourceMetadata; - } - updatedResources.add(resourceInfo); - } - return updatedResources; - } - } diff --git a/src/main/java/org/qortal/utils/BlockArchiveUtils.java b/src/main/java/org/qortal/utils/BlockArchiveUtils.java index f9ca0d0d..33482fc6 100644 --- a/src/main/java/org/qortal/utils/BlockArchiveUtils.java +++ b/src/main/java/org/qortal/utils/BlockArchiveUtils.java @@ -3,8 +3,6 @@ package org.qortal.utils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.qortal.data.at.ATStateData; -import org.qortal.data.block.BlockData; -import org.qortal.data.transaction.TransactionData; import org.qortal.repository.BlockArchiveReader; import org.qortal.repository.DataException; import org.qortal.repository.Repository; diff --git a/src/main/java/org/qortal/utils/ExecuteProduceConsume.java b/src/main/java/org/qortal/utils/ExecuteProduceConsume.java index 223d0e93..58e1af05 100644 --- a/src/main/java/org/qortal/utils/ExecuteProduceConsume.java +++ b/src/main/java/org/qortal/utils/ExecuteProduceConsume.java @@ -1,16 +1,15 @@ package org.qortal.utils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.TimeUnit; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - public abstract class ExecuteProduceConsume implements Runnable { @XmlAccessorType(XmlAccessType.FIELD) diff --git a/src/main/java/org/qortal/utils/LoggingUtils.java b/src/main/java/org/qortal/utils/LoggingUtils.java index eeb2a7c0..b3b272b0 100644 --- a/src/main/java/org/qortal/utils/LoggingUtils.java +++ b/src/main/java/org/qortal/utils/LoggingUtils.java @@ -1,7 +1,6 @@ package org.qortal.utils; import org.apache.commons.io.FileUtils; -import org.apache.logging.log4j.LogManager; import java.io.IOException; import java.nio.file.Files; diff --git a/src/main/java/org/qortal/utils/NTP.java b/src/main/java/org/qortal/utils/NTP.java index 779db41b..e5c0d35f 100644 --- a/src/main/java/org/qortal/utils/NTP.java +++ b/src/main/java/org/qortal/utils/NTP.java @@ -1,25 +1,21 @@ package org.qortal.utils; +import org.apache.commons.net.ntp.NTPUDPClient; +import org.apache.commons.net.ntp.NtpV3Packet; +import org.apache.commons.net.ntp.TimeInfo; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + import java.io.IOException; import java.net.InetAddress; import java.util.ArrayList; import java.util.Deque; import java.util.LinkedList; import java.util.List; -import java.util.concurrent.CompletionService; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorCompletionService; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; +import java.util.concurrent.*; import java.util.stream.Collectors; -import org.apache.commons.net.ntp.NTPUDPClient; -import org.apache.commons.net.ntp.NtpV3Packet; -import org.apache.commons.net.ntp.TimeInfo; -import org.apache.logging.log4j.Level; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - public class NTP implements Runnable { private static final Logger LOGGER = LogManager.getLogger(NTP.class); diff --git a/src/main/java/org/qortal/utils/Serialization.java b/src/main/java/org/qortal/utils/Serialization.java index 26888477..a95698c6 100644 --- a/src/main/java/org/qortal/utils/Serialization.java +++ b/src/main/java/org/qortal/utils/Serialization.java @@ -1,5 +1,9 @@ package org.qortal.utils; +import com.google.common.primitives.Ints; +import org.qortal.transform.TransformationException; +import org.qortal.transform.Transformer; + import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; @@ -9,11 +13,6 @@ import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.util.Arrays; -import org.qortal.transform.TransformationException; -import org.qortal.transform.Transformer; - -import com.google.common.primitives.Ints; - public class Serialization { /** diff --git a/src/main/java/org/qortal/utils/SevenZ.java b/src/main/java/org/qortal/utils/SevenZ.java index 5126b292..1432dc0d 100644 --- a/src/main/java/org/qortal/utils/SevenZ.java +++ b/src/main/java/org/qortal/utils/SevenZ.java @@ -11,7 +11,10 @@ import org.apache.commons.compress.archivers.sevenz.SevenZFile; import org.apache.commons.compress.archivers.sevenz.SevenZOutputFile; import org.qortal.gui.SplashFrame; -import java.io.*; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; public class SevenZ { diff --git a/src/main/java/org/qortal/utils/StringLongMapXmlAdapter.java b/src/main/java/org/qortal/utils/StringLongMapXmlAdapter.java index 00625462..2ddf5823 100644 --- a/src/main/java/org/qortal/utils/StringLongMapXmlAdapter.java +++ b/src/main/java/org/qortal/utils/StringLongMapXmlAdapter.java @@ -1,17 +1,16 @@ package org.qortal.utils; +import org.eclipse.persistence.oxm.annotations.XmlVariableNode; + +import javax.xml.bind.annotation.XmlTransient; +import javax.xml.bind.annotation.XmlValue; +import javax.xml.bind.annotation.adapters.XmlAdapter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; -import javax.xml.bind.annotation.XmlTransient; -import javax.xml.bind.annotation.XmlValue; -import javax.xml.bind.annotation.adapters.XmlAdapter; - -import org.eclipse.persistence.oxm.annotations.XmlVariableNode; - public class StringLongMapXmlAdapter extends XmlAdapter> { public static class StringLongMap { diff --git a/src/main/java/org/qortal/utils/StringUtils.java b/src/main/java/org/qortal/utils/StringUtils.java new file mode 100644 index 00000000..b3ffcfa6 --- /dev/null +++ b/src/main/java/org/qortal/utils/StringUtils.java @@ -0,0 +1,13 @@ +package org.qortal.utils; + +public class StringUtils { + + public static String sanitizeString(String input) { + String sanitized = input + .replaceAll("[<>:\"/\\\\|?*]", "") // Remove invalid characters + .replaceAll("^\\s+|\\s+$", "") // Trim leading and trailing whitespace + .replaceAll("\\s+", "_"); // Replace consecutive whitespace with underscores + + return sanitized; + } +} diff --git a/src/main/java/org/qortal/utils/URLViewer.java b/src/main/java/org/qortal/utils/URLViewer.java index e03e6141..7d512bd2 100644 --- a/src/main/java/org/qortal/utils/URLViewer.java +++ b/src/main/java/org/qortal/utils/URLViewer.java @@ -1,13 +1,13 @@ package org.qortal.utils; -import java.awt.Desktop; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.awt.*; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - public class URLViewer { private static final Logger LOGGER = LogManager.getLogger(URLViewer.class); diff --git a/src/main/java/org/qortal/utils/Unicode.java b/src/main/java/org/qortal/utils/Unicode.java index c9484d82..c3e282ce 100644 --- a/src/main/java/org/qortal/utils/Unicode.java +++ b/src/main/java/org/qortal/utils/Unicode.java @@ -1,28 +1,16 @@ package org.qortal.utils; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; -import java.io.UncheckedIOException; -import java.text.Normalizer; -import java.text.Normalizer.Form; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.MissingResourceException; -import java.util.TreeMap; - import com.google.common.base.CharMatcher; - import com.ibm.icu.text.CaseMap; import com.ibm.icu.text.Normalizer2; import com.ibm.icu.text.UnicodeSet; import net.codebox.homoglyph.HomoglyphBuilder; +import java.io.*; +import java.text.Normalizer; +import java.text.Normalizer.Form; +import java.util.*; + public abstract class Unicode { public static final String NO_BREAK_SPACE = "\u00a0"; diff --git a/src/main/resources/q-apps/q-apps.js b/src/main/resources/q-apps/q-apps.js index b638c621..d586e2e2 100644 --- a/src/main/resources/q-apps/q-apps.js +++ b/src/main/resources/q-apps/q-apps.js @@ -227,14 +227,20 @@ window.addEventListener("message", (event) => { if (data.identifier != null) url = url.concat("&identifier=" + data.identifier); if (data.name != null) url = url.concat("&name=" + data.name); if (data.names != null) data.names.forEach((x, i) => url = url.concat("&name=" + x)); + if (data.title != null) url = url.concat("&title=" + data.title); + if (data.description != null) url = url.concat("&description=" + data.description); if (data.prefix != null) url = url.concat("&prefix=" + new Boolean(data.prefix).toString()); if (data.exactMatchNames != null) url = url.concat("&exactmatchnames=" + new Boolean(data.exactMatchNames).toString()); if (data.default != null) url = url.concat("&default=" + new Boolean(data.default).toString()); + if (data.mode != null) url = url.concat("&mode=" + data.mode); + if (data.minLevel != null) url = url.concat("&minlevel=" + data.minLevel); if (data.includeStatus != null) url = url.concat("&includestatus=" + new Boolean(data.includeStatus).toString()); if (data.includeMetadata != null) url = url.concat("&includemetadata=" + new Boolean(data.includeMetadata).toString()); if (data.nameListFilter != null) url = url.concat("&namefilter=" + data.nameListFilter); if (data.followedOnly != null) url = url.concat("&followedonly=" + new Boolean(data.followedOnly).toString()); if (data.excludeBlocked != null) url = url.concat("&excludeblocked=" + new Boolean(data.excludeBlocked).toString()); + if (data.before != null) url = url.concat("&before=" + data.before); + if (data.after != null) url = url.concat("&after=" + data.after); if (data.limit != null) url = url.concat("&limit=" + data.limit); if (data.offset != null) url = url.concat("&offset=" + data.offset); if (data.reverse != null) url = url.concat("&reverse=" + new Boolean(data.reverse).toString()); diff --git a/src/test/java/org/qortal/test/AccountBalanceTests.java b/src/test/java/org/qortal/test/AccountBalanceTests.java index cd2822ac..13884b2d 100644 --- a/src/test/java/org/qortal/test/AccountBalanceTests.java +++ b/src/test/java/org/qortal/test/AccountBalanceTests.java @@ -1,14 +1,5 @@ package org.qortal.test; -import static org.junit.Assert.*; - -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Random; -import java.util.stream.Collectors; - import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -17,14 +8,24 @@ import org.qortal.account.PublicKeyAccount; import org.qortal.asset.Asset; import org.qortal.data.account.AccountBalanceData; import org.qortal.data.account.AccountData; +import org.qortal.repository.AccountRepository.BalanceOrdering; import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.repository.RepositoryManager; -import org.qortal.repository.AccountRepository.BalanceOrdering; import org.qortal.test.common.BlockUtils; import org.qortal.test.common.Common; import org.qortal.test.common.TestAccount; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Random; +import java.util.stream.Collectors; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + public class AccountBalanceTests extends Common { @Before diff --git a/src/test/java/org/qortal/test/AccountRefCacheTests.java b/src/test/java/org/qortal/test/AccountRefCacheTests.java index c7305dd9..ad0cfa7b 100644 --- a/src/test/java/org/qortal/test/AccountRefCacheTests.java +++ b/src/test/java/org/qortal/test/AccountRefCacheTests.java @@ -1,10 +1,5 @@ package org.qortal.test; -import static org.junit.Assert.*; - -import java.util.Arrays; -import java.util.Random; - import org.junit.Before; import org.junit.Test; import org.qortal.account.Account; @@ -21,6 +16,11 @@ import org.qortal.test.common.TestAccount; import org.qortal.test.common.TransactionUtils; import org.qortal.test.common.transaction.TestTransaction; +import java.util.Arrays; +import java.util.Random; + +import static org.junit.Assert.*; + public class AccountRefCacheTests extends Common { private static final Random RANDOM = new Random(); diff --git a/src/test/java/org/qortal/test/AmountsTests.java b/src/test/java/org/qortal/test/AmountsTests.java index 90159466..82a2d7ad 100644 --- a/src/test/java/org/qortal/test/AmountsTests.java +++ b/src/test/java/org/qortal/test/AmountsTests.java @@ -1,10 +1,10 @@ package org.qortal.test; -import static org.junit.Assert.*; - import org.junit.Test; import org.qortal.utils.Amounts; +import static org.junit.Assert.assertEquals; + public class AmountsTests { @Test diff --git a/src/test/java/org/qortal/test/BlockTests.java b/src/test/java/org/qortal/test/BlockTests.java index 53b216ec..e0e2244d 100644 --- a/src/test/java/org/qortal/test/BlockTests.java +++ b/src/test/java/org/qortal/test/BlockTests.java @@ -1,18 +1,11 @@ package org.qortal.test; -import java.util.Arrays; -import java.util.Deque; -import java.util.LinkedList; -import java.util.List; -import java.util.stream.Collectors; - import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.qortal.account.PrivateKeyAccount; import org.qortal.block.Block; import org.qortal.block.GenesisBlock; -import org.qortal.data.at.ATStateData; import org.qortal.data.block.BlockData; import org.qortal.data.transaction.TransactionData; import org.qortal.repository.DataException; @@ -28,7 +21,12 @@ import org.qortal.transform.block.BlockTransformation; import org.qortal.transform.block.BlockTransformer; import org.qortal.transform.transaction.TransactionTransformer; import org.qortal.utils.Base58; -import org.qortal.utils.Triple; + +import java.util.Arrays; +import java.util.Deque; +import java.util.LinkedList; +import java.util.List; +import java.util.stream.Collectors; import static org.junit.Assert.*; diff --git a/src/test/java/org/qortal/test/ByteArrayTests.java b/src/test/java/org/qortal/test/ByteArrayTests.java index f954a367..4beb2858 100644 --- a/src/test/java/org/qortal/test/ByteArrayTests.java +++ b/src/test/java/org/qortal/test/ByteArrayTests.java @@ -1,19 +1,13 @@ package org.qortal.test; -import static org.junit.Assert.*; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Random; -import java.util.TreeMap; - import org.junit.Before; import org.junit.Test; import org.qortal.utils.ByteArray; +import java.util.*; + +import static org.junit.Assert.*; + public class ByteArrayTests { private static List testValues; diff --git a/src/test/java/org/qortal/test/ChainWeightTests.java b/src/test/java/org/qortal/test/ChainWeightTests.java index e53c4c8e..d2a147b7 100644 --- a/src/test/java/org/qortal/test/ChainWeightTests.java +++ b/src/test/java/org/qortal/test/ChainWeightTests.java @@ -1,14 +1,8 @@ package org.qortal.test; -import static org.junit.Assert.*; - -import java.math.BigInteger; -import java.text.DecimalFormat; -import java.text.NumberFormat; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; import org.qortal.account.Account; import org.qortal.block.Block; import org.qortal.block.BlockChain; @@ -21,9 +15,15 @@ import org.qortal.test.common.TestAccount; import org.qortal.transform.Transformer; import org.qortal.transform.block.BlockTransformer; import org.qortal.utils.NTP; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; + +import java.math.BigInteger; +import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import static org.junit.Assert.*; public class ChainWeightTests extends Common { diff --git a/src/test/java/org/qortal/test/CryptoTests.java b/src/test/java/org/qortal/test/CryptoTests.java index 2cc73182..75422ee7 100644 --- a/src/test/java/org/qortal/test/CryptoTests.java +++ b/src/test/java/org/qortal/test/CryptoTests.java @@ -1,16 +1,24 @@ package org.qortal.test; +import com.google.common.hash.HashCode; +import org.bouncycastle.crypto.agreement.X25519Agreement; +import org.bouncycastle.crypto.params.Ed25519PrivateKeyParameters; +import org.bouncycastle.crypto.params.Ed25519PublicKeyParameters; +import org.bouncycastle.crypto.params.X25519PrivateKeyParameters; +import org.bouncycastle.crypto.params.X25519PublicKeyParameters; import org.junit.Test; import org.qortal.account.PrivateKeyAccount; import org.qortal.block.BlockChain; import org.qortal.crypto.AES; -import org.qortal.crypto.Qortal25519Extras; import org.qortal.crypto.Crypto; +import org.qortal.crypto.Qortal25519Extras; import org.qortal.test.common.Common; import org.qortal.utils.Base58; -import static org.junit.Assert.*; - +import javax.crypto.BadPaddingException; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import javax.crypto.SecretKey; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -25,18 +33,7 @@ import java.security.SecureRandom; import java.util.Arrays; import java.util.Random; -import org.bouncycastle.crypto.agreement.X25519Agreement; -import org.bouncycastle.crypto.params.Ed25519PrivateKeyParameters; -import org.bouncycastle.crypto.params.Ed25519PublicKeyParameters; -import org.bouncycastle.crypto.params.X25519PrivateKeyParameters; -import org.bouncycastle.crypto.params.X25519PublicKeyParameters; - -import com.google.common.hash.HashCode; - -import javax.crypto.BadPaddingException; -import javax.crypto.IllegalBlockSizeException; -import javax.crypto.NoSuchPaddingException; -import javax.crypto.SecretKey; +import static org.junit.Assert.*; public class CryptoTests extends Common { diff --git a/src/test/java/org/qortal/test/EPCTests.java b/src/test/java/org/qortal/test/EPCTests.java index 1a41b75d..b90be16d 100644 --- a/src/test/java/org/qortal/test/EPCTests.java +++ b/src/test/java/org/qortal/test/EPCTests.java @@ -1,5 +1,9 @@ package org.qortal.test; +import org.junit.Test; +import org.qortal.utils.ExecuteProduceConsume; +import org.qortal.utils.ExecuteProduceConsume.StatsSnapshot; + import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -9,10 +13,6 @@ import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; -import org.junit.Test; -import org.qortal.utils.ExecuteProduceConsume; -import org.qortal.utils.ExecuteProduceConsume.StatsSnapshot; - import static org.junit.Assert.fail; public class EPCTests { diff --git a/src/test/java/org/qortal/test/GuiTests.java b/src/test/java/org/qortal/test/GuiTests.java index 0754d33b..016518f3 100644 --- a/src/test/java/org/qortal/test/GuiTests.java +++ b/src/test/java/org/qortal/test/GuiTests.java @@ -1,12 +1,12 @@ package org.qortal.test; -import java.awt.TrayIcon.MessageType; - import org.junit.Ignore; import org.junit.Test; import org.qortal.gui.SplashFrame; import org.qortal.gui.SysTray; +import java.awt.TrayIcon.MessageType; + @Ignore public class GuiTests { diff --git a/src/test/java/org/qortal/test/MemoryPoWTests.java b/src/test/java/org/qortal/test/MemoryPoWTests.java index 3b0045e5..f642c781 100644 --- a/src/test/java/org/qortal/test/MemoryPoWTests.java +++ b/src/test/java/org/qortal/test/MemoryPoWTests.java @@ -6,10 +6,10 @@ import org.qortal.crypto.MemoryPoW; import org.qortal.repository.DataException; import org.qortal.test.common.Common; -import static org.junit.Assert.*; - import java.util.Random; +import static org.junit.Assert.*; + @Ignore public class MemoryPoWTests { diff --git a/src/test/java/org/qortal/test/MessageTests.java b/src/test/java/org/qortal/test/MessageTests.java index c76c715e..216f61bf 100644 --- a/src/test/java/org/qortal/test/MessageTests.java +++ b/src/test/java/org/qortal/test/MessageTests.java @@ -27,11 +27,11 @@ import org.qortal.transform.transaction.MessageTransactionTransformer; import org.qortal.transform.transaction.TransactionTransformer; import org.qortal.utils.NTP; -import static org.junit.Assert.*; - import java.util.List; import java.util.Random; +import static org.junit.Assert.*; + public class MessageTests extends Common { private static final int version = 4; diff --git a/src/test/java/org/qortal/test/RepositoryTests.java b/src/test/java/org/qortal/test/RepositoryTests.java index 30cbaea5..0d07be4b 100644 --- a/src/test/java/org/qortal/test/RepositoryTests.java +++ b/src/test/java/org/qortal/test/RepositoryTests.java @@ -1,5 +1,7 @@ package org.qortal.test; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.junit.Before; import org.junit.Test; import org.qortal.account.Account; @@ -17,8 +19,6 @@ import org.qortal.repository.hsqldb.HSQLDBRepository; import org.qortal.test.common.BlockUtils; import org.qortal.test.common.Common; -import static org.junit.Assert.*; - import java.lang.reflect.Field; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -29,8 +29,7 @@ import java.util.List; import java.util.Random; import java.util.concurrent.*; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; +import static org.junit.Assert.*; public class RepositoryTests extends Common { diff --git a/src/test/java/org/qortal/test/SchnorrTests.java b/src/test/java/org/qortal/test/SchnorrTests.java index e0d1f1c9..666e4860 100644 --- a/src/test/java/org/qortal/test/SchnorrTests.java +++ b/src/test/java/org/qortal/test/SchnorrTests.java @@ -12,9 +12,8 @@ import org.qortal.test.common.AccountUtils; import org.qortal.transform.Transformer; import java.math.BigInteger; -import java.security.SecureRandom; import java.security.Security; -import java.util.*; +import java.util.List; import java.util.stream.Collectors; import static org.junit.Assert.*; diff --git a/src/test/java/org/qortal/test/SelfSponsorshipAlgoV1Tests.java b/src/test/java/org/qortal/test/SelfSponsorshipAlgoV1Tests.java index 397a1bbe..5c038de2 100644 --- a/src/test/java/org/qortal/test/SelfSponsorshipAlgoV1Tests.java +++ b/src/test/java/org/qortal/test/SelfSponsorshipAlgoV1Tests.java @@ -15,17 +15,23 @@ import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.repository.RepositoryManager; import org.qortal.settings.Settings; -import org.qortal.test.common.*; +import org.qortal.test.common.AccountUtils; +import org.qortal.test.common.BlockUtils; +import org.qortal.test.common.Common; +import org.qortal.test.common.TransactionUtils; import org.qortal.test.common.transaction.TestTransaction; import org.qortal.transaction.Transaction; import org.qortal.transaction.TransferPrivsTransaction; import org.qortal.utils.NTP; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; import static org.junit.Assert.*; import static org.qortal.test.common.AccountUtils.fee; -import static org.qortal.transaction.Transaction.ValidationResult.*; +import static org.qortal.transaction.Transaction.ValidationResult.ACCOUNT_NOT_TRANSFERABLE; +import static org.qortal.transaction.Transaction.ValidationResult.OK; public class SelfSponsorshipAlgoV1Tests extends Common { diff --git a/src/test/java/org/qortal/test/TransactionSearchTests.java b/src/test/java/org/qortal/test/TransactionSearchTests.java index 8cc75646..ba7b4781 100644 --- a/src/test/java/org/qortal/test/TransactionSearchTests.java +++ b/src/test/java/org/qortal/test/TransactionSearchTests.java @@ -1,9 +1,5 @@ package org.qortal.test; -import static org.junit.Assert.*; - -import java.util.List; - import org.junit.Before; import org.junit.Test; import org.qortal.account.PrivateKeyAccount; @@ -15,6 +11,10 @@ import org.qortal.test.common.BlockUtils; import org.qortal.test.common.Common; import org.qortal.transaction.Transaction.TransactionType; +import java.util.List; + +import static org.junit.Assert.assertEquals; + public class TransactionSearchTests extends Common { @Before diff --git a/src/test/java/org/qortal/test/TransferPrivsTests.java b/src/test/java/org/qortal/test/TransferPrivsTests.java index 3ed3ad16..86a0e743 100644 --- a/src/test/java/org/qortal/test/TransferPrivsTests.java +++ b/src/test/java/org/qortal/test/TransferPrivsTests.java @@ -17,20 +17,16 @@ import org.qortal.data.transaction.TransferPrivsTransactionData; import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.repository.RepositoryManager; -import org.qortal.test.common.AccountUtils; -import org.qortal.test.common.BlockUtils; -import org.qortal.test.common.Common; -import org.qortal.test.common.TestAccount; -import org.qortal.test.common.TransactionUtils; +import org.qortal.test.common.*; import org.qortal.test.common.transaction.TestTransaction; import org.qortal.transform.Transformer; import org.qortal.utils.Amounts; -import static org.junit.Assert.*; - import java.util.List; import java.util.Random; +import static org.junit.Assert.*; + @Ignore(value = "Doesn't work, to be fixed later") public class TransferPrivsTests extends Common { diff --git a/src/test/java/org/qortal/test/UnicodeTests.java b/src/test/java/org/qortal/test/UnicodeTests.java index f84b13d5..724154f4 100644 --- a/src/test/java/org/qortal/test/UnicodeTests.java +++ b/src/test/java/org/qortal/test/UnicodeTests.java @@ -1,11 +1,12 @@ package org.qortal.test; -import static org.junit.Assert.*; -import static org.qortal.utils.Unicode.*; - import org.junit.Test; import org.qortal.utils.Unicode; +import static org.junit.Assert.*; +import static org.qortal.utils.Unicode.NO_BREAK_SPACE; +import static org.qortal.utils.Unicode.ZERO_WIDTH_SPACE; + public class UnicodeTests { @Test diff --git a/src/test/java/org/qortal/test/api/AddressesApiTests.java b/src/test/java/org/qortal/test/api/AddressesApiTests.java index 1510f63f..319a9a52 100644 --- a/src/test/java/org/qortal/test/api/AddressesApiTests.java +++ b/src/test/java/org/qortal/test/api/AddressesApiTests.java @@ -1,15 +1,15 @@ package org.qortal.test.api; -import static org.junit.Assert.*; - -import java.util.Collections; - import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.qortal.api.resource.AddressesResource; import org.qortal.test.common.ApiCommon; +import java.util.Collections; + +import static org.junit.Assert.assertNotNull; + public class AddressesApiTests extends ApiCommon { private AddressesResource addressesResource; diff --git a/src/test/java/org/qortal/test/api/AdminApiTests.java b/src/test/java/org/qortal/test/api/AdminApiTests.java index 01f2ebc9..6da52380 100644 --- a/src/test/java/org/qortal/test/api/AdminApiTests.java +++ b/src/test/java/org/qortal/test/api/AdminApiTests.java @@ -1,7 +1,5 @@ package org.qortal.test.api; -import static org.junit.Assert.*; - import org.apache.commons.lang3.reflect.FieldUtils; import org.junit.Before; import org.junit.Test; @@ -11,6 +9,8 @@ import org.qortal.settings.Settings; import org.qortal.test.common.ApiCommon; import org.qortal.test.common.Common; +import static org.junit.Assert.assertNotNull; + public class AdminApiTests extends ApiCommon { private AdminResource adminResource; diff --git a/src/test/java/org/qortal/test/api/ArbitraryApiTests.java b/src/test/java/org/qortal/test/api/ArbitraryApiTests.java index e4f27db6..d4ad8926 100644 --- a/src/test/java/org/qortal/test/api/ArbitraryApiTests.java +++ b/src/test/java/org/qortal/test/api/ArbitraryApiTests.java @@ -1,7 +1,5 @@ package org.qortal.test.api; -import static org.junit.Assert.*; - import org.junit.Before; import org.junit.Test; import org.qortal.api.resource.ArbitraryResource; @@ -9,6 +7,8 @@ import org.qortal.api.resource.TransactionsResource.ConfirmationStatus; import org.qortal.arbitrary.misc.Service; import org.qortal.test.common.ApiCommon; +import static org.junit.Assert.assertNotNull; + public class ArbitraryApiTests extends ApiCommon { private ArbitraryResource arbitraryResource; diff --git a/src/test/java/org/qortal/test/api/AssetsApiTests.java b/src/test/java/org/qortal/test/api/AssetsApiTests.java index d678c1ce..2e88b816 100644 --- a/src/test/java/org/qortal/test/api/AssetsApiTests.java +++ b/src/test/java/org/qortal/test/api/AssetsApiTests.java @@ -1,24 +1,25 @@ package org.qortal.test.api; -import static org.junit.Assert.*; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - import org.junit.Before; import org.junit.Test; import org.qortal.api.ApiError; import org.qortal.api.ApiException; import org.qortal.api.resource.AssetsResource; import org.qortal.api.resource.TransactionsResource.ConfirmationStatus; -import org.qortal.repository.Repository; -import org.qortal.repository.RepositoryManager; import org.qortal.repository.AccountRepository.BalanceOrdering; import org.qortal.repository.DataException; +import org.qortal.repository.Repository; +import org.qortal.repository.RepositoryManager; import org.qortal.test.common.ApiCommon; import org.qortal.test.common.AssetUtils; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + public class AssetsApiTests extends ApiCommon { private static final String FAKE_ORDER_ID_BASE58 = "C3CPq7c8PY"; diff --git a/src/test/java/org/qortal/test/api/BlockApiTests.java b/src/test/java/org/qortal/test/api/BlockApiTests.java index 23e7b007..8366bacd 100644 --- a/src/test/java/org/qortal/test/api/BlockApiTests.java +++ b/src/test/java/org/qortal/test/api/BlockApiTests.java @@ -1,11 +1,5 @@ package org.qortal.test.api; -import static org.junit.Assert.*; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - import org.junit.Before; import org.junit.Ignore; import org.junit.Test; @@ -21,6 +15,12 @@ import org.qortal.test.common.BlockUtils; import org.qortal.test.common.Common; import org.qortal.utils.Base58; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import static org.junit.Assert.assertNotNull; + public class BlockApiTests extends ApiCommon { private BlocksResource blocksResource; diff --git a/src/test/java/org/qortal/test/api/GroupApiTests.java b/src/test/java/org/qortal/test/api/GroupApiTests.java index cd288906..a5b8edd7 100644 --- a/src/test/java/org/qortal/test/api/GroupApiTests.java +++ b/src/test/java/org/qortal/test/api/GroupApiTests.java @@ -1,12 +1,12 @@ package org.qortal.test.api; -import static org.junit.Assert.*; - import org.junit.Before; import org.junit.Test; import org.qortal.api.resource.GroupsResource; import org.qortal.test.common.ApiCommon; +import static org.junit.Assert.assertNotNull; + public class GroupApiTests extends ApiCommon { private GroupsResource groupsResource; diff --git a/src/test/java/org/qortal/test/api/NamesApiTests.java b/src/test/java/org/qortal/test/api/NamesApiTests.java index effdfea4..49fb44a7 100644 --- a/src/test/java/org/qortal/test/api/NamesApiTests.java +++ b/src/test/java/org/qortal/test/api/NamesApiTests.java @@ -1,7 +1,5 @@ package org.qortal.test.api; -import static org.junit.Assert.*; - import org.junit.Before; import org.junit.Test; import org.qortal.account.PrivateKeyAccount; @@ -17,7 +15,8 @@ import org.qortal.test.common.Common; import org.qortal.test.common.TransactionUtils; import org.qortal.test.common.transaction.TestTransaction; import org.qortal.transaction.RegisterNameTransaction; -import org.qortal.utils.NTP; + +import static org.junit.Assert.assertNotNull; public class NamesApiTests extends ApiCommon { diff --git a/src/test/java/org/qortal/test/api/TransactionsApiTests.java b/src/test/java/org/qortal/test/api/TransactionsApiTests.java index 102cac34..ac98ec23 100644 --- a/src/test/java/org/qortal/test/api/TransactionsApiTests.java +++ b/src/test/java/org/qortal/test/api/TransactionsApiTests.java @@ -1,10 +1,5 @@ package org.qortal.test.api; -import static org.junit.Assert.*; - -import java.util.Arrays; -import java.util.List; - import org.junit.Before; import org.junit.Test; import org.qortal.api.resource.TransactionsResource; @@ -12,6 +7,11 @@ import org.qortal.api.resource.TransactionsResource.ConfirmationStatus; import org.qortal.test.common.ApiCommon; import org.qortal.transaction.Transaction.TransactionType; +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.assertNotNull; + public class TransactionsApiTests extends ApiCommon { private TransactionsResource transactionsResource; diff --git a/src/test/java/org/qortal/test/apps/BuildCheckpoints.java b/src/test/java/org/qortal/test/apps/BuildCheckpoints.java index 48cc570c..5500c848 100644 --- a/src/test/java/org/qortal/test/apps/BuildCheckpoints.java +++ b/src/test/java/org/qortal/test/apps/BuildCheckpoints.java @@ -1,25 +1,16 @@ package org.qortal.test.apps; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.OutputStreamWriter; -import java.io.PrintWriter; +import org.bitcoinj.core.*; +import org.bitcoinj.params.RegTestParams; +import org.bitcoinj.store.BlockStore; +import org.bitcoinj.store.MemoryBlockStore; + +import java.io.*; import java.net.InetAddress; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.util.TreeMap; -import org.bitcoinj.core.BlockChain; -import org.bitcoinj.core.CheckpointManager; -import org.bitcoinj.core.NetworkParameters; -import org.bitcoinj.core.PeerAddress; -import org.bitcoinj.core.PeerGroup; -import org.bitcoinj.core.StoredBlock; -import org.bitcoinj.params.RegTestParams; -import org.bitcoinj.store.BlockStore; -import org.bitcoinj.store.MemoryBlockStore; - public class BuildCheckpoints { private static final TreeMap checkpoints = new TreeMap<>(); diff --git a/src/test/java/org/qortal/test/apps/CheckTranslations.java b/src/test/java/org/qortal/test/apps/CheckTranslations.java index b8008c78..bf239611 100644 --- a/src/test/java/org/qortal/test/apps/CheckTranslations.java +++ b/src/test/java/org/qortal/test/apps/CheckTranslations.java @@ -1,15 +1,15 @@ package org.qortal.test.apps; +import org.qortal.api.ApiError; +import org.qortal.globalization.Translator; +import org.qortal.transaction.Transaction.ValidationResult; + import java.util.Arrays; import java.util.Collections; import java.util.Locale; import java.util.Set; import java.util.stream.Collectors; -import org.qortal.api.ApiError; -import org.qortal.globalization.Translator; -import org.qortal.transaction.Transaction.ValidationResult; - public class CheckTranslations { private static final String[] SUPPORTED_LANGS = new String[] { "en", "de", "zh", "ru" }; diff --git a/src/test/java/org/qortal/test/apps/DecodeOnlineAccounts.java b/src/test/java/org/qortal/test/apps/DecodeOnlineAccounts.java index 9242c422..891a7b97 100644 --- a/src/test/java/org/qortal/test/apps/DecodeOnlineAccounts.java +++ b/src/test/java/org/qortal/test/apps/DecodeOnlineAccounts.java @@ -1,8 +1,6 @@ package org.qortal.test.apps; -import java.math.BigDecimal; -import java.security.Security; - +import io.druid.extendedset.intset.ConciseSet; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.jsse.provider.BouncyCastleJsseProvider; import org.qortal.block.BlockChain; @@ -19,7 +17,8 @@ import org.qortal.transform.block.BlockTransformer; import org.qortal.utils.Base58; import org.roaringbitmap.IntIterator; -import io.druid.extendedset.intset.ConciseSet; +import java.math.BigDecimal; +import java.security.Security; public class DecodeOnlineAccounts { diff --git a/src/test/java/org/qortal/test/apps/MemoryPoWTest.java b/src/test/java/org/qortal/test/apps/MemoryPoWTest.java index 81ab4843..520676bf 100644 --- a/src/test/java/org/qortal/test/apps/MemoryPoWTest.java +++ b/src/test/java/org/qortal/test/apps/MemoryPoWTest.java @@ -1,9 +1,9 @@ package org.qortal.test.apps; -import java.util.Random; - import org.qortal.crypto.MemoryPoW; +import java.util.Random; + public class MemoryPoWTest { public static void main(String[] args) { diff --git a/src/test/java/org/qortal/test/apps/NTPTests.java b/src/test/java/org/qortal/test/apps/NTPTests.java index 1dc25b00..df23fd88 100644 --- a/src/test/java/org/qortal/test/apps/NTPTests.java +++ b/src/test/java/org/qortal/test/apps/NTPTests.java @@ -1,17 +1,17 @@ package org.qortal.test.apps; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.config.Configuration; import org.apache.logging.log4j.core.config.LoggerConfig; -import org.apache.logging.log4j.core.LoggerContext; import org.qortal.utils.NTP; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + public class NTPTests { private static final List CC_TLDS = Arrays.asList("oceania", "europe", "cn", "asia", "africa"); diff --git a/src/test/java/org/qortal/test/apps/ProxyTest.java b/src/test/java/org/qortal/test/apps/ProxyTest.java index 7ddd9ea8..c3b3e105 100644 --- a/src/test/java/org/qortal/test/apps/ProxyTest.java +++ b/src/test/java/org/qortal/test/apps/ProxyTest.java @@ -1,22 +1,13 @@ package org.qortal.test.apps; +import javax.net.ssl.*; import java.io.IOException; import java.io.InputStream; -import java.net.HttpURLConnection; -import java.net.InetSocketAddress; -import java.net.Socket; -import java.net.SocketAddress; -import java.net.URL; +import java.net.*; import java.util.Collections; import java.util.regex.Matcher; import java.util.regex.Pattern; -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.SNIHostName; -import javax.net.ssl.SNIServerName; -import javax.net.ssl.SSLParameters; -import javax.net.ssl.SSLSocket; - public class ProxyTest { private static final Pattern proxyUrlPattern = Pattern.compile("(https://)([^@:/]+)@([0-9.]{7,15})(/.*)"); diff --git a/src/test/java/org/qortal/test/apps/RewardShareKeys.java b/src/test/java/org/qortal/test/apps/RewardShareKeys.java index 5ba1aab4..366bbbb8 100644 --- a/src/test/java/org/qortal/test/apps/RewardShareKeys.java +++ b/src/test/java/org/qortal/test/apps/RewardShareKeys.java @@ -1,7 +1,5 @@ package org.qortal.test.apps; -import java.security.Security; - import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.jsse.provider.BouncyCastleJsseProvider; import org.qortal.account.PrivateKeyAccount; @@ -9,6 +7,8 @@ import org.qortal.account.PublicKeyAccount; import org.qortal.crypto.Crypto; import org.qortal.utils.Base58; +import java.security.Security; + public class RewardShareKeys { private static void usage() { diff --git a/src/test/java/org/qortal/test/apps/SettingsTests.java b/src/test/java/org/qortal/test/apps/SettingsTests.java index 30ead476..9c236e5f 100644 --- a/src/test/java/org/qortal/test/apps/SettingsTests.java +++ b/src/test/java/org/qortal/test/apps/SettingsTests.java @@ -1,20 +1,19 @@ package org.qortal.test.apps; -import java.io.FileReader; -import java.io.IOException; -import java.io.Reader; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Unmarshaller; -import javax.xml.transform.stream.StreamSource; - import org.eclipse.persistence.jaxb.JAXBContextFactory; import org.eclipse.persistence.jaxb.UnmarshallerProperties; import org.qortal.block.BlockChain; import org.qortal.data.transaction.TransactionData; import org.qortal.settings.Settings; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Unmarshaller; +import javax.xml.transform.stream.StreamSource; +import java.io.FileReader; +import java.io.IOException; +import java.io.Reader; + public class SettingsTests { public static void main(String[] args) throws JAXBException, IOException { diff --git a/src/test/java/org/qortal/test/apps/SyncReport.java b/src/test/java/org/qortal/test/apps/SyncReport.java index 323b2ed9..402ae118 100644 --- a/src/test/java/org/qortal/test/apps/SyncReport.java +++ b/src/test/java/org/qortal/test/apps/SyncReport.java @@ -8,12 +8,7 @@ import java.nio.file.Paths; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.Instant; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Scanner; +import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; diff --git a/src/test/java/org/qortal/test/apps/VanityGen.java b/src/test/java/org/qortal/test/apps/VanityGen.java index 2c22ea0b..43e1c749 100644 --- a/src/test/java/org/qortal/test/apps/VanityGen.java +++ b/src/test/java/org/qortal/test/apps/VanityGen.java @@ -1,18 +1,17 @@ package org.qortal.test.apps; -import java.security.SecureRandom; -import java.security.Security; -import java.util.Random; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - +import com.google.common.primitives.Bytes; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.jsse.provider.BouncyCastleJsseProvider; import org.qortal.account.PrivateKeyAccount; import org.qortal.crypto.Crypto; import org.qortal.utils.Base58; -import com.google.common.primitives.Bytes; +import java.security.SecureRandom; +import java.security.Security; +import java.util.Random; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class VanityGen { diff --git a/src/test/java/org/qortal/test/apps/brokenmd160.java b/src/test/java/org/qortal/test/apps/brokenmd160.java index d83969ff..ae0e8a7d 100644 --- a/src/test/java/org/qortal/test/apps/brokenmd160.java +++ b/src/test/java/org/qortal/test/apps/brokenmd160.java @@ -1,7 +1,7 @@ package org.qortal.test.apps; -import org.qortal.crypto.BrokenMD160; import com.google.common.hash.HashCode; +import org.qortal.crypto.BrokenMD160; @SuppressWarnings("deprecation") public class brokenmd160 { diff --git a/src/test/java/org/qortal/test/apps/orphan.java b/src/test/java/org/qortal/test/apps/orphan.java index f847f98d..7acb4a7f 100644 --- a/src/test/java/org/qortal/test/apps/orphan.java +++ b/src/test/java/org/qortal/test/apps/orphan.java @@ -1,5 +1,4 @@ package org.qortal.test.apps; -import java.security.Security; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.qortal.block.BlockChain; @@ -10,6 +9,8 @@ import org.qortal.repository.RepositoryManager; import org.qortal.repository.hsqldb.HSQLDBRepositoryFactory; import org.qortal.settings.Settings; +import java.security.Security; + public class orphan { public static void main(String[] args) { diff --git a/src/test/java/org/qortal/test/arbitrary/ArbitraryDataDigestTests.java b/src/test/java/org/qortal/test/arbitrary/ArbitraryDataDigestTests.java index 8ef04b27..fdc1f541 100644 --- a/src/test/java/org/qortal/test/arbitrary/ArbitraryDataDigestTests.java +++ b/src/test/java/org/qortal/test/arbitrary/ArbitraryDataDigestTests.java @@ -13,7 +13,8 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.UUID; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; public class ArbitraryDataDigestTests extends Common { diff --git a/src/test/java/org/qortal/test/arbitrary/ArbitraryDataFileTests.java b/src/test/java/org/qortal/test/arbitrary/ArbitraryDataFileTests.java index d2ee61c6..ac633717 100644 --- a/src/test/java/org/qortal/test/arbitrary/ArbitraryDataFileTests.java +++ b/src/test/java/org/qortal/test/arbitrary/ArbitraryDataFileTests.java @@ -2,8 +2,8 @@ package org.qortal.test.arbitrary; import org.junit.Before; import org.junit.Test; -import org.qortal.repository.DataException; import org.qortal.arbitrary.ArbitraryDataFile; +import org.qortal.repository.DataException; import org.qortal.test.common.Common; import java.util.Random; diff --git a/src/test/java/org/qortal/test/arbitrary/ArbitraryDataStoragePolicyTests.java b/src/test/java/org/qortal/test/arbitrary/ArbitraryDataStoragePolicyTests.java index 49e645cf..1d8f23b3 100644 --- a/src/test/java/org/qortal/test/arbitrary/ArbitraryDataStoragePolicyTests.java +++ b/src/test/java/org/qortal/test/arbitrary/ArbitraryDataStoragePolicyTests.java @@ -23,7 +23,6 @@ import org.qortal.test.common.TransactionUtils; import org.qortal.test.common.transaction.TestTransaction; import org.qortal.transaction.RegisterNameTransaction; import org.qortal.utils.Base58; -import org.qortal.utils.NTP; import java.io.IOException; import java.nio.file.Path; diff --git a/src/test/java/org/qortal/test/arbitrary/ArbitraryDataTests.java b/src/test/java/org/qortal/test/arbitrary/ArbitraryDataTests.java index cfc656e1..11f559bf 100644 --- a/src/test/java/org/qortal/test/arbitrary/ArbitraryDataTests.java +++ b/src/test/java/org/qortal/test/arbitrary/ArbitraryDataTests.java @@ -6,14 +6,14 @@ import org.junit.Test; import org.qortal.account.PrivateKeyAccount; import org.qortal.arbitrary.ArbitraryDataDigest; import org.qortal.arbitrary.ArbitraryDataFile; -import org.qortal.arbitrary.ArbitraryDataFile.*; +import org.qortal.arbitrary.ArbitraryDataFile.ResourceIdType; import org.qortal.arbitrary.ArbitraryDataReader; import org.qortal.arbitrary.exception.MissingDataException; import org.qortal.arbitrary.metadata.ArbitraryDataMetadataPatch; import org.qortal.arbitrary.misc.Service; import org.qortal.controller.arbitrary.ArbitraryDataManager; import org.qortal.crypto.Crypto; -import org.qortal.data.transaction.ArbitraryTransactionData.*; +import org.qortal.data.transaction.ArbitraryTransactionData.Method; import org.qortal.data.transaction.RegisterNameTransactionData; import org.qortal.repository.DataException; import org.qortal.repository.Repository; @@ -25,7 +25,6 @@ import org.qortal.test.common.TransactionUtils; import org.qortal.test.common.transaction.TestTransaction; import org.qortal.transaction.RegisterNameTransaction; import org.qortal.utils.Base58; -import org.qortal.utils.NTP; import java.io.IOException; import java.nio.file.Files; diff --git a/src/test/java/org/qortal/test/arbitrary/ArbitraryEncryptionTests.java b/src/test/java/org/qortal/test/arbitrary/ArbitraryEncryptionTests.java index 2e4dc133..632ff51a 100644 --- a/src/test/java/org/qortal/test/arbitrary/ArbitraryEncryptionTests.java +++ b/src/test/java/org/qortal/test/arbitrary/ArbitraryEncryptionTests.java @@ -2,12 +2,10 @@ package org.qortal.test.arbitrary; import org.junit.Before; import org.junit.Test; -import org.qortal.arbitrary.ArbitraryDataDigest; import org.qortal.crypto.AES; import org.qortal.crypto.Crypto; import org.qortal.repository.DataException; import org.qortal.test.common.Common; -import org.qortal.utils.ZipUtils; import javax.crypto.BadPaddingException; import javax.crypto.IllegalBlockSizeException; diff --git a/src/test/java/org/qortal/test/arbitrary/ArbitraryTransactionMetadataTests.java b/src/test/java/org/qortal/test/arbitrary/ArbitraryTransactionMetadataTests.java index 9ac73166..cd3893af 100644 --- a/src/test/java/org/qortal/test/arbitrary/ArbitraryTransactionMetadataTests.java +++ b/src/test/java/org/qortal/test/arbitrary/ArbitraryTransactionMetadataTests.java @@ -6,7 +6,7 @@ import org.junit.Test; import org.qortal.account.PrivateKeyAccount; import org.qortal.arbitrary.ArbitraryDataDigest; import org.qortal.arbitrary.ArbitraryDataFile; -import org.qortal.arbitrary.ArbitraryDataFile.*; +import org.qortal.arbitrary.ArbitraryDataFile.ResourceIdType; import org.qortal.arbitrary.ArbitraryDataReader; import org.qortal.arbitrary.exception.MissingDataException; import org.qortal.arbitrary.misc.Category; diff --git a/src/test/java/org/qortal/test/assets/CancellingTests.java b/src/test/java/org/qortal/test/assets/CancellingTests.java index 0d998cb5..4cd61cbc 100644 --- a/src/test/java/org/qortal/test/assets/CancellingTests.java +++ b/src/test/java/org/qortal/test/assets/CancellingTests.java @@ -1,9 +1,5 @@ package org.qortal.test.assets; -import static org.junit.Assert.*; - -import java.util.Map; - import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -17,6 +13,10 @@ import org.qortal.transaction.Transaction; import org.qortal.transaction.Transaction.ValidationResult; import org.qortal.utils.Amounts; +import java.util.Map; + +import static org.junit.Assert.assertEquals; + public class CancellingTests extends Common { /* diff --git a/src/test/java/org/qortal/test/assets/GranularityTests.java b/src/test/java/org/qortal/test/assets/GranularityTests.java index 9288f3a3..0a4b5164 100644 --- a/src/test/java/org/qortal/test/assets/GranularityTests.java +++ b/src/test/java/org/qortal/test/assets/GranularityTests.java @@ -1,9 +1,5 @@ package org.qortal.test.assets; -import static org.junit.Assert.assertEquals; - -import java.math.BigDecimal; - import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -12,6 +8,10 @@ import org.qortal.repository.DataException; import org.qortal.test.common.Common; import org.qortal.utils.Amounts; +import java.math.BigDecimal; + +import static org.junit.Assert.assertEquals; + /** Check granularity adjustment values. */ public class GranularityTests extends Common { diff --git a/src/test/java/org/qortal/test/assets/MiscTests.java b/src/test/java/org/qortal/test/assets/MiscTests.java index c676f94f..f6c7b20c 100644 --- a/src/test/java/org/qortal/test/assets/MiscTests.java +++ b/src/test/java/org/qortal/test/assets/MiscTests.java @@ -1,7 +1,5 @@ package org.qortal.test.assets; -import static org.junit.Assert.*; - import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -18,6 +16,9 @@ import org.qortal.transaction.Transaction; import org.qortal.transaction.Transaction.ValidationResult; import org.qortal.utils.Amounts; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + public class MiscTests extends Common { @Before diff --git a/src/test/java/org/qortal/test/assets/TradingTests.java b/src/test/java/org/qortal/test/assets/TradingTests.java index 2df34748..f71c39d0 100644 --- a/src/test/java/org/qortal/test/assets/TradingTests.java +++ b/src/test/java/org/qortal/test/assets/TradingTests.java @@ -12,10 +12,10 @@ import org.qortal.test.common.AssetUtils; import org.qortal.test.common.Common; import org.qortal.utils.Amounts; -import static org.junit.Assert.assertEquals; - import java.util.Map; +import static org.junit.Assert.assertEquals; + public class TradingTests extends Common { @Before diff --git a/src/test/java/org/qortal/test/at/AtRepositoryTests.java b/src/test/java/org/qortal/test/at/AtRepositoryTests.java index 8441731f..5472fdb8 100644 --- a/src/test/java/org/qortal/test/at/AtRepositoryTests.java +++ b/src/test/java/org/qortal/test/at/AtRepositoryTests.java @@ -1,9 +1,5 @@ package org.qortal.test.at; -import static org.junit.Assert.*; - -import java.util.List; - import org.ciyam.at.MachineState; import org.junit.Before; import org.junit.Test; @@ -18,6 +14,10 @@ import org.qortal.test.common.BlockUtils; import org.qortal.test.common.Common; import org.qortal.transaction.DeployAtTransaction; +import java.util.List; + +import static org.junit.Assert.*; + public class AtRepositoryTests extends Common { @Before diff --git a/src/test/java/org/qortal/test/at/GetMessageLengthTests.java b/src/test/java/org/qortal/test/at/GetMessageLengthTests.java index e7a7bcc4..0ab007ba 100644 --- a/src/test/java/org/qortal/test/at/GetMessageLengthTests.java +++ b/src/test/java/org/qortal/test/at/GetMessageLengthTests.java @@ -1,10 +1,5 @@ package org.qortal.test.at; -import static org.junit.Assert.*; - -import java.nio.ByteBuffer; -import java.util.Random; - import org.ciyam.at.CompilationException; import org.ciyam.at.FunctionCode; import org.ciyam.at.MachineState; @@ -31,6 +26,11 @@ import org.qortal.transaction.DeployAtTransaction; import org.qortal.transaction.MessageTransaction; import org.qortal.utils.BitTwiddling; +import java.nio.ByteBuffer; +import java.util.Random; + +import static org.junit.Assert.assertEquals; + public class GetMessageLengthTests extends Common { private static final Random RANDOM = new Random(); diff --git a/src/test/java/org/qortal/test/at/GetNextTransactionTests.java b/src/test/java/org/qortal/test/at/GetNextTransactionTests.java index c2eb9ede..a16c27eb 100644 --- a/src/test/java/org/qortal/test/at/GetNextTransactionTests.java +++ b/src/test/java/org/qortal/test/at/GetNextTransactionTests.java @@ -1,16 +1,6 @@ package org.qortal.test.at; -import static org.junit.Assert.*; - -import java.nio.ByteBuffer; -import java.util.Arrays; -import java.util.List; - -import org.ciyam.at.CompilationException; -import org.ciyam.at.FunctionCode; -import org.ciyam.at.MachineState; -import org.ciyam.at.OpCode; -import org.ciyam.at.Timestamp; +import org.ciyam.at.*; import org.junit.Before; import org.junit.Test; import org.qortal.account.PrivateKeyAccount; @@ -34,6 +24,12 @@ import org.qortal.transaction.MessageTransaction; import org.qortal.transaction.Transaction; import org.qortal.utils.BitTwiddling; +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.*; + public class GetNextTransactionTests extends Common { @Before diff --git a/src/test/java/org/qortal/test/at/GetPartialMessageTests.java b/src/test/java/org/qortal/test/at/GetPartialMessageTests.java index 0f9b188a..8fc0697b 100644 --- a/src/test/java/org/qortal/test/at/GetPartialMessageTests.java +++ b/src/test/java/org/qortal/test/at/GetPartialMessageTests.java @@ -1,9 +1,5 @@ package org.qortal.test.at; -import static org.junit.Assert.*; - -import java.nio.ByteBuffer; - import org.ciyam.at.CompilationException; import org.ciyam.at.FunctionCode; import org.ciyam.at.MachineState; @@ -28,6 +24,10 @@ import org.qortal.test.common.TransactionUtils; import org.qortal.transaction.DeployAtTransaction; import org.qortal.transaction.MessageTransaction; +import java.nio.ByteBuffer; + +import static org.junit.Assert.assertArrayEquals; + public class GetPartialMessageTests extends Common { @Before diff --git a/src/test/java/org/qortal/test/at/SleepUntilMessageOrHeightTests.java b/src/test/java/org/qortal/test/at/SleepUntilMessageOrHeightTests.java index 7ac952d2..fb65fa03 100644 --- a/src/test/java/org/qortal/test/at/SleepUntilMessageOrHeightTests.java +++ b/src/test/java/org/qortal/test/at/SleepUntilMessageOrHeightTests.java @@ -1,16 +1,6 @@ package org.qortal.test.at; -import static org.junit.Assert.*; - -import java.nio.ByteBuffer; -import java.util.Arrays; -import java.util.List; - -import org.ciyam.at.CompilationException; -import org.ciyam.at.FunctionCode; -import org.ciyam.at.MachineState; -import org.ciyam.at.OpCode; -import org.ciyam.at.Timestamp; +import org.ciyam.at.*; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -37,6 +27,12 @@ import org.qortal.transaction.MessageTransaction; import org.qortal.transaction.Transaction; import org.qortal.utils.BitTwiddling; +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.*; + public class SleepUntilMessageOrHeightTests extends Common { private static final byte[] messageData = new byte[] { 0x44 }; diff --git a/src/test/java/org/qortal/test/at/SleepUntilMessageTests.java b/src/test/java/org/qortal/test/at/SleepUntilMessageTests.java index 290f973a..3f8a95d6 100644 --- a/src/test/java/org/qortal/test/at/SleepUntilMessageTests.java +++ b/src/test/java/org/qortal/test/at/SleepUntilMessageTests.java @@ -1,16 +1,6 @@ package org.qortal.test.at; -import static org.junit.Assert.*; - -import java.nio.ByteBuffer; -import java.util.Arrays; -import java.util.List; - -import org.ciyam.at.CompilationException; -import org.ciyam.at.FunctionCode; -import org.ciyam.at.MachineState; -import org.ciyam.at.OpCode; -import org.ciyam.at.Timestamp; +import org.ciyam.at.*; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -37,6 +27,12 @@ import org.qortal.transaction.MessageTransaction; import org.qortal.transaction.Transaction; import org.qortal.utils.BitTwiddling; +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.*; + public class SleepUntilMessageTests extends Common { private static final byte[] messageData = new byte[] { 0x44 }; diff --git a/src/test/java/org/qortal/test/common/AccountUtils.java b/src/test/java/org/qortal/test/common/AccountUtils.java index bdfd124b..e19cffff 100644 --- a/src/test/java/org/qortal/test/common/AccountUtils.java +++ b/src/test/java/org/qortal/test/common/AccountUtils.java @@ -1,11 +1,5 @@ package org.qortal.test.common; -import static org.junit.Assert.assertEquals; -import static org.qortal.crypto.Qortal25519Extras.signForAggregation; - -import java.security.SecureRandom; -import java.util.*; - import com.google.common.primitives.Longs; import org.qortal.account.PrivateKeyAccount; import org.qortal.crypto.Crypto; @@ -22,6 +16,12 @@ import org.qortal.transaction.Transaction; import org.qortal.transform.Transformer; import org.qortal.utils.Amounts; +import java.security.SecureRandom; +import java.util.*; + +import static org.junit.Assert.assertEquals; +import static org.qortal.crypto.Qortal25519Extras.signForAggregation; + public class AccountUtils { public static final int txGroupId = Group.NO_GROUP; diff --git a/src/test/java/org/qortal/test/common/ApiCommon.java b/src/test/java/org/qortal/test/common/ApiCommon.java index b5d02b24..1d1ca805 100644 --- a/src/test/java/org/qortal/test/common/ApiCommon.java +++ b/src/test/java/org/qortal/test/common/ApiCommon.java @@ -1,15 +1,16 @@ package org.qortal.test.common; -import static org.junit.Assert.*; - -import java.lang.reflect.Field; - import org.eclipse.jetty.server.Request; import org.junit.Before; import org.qortal.api.ApiError; import org.qortal.api.ApiException; import org.qortal.repository.DataException; +import java.lang.reflect.Field; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + public class ApiCommon extends Common { public static final long MAX_API_RESPONSE_PERIOD = 2_000L; // ms diff --git a/src/test/java/org/qortal/test/common/AssetUtils.java b/src/test/java/org/qortal/test/common/AssetUtils.java index 7118a79d..0b970dd5 100644 --- a/src/test/java/org/qortal/test/common/AssetUtils.java +++ b/src/test/java/org/qortal/test/common/AssetUtils.java @@ -1,19 +1,8 @@ package org.qortal.test.common; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.util.Base64; -import java.util.Base64.Encoder; - import org.qortal.account.PrivateKeyAccount; import org.qortal.data.asset.OrderData; -import org.qortal.data.transaction.BaseTransactionData; -import org.qortal.data.transaction.CancelAssetOrderTransactionData; -import org.qortal.data.transaction.CreateAssetOrderTransactionData; -import org.qortal.data.transaction.IssueAssetTransactionData; -import org.qortal.data.transaction.TransactionData; -import org.qortal.data.transaction.TransferAssetTransactionData; +import org.qortal.data.transaction.*; import org.qortal.group.Group; import org.qortal.repository.DataException; import org.qortal.repository.Repository; @@ -21,9 +10,14 @@ import org.qortal.repository.RepositoryManager; import org.qortal.transaction.Transaction; import org.qortal.utils.Amounts; +import java.util.Base64; +import java.util.Base64.Encoder; import java.util.Map; import java.util.Random; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + public class AssetUtils { public static final int txGroupId = Group.NO_GROUP; diff --git a/src/test/java/org/qortal/test/common/Common.java b/src/test/java/org/qortal/test/common/Common.java index bb6cc1cb..70dcaff9 100644 --- a/src/test/java/org/qortal/test/common/Common.java +++ b/src/test/java/org/qortal/test/common/Common.java @@ -1,24 +1,5 @@ package org.qortal.test.common; -import static org.junit.Assert.*; - -import java.io.IOException; -import java.math.BigDecimal; -import java.net.URL; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.security.SecureRandom; -import java.security.Security; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Random; -import java.util.function.Function; -import java.util.function.Predicate; -import java.util.stream.Collectors; - import org.apache.commons.io.FileUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -31,15 +12,29 @@ import org.qortal.block.BlockChain; import org.qortal.data.account.AccountBalanceData; import org.qortal.data.asset.AssetData; import org.qortal.data.group.GroupData; +import org.qortal.repository.AccountRepository.BalanceOrdering; import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.repository.RepositoryFactory; import org.qortal.repository.RepositoryManager; -import org.qortal.repository.AccountRepository.BalanceOrdering; import org.qortal.repository.hsqldb.HSQLDBRepositoryFactory; import org.qortal.settings.Settings; import org.qortal.utils.NTP; +import java.io.IOException; +import java.math.BigDecimal; +import java.net.URL; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.security.SecureRandom; +import java.security.Security; +import java.util.*; +import java.util.function.Function; +import java.util.function.Predicate; +import java.util.stream.Collectors; + +import static org.junit.Assert.*; + public class Common { static { diff --git a/src/test/java/org/qortal/test/common/FakePeer.java b/src/test/java/org/qortal/test/common/FakePeer.java index 13d9a15e..faabdc1f 100644 --- a/src/test/java/org/qortal/test/common/FakePeer.java +++ b/src/test/java/org/qortal/test/common/FakePeer.java @@ -1,5 +1,7 @@ package org.qortal.test.common; +import org.qortal.network.message.Message; + import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -7,8 +9,6 @@ import java.util.Random; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; -import org.qortal.network.message.Message; - public abstract class FakePeer implements Runnable { private static final long DEFAULT_BROADCAST_INTERVAL = 60 * 1000; diff --git a/src/test/java/org/qortal/test/common/GroupUtils.java b/src/test/java/org/qortal/test/common/GroupUtils.java index 19d229fd..cda7ad8e 100644 --- a/src/test/java/org/qortal/test/common/GroupUtils.java +++ b/src/test/java/org/qortal/test/common/GroupUtils.java @@ -1,11 +1,7 @@ package org.qortal.test.common; import org.qortal.account.PrivateKeyAccount; -import org.qortal.data.transaction.BaseTransactionData; -import org.qortal.data.transaction.CreateGroupTransactionData; -import org.qortal.data.transaction.GroupApprovalTransactionData; -import org.qortal.data.transaction.JoinGroupTransactionData; -import org.qortal.data.transaction.TransactionData; +import org.qortal.data.transaction.*; import org.qortal.group.Group; import org.qortal.group.Group.ApprovalThreshold; import org.qortal.repository.DataException; diff --git a/src/test/java/org/qortal/test/common/PeerMessage.java b/src/test/java/org/qortal/test/common/PeerMessage.java index 92f69621..3b1e3e75 100644 --- a/src/test/java/org/qortal/test/common/PeerMessage.java +++ b/src/test/java/org/qortal/test/common/PeerMessage.java @@ -1,7 +1,6 @@ package org.qortal.test.common; import org.qortal.network.message.Message; -import org.qortal.test.common.FakePeer; public class PeerMessage { public final FakePeer peer; diff --git a/src/test/java/org/qortal/test/common/TransactionUtils.java b/src/test/java/org/qortal/test/common/TransactionUtils.java index 4779aa3b..0159d35b 100644 --- a/src/test/java/org/qortal/test/common/TransactionUtils.java +++ b/src/test/java/org/qortal/test/common/TransactionUtils.java @@ -1,12 +1,5 @@ package org.qortal.test.common; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.List; - import org.qortal.account.PrivateKeyAccount; import org.qortal.data.transaction.TransactionData; import org.qortal.repository.DataException; @@ -16,6 +9,13 @@ import org.qortal.transaction.Transaction; import org.qortal.transaction.Transaction.TransactionType; import org.qortal.transaction.Transaction.ValidationResult; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + public class TransactionUtils { /** Signs transaction using given account and attempts to import into unconfirmed pile, returning validation result. */ diff --git a/src/test/java/org/qortal/test/common/transaction/AccountLevelTestTransaction.java b/src/test/java/org/qortal/test/common/transaction/AccountLevelTestTransaction.java index 6de63cf6..7fd51ec2 100644 --- a/src/test/java/org/qortal/test/common/transaction/AccountLevelTestTransaction.java +++ b/src/test/java/org/qortal/test/common/transaction/AccountLevelTestTransaction.java @@ -1,13 +1,13 @@ package org.qortal.test.common.transaction; -import java.util.Random; - import org.qortal.account.PrivateKeyAccount; import org.qortal.data.transaction.AccountLevelTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.Random; + public class AccountLevelTestTransaction extends TestTransaction { public static TransactionData randomTransaction(Repository repository, PrivateKeyAccount account, boolean wantValid) throws DataException { diff --git a/src/test/java/org/qortal/test/common/transaction/ArbitraryTestTransaction.java b/src/test/java/org/qortal/test/common/transaction/ArbitraryTestTransaction.java index 8688ed73..a2c81bf5 100644 --- a/src/test/java/org/qortal/test/common/transaction/ArbitraryTestTransaction.java +++ b/src/test/java/org/qortal/test/common/transaction/ArbitraryTestTransaction.java @@ -1,19 +1,19 @@ package org.qortal.test.common.transaction; -import java.util.ArrayList; -import java.util.List; - import org.qortal.account.PrivateKeyAccount; import org.qortal.arbitrary.misc.Service; import org.qortal.asset.Asset; import org.qortal.data.PaymentData; import org.qortal.data.transaction.ArbitraryTransactionData; -import org.qortal.data.transaction.TransactionData; import org.qortal.data.transaction.ArbitraryTransactionData.DataType; +import org.qortal.data.transaction.TransactionData; import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.utils.Amounts; +import java.util.ArrayList; +import java.util.List; + public class ArbitraryTestTransaction extends TestTransaction { public static TransactionData randomTransaction(Repository repository, PrivateKeyAccount account, boolean wantValid) throws DataException { diff --git a/src/test/java/org/qortal/test/common/transaction/CancelAssetOrderTestTransaction.java b/src/test/java/org/qortal/test/common/transaction/CancelAssetOrderTestTransaction.java index 026364dc..0634e617 100644 --- a/src/test/java/org/qortal/test/common/transaction/CancelAssetOrderTestTransaction.java +++ b/src/test/java/org/qortal/test/common/transaction/CancelAssetOrderTestTransaction.java @@ -1,13 +1,13 @@ package org.qortal.test.common.transaction; -import java.util.Random; - import org.qortal.account.PrivateKeyAccount; import org.qortal.data.transaction.CancelAssetOrderTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.Random; + public class CancelAssetOrderTestTransaction extends TestTransaction { public static TransactionData randomTransaction(Repository repository, PrivateKeyAccount account, boolean wantValid) throws DataException { diff --git a/src/test/java/org/qortal/test/common/transaction/CreateGroupTestTransaction.java b/src/test/java/org/qortal/test/common/transaction/CreateGroupTestTransaction.java index a68c7aeb..f796473d 100644 --- a/src/test/java/org/qortal/test/common/transaction/CreateGroupTestTransaction.java +++ b/src/test/java/org/qortal/test/common/transaction/CreateGroupTestTransaction.java @@ -1,7 +1,5 @@ package org.qortal.test.common.transaction; -import java.util.Random; - import org.qortal.account.PrivateKeyAccount; import org.qortal.data.transaction.CreateGroupTransactionData; import org.qortal.data.transaction.TransactionData; @@ -9,6 +7,8 @@ import org.qortal.group.Group.ApprovalThreshold; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.Random; + public class CreateGroupTestTransaction extends TestTransaction { public static TransactionData randomTransaction(Repository repository, PrivateKeyAccount account, boolean wantValid) throws DataException { diff --git a/src/test/java/org/qortal/test/common/transaction/CreatePollTestTransaction.java b/src/test/java/org/qortal/test/common/transaction/CreatePollTestTransaction.java index 789e8b2a..00fba97a 100644 --- a/src/test/java/org/qortal/test/common/transaction/CreatePollTestTransaction.java +++ b/src/test/java/org/qortal/test/common/transaction/CreatePollTestTransaction.java @@ -1,9 +1,5 @@ package org.qortal.test.common.transaction; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - import org.qortal.account.PrivateKeyAccount; import org.qortal.data.transaction.CreatePollTransactionData; import org.qortal.data.transaction.TransactionData; @@ -11,6 +7,10 @@ import org.qortal.data.voting.PollOptionData; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + public class CreatePollTestTransaction extends TestTransaction { public static TransactionData randomTransaction(Repository repository, PrivateKeyAccount account, boolean wantValid) throws DataException { diff --git a/src/test/java/org/qortal/test/common/transaction/DeployAtTestTransaction.java b/src/test/java/org/qortal/test/common/transaction/DeployAtTestTransaction.java index 3e523178..6034370a 100644 --- a/src/test/java/org/qortal/test/common/transaction/DeployAtTestTransaction.java +++ b/src/test/java/org/qortal/test/common/transaction/DeployAtTestTransaction.java @@ -1,7 +1,5 @@ package org.qortal.test.common.transaction; -import java.util.Random; - import org.qortal.account.PrivateKeyAccount; import org.qortal.asset.Asset; import org.qortal.data.transaction.DeployAtTransactionData; @@ -10,6 +8,8 @@ import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.utils.Amounts; +import java.util.Random; + public class DeployAtTestTransaction extends TestTransaction { public static TransactionData randomTransaction(Repository repository, PrivateKeyAccount account, boolean wantValid) throws DataException { diff --git a/src/test/java/org/qortal/test/common/transaction/GroupApprovalTestTransaction.java b/src/test/java/org/qortal/test/common/transaction/GroupApprovalTestTransaction.java index 3d52462c..4770c1f3 100644 --- a/src/test/java/org/qortal/test/common/transaction/GroupApprovalTestTransaction.java +++ b/src/test/java/org/qortal/test/common/transaction/GroupApprovalTestTransaction.java @@ -1,13 +1,13 @@ package org.qortal.test.common.transaction; -import java.util.Random; - import org.qortal.account.PrivateKeyAccount; import org.qortal.data.transaction.GroupApprovalTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.Random; + public class GroupApprovalTestTransaction extends TestTransaction { public static TransactionData randomTransaction(Repository repository, PrivateKeyAccount account, boolean wantValid) throws DataException { diff --git a/src/test/java/org/qortal/test/common/transaction/IssueAssetTestTransaction.java b/src/test/java/org/qortal/test/common/transaction/IssueAssetTestTransaction.java index fb04d2cf..21024467 100644 --- a/src/test/java/org/qortal/test/common/transaction/IssueAssetTestTransaction.java +++ b/src/test/java/org/qortal/test/common/transaction/IssueAssetTestTransaction.java @@ -1,7 +1,5 @@ package org.qortal.test.common.transaction; -import java.util.Random; - import org.qortal.account.PrivateKeyAccount; import org.qortal.data.transaction.IssueAssetTransactionData; import org.qortal.data.transaction.TransactionData; @@ -9,6 +7,8 @@ import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.test.common.AssetUtils; +import java.util.Random; + public class IssueAssetTestTransaction extends TestTransaction { public static TransactionData randomTransaction(Repository repository, PrivateKeyAccount account, boolean wantValid) throws DataException { diff --git a/src/test/java/org/qortal/test/common/transaction/MultiPaymentTestTransaction.java b/src/test/java/org/qortal/test/common/transaction/MultiPaymentTestTransaction.java index a25924c2..ad884dd7 100644 --- a/src/test/java/org/qortal/test/common/transaction/MultiPaymentTestTransaction.java +++ b/src/test/java/org/qortal/test/common/transaction/MultiPaymentTestTransaction.java @@ -1,8 +1,5 @@ package org.qortal.test.common.transaction; -import java.util.ArrayList; -import java.util.List; - import org.qortal.account.PrivateKeyAccount; import org.qortal.asset.Asset; import org.qortal.data.PaymentData; @@ -12,6 +9,9 @@ import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.utils.Amounts; +import java.util.ArrayList; +import java.util.List; + public class MultiPaymentTestTransaction extends TestTransaction { public static TransactionData randomTransaction(Repository repository, PrivateKeyAccount account, boolean wantValid) throws DataException { diff --git a/src/test/java/org/qortal/test/common/transaction/TestTransaction.java b/src/test/java/org/qortal/test/common/transaction/TestTransaction.java index b580ecd3..0e9de3af 100644 --- a/src/test/java/org/qortal/test/common/transaction/TestTransaction.java +++ b/src/test/java/org/qortal/test/common/transaction/TestTransaction.java @@ -1,13 +1,12 @@ package org.qortal.test.common.transaction; -import java.util.Random; - import org.qortal.account.PrivateKeyAccount; import org.qortal.block.BlockChain; import org.qortal.data.transaction.BaseTransactionData; import org.qortal.group.Group; import org.qortal.repository.DataException; -import org.qortal.utils.NTP; + +import java.util.Random; public abstract class TestTransaction { diff --git a/src/test/java/org/qortal/test/common/transaction/VoteOnPollTestTransaction.java b/src/test/java/org/qortal/test/common/transaction/VoteOnPollTestTransaction.java index b5217b33..8aa1ebde 100644 --- a/src/test/java/org/qortal/test/common/transaction/VoteOnPollTestTransaction.java +++ b/src/test/java/org/qortal/test/common/transaction/VoteOnPollTestTransaction.java @@ -1,13 +1,13 @@ package org.qortal.test.common.transaction; -import java.util.Random; - import org.qortal.account.PrivateKeyAccount; import org.qortal.data.transaction.TransactionData; import org.qortal.data.transaction.VoteOnPollTransactionData; import org.qortal.repository.DataException; import org.qortal.repository.Repository; +import java.util.Random; + public class VoteOnPollTestTransaction extends TestTransaction { public static TransactionData randomTransaction(Repository repository, PrivateKeyAccount account, boolean wantValid) throws DataException { diff --git a/src/test/java/org/qortal/test/crosschain/ElectrumXTests.java b/src/test/java/org/qortal/test/crosschain/ElectrumXTests.java index b7e57cf3..c4c0acf1 100644 --- a/src/test/java/org/qortal/test/crosschain/ElectrumXTests.java +++ b/src/test/java/org/qortal/test/crosschain/ElectrumXTests.java @@ -1,28 +1,23 @@ package org.qortal.test.crosschain; -import static org.junit.Assert.*; - -import java.security.Security; -import java.util.EnumMap; -import java.util.List; -import java.util.Map; - +import com.google.common.hash.HashCode; import org.bitcoinj.core.Address; import org.bitcoinj.params.TestNet3Params; import org.bitcoinj.script.ScriptBuilder; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.jsse.provider.BouncyCastleJsseProvider; import org.junit.Test; -import org.qortal.crosschain.ForeignBlockchainException; -import org.qortal.crosschain.BitcoinyTransaction; -import org.qortal.crosschain.ElectrumX; -import org.qortal.crosschain.TransactionHash; -import org.qortal.crosschain.UnspentOutput; import org.qortal.crosschain.Bitcoin.BitcoinNet; +import org.qortal.crosschain.*; import org.qortal.crosschain.ElectrumX.Server.ConnectionType; import org.qortal.utils.BitTwiddling; -import com.google.common.hash.HashCode; +import java.security.Security; +import java.util.EnumMap; +import java.util.List; +import java.util.Map; + +import static org.junit.Assert.*; public class ElectrumXTests { diff --git a/src/test/java/org/qortal/test/crosschain/HtlcTests.java b/src/test/java/org/qortal/test/crosschain/HtlcTests.java index 3f3678f7..38f6bd0b 100644 --- a/src/test/java/org/qortal/test/crosschain/HtlcTests.java +++ b/src/test/java/org/qortal/test/crosschain/HtlcTests.java @@ -1,20 +1,19 @@ package org.qortal.test.crosschain; -import static org.junit.Assert.*; - +import com.google.common.primitives.Longs; import org.junit.After; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.qortal.crosschain.Bitcoin; +import org.qortal.crosschain.BitcoinyHTLC; import org.qortal.crosschain.ForeignBlockchainException; import org.qortal.crosschain.Litecoin; import org.qortal.crypto.Crypto; -import org.qortal.crosschain.BitcoinyHTLC; import org.qortal.repository.DataException; import org.qortal.test.common.Common; -import com.google.common.primitives.Longs; +import static org.junit.Assert.*; public class HtlcTests extends Common { diff --git a/src/test/java/org/qortal/test/crosschain/PirateChainTests.java b/src/test/java/org/qortal/test/crosschain/PirateChainTests.java index b212aea1..5fb7b205 100644 --- a/src/test/java/org/qortal/test/crosschain/PirateChainTests.java +++ b/src/test/java/org/qortal/test/crosschain/PirateChainTests.java @@ -1,6 +1,6 @@ package org.qortal.test.crosschain; -import cash.z.wallet.sdk.rpc.CompactFormats.*; +import cash.z.wallet.sdk.rpc.CompactFormats.CompactBlock; import com.google.common.hash.HashCode; import com.google.common.primitives.Bytes; import org.junit.Ignore; diff --git a/src/test/java/org/qortal/test/crosschain/apps/BuildHTLC.java b/src/test/java/org/qortal/test/crosschain/apps/BuildHTLC.java index fa92fde7..f538d342 100644 --- a/src/test/java/org/qortal/test/crosschain/apps/BuildHTLC.java +++ b/src/test/java/org/qortal/test/crosschain/apps/BuildHTLC.java @@ -1,19 +1,18 @@ package org.qortal.test.crosschain.apps; -import java.time.Instant; -import java.time.LocalDateTime; -import java.time.ZoneOffset; - +import com.google.common.hash.HashCode; import org.bitcoinj.core.Address; import org.bitcoinj.core.Coin; import org.bitcoinj.core.NetworkParameters; import org.bitcoinj.script.Script.ScriptType; -import org.qortal.crosschain.Litecoin; import org.qortal.crosschain.Bitcoin; import org.qortal.crosschain.Bitcoiny; import org.qortal.crosschain.BitcoinyHTLC; +import org.qortal.crosschain.Litecoin; -import com.google.common.hash.HashCode; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneOffset; public class BuildHTLC { diff --git a/src/test/java/org/qortal/test/crosschain/apps/CheckHTLC.java b/src/test/java/org/qortal/test/crosschain/apps/CheckHTLC.java index 8b1cc423..5d84a622 100644 --- a/src/test/java/org/qortal/test/crosschain/apps/CheckHTLC.java +++ b/src/test/java/org/qortal/test/crosschain/apps/CheckHTLC.java @@ -1,9 +1,6 @@ package org.qortal.test.crosschain.apps; -import java.time.Instant; -import java.time.LocalDateTime; -import java.time.ZoneOffset; - +import com.google.common.hash.HashCode; import org.bitcoinj.core.Address; import org.bitcoinj.core.Coin; import org.bitcoinj.core.LegacyAddress; @@ -11,11 +8,13 @@ import org.bitcoinj.core.NetworkParameters; import org.bitcoinj.script.Script.ScriptType; import org.qortal.crosschain.Bitcoin; import org.qortal.crosschain.Bitcoiny; -import org.qortal.crosschain.Litecoin; import org.qortal.crosschain.BitcoinyHTLC; +import org.qortal.crosschain.Litecoin; import org.qortal.crypto.Crypto; -import com.google.common.hash.HashCode; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneOffset; public class CheckHTLC { diff --git a/src/test/java/org/qortal/test/crosschain/apps/Common.java b/src/test/java/org/qortal/test/crosschain/apps/Common.java index 78066fe7..dd3130b9 100644 --- a/src/test/java/org/qortal/test/crosschain/apps/Common.java +++ b/src/test/java/org/qortal/test/crosschain/apps/Common.java @@ -1,12 +1,6 @@ package org.qortal.test.crosschain.apps; -import java.security.Security; -import java.time.Instant; -import java.time.LocalDateTime; -import java.time.ZoneOffset; -import java.util.Collections; -import java.util.List; - +import com.google.common.hash.HashCode; import org.bitcoinj.core.Transaction; import org.bitcoinj.core.TransactionOutput; import org.bouncycastle.jce.provider.BouncyCastleProvider; @@ -17,7 +11,12 @@ import org.qortal.crosschain.ForeignBlockchainException; import org.qortal.settings.Settings; import org.qortal.utils.NTP; -import com.google.common.hash.HashCode; +import java.security.Security; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.util.Collections; +import java.util.List; public abstract class Common { diff --git a/src/test/java/org/qortal/test/crosschain/apps/GetNextReceiveAddress.java b/src/test/java/org/qortal/test/crosschain/apps/GetNextReceiveAddress.java index ef22355b..a02b85bb 100644 --- a/src/test/java/org/qortal/test/crosschain/apps/GetNextReceiveAddress.java +++ b/src/test/java/org/qortal/test/crosschain/apps/GetNextReceiveAddress.java @@ -1,7 +1,5 @@ package org.qortal.test.crosschain.apps; -import java.security.Security; - import org.bitcoinj.core.AddressFormatException; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.jsse.provider.BouncyCastleJsseProvider; @@ -11,6 +9,8 @@ import org.qortal.crosschain.ForeignBlockchainException; import org.qortal.crosschain.Litecoin; import org.qortal.settings.Settings; +import java.security.Security; + public class GetNextReceiveAddress { static { diff --git a/src/test/java/org/qortal/test/crosschain/apps/GetTransaction.java b/src/test/java/org/qortal/test/crosschain/apps/GetTransaction.java index 9d903a56..6e6ca26c 100644 --- a/src/test/java/org/qortal/test/crosschain/apps/GetTransaction.java +++ b/src/test/java/org/qortal/test/crosschain/apps/GetTransaction.java @@ -1,8 +1,6 @@ package org.qortal.test.crosschain.apps; -import java.security.Security; -import java.util.List; - +import com.google.common.hash.HashCode; import org.bitcoinj.core.AddressFormatException; import org.bitcoinj.core.TransactionOutput; import org.bouncycastle.jce.provider.BouncyCastleProvider; @@ -13,7 +11,8 @@ import org.qortal.crosschain.ForeignBlockchainException; import org.qortal.crosschain.Litecoin; import org.qortal.settings.Settings; -import com.google.common.hash.HashCode; +import java.security.Security; +import java.util.List; public class GetTransaction { diff --git a/src/test/java/org/qortal/test/crosschain/apps/GetWalletTransactions.java b/src/test/java/org/qortal/test/crosschain/apps/GetWalletTransactions.java index 2c1edc10..c1fbed1f 100644 --- a/src/test/java/org/qortal/test/crosschain/apps/GetWalletTransactions.java +++ b/src/test/java/org/qortal/test/crosschain/apps/GetWalletTransactions.java @@ -1,16 +1,16 @@ package org.qortal.test.crosschain.apps; -import java.security.Security; -import java.util.Comparator; -import java.util.List; -import java.util.stream.Collectors; - import org.bitcoinj.core.AddressFormatException; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.jsse.provider.BouncyCastleJsseProvider; import org.qortal.crosschain.*; import org.qortal.settings.Settings; +import java.security.Security; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + public class GetWalletTransactions { static { diff --git a/src/test/java/org/qortal/test/crosschain/apps/RedeemHTLC.java b/src/test/java/org/qortal/test/crosschain/apps/RedeemHTLC.java index d4f1bcf1..b982ca94 100644 --- a/src/test/java/org/qortal/test/crosschain/apps/RedeemHTLC.java +++ b/src/test/java/org/qortal/test/crosschain/apps/RedeemHTLC.java @@ -1,23 +1,16 @@ package org.qortal.test.crosschain.apps; -import java.util.Arrays; -import java.util.List; - -import org.bitcoinj.core.Address; -import org.bitcoinj.core.Coin; -import org.bitcoinj.core.ECKey; -import org.bitcoinj.core.LegacyAddress; -import org.bitcoinj.core.NetworkParameters; -import org.bitcoinj.core.Transaction; -import org.bitcoinj.core.TransactionOutput; +import com.google.common.hash.HashCode; +import org.bitcoinj.core.*; import org.bitcoinj.script.Script.ScriptType; import org.qortal.crosschain.Bitcoin; import org.qortal.crosschain.Bitcoiny; -import org.qortal.crosschain.Litecoin; import org.qortal.crosschain.BitcoinyHTLC; +import org.qortal.crosschain.Litecoin; import org.qortal.crypto.Crypto; -import com.google.common.hash.HashCode; +import java.util.Arrays; +import java.util.List; public class RedeemHTLC { diff --git a/src/test/java/org/qortal/test/crosschain/apps/RefundHTLC.java b/src/test/java/org/qortal/test/crosschain/apps/RefundHTLC.java index 723185f0..09213aad 100644 --- a/src/test/java/org/qortal/test/crosschain/apps/RefundHTLC.java +++ b/src/test/java/org/qortal/test/crosschain/apps/RefundHTLC.java @@ -1,23 +1,16 @@ package org.qortal.test.crosschain.apps; -import java.util.Arrays; -import java.util.List; - -import org.bitcoinj.core.Address; -import org.bitcoinj.core.Coin; -import org.bitcoinj.core.ECKey; -import org.bitcoinj.core.LegacyAddress; -import org.bitcoinj.core.NetworkParameters; -import org.bitcoinj.core.Transaction; -import org.bitcoinj.core.TransactionOutput; +import com.google.common.hash.HashCode; +import org.bitcoinj.core.*; import org.bitcoinj.script.Script.ScriptType; -import org.qortal.crosschain.Litecoin; import org.qortal.crosschain.Bitcoin; import org.qortal.crosschain.Bitcoiny; import org.qortal.crosschain.BitcoinyHTLC; +import org.qortal.crosschain.Litecoin; import org.qortal.crypto.Crypto; -import com.google.common.hash.HashCode; +import java.util.Arrays; +import java.util.List; public class RefundHTLC { diff --git a/src/test/java/org/qortal/test/crosschain/bitcoinv1/BitcoinACCTv1Tests.java b/src/test/java/org/qortal/test/crosschain/bitcoinv1/BitcoinACCTv1Tests.java index cc33eb43..fa9417b4 100644 --- a/src/test/java/org/qortal/test/crosschain/bitcoinv1/BitcoinACCTv1Tests.java +++ b/src/test/java/org/qortal/test/crosschain/bitcoinv1/BitcoinACCTv1Tests.java @@ -1,16 +1,13 @@ package org.qortal.test.crosschain.bitcoinv1; -import static org.junit.Assert.*; - -import java.util.function.Function; - +import com.google.common.hash.HashCode; import org.junit.Test; import org.qortal.account.Account; import org.qortal.account.PrivateKeyAccount; import org.qortal.asset.Asset; import org.qortal.crosschain.ACCT; -import org.qortal.crosschain.BitcoinACCTv1; import org.qortal.crosschain.AcctMode; +import org.qortal.crosschain.BitcoinACCTv1; import org.qortal.crypto.Crypto; import org.qortal.data.at.ATData; import org.qortal.data.at.ATStateData; @@ -24,7 +21,10 @@ import org.qortal.test.crosschain.ACCTTests; import org.qortal.transaction.DeployAtTransaction; import org.qortal.transaction.MessageTransaction; -import com.google.common.hash.HashCode; +import java.util.function.Function; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; public class BitcoinACCTv1Tests extends ACCTTests { diff --git a/src/test/java/org/qortal/test/crosschain/bitcoinv1/DeployAT.java b/src/test/java/org/qortal/test/crosschain/bitcoinv1/DeployAT.java index f27f7a7b..ee18ae46 100644 --- a/src/test/java/org/qortal/test/crosschain/bitcoinv1/DeployAT.java +++ b/src/test/java/org/qortal/test/crosschain/bitcoinv1/DeployAT.java @@ -1,5 +1,6 @@ package org.qortal.test.crosschain.bitcoinv1; +import com.google.common.hash.HashCode; import org.bitcoinj.core.Address; import org.bitcoinj.core.AddressFormatException; import org.bitcoinj.core.LegacyAddress; @@ -27,8 +28,6 @@ import org.qortal.transform.transaction.TransactionTransformer; import org.qortal.utils.Amounts; import org.qortal.utils.Base58; -import com.google.common.hash.HashCode; - public class DeployAT { private static void usage(String error) { diff --git a/src/test/java/org/qortal/test/crosschain/litecoinv1/DeployAT.java b/src/test/java/org/qortal/test/crosschain/litecoinv1/DeployAT.java index 3a1f9208..99aeb365 100644 --- a/src/test/java/org/qortal/test/crosschain/litecoinv1/DeployAT.java +++ b/src/test/java/org/qortal/test/crosschain/litecoinv1/DeployAT.java @@ -1,7 +1,6 @@ package org.qortal.test.crosschain.litecoinv1; -import java.math.BigDecimal; - +import com.google.common.hash.HashCode; import org.bitcoinj.core.ECKey; import org.qortal.account.PrivateKeyAccount; import org.qortal.asset.Asset; @@ -22,7 +21,7 @@ import org.qortal.transform.transaction.TransactionTransformer; import org.qortal.utils.Amounts; import org.qortal.utils.Base58; -import com.google.common.hash.HashCode; +import java.math.BigDecimal; public class DeployAT { diff --git a/src/test/java/org/qortal/test/crosschain/litecoinv1/LitecoinACCTv1Tests.java b/src/test/java/org/qortal/test/crosschain/litecoinv1/LitecoinACCTv1Tests.java index 91a450d0..e442067a 100644 --- a/src/test/java/org/qortal/test/crosschain/litecoinv1/LitecoinACCTv1Tests.java +++ b/src/test/java/org/qortal/test/crosschain/litecoinv1/LitecoinACCTv1Tests.java @@ -1,11 +1,10 @@ package org.qortal.test.crosschain.litecoinv1; +import com.google.common.hash.HashCode; import org.qortal.crosschain.ACCT; import org.qortal.crosschain.LitecoinACCTv1; import org.qortal.test.crosschain.ACCTTests; -import com.google.common.hash.HashCode; - public class LitecoinACCTv1Tests extends ACCTTests { public static final byte[] litecoinPublicKeyHash = HashCode.fromString("bb00bb11bb22bb33bb44bb55bb66bb77bb88bb99").asBytes(); diff --git a/src/test/java/org/qortal/test/crosschain/litecoinv1/SendRedeemMessage.java b/src/test/java/org/qortal/test/crosschain/litecoinv1/SendRedeemMessage.java index 20386d2a..fd6ad31a 100644 --- a/src/test/java/org/qortal/test/crosschain/litecoinv1/SendRedeemMessage.java +++ b/src/test/java/org/qortal/test/crosschain/litecoinv1/SendRedeemMessage.java @@ -1,5 +1,6 @@ package org.qortal.test.crosschain.litecoinv1; +import com.google.common.hash.HashCode; import org.qortal.account.PrivateKeyAccount; import org.qortal.controller.Controller; import org.qortal.crosschain.LitecoinACCTv1; @@ -16,8 +17,6 @@ import org.qortal.transform.TransformationException; import org.qortal.transform.transaction.TransactionTransformer; import org.qortal.utils.Base58; -import com.google.common.hash.HashCode; - public class SendRedeemMessage { private static void usage(String error) { diff --git a/src/test/java/org/qortal/test/crosschain/litecoinv1/SendTradeMessage.java b/src/test/java/org/qortal/test/crosschain/litecoinv1/SendTradeMessage.java index 83e9a20e..621ed955 100644 --- a/src/test/java/org/qortal/test/crosschain/litecoinv1/SendTradeMessage.java +++ b/src/test/java/org/qortal/test/crosschain/litecoinv1/SendTradeMessage.java @@ -1,5 +1,6 @@ package org.qortal.test.crosschain.litecoinv1; +import com.google.common.hash.HashCode; import org.qortal.account.PrivateKeyAccount; import org.qortal.controller.Controller; import org.qortal.crosschain.LitecoinACCTv1; @@ -17,8 +18,6 @@ import org.qortal.transform.transaction.TransactionTransformer; import org.qortal.utils.Base58; import org.qortal.utils.NTP; -import com.google.common.hash.HashCode; - public class SendTradeMessage { private static void usage(String error) { diff --git a/src/test/java/org/qortal/test/group/AdminTests.java b/src/test/java/org/qortal/test/group/AdminTests.java index 8cf83c29..db3e3400 100644 --- a/src/test/java/org/qortal/test/group/AdminTests.java +++ b/src/test/java/org/qortal/test/group/AdminTests.java @@ -1,17 +1,10 @@ package org.qortal.test.group; -import static org.junit.Assert.*; - import org.junit.After; import org.junit.Before; import org.junit.Test; import org.qortal.account.PrivateKeyAccount; -import org.qortal.data.transaction.AddGroupAdminTransactionData; -import org.qortal.data.transaction.CancelGroupBanTransactionData; -import org.qortal.data.transaction.CreateGroupTransactionData; -import org.qortal.data.transaction.GroupBanTransactionData; -import org.qortal.data.transaction.GroupKickTransactionData; -import org.qortal.data.transaction.JoinGroupTransactionData; +import org.qortal.data.transaction.*; import org.qortal.group.Group.ApprovalThreshold; import org.qortal.repository.DataException; import org.qortal.repository.Repository; @@ -22,6 +15,8 @@ import org.qortal.test.common.TransactionUtils; import org.qortal.test.common.transaction.TestTransaction; import org.qortal.transaction.Transaction.ValidationResult; +import static org.junit.Assert.*; + public class AdminTests extends Common { @Before diff --git a/src/test/java/org/qortal/test/group/DevGroupAdminTests.java b/src/test/java/org/qortal/test/group/DevGroupAdminTests.java index 131359c6..41352323 100644 --- a/src/test/java/org/qortal/test/group/DevGroupAdminTests.java +++ b/src/test/java/org/qortal/test/group/DevGroupAdminTests.java @@ -5,8 +5,6 @@ import org.junit.Before; import org.junit.Test; import org.qortal.account.PrivateKeyAccount; import org.qortal.data.transaction.*; -import org.qortal.group.Group; -import org.qortal.group.Group.ApprovalThreshold; import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.repository.RepositoryManager; @@ -17,7 +15,6 @@ import org.qortal.test.common.TransactionUtils; import org.qortal.test.common.transaction.TestTransaction; import org.qortal.transaction.Transaction; import org.qortal.transaction.Transaction.ValidationResult; -import org.qortal.utils.Base58; import static org.junit.Assert.*; diff --git a/src/test/java/org/qortal/test/group/GroupApprovalTests.java b/src/test/java/org/qortal/test/group/GroupApprovalTests.java index b8b870f5..3d76aa47 100644 --- a/src/test/java/org/qortal/test/group/GroupApprovalTests.java +++ b/src/test/java/org/qortal/test/group/GroupApprovalTests.java @@ -23,10 +23,10 @@ import org.qortal.transaction.Transaction.ApprovalStatus; import org.qortal.transaction.Transaction.ValidationResult; import org.qortal.utils.Amounts; -import static org.junit.Assert.*; - import java.util.Arrays; +import static org.junit.Assert.*; + public class GroupApprovalTests extends Common { private static final long amount = 5000L * Amounts.MULTIPLIER; diff --git a/src/test/java/org/qortal/test/group/GroupBlockDelayTests.java b/src/test/java/org/qortal/test/group/GroupBlockDelayTests.java index b4375fe0..95ddb246 100644 --- a/src/test/java/org/qortal/test/group/GroupBlockDelayTests.java +++ b/src/test/java/org/qortal/test/group/GroupBlockDelayTests.java @@ -1,7 +1,5 @@ package org.qortal.test.group; -import static org.junit.Assert.*; - import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -21,6 +19,9 @@ import org.qortal.transaction.Transaction; import org.qortal.transaction.Transaction.ValidationResult; import org.qortal.transaction.UpdateGroupTransaction; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotSame; + public class GroupBlockDelayTests extends Common { @Before diff --git a/src/test/java/org/qortal/test/group/MiscTests.java b/src/test/java/org/qortal/test/group/MiscTests.java index 481f0b6d..0f32be5c 100644 --- a/src/test/java/org/qortal/test/group/MiscTests.java +++ b/src/test/java/org/qortal/test/group/MiscTests.java @@ -1,7 +1,5 @@ package org.qortal.test.group; -import static org.junit.Assert.*; - import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -20,6 +18,9 @@ import org.qortal.test.common.TransactionUtils; import org.qortal.test.common.transaction.TestTransaction; import org.qortal.transaction.Transaction.ValidationResult; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + public class MiscTests extends Common { @Before diff --git a/src/test/java/org/qortal/test/group/OwnerTests.java b/src/test/java/org/qortal/test/group/OwnerTests.java index d4e7494c..7b5af651 100644 --- a/src/test/java/org/qortal/test/group/OwnerTests.java +++ b/src/test/java/org/qortal/test/group/OwnerTests.java @@ -1,7 +1,5 @@ package org.qortal.test.group; -import static org.junit.Assert.*; - import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -20,6 +18,8 @@ import org.qortal.test.common.TransactionUtils; import org.qortal.test.common.transaction.TestTransaction; import org.qortal.transaction.Transaction.ValidationResult; +import static org.junit.Assert.*; + public class OwnerTests extends Common { @Before diff --git a/src/test/java/org/qortal/test/minting/BlocksMintedCountTests.java b/src/test/java/org/qortal/test/minting/BlocksMintedCountTests.java index f318a667..65a616b0 100644 --- a/src/test/java/org/qortal/test/minting/BlocksMintedCountTests.java +++ b/src/test/java/org/qortal/test/minting/BlocksMintedCountTests.java @@ -1,8 +1,5 @@ package org.qortal.test.minting; -import static org.junit.Assert.*; - - import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -18,6 +15,9 @@ import org.qortal.test.common.BlockUtils; import org.qortal.test.common.Common; import org.qortal.test.common.TestAccount; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + public class BlocksMintedCountTests extends Common { @Before diff --git a/src/test/java/org/qortal/test/minting/DisagreementTests.java b/src/test/java/org/qortal/test/minting/DisagreementTests.java index d32256b7..14e1c370 100644 --- a/src/test/java/org/qortal/test/minting/DisagreementTests.java +++ b/src/test/java/org/qortal/test/minting/DisagreementTests.java @@ -1,11 +1,6 @@ package org.qortal.test.minting; -import static org.junit.Assert.*; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - +import io.druid.extendedset.intset.ConciseSet; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -25,7 +20,11 @@ import org.qortal.test.common.TransactionUtils; import org.qortal.transform.block.BlockTransformer; import org.roaringbitmap.IntIterator; -import io.druid.extendedset.intset.ConciseSet; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.*; public class DisagreementTests extends Common { diff --git a/src/test/java/org/qortal/test/minting/RewardShareTests.java b/src/test/java/org/qortal/test/minting/RewardShareTests.java index b5ac5e59..2be6cb26 100644 --- a/src/test/java/org/qortal/test/minting/RewardShareTests.java +++ b/src/test/java/org/qortal/test/minting/RewardShareTests.java @@ -1,7 +1,5 @@ package org.qortal.test.minting; -import static org.junit.Assert.*; - import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -19,6 +17,8 @@ import org.qortal.transaction.Transaction; import org.qortal.transaction.Transaction.ValidationResult; import org.qortal.utils.Base58; +import static org.junit.Assert.*; + public class RewardShareTests extends Common { private static final int CANCEL_SHARE_PERCENT = -1; diff --git a/src/test/java/org/qortal/test/minting/RewardTests.java b/src/test/java/org/qortal/test/minting/RewardTests.java index 1689db5b..5ba0b075 100644 --- a/src/test/java/org/qortal/test/minting/RewardTests.java +++ b/src/test/java/org/qortal/test/minting/RewardTests.java @@ -1,10 +1,5 @@ package org.qortal.test.minting; -import static org.junit.Assert.*; - -import java.math.BigInteger; -import java.util.*; - import org.apache.commons.lang3.reflect.FieldUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -28,6 +23,14 @@ import org.qortal.test.common.TestAccount; import org.qortal.utils.Amounts; import org.qortal.utils.Base58; +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.junit.Assert.*; + public class RewardTests extends Common { private static final Logger LOGGER = LogManager.getLogger(RewardTests.class); @Before diff --git a/src/test/java/org/qortal/test/naming/BuySellTests.java b/src/test/java/org/qortal/test/naming/BuySellTests.java index f0e97b94..a1c644fc 100644 --- a/src/test/java/org/qortal/test/naming/BuySellTests.java +++ b/src/test/java/org/qortal/test/naming/BuySellTests.java @@ -1,9 +1,5 @@ package org.qortal.test.naming; -import static org.junit.Assert.*; - -import java.util.Random; - import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -22,7 +18,10 @@ import org.qortal.test.common.TransactionUtils; import org.qortal.test.common.transaction.TestTransaction; import org.qortal.transaction.RegisterNameTransaction; import org.qortal.utils.Amounts; -import org.qortal.utils.NTP; + +import java.util.Random; + +import static org.junit.Assert.*; public class BuySellTests extends Common { diff --git a/src/test/java/org/qortal/test/naming/MiscTests.java b/src/test/java/org/qortal/test/naming/MiscTests.java index 401b03b9..324cdf12 100644 --- a/src/test/java/org/qortal/test/naming/MiscTests.java +++ b/src/test/java/org/qortal/test/naming/MiscTests.java @@ -1,24 +1,24 @@ package org.qortal.test.naming; -import static org.junit.Assert.*; - -import java.util.Arrays; -import java.util.List; - import org.apache.commons.lang3.reflect.FieldUtils; import org.junit.Before; import org.junit.Test; import org.qortal.account.PrivateKeyAccount; import org.qortal.api.AmountTypeAdapter; import org.qortal.block.BlockChain; -import org.qortal.block.BlockChain.*; +import org.qortal.block.BlockChain.UnitFeesByTimestamp; import org.qortal.controller.BlockMinter; -import org.qortal.data.transaction.*; +import org.qortal.data.transaction.PaymentTransactionData; +import org.qortal.data.transaction.RegisterNameTransactionData; +import org.qortal.data.transaction.TransactionData; +import org.qortal.data.transaction.UpdateNameTransactionData; import org.qortal.naming.Name; import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.repository.RepositoryManager; -import org.qortal.test.common.*; +import org.qortal.test.common.BlockUtils; +import org.qortal.test.common.Common; +import org.qortal.test.common.TransactionUtils; import org.qortal.test.common.transaction.TestTransaction; import org.qortal.transaction.PaymentTransaction; import org.qortal.transaction.RegisterNameTransaction; @@ -26,6 +26,11 @@ import org.qortal.transaction.Transaction; import org.qortal.transaction.Transaction.ValidationResult; import org.qortal.utils.NTP; +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.*; + public class MiscTests extends Common { @Before diff --git a/src/test/java/org/qortal/test/naming/UpdateTests.java b/src/test/java/org/qortal/test/naming/UpdateTests.java index 54227e94..8e54eb96 100644 --- a/src/test/java/org/qortal/test/naming/UpdateTests.java +++ b/src/test/java/org/qortal/test/naming/UpdateTests.java @@ -1,7 +1,5 @@ package org.qortal.test.naming; -import static org.junit.Assert.*; - import org.junit.Before; import org.junit.Test; import org.qortal.account.PrivateKeyAccount; @@ -17,7 +15,8 @@ import org.qortal.test.common.Common; import org.qortal.test.common.TransactionUtils; import org.qortal.test.common.transaction.TestTransaction; import org.qortal.transaction.RegisterNameTransaction; -import org.qortal.utils.NTP; + +import static org.junit.Assert.*; public class UpdateTests extends Common { diff --git a/src/test/java/org/qortal/test/network/OnlineAccountsTests.java b/src/test/java/org/qortal/test/network/OnlineAccountsTests.java index c8220d66..75625da8 100644 --- a/src/test/java/org/qortal/test/network/OnlineAccountsTests.java +++ b/src/test/java/org/qortal/test/network/OnlineAccountsTests.java @@ -12,26 +12,23 @@ import org.qortal.block.Block; import org.qortal.block.BlockChain; import org.qortal.controller.BlockMinter; import org.qortal.data.network.OnlineAccountData; -import org.qortal.network.message.*; import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.repository.RepositoryManager; import org.qortal.settings.Settings; import org.qortal.test.common.AccountUtils; import org.qortal.test.common.Common; -import org.qortal.transform.Transformer; import org.qortal.utils.Base58; import org.qortal.utils.NTP; import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.nio.ByteBuffer; import java.security.Security; import java.util.ArrayList; import java.util.List; import java.util.Random; -import static org.junit.Assert.*; +import static org.junit.Assert.assertTrue; public class OnlineAccountsTests extends Common { diff --git a/src/test/java/org/qortal/test/network/OnlineAccountsV3Tests.java b/src/test/java/org/qortal/test/network/OnlineAccountsV3Tests.java index 2c3c01ca..3483113d 100644 --- a/src/test/java/org/qortal/test/network/OnlineAccountsV3Tests.java +++ b/src/test/java/org/qortal/test/network/OnlineAccountsV3Tests.java @@ -2,11 +2,12 @@ package org.qortal.test.network; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.jsse.provider.BouncyCastleJsseProvider; -import org.junit.Ignore; import org.junit.Test; import org.qortal.controller.OnlineAccountsManager; import org.qortal.data.network.OnlineAccountData; -import org.qortal.network.message.*; +import org.qortal.network.message.GetOnlineAccountsV3Message; +import org.qortal.network.message.Message; +import org.qortal.network.message.MessageException; import org.qortal.transform.Transformer; import java.nio.ByteBuffer; diff --git a/src/test/java/org/qortal/test/serialization/SerializationTests.java b/src/test/java/org/qortal/test/serialization/SerializationTests.java index e9767909..e61ba053 100644 --- a/src/test/java/org/qortal/test/serialization/SerializationTests.java +++ b/src/test/java/org/qortal/test/serialization/SerializationTests.java @@ -1,6 +1,8 @@ package org.qortal.test.serialization; -import org.junit.Ignore; +import com.google.common.hash.HashCode; +import io.druid.extendedset.intset.ConciseSet; +import org.junit.Before; import org.junit.Test; import org.qortal.account.PrivateKeyAccount; import org.qortal.data.transaction.TransactionData; @@ -15,12 +17,6 @@ import org.qortal.transform.transaction.TransactionTransformer; import org.qortal.utils.Base58; import org.qortal.utils.Serialization; -import com.google.common.hash.HashCode; - -import io.druid.extendedset.intset.ConciseSet; - -import static org.junit.Assert.*; - import java.io.IOException; import java.math.BigDecimal; import java.nio.ByteBuffer; @@ -28,7 +24,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Random; -import org.junit.Before; +import static org.junit.Assert.assertEquals; public class SerializationTests extends Common {