diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 000000000000..4078f686c814 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,10 @@ +{ + "recommendations": [ + "nickheap.vscode-ant", + "shengchen.vscode-checkstyle", + "vscjava.vscode-java-debug", + "vscjava.vscode-java-pack", + "redhat.java", + "dbaeumer.vscode-eslint" + ] +} diff --git a/java/.vscode/extensions.json b/java/.vscode/extensions.json deleted file mode 100644 index c0fe6df5d440..000000000000 --- a/java/.vscode/extensions.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "recommendations": [ - "vscjava.vscode-java-pack", - "nickheap.vscode-ant" - ] -} diff --git a/java/.vscode/launch.json.template b/java/.vscode/launch.json.template deleted file mode 100644 index 533ed8541375..000000000000 --- a/java/.vscode/launch.json.template +++ /dev/null @@ -1,27 +0,0 @@ -{ - "version": "0.2.0", - "configurations": [ - { - "type": "java", - "name": "Debug Taskomatic", - "request": "attach", - "hostName": "server.tf.local", - "port": 8001 - }, - { - "type": "java", - "name": "Debug Search Server", - "request": "attach", - "hostName": "server.tf.local", - "port": 8002 - }, - { - "type": "java", - "name": "Debug Tomcat", - "request": "attach", - "hostName": "server.tf.local", - "port": 8003 - } - ] -} - diff --git a/java/.vscode/settings.json b/java/.vscode/settings.json index e924122c3576..45676e61f642 100644 --- a/java/.vscode/settings.json +++ b/java/.vscode/settings.json @@ -6,9 +6,29 @@ "vmArgs": [ "-Drhn.config.dir=${workspaceFolder}/buildconf/test", "-Dlog4j2.configurationFile=${workspaceFolder}/buildconf/test/log4j2.properties" - ] + ] }, "ant.buildFilenames": "manager-build.xml", - "java.jdt.ls.vmargs": "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx2G -Xms100m -Xlog:disable", - "java.compile.nullAnalysis.mode": "automatic" -} + "java.jdt.ls.vmargs": "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx4G -Xms2G -Xlog:disable", + "java.compile.nullAnalysis.mode": "automatic", + "java.checkstyle.version": "10.12.7", + "java.checkstyle.autocheck": "false", + "java.checkstyle.configuration": "${workspaceFolder}/buildconf/checkstyle.xml", + "java.project.sourcePaths": [ + "lib", + "code/src", + "buildconf/ivy/repository/suse", + "build/java-branding", + "build/classes", + "build/webapp" + ], + "java.checkstyle.properties": { + "checkstyle.cache.file": "${workspaceFolder}/build/checkstyle.cache.src", + "checkstyle.header.file": "${workspaceFolder}/buildconf/LICENSE.txt", + "checkstyle.suppressions.file": "${workspaceFolder}/buildconf/checkstyle-suppressions.xml", + "javadoc.lazy": "false", + "javadoc.method.scope": "public", + "javadoc.type.scope": "package", + "javadoc.var.scope": "package", + }, +} \ No newline at end of file diff --git a/java/buildconf/build-props.xml b/java/buildconf/build-props.xml index 7b5b3f6545d7..1dca4f9ed6e3 100644 --- a/java/buildconf/build-props.xml +++ b/java/buildconf/build-props.xml @@ -1,8 +1,8 @@ - + @@ -39,20 +39,12 @@ - - - + - - - + - - @@ -67,59 +59,23 @@ - - - - - - - - - - + - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - + + - - - + - + @@ -142,7 +98,7 @@ @@ -169,18 +125,18 @@ concurrent xalan-j2" /> - + + xalan-j2 xalan-j2-serializer xerces-j2 simple-core" /> diff --git a/java/buildconf/checkstyle.xml b/java/buildconf/checkstyle.xml index 8f6dca76d3e3..93c03572d490 100644 --- a/java/buildconf/checkstyle.xml +++ b/java/buildconf/checkstyle.xml @@ -62,7 +62,7 @@ - + diff --git a/java/buildconf/ivy/ivy-suse.xml b/java/buildconf/ivy/ivy-suse.xml index 7efe99f34c39..87aee570f07e 100644 --- a/java/buildconf/ivy/ivy-suse.xml +++ b/java/buildconf/ivy/ivy-suse.xml @@ -3,10 +3,10 @@ - + - - + + @@ -32,14 +32,15 @@ - - + + + - - - - - + + + + + @@ -49,7 +50,7 @@ - + @@ -102,13 +103,13 @@ - - - - - - - + + + + + + + diff --git a/java/buildconf/ivy/obs-maven-config.yaml b/java/buildconf/ivy/obs-maven-config.yaml index 21e02f5afa0a..9f5ea4323738 100644 --- a/java/buildconf/ivy/obs-maven-config.yaml +++ b/java/buildconf/ivy/obs-maven-config.yaml @@ -5,6 +5,15 @@ repositories: Uyuni_Other: project: systemsmanagement:Uyuni:Master:Other repository: openSUSE_Leap_15.6 + MicheleBussolotto_Other: + project: home:mbussolotto:branches:systemsmanagement:Uyuni:Master:Other + repository: openSUSE_Leap_15.6 + MicheleBussolotto_Java: + project: home:mbussolotto:branches:Java:packages + repository: openSUSE_Factory + Java: + project: Java:packages + repository: openSUSE_Factory Uyuni: project: systemsmanagement:Uyuni:Master repository: openSUSE_Leap_15.6 @@ -14,7 +23,7 @@ artifacts: - artifact: asm package: objectweb-asm jar: asm-all - repository: Uyuni_Other + repository: Leap - artifact: antlr package: antlr-java repository: Leap @@ -22,11 +31,11 @@ artifacts: repository: Leap - artifact: byte-buddy package: byte-buddy - repository: Leap_sle + repository: MicheleBussolotto_Java jar: byte-buddy.jar - artifact: byte-buddy-dep package: byte-buddy - repository: Leap_sle + repository: MicheleBussolotto_Java jar: byte-buddy-dep.jar - artifact: c3p0 repository: Leap @@ -89,22 +98,20 @@ artifacts: repository: Uyuni_Other - artifact: dom4j repository: Leap_sle - - artifact: ehcache-core - package: ehcache - repository: Uyuni_Other - - artifact: geronimo-jta-1.1-api - package: geronimo-jta-1_1-api - repository: Leap + - artifact: jakarta.transaction-api + package: jakarta-transactions + repository: MicheleBussolotto_Java - artifact: google-gson jar: gson.jar repository: Leap - artifact: hibernate-c3p0 - package: hibernate5-c3p0 + package: hibernate6-c3p0 jar: hibernate-c3p0 - repository: Uyuni_Other - - artifact: hibernate-types-52 - package: hibernate-types - repository: Uyuni_Other + repository: MicheleBussolotto_Other + - artifact: hypersistence-utils-hibernate-63 + jar: hypersistence-utils-hibernate-63-3.8.2.jar + package: hypersistence-utils + repository: MicheleBussolotto_Other - artifact: jackson-annotations repository: Leap - artifact: jackson-core @@ -112,13 +119,13 @@ artifacts: - artifact: jackson-databind repository: Leap - artifact: hibernate-commons-annotations - repository: Uyuni_Other + repository: MicheleBussolotto_Other - artifact: hibernate-core - package: hibernate5-core - repository: Uyuni_Other - - artifact: hibernate-ehcache - package: hibernate5-ehcache - repository: Uyuni_Other + package: hibernate6-core + repository: MicheleBussolotto_Other + - artifact: hibernate-jcache + package: hibernate6-jcache + repository: MicheleBussolotto_Other - artifact: httpasyncclient package: httpcomponents-asyncclient jar: httpasyncclient-[0-9.]+ @@ -136,8 +143,8 @@ artifacts: - artifact: jade4j repository: Uyuni_Other - artifact: jakarta-persistence-api - package: jpa-api - repository: Uyuni_Other + jar: jakarta-persistence-api.jar + repository: MicheleBussolotto_Java - artifact: java-saml jar: java-saml-[0-9.]+ repository: Uyuni_Other @@ -148,6 +155,12 @@ artifacts: repository: Leap - artifact: jboss-logging repository: Leap + - artifact: antlr4 + package: antlr4-java + repository: Leap + - artifact: jcache + package: jcache + repository: Leap - artifact: jctools-core package: jctools repository: Leap @@ -301,7 +314,6 @@ artifacts: repository: Uyuni_Other - artifact: velocity-engine-core repository: Uyuni_Other - - artifact: jasper package: tomcat-lib jar: jasper\.jar @@ -334,20 +346,21 @@ artifacts: repository: Uyuni_Other - artifact: jetty-util repository: Leap - - artifact: glassfish-jaxb-api - repository: Uyuni_Other + - artifact: jaxb-api + repository: MicheleBussolotto_Java + jar: jaxb-api/jakarta.xml.bind-api.jar + - artifact: jaxb-core + package: jaxb-core + repository: Java - artifact: jaxb-runtime - package: glassfish-jaxb-runtime - repository: Uyuni_Other - - artifact: jaxb-impl - package: glassfish-jaxb-runtime - repository: Uyuni_Other - - artifact: txw2 - package: glassfish-jaxb-txw2 - repository: Uyuni_Other - - artifact: glassfish-activation - repository: Uyuni_Other + package: jaxb-runtime + repository: Java + - artifact: jaxb-txw2 + package: jaxb-txw2 + repository: Java + - artifact: jakarta-activation + repository: MicheleBussolotto_Java - artifact: istack-commons-runtime - repository: Leap + repository: MicheleBussolotto_Java - artifact: stax-ex - repository: Uyuni_Other + repository: MicheleBussolotto_Java diff --git a/java/buildconf/test/rhn.conf.postgresql-example b/java/buildconf/test/rhn.conf.postgresql-example index 62c9791ae092..867122d05d10 100644 --- a/java/buildconf/test/rhn.conf.postgresql-example +++ b/java/buildconf/test/rhn.conf.postgresql-example @@ -24,8 +24,8 @@ hibernate.connection.driver_proto = jdbc:postgresql # hibernate.show_sql = true hibernate.use_outer_join = true hibernate.jdbc.batch_size = 0 -hibernate.cache.region.factory_class = org.hibernate.cache.ehcache.EhCacheRegionFactory -hibernate.cache.use_query_cache = true +hibernate.cache.use_query_cache=false +hibernate.cache.use_second_level_cache=false hibernate.bytecode.use_reflection_optimizer = false hibernate.id.new_generator_mappings = false @@ -37,8 +37,8 @@ reporting.hibernate.connection.driver_proto = jdbc:postgresql # reporting.hibernate.show_sql = true reporting.hibernate.use_outer_join = true reporting.hibernate.jdbc.batch_size = 0 -reporting.hibernate.cache.region.factory_class = org.hibernate.cache.ehcache.EhCacheRegionFactory -reporting.hibernate.cache.use_query_cache = true +reporting.hibernate.cache.use_query_cache=false +reporting.hibernate.cache.use_second_level_cache=false reporting.hibernate.bytecode.use_reflection_optimizer = false reporting.hibernate.id.new_generator_mappings = false diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/CachedStatement.java b/java/code/src/com/redhat/rhn/common/db/datasource/CachedStatement.java index 5a818680d413..89bfad190807 100644 --- a/java/code/src/com/redhat/rhn/common/db/datasource/CachedStatement.java +++ b/java/code/src/com/redhat/rhn/common/db/datasource/CachedStatement.java @@ -48,7 +48,7 @@ import java.util.Map; import java.util.stream.Collectors; -import javax.persistence.FlushModeType; +import jakarta.persistence.FlushModeType; /** * A cached set of query/elaborator strings and the parameterMap hash maps. diff --git a/java/code/src/com/redhat/rhn/common/hibernate/AbstractConnectionManager.java b/java/code/src/com/redhat/rhn/common/hibernate/AbstractConnectionManager.java index 177199faa12c..d81f0fa8ac18 100644 --- a/java/code/src/com/redhat/rhn/common/hibernate/AbstractConnectionManager.java +++ b/java/code/src/com/redhat/rhn/common/hibernate/AbstractConnectionManager.java @@ -26,7 +26,6 @@ import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; -import org.hibernate.metadata.ClassMetadata; import java.util.ArrayList; import java.util.Arrays; @@ -36,8 +35,9 @@ import java.util.Properties; import java.util.Set; -import io.prometheus.client.hibernate.HibernateStatisticsCollector; +import jakarta.persistence.metamodel.Metamodel; +import io.prometheus.client.hibernate.HibernateStatisticsCollector; /** * Manages the lifecycle of Hibernate SessionFactory and associated @@ -110,16 +110,12 @@ public boolean isTransactionPending() { * {@inheritDoc} */ @Override - public ClassMetadata getMetadata(Object target) { + public Metamodel getMetadata(Object target) { if (target == null) { return null; } - if (target instanceof Class) { - return sessionFactory.getClassMetadata((Class) target); - } - - return sessionFactory.getClassMetadata(target.getClass()); + return sessionFactory.getMetamodel(); } /** diff --git a/java/code/src/com/redhat/rhn/common/hibernate/ConnectionManager.java b/java/code/src/com/redhat/rhn/common/hibernate/ConnectionManager.java index aba589ed7813..292d5a1cff04 100644 --- a/java/code/src/com/redhat/rhn/common/hibernate/ConnectionManager.java +++ b/java/code/src/com/redhat/rhn/common/hibernate/ConnectionManager.java @@ -20,6 +20,8 @@ import java.util.Optional; +import jakarta.persistence.metamodel.Metamodel; + /** * Manages the lifecycle of Hibernate SessionFactory and associated * thread-scoped Hibernate sessions. @@ -113,7 +115,7 @@ public interface ConnectionManager { * @param target an object instance or a class to retrieve the metadata for * @return the {@link ClassMetadata} for the given object. */ - ClassMetadata getMetadata(Object target); + Metamodel getMetadata(Object target); /** * Closes Hibernate Session stored in ThreadLocal storage. diff --git a/java/code/src/com/redhat/rhn/common/hibernate/EmptyVarcharInterceptor.java b/java/code/src/com/redhat/rhn/common/hibernate/EmptyVarcharInterceptor.java index bbc7dac81e34..5517b6e5222c 100644 --- a/java/code/src/com/redhat/rhn/common/hibernate/EmptyVarcharInterceptor.java +++ b/java/code/src/com/redhat/rhn/common/hibernate/EmptyVarcharInterceptor.java @@ -16,8 +16,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.hibernate.EmptyInterceptor; -import org.hibernate.type.StringType; +import org.hibernate.Interceptor; import org.hibernate.type.Type; import java.io.Serializable; @@ -28,7 +27,7 @@ * convert empty varchar to null automatically. It depends on the setting of the * interceptor. */ -public class EmptyVarcharInterceptor extends EmptyInterceptor { +public class EmptyVarcharInterceptor implements Interceptor { private static final long serialVersionUID = 5351605245345217308L; @@ -59,8 +58,7 @@ protected static boolean emptyStringToNull(Object entity, Serializable id, boolean modified = false; for (int i = 0; i < types.length; i++) { - // type is string (VARCHAR) and state is empty string - if ((types[i] instanceof StringType) && "".equals(state[i])) { + if ("".equals(state[i])) { if (LOG.isDebugEnabled()) { LOG.debug("Object {} is setting empty string {}", entity.getClass().getCanonicalName(), propertyNames[i]); diff --git a/java/code/src/com/redhat/rhn/common/hibernate/ForceRecreationListType.java b/java/code/src/com/redhat/rhn/common/hibernate/ForceRecreationListType.java index 1638288a319a..9d07947669a3 100644 --- a/java/code/src/com/redhat/rhn/common/hibernate/ForceRecreationListType.java +++ b/java/code/src/com/redhat/rhn/common/hibernate/ForceRecreationListType.java @@ -15,9 +15,10 @@ package com.redhat.rhn.common.hibernate; import org.hibernate.HibernateException; -import org.hibernate.collection.internal.PersistentList; import org.hibernate.collection.spi.PersistentCollection; +import org.hibernate.collection.spi.PersistentList; import org.hibernate.engine.spi.SharedSessionContractImplementor; +import org.hibernate.metamodel.CollectionClassification; import org.hibernate.persister.collection.CollectionPersister; import org.hibernate.usertype.UserCollectionType; @@ -155,7 +156,19 @@ public Object instantiate() { } /** - * + * {@inheritDoc} + */ + @Override + public Class getCollectionClass() { + return null; + } + + @Override + public CollectionClassification getClassification() { + return null; + } + + /** * ForceRecreationList */ private static class ForceRecreationList extends PersistentList { diff --git a/java/code/src/com/redhat/rhn/common/hibernate/HibernateFactory.java b/java/code/src/com/redhat/rhn/common/hibernate/HibernateFactory.java index 49bdb2065b8d..d596fea83cb1 100644 --- a/java/code/src/com/redhat/rhn/common/hibernate/HibernateFactory.java +++ b/java/code/src/com/redhat/rhn/common/hibernate/HibernateFactory.java @@ -27,11 +27,9 @@ import org.apache.logging.log4j.Logger; import org.hibernate.Hibernate; import org.hibernate.HibernateException; -import org.hibernate.LockMode; +import org.hibernate.LockOptions; import org.hibernate.MappingException; import org.hibernate.Session; -import org.hibernate.engine.spi.SessionImplementor; -import org.hibernate.metadata.ClassMetadata; import org.hibernate.query.Query; import java.io.ByteArrayOutputStream; @@ -53,11 +51,10 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; -import javax.persistence.FlushModeType; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaDelete; -import javax.persistence.criteria.Root; - +import jakarta.persistence.FlushModeType; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaDelete; +import jakarta.persistence.criteria.Root; /** * HibernateFactory - Helper superclass that contains methods for fetching and * storing Objects from the DB using Hibernate. @@ -462,7 +459,7 @@ protected Object lockObject(Class clazz, Serializable id) { try { session = HibernateFactory.getSession(); - retval = session.get(clazz, id, LockMode.UPGRADE); + retval = session.get(clazz, id, LockOptions.UPGRADE); } catch (MappingException me) { getLogger().error("Mapping not found for {}", clazz.getName(), me); @@ -483,21 +480,8 @@ protected Object lockObject(Class clazz, Serializable id) { * @param the entity type */ public static T reload(T obj) throws HibernateException { - // assertNotNull(obj); - ClassMetadata cmd = connectionManager.getMetadata(obj); - Serializable id = cmd.getIdentifier(obj, (SessionImplementor) getSession()); - Session session = getSession(); - session.flush(); - session.evict(obj); - /* - * In hibernate 3, the following doesn't work: - * session.load(obj.getClass(), id); - * load returns the proxy class instead of the persisted class, ie, - * Filter$$EnhancerByCGLIB$$9bcc734d_2 instead of Filter. - * session.get is set to not return the proxy class, so that is what we'll use. - */ - // assertNotSame(obj, result); - return (T) session.get(obj.getClass(), id); + // TODO + return null; } /** @@ -574,8 +558,12 @@ public static Blob byteArrayToBlob(byte[] data) { if (data.length == 0) { return null; } - return Hibernate.getLobCreator(getSession()).createBlob(data); + Session session = getSession(); + if (session == null) { + return null; + } + return session.getLobHelper().createBlob(data); } /** diff --git a/java/code/src/com/redhat/rhn/common/hibernate/PathConverter.java b/java/code/src/com/redhat/rhn/common/hibernate/PathConverter.java index 5688cb54a6f6..4bcbcdb81d67 100644 --- a/java/code/src/com/redhat/rhn/common/hibernate/PathConverter.java +++ b/java/code/src/com/redhat/rhn/common/hibernate/PathConverter.java @@ -17,7 +17,7 @@ import java.nio.file.Path; -import javax.persistence.AttributeConverter; +import jakarta.persistence.AttributeConverter; /** * JPA converter between Path and String diff --git a/java/code/src/com/redhat/rhn/common/hibernate/ReportDbHibernateFactory.java b/java/code/src/com/redhat/rhn/common/hibernate/ReportDbHibernateFactory.java index dce78fcfc8df..d907d257664d 100644 --- a/java/code/src/com/redhat/rhn/common/hibernate/ReportDbHibernateFactory.java +++ b/java/code/src/com/redhat/rhn/common/hibernate/ReportDbHibernateFactory.java @@ -25,7 +25,6 @@ import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.hibernate.Hibernate; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.query.Query; @@ -46,7 +45,7 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; -import javax.persistence.FlushModeType; +import jakarta.persistence.FlushModeType; /** * HibernateFactory - Helper superclass that contains methods for fetching and @@ -563,7 +562,11 @@ public Blob byteArrayToBlob(byte[] data) { if (data.length == 0) { return null; } - return Hibernate.getLobCreator(getSession()).createBlob(data); + Session session = getSession(); + if (session == null) { + return null; + } + return session.getLobHelper().createBlob(data); } diff --git a/java/code/src/com/redhat/rhn/domain/BaseDomainHelper.java b/java/code/src/com/redhat/rhn/domain/BaseDomainHelper.java index 76dbefcc1223..301ce9f287d9 100644 --- a/java/code/src/com/redhat/rhn/domain/BaseDomainHelper.java +++ b/java/code/src/com/redhat/rhn/domain/BaseDomainHelper.java @@ -22,8 +22,8 @@ import java.util.Date; -import javax.persistence.Column; -import javax.persistence.MappedSuperclass; +import jakarta.persistence.Column; +import jakarta.persistence.MappedSuperclass; /** * Class UserImpl that reflects the DB representation of web_contact @@ -46,7 +46,7 @@ protected BaseDomainHelper() { * Gets the current value of created * @return Date the current value */ - @Column(name = "created", nullable = false, updatable = false) + @Column(name = "created", nullable = false) @CreationTimestamp public Date getCreated() { return this.created; diff --git a/java/code/src/com/redhat/rhn/domain/action/test/ActionTypeTest.java b/java/code/src/com/redhat/rhn/domain/action/test/ActionTypeTest.java index aba0cade5c78..373ba1305555 100644 --- a/java/code/src/com/redhat/rhn/domain/action/test/ActionTypeTest.java +++ b/java/code/src/com/redhat/rhn/domain/action/test/ActionTypeTest.java @@ -70,7 +70,7 @@ public void testFindByLabel() throws Exception { private ActionType lookupByLabel(String label) { Session session = HibernateFactory.getSession(); return (ActionType) session.getNamedQuery("ActionType.findByLabel") - .setString("label", label) + .setParameter("label", label) //Retrieve from cache if there .setCacheable(true) .uniqueResult(); diff --git a/java/code/src/com/redhat/rhn/domain/audit/ScapFactory.java b/java/code/src/com/redhat/rhn/domain/audit/ScapFactory.java index 172fe46e9098..e3354b8e15df 100644 --- a/java/code/src/com/redhat/rhn/domain/audit/ScapFactory.java +++ b/java/code/src/com/redhat/rhn/domain/audit/ScapFactory.java @@ -20,7 +20,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.hibernate.criterion.Restrictions; import java.util.List; import java.util.Map; @@ -77,8 +76,8 @@ public static void delete(XccdfTestResult tr) { public static void clearTestResult(long serverId, long actionId) { List results = getSession() .getNamedQuery("XccdfTestResult.findByActionId") - .setLong("serverId", serverId) - .setLong("actionId", actionId) + .setParameter("serverId", serverId) + .setParameter("actionId", actionId) .list(); results.forEach(ScapFactory::delete); } @@ -89,8 +88,7 @@ public static void clearTestResult(long serverId, long actionId) { * @return the {@link XccdfBenchmark} if any */ public static Optional lookupBenchmarkById(long benchmarkId) { - return Optional.ofNullable( - (XccdfBenchmark)getSession().get(XccdfBenchmark.class, benchmarkId)); + return Optional.ofNullable(getSession().get(XccdfBenchmark.class, benchmarkId)); } /** @@ -99,7 +97,7 @@ public static Optional lookupBenchmarkById(long benchmarkId) { * @return the {@link XccdfIdent} if any */ public static Optional lookupIdentById(long identId) { - return Optional.ofNullable((XccdfIdent)getSession().get(XccdfIdent.class, identId)); + return Optional.ofNullable(getSession().get(XccdfIdent.class, identId)); } /** @@ -108,20 +106,21 @@ public static Optional lookupIdentById(long identId) { * @return the {@link XccdfProfile} if any */ public static Optional lookupProfileById(long profileId) { - return Optional.ofNullable( - (XccdfProfile)getSession().get(XccdfProfile.class, profileId)); + return Optional.ofNullable(getSession().get(XccdfProfile.class, profileId)); } /** - * Find a {@link XccdfRuleResultType} by id. - * @param label label id - * @return the {@link XccdfRuleResultType} if any + * Queries an XccdfRuleResultType by its label. + * + * @param label the label of the XccdfRuleResultType + * @return optional of XccdfRuleResultType */ public static Optional lookupRuleResultType(String label) { - return getSession().createCriteria(XccdfRuleResultType.class) - .add(Restrictions.eq("label", label)) - .list() - .stream().findFirst(); + String sql = "SELECT * FROM rhnXccdfRuleResultType WHERE label = :label"; + XccdfRuleResultType result = + getSession().createNativeQuery(sql, XccdfRuleResultType.class) + .setParameter("label", label).getResultStream().findFirst().orElse(null); + return Optional.ofNullable(result); } /** diff --git a/java/code/src/com/redhat/rhn/domain/channel/AccessTokenFactory.java b/java/code/src/com/redhat/rhn/domain/channel/AccessTokenFactory.java index b0973e164d92..cea2212f02c2 100644 --- a/java/code/src/com/redhat/rhn/domain/channel/AccessTokenFactory.java +++ b/java/code/src/com/redhat/rhn/domain/channel/AccessTokenFactory.java @@ -25,7 +25,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.hibernate.criterion.Restrictions; import org.jose4j.lang.JoseException; import java.time.Duration; @@ -58,12 +57,10 @@ public class AccessTokenFactory extends HibernateFactory { * @return optional of AccessToken */ public static Optional lookupById(long id) { - return Optional.ofNullable( - (AccessToken)HibernateFactory.getSession() - .createCriteria(AccessToken.class) - .add(Restrictions.eq("id", id)) - .uniqueResult() - ); + String sql = "SELECT * FROM suseChannelAccessToken WHERE id = :id"; + AccessToken accessToken = HibernateFactory.getSession().createNativeQuery(sql, AccessToken.class) + .setParameter("id", id).uniqueResult(); + return Optional.ofNullable(accessToken); } /** @@ -71,9 +68,10 @@ public static Optional lookupById(long id) { * @return list of AccessTokens */ public static List all() { - return (List) HibernateFactory.getSession() - .createCriteria(AccessToken.class) - .list(); + String sql = "SELECT * FROM suseChannelAccessToken"; + List accessTokens = + HibernateFactory.getSession().createNativeQuery(sql, AccessToken.class).getResultList(); + return accessTokens; } /** @@ -82,12 +80,10 @@ public static List all() { * @return optional of AccessToken */ public static Optional lookupByToken(String token) { - return Optional.ofNullable( - (AccessToken)HibernateFactory.getSession() - .createCriteria(AccessToken.class) - .add(Restrictions.eq("token", token)) - .uniqueResult() - ); + String sql = "SELECT * FROM suseChannelAccessToken WHERE token = :token"; + AccessToken accessToken = HibernateFactory.getSession().createNativeQuery(sql, AccessToken.class) + .setParameter("token", token).uniqueResult(); + return Optional.ofNullable(accessToken); } /** diff --git a/java/code/src/com/redhat/rhn/domain/channel/AppStream.java b/java/code/src/com/redhat/rhn/domain/channel/AppStream.java index ef854d090699..d9bca39bea3e 100644 --- a/java/code/src/com/redhat/rhn/domain/channel/AppStream.java +++ b/java/code/src/com/redhat/rhn/domain/channel/AppStream.java @@ -18,20 +18,20 @@ import java.util.Set; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.JoinTable; -import javax.persistence.ManyToMany; -import javax.persistence.ManyToOne; -import javax.persistence.OneToMany; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.JoinTable; +import jakarta.persistence.ManyToMany; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; @Entity @Table(name = "suseAppstream") @@ -63,9 +63,9 @@ public class AppStream { @ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = "suseAppstreamPackage", joinColumns = { - @JoinColumn(name = "module_id", nullable = false, updatable = false)}, + @JoinColumn(name = "module_id", nullable = false)}, inverseJoinColumns = { - @JoinColumn(name = "package_id", nullable = false, updatable = false)} + @JoinColumn(name = "package_id", nullable = false)} ) private Set artifacts; diff --git a/java/code/src/com/redhat/rhn/domain/channel/AppStreamApi.java b/java/code/src/com/redhat/rhn/domain/channel/AppStreamApi.java index cadc3aff2af6..edc542c88e50 100644 --- a/java/code/src/com/redhat/rhn/domain/channel/AppStreamApi.java +++ b/java/code/src/com/redhat/rhn/domain/channel/AppStreamApi.java @@ -15,14 +15,14 @@ package com.redhat.rhn.domain.channel; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.IdClass; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.MapsId; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.IdClass; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.MapsId; +import jakarta.persistence.Table; @Entity @IdClass(AppStreamApiKey.class) @@ -53,7 +53,7 @@ public AppStreamApi(String rpmIn, Long idIn) { private String rpm; @ManyToOne - @JoinColumn(name = "module_id") + @JoinColumn(name = "module_id", nullable = false) @MapsId("id") private AppStream appStream; diff --git a/java/code/src/com/redhat/rhn/domain/channel/ChannelFactory.java b/java/code/src/com/redhat/rhn/domain/channel/ChannelFactory.java index f46ddadecedc..770256f2be65 100644 --- a/java/code/src/com/redhat/rhn/domain/channel/ChannelFactory.java +++ b/java/code/src/com/redhat/rhn/domain/channel/ChannelFactory.java @@ -23,7 +23,6 @@ import com.redhat.rhn.common.db.datasource.WriteMode; import com.redhat.rhn.common.hibernate.HibernateFactory; import com.redhat.rhn.domain.common.ChecksumType; -import com.redhat.rhn.domain.kickstart.KickstartableTree; import com.redhat.rhn.domain.org.Org; import com.redhat.rhn.domain.rhnpackage.Package; import com.redhat.rhn.domain.scc.SCCRepository; @@ -34,11 +33,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.hibernate.Criteria; import org.hibernate.Session; -import org.hibernate.criterion.MatchMode; -import org.hibernate.criterion.Projections; -import org.hibernate.criterion.Restrictions; import java.util.ArrayList; import java.util.Arrays; @@ -52,6 +47,13 @@ import java.util.Set; import java.util.stream.Collectors; +import jakarta.persistence.NoResultException; +import jakarta.persistence.TypedQuery; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Predicate; +import jakarta.persistence.criteria.Root; + /** * ChannelFactory */ @@ -393,8 +395,11 @@ public static List getAccessibleChannelsByOrg(Long orgid) { */ public static List getChannelArchitectures() { Session session = getSession(); - Criteria criteria = session.createCriteria(ChannelArch.class); - return criteria.list(); + String sql = "SELECT * FROM rhnChannelArch"; // Adjust the SQL query as + // needed + List channelArchList + = session.createNativeQuery(sql, ChannelArch.class).getResultList(); + return channelArchList; } /** @@ -427,9 +432,11 @@ public static boolean isAccessibleByUser(String channelLabel, Long userId) { */ public static ChannelArch findArchByLabel(String label) { Session session = getSession(); - Criteria criteria = session.createCriteria(ChannelArch.class); - criteria.add(Restrictions.eq(LABEL, label)); - return (ChannelArch) criteria.uniqueResult(); + String sql = "SELECT * FROM rhnChannelArch WHERE label = :label"; + ChannelArch channelArch + = (ChannelArch) session.createNativeQuery(sql, ChannelArch.class) + .setParameter("label", label).uniqueResult(); + return channelArch; } /** @@ -452,9 +459,10 @@ public static Channel lookupByLabel(Org org, String label) { */ public static Channel lookupByLabel(String label) { Session session = getSession(); - Criteria c = session.createCriteria(Channel.class); - c.add(Restrictions.eq(LABEL, label)); - return (Channel) c.uniqueResult(); + String sql = "SELECT * FROM rhnChannel WHERE label = :label"; + Channel channel = (Channel) session.createNativeQuery(sql, Channel.class) + .setParameter("label", label).uniqueResult(); + return channel; } /** @@ -1075,8 +1083,8 @@ public static Package lookupPackageByFilename(Channel channel, List pkgs = HibernateFactory.getSession() .getNamedQuery("Channel.packageByFileName") - .setString("pathlike", "%/" + fileName) - .setLong("channel_id", channel.getId()) + .setParameter("pathlike", "%/" + fileName) + .setParameter("channel_id", channel.getId()) .list(); if (pkgs.isEmpty()) { return null; @@ -1096,12 +1104,11 @@ public static Package lookupPackageByFilenameAndRange(Channel channel, String fileName, int headerStart, int headerEnd) { List pkgs = HibernateFactory.getSession() - .getNamedQuery("Channel.packageByFileNameAndRange") - .setString("pathlike", "%/" + fileName) - .setLong("channel_id", channel.getId()) - .setInteger("headerStart", headerStart) - .setInteger("headerEnd", headerEnd) - .list(); + .getNamedQuery("Channel.packageByFileNameAndRange") + .setParameter("pathlike", "%/" + fileName) + .setParameter("channel_id", channel.getId()) + .setParameter("headerStart", headerStart) + .setParameter("headerEnd", headerEnd).list(); if (pkgs.isEmpty()) { return null; } @@ -1117,10 +1124,12 @@ public static Package lookupPackageByFilenameAndRange(Channel channel, * @return true of the channels contains any distros */ public static boolean containsDistributions(Channel ch) { - Criteria criteria = getSession().createCriteria(KickstartableTree.class); - criteria.setProjection(Projections.rowCount()); - criteria.add(Restrictions.eq("channel", ch)); - return ((Number)criteria.uniqueResult()).intValue() > 0; + Session session = getSession(); + String sql + = "SELECT COUNT(*) FROM rhnKickstartableTree WHERE channel_id = :channelId"; + Number count = (Number) session.createNativeQuery(sql) + .setParameter("channelId", ch.getId()).getSingleResult(); + return count.intValue() > 0; } /** @@ -1233,9 +1242,11 @@ public static List listCustomChannelsWithRepositories() { */ @SuppressWarnings("unchecked") public static List listVendorContentSources() { - Criteria criteria = getSession().createCriteria(ContentSource.class); - criteria.add(Restrictions.isNull("org")); - return criteria.list(); + Session session = getSession(); + String sql = "SELECT * FROM rhnContentSource WHERE org IS NULL"; + List contentSources + = session.createNativeQuery(sql, ContentSource.class).getResultList(); + return contentSources; } /** @@ -1244,23 +1255,42 @@ public static List listVendorContentSources() { * @return vendor content source if it exists */ public static ContentSource findVendorContentSourceByRepo(String repoUrl) { - Criteria criteria = getSession().createCriteria(ContentSource.class); - criteria.add(Restrictions.isNull("org")); + CriteriaBuilder cb = getSession().getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(ContentSource.class); + Root root = cq.from(ContentSource.class); + + // Create predicates for the query + Predicate isOrgNull = cb.isNull(root.get("org")); + Predicate sourceUrlPredicate; + if (repoUrl.contains("mirrorlist.centos.org") || repoUrl.contains("mirrors.rockylinux.org")) { - criteria.add(Restrictions.eq("sourceUrl", repoUrl)); + sourceUrlPredicate = cb.equal(root.get("sourceUrl"), repoUrl); } else { - String [] parts = repoUrl.split("\\?"); + String[] parts = repoUrl.split("\\?"); String repoUrlPrefix = parts[0]; if (parts.length > 1) { - criteria.add(Restrictions.like("sourceUrl", repoUrlPrefix + '?', - MatchMode.START)); + sourceUrlPredicate = cb.like(root.get("sourceUrl"), repoUrlPrefix + '%'); } else { - criteria.add(Restrictions.eq("sourceUrl", repoUrlPrefix)); + sourceUrlPredicate = cb.equal(root.get("sourceUrl"), repoUrlPrefix); } } - return (ContentSource) criteria.uniqueResult(); + + // Combine predicates + cq.where(cb.and(isOrgNull, sourceUrlPredicate)); + + // Create and execute the query + TypedQuery query = getSession().createQuery(cq); + ContentSource contentSource; + try { + contentSource = query.getSingleResult(); + } + catch (NoResultException e) { + contentSource = null; + } + + return contentSource; } /** @@ -1287,10 +1317,21 @@ public static List findContentSourceLikeUrl(String urlPart) { * @return channel product */ public static ChannelProduct findChannelProduct(String product, String version) { - Criteria criteria = getSession().createCriteria(ChannelProduct.class); - criteria.add(Restrictions.eq("product", product)); - criteria.add(Restrictions.eq("version", version)); - return (ChannelProduct) criteria.uniqueResult(); + String sql + = "SELECT * FROM rhnChannelProduct WHERE product = :product AND version = :version"; + TypedQuery query + = getSession().createNativeQuery(sql, ChannelProduct.class); + query.setParameter("product", product); + query.setParameter("version", version); + try { + return query.getSingleResult(); + } + catch (NoResultException e) { + return null; + } + catch (Exception e) { + throw new RuntimeException("Error retrieving ChannelProduct", e); + } } /** diff --git a/java/code/src/com/redhat/rhn/domain/channel/ChannelFamilyFactory.java b/java/code/src/com/redhat/rhn/domain/channel/ChannelFamilyFactory.java index a7a1bdf7fbca..68448db16488 100644 --- a/java/code/src/com/redhat/rhn/domain/channel/ChannelFamilyFactory.java +++ b/java/code/src/com/redhat/rhn/domain/channel/ChannelFamilyFactory.java @@ -24,9 +24,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.hibernate.Criteria; -import org.hibernate.Session; -import org.hibernate.criterion.Restrictions; import java.util.ArrayList; import java.util.HashMap; @@ -34,6 +31,9 @@ import java.util.List; import java.util.Map; +import jakarta.persistence.NoResultException; +import jakarta.persistence.TypedQuery; + /** * ChannelFamilyFactory */ @@ -78,12 +78,21 @@ public static ChannelFamily lookupById(Long id) { * @return the ChannelFamily found */ public static ChannelFamily lookupByLabel(String label, Org org) { - Session session = getSession(); - Criteria c = session.createCriteria(ChannelFamily.class); - c.add(Restrictions.eq("label", label)); - c.add(Restrictions.or(Restrictions.eq("org", org), - Restrictions.isNull("org"))); - return (ChannelFamily) c.uniqueResult(); + String sql = + "SELECT * FROM rhnChannelFamily WHERE label = :label AND (org = :org OR org IS NULL)"; + TypedQuery query = + getSession().createNativeQuery(sql, ChannelFamily.class); + query.setParameter("label", label); + query.setParameter("org", org); + try { + return query.getSingleResult(); + } + catch (NoResultException e) { + return null; + } + catch (Exception e) { + throw new RuntimeException("Error retrieving ChannelFamily", e); + } } /** @@ -207,23 +216,6 @@ public static void save(PublicChannelFamily pcf) { singleton.saveObject(pcf); } - /** - * Lookup the List of ChannelFamily objects that are labled starting - * with the passed in label param - * @param label to query against - * @param orgIn owning the Channel. Pass in NULL if you want a NULL org channel - * @return List of Channel objects - */ - @SuppressWarnings("unchecked") - public static List lookupByLabelLike(String label, Org orgIn) { - Session session = getSession(); - Criteria c = session.createCriteria(ChannelFamily.class); - c.add(Restrictions.like("label", label + "%")); - c.add(Restrictions.or(Restrictions.eq("org", orgIn), - Restrictions.isNull("org"))); - return c.list(); - } - /** * Return the name for a given channel family label. * @param label channel family label @@ -243,8 +235,9 @@ public static String getNameByLabel(String label) { */ @SuppressWarnings("unchecked") public static List getAllChannelFamilies() { - Session session = getSession(); - Criteria c = session.createCriteria(ChannelFamily.class); - return c.list(); + String sql = "SELECT * FROM rhnChannelFamily"; + TypedQuery query = + getSession().createNativeQuery(sql, ChannelFamily.class); + return query.getResultList(); } } diff --git a/java/code/src/com/redhat/rhn/domain/channel/ChannelSyncFlag.java b/java/code/src/com/redhat/rhn/domain/channel/ChannelSyncFlag.java index 0c29da4a47de..1bb2d664b186 100644 --- a/java/code/src/com/redhat/rhn/domain/channel/ChannelSyncFlag.java +++ b/java/code/src/com/redhat/rhn/domain/channel/ChannelSyncFlag.java @@ -16,13 +16,13 @@ import java.io.Serializable; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.MapsId; -import javax.persistence.OneToOne; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.MapsId; +import jakarta.persistence.OneToOne; +import jakarta.persistence.Table; @Entity @Table(name = "rhnChannelSyncFlag") diff --git a/java/code/src/com/redhat/rhn/domain/channel/test/ChannelFamilyFactoryTest.java b/java/code/src/com/redhat/rhn/domain/channel/test/ChannelFamilyFactoryTest.java index d632cee7d340..116916efcdf2 100644 --- a/java/code/src/com/redhat/rhn/domain/channel/test/ChannelFamilyFactoryTest.java +++ b/java/code/src/com/redhat/rhn/domain/channel/test/ChannelFamilyFactoryTest.java @@ -31,8 +31,6 @@ import org.junit.jupiter.api.Test; -import java.util.List; - /** * ChannelFamilyFactoryTest */ @@ -64,16 +62,6 @@ public void testLookupByLabel() throws Exception { assertEquals(cfam.getId(), cfam2.getId()); } - @Test - public void testLookupByLabelLike() throws Exception { - ChannelFamily cfam = createTestChannelFamily(); - List cfams = ChannelFamilyFactory.lookupByLabelLike(cfam.getLabel(), - cfam.getOrg()); - ChannelFamily cfam2 = (ChannelFamily) cfams.get(0); - assertEquals(cfam.getId(), cfam2.getId()); - } - - @Test public void testVerifyOrgFamily() { User user = UserTestUtils.findNewUser("testUser", diff --git a/java/code/src/com/redhat/rhn/domain/cloudpayg/CloudRmtHost.java b/java/code/src/com/redhat/rhn/domain/cloudpayg/CloudRmtHost.java index 86f58b5f5938..be812da6de23 100644 --- a/java/code/src/com/redhat/rhn/domain/cloudpayg/CloudRmtHost.java +++ b/java/code/src/com/redhat/rhn/domain/cloudpayg/CloudRmtHost.java @@ -19,17 +19,17 @@ import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.NamedQuery; -import javax.persistence.OneToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.NamedQuery; +import jakarta.persistence.OneToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; @Entity @Table(name = "suseCloudRmtHost") diff --git a/java/code/src/com/redhat/rhn/domain/cloudpayg/CloudRmtHostFactory.java b/java/code/src/com/redhat/rhn/domain/cloudpayg/CloudRmtHostFactory.java index 250dabb89938..e2da48097ecd 100644 --- a/java/code/src/com/redhat/rhn/domain/cloudpayg/CloudRmtHostFactory.java +++ b/java/code/src/com/redhat/rhn/domain/cloudpayg/CloudRmtHostFactory.java @@ -24,9 +24,9 @@ import java.util.List; import java.util.Optional; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Root; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Root; public class CloudRmtHostFactory extends HibernateFactory { diff --git a/java/code/src/com/redhat/rhn/domain/cloudpayg/PaygCredentialsProduct.java b/java/code/src/com/redhat/rhn/domain/cloudpayg/PaygCredentialsProduct.java index 17f0aa330872..144670d90b99 100644 --- a/java/code/src/com/redhat/rhn/domain/cloudpayg/PaygCredentialsProduct.java +++ b/java/code/src/com/redhat/rhn/domain/cloudpayg/PaygCredentialsProduct.java @@ -22,14 +22,14 @@ import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.NamedQuery; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.NamedQuery; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; @Entity @Table(name = "susePaygProduct") diff --git a/java/code/src/com/redhat/rhn/domain/cloudpayg/PaygSshData.java b/java/code/src/com/redhat/rhn/domain/cloudpayg/PaygSshData.java index 00ac6075e184..4567e96d0c5d 100644 --- a/java/code/src/com/redhat/rhn/domain/cloudpayg/PaygSshData.java +++ b/java/code/src/com/redhat/rhn/domain/cloudpayg/PaygSshData.java @@ -21,19 +21,19 @@ import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.OneToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Transient; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.OneToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; @Entity @Table(name = "susePaygSshData") diff --git a/java/code/src/com/redhat/rhn/domain/cloudpayg/PaygSshDataFactory.java b/java/code/src/com/redhat/rhn/domain/cloudpayg/PaygSshDataFactory.java index 6a86f040d74e..813d69cc647a 100644 --- a/java/code/src/com/redhat/rhn/domain/cloudpayg/PaygSshDataFactory.java +++ b/java/code/src/com/redhat/rhn/domain/cloudpayg/PaygSshDataFactory.java @@ -27,9 +27,9 @@ import java.util.List; import java.util.Optional; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Root; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Root; public class PaygSshDataFactory extends HibernateFactory { diff --git a/java/code/src/com/redhat/rhn/domain/common/CommonFactory.java b/java/code/src/com/redhat/rhn/domain/common/CommonFactory.java index bb26abb21209..245db969e633 100644 --- a/java/code/src/com/redhat/rhn/domain/common/CommonFactory.java +++ b/java/code/src/com/redhat/rhn/domain/common/CommonFactory.java @@ -88,8 +88,8 @@ public static FileList lookupFileList(Long idIn, Org org) { //look for Kickstart data by id session = HibernateFactory.getSession(); return (FileList) session.getNamedQuery("FileList.findByIdAndOrg") - .setLong("id", idIn) - .setLong("org_id", org.getId()) + .setParameter("id", idIn) + .setParameter("org_id", org.getId()) .uniqueResult(); } @@ -103,8 +103,8 @@ public static FileList lookupFileList(String labelIn, Org org) { Session session = null; //look for Kickstart data by label session = HibernateFactory.getSession(); - return (FileList) session.getNamedQuery("FileList.findByLabelAndOrg").setString("label", labelIn) - .setLong("org_id", org.getId()).uniqueResult(); + return (FileList) session.getNamedQuery("FileList.findByLabelAndOrg").setParameter("label", labelIn) + .setParameter("org_id", org.getId()).uniqueResult(); } /** @@ -150,7 +150,6 @@ public static void saveTinyUrl(TinyUrl urlIn) { public static TinyUrl lookupTinyUrl(String tokenIn) { Session session = HibernateFactory.getSession(); return (TinyUrl) session.getNamedQuery("TinyUrl.findByToken") - .setString("token", tokenIn) - .uniqueResult(); + .setParameter("token", tokenIn).uniqueResult(); } } diff --git a/java/code/src/com/redhat/rhn/domain/common/ExceptionMessage.java b/java/code/src/com/redhat/rhn/domain/common/ExceptionMessage.java index adb14c9038f9..fd05ba54895f 100644 --- a/java/code/src/com/redhat/rhn/domain/common/ExceptionMessage.java +++ b/java/code/src/com/redhat/rhn/domain/common/ExceptionMessage.java @@ -18,10 +18,9 @@ import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; -import org.hibernate.Criteria; -import org.hibernate.Session; -import org.hibernate.criterion.Restrictions; +import jakarta.persistence.NoResultException; +import jakarta.persistence.TypedQuery; /** * RhnException @@ -43,12 +42,21 @@ protected ExceptionMessage() { * @return the associated exception object / null if not found otherwise */ public static ExceptionMessage lookup(long exceptionId) { - Session session = HibernateFactory.getSession(); - Criteria criteria = session.createCriteria(ExceptionMessage.class); - criteria.add(Restrictions.or( - Restrictions.eq("id", -1 * exceptionId), - Restrictions.eq("id", exceptionId))); - return (ExceptionMessage) criteria.uniqueResult(); + String sql = "SELECT * FROM exception_message WHERE id = :id OR id = :negId"; + + TypedQuery query = HibernateFactory.getSession() + .createNativeQuery(sql, ExceptionMessage.class); + query.setParameter("id", exceptionId); + query.setParameter("negId", -1 * exceptionId); + try { + return query.getSingleResult(); + } + catch (NoResultException e) { + return null; + } + catch (Exception e) { + throw new RuntimeException("Error retrieving ExceptionMessage", e); + } } /** diff --git a/java/code/src/com/redhat/rhn/domain/config/ConfigurationFactory.java b/java/code/src/com/redhat/rhn/domain/config/ConfigurationFactory.java index 972987cee09a..90794c8a9929 100644 --- a/java/code/src/com/redhat/rhn/domain/config/ConfigurationFactory.java +++ b/java/code/src/com/redhat/rhn/domain/config/ConfigurationFactory.java @@ -34,7 +34,6 @@ import org.apache.logging.log4j.Logger; import org.hibernate.ObjectNotFoundException; import org.hibernate.Session; -import org.hibernate.criterion.Restrictions; import org.hibernate.query.Query; import java.io.IOException; @@ -46,9 +45,11 @@ import java.util.Map; import java.util.Optional; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Root; +import jakarta.persistence.NoResultException; +import jakarta.persistence.TypedQuery; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Root; /** * ConfigurationFactory. For use when dealing with ConfigChannel, ConfigChannelType, @@ -380,15 +381,28 @@ public static ConfigChannel lookupConfigChannelById(Long id) { * @param cct the config channel type of the config channel. * @return the ConfigChannel found or null if not found. */ - public static ConfigChannel lookupConfigChannelByLabel(String label, - Org org, - ConfigChannelType cct) { - Session session = HibernateFactory.getSession(); - return (ConfigChannel) session.createCriteria(ConfigChannel.class). - add(Restrictions.eq("org", org)). - add(Restrictions.eq("label", label)). - add(Restrictions.eq("configChannelType", cct)). - uniqueResult(); + public static ConfigChannel lookupConfigChannelByLabel(String label, Org org, + ConfigChannelType cct) { + String sql + = "SELECT * FROM rhnserverconfigchannel WHERE org = :org" + + "AND label = :label AND config_channel_type = :cct"; + + TypedQuery query + = getSession().createNativeQuery(sql, ConfigChannel.class); + + query.setParameter("org", org); + query.setParameter("label", label); + query.setParameter("cct", cct); + + try { + return query.getSingleResult(); + } + catch (NoResultException e) { + return null; + } + catch (Exception e) { + throw new RuntimeException("Error retrieving ConfigChannel", e); + } } /** @@ -431,9 +445,9 @@ public static ConfigFile lookupConfigFileByChannelAndName(Long channel, Long nam Session session = HibernateFactory.getSession(); Query query = session.getNamedQuery("ConfigFile.findByChannelAndName") - .setLong("channel_id", channel) - .setLong("name_id", name) - .setLong("state_id", ConfigFileState.normal(). + .setParameter("channel_id", channel) + .setParameter("name_id", name) + .setParameter("state_id", ConfigFileState.normal(). getId()); try { return query.uniqueResult(); @@ -464,7 +478,7 @@ public static ConfigRevision lookupConfigRevisionById(Long id) { public static ConfigRevision lookupConfigRevisionByRevId(ConfigFile cf, Long revId) { Session session = HibernateFactory.getSession(); Query q = session.getNamedQuery("ConfigRevision.findByRevisionAndConfigFile"); - q.setLong("rev", revId); + q.setParameter("rev", revId); q.setParameter("cf", cf); return q.uniqueResult(); } @@ -515,7 +529,7 @@ static ConfigChannelType lookupConfigChannelTypeByLabel(String label) { Session session = HibernateFactory.getSession(); return (ConfigChannelType) session.getNamedQuery("ConfigChannelType.findByLabel") - .setString("label", label) + .setParameter("label", label) //Retrieve from cache if there .setCacheable(true) .uniqueResult(); @@ -532,7 +546,7 @@ static ConfigChannelType lookupConfigChannelTypeByLabel(String label) { static ConfigFileState lookupConfigFileStateByLabel(String label) { Session session = HibernateFactory.getSession(); return (ConfigFileState)session.getNamedQuery("ConfigFileState.findByLabel") - .setString("label", label) + .setParameter("label", label) //Retrieve from cache if there .setCacheable(true) .uniqueResult(); @@ -546,7 +560,7 @@ static ConfigFileState lookupConfigFileStateByLabel(String label) { static ConfigFileType lookupConfigFileTypeByLabel(String label) { Session session = HibernateFactory.getSession(); return (ConfigFileType)session.getNamedQuery("ConfigFileType.findByLabel") - .setString("label", label) + .setParameter("label", label) //Retrieve from cache if there .setCacheable(true) .uniqueResult(); diff --git a/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentEnvironment.java b/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentEnvironment.java index cabb6e4b32c9..4b35c310cc9b 100644 --- a/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentEnvironment.java +++ b/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentEnvironment.java @@ -34,20 +34,20 @@ import java.util.Set; import java.util.stream.Collectors; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.OneToMany; -import javax.persistence.OneToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Transient; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; +import jakarta.persistence.OneToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; /** * A Content Environment diff --git a/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentFilter.java b/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentFilter.java index 18cad05b5f9f..2dd18beafd12 100644 --- a/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentFilter.java +++ b/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentFilter.java @@ -23,21 +23,21 @@ import java.util.function.Predicate; -import javax.persistence.Column; -import javax.persistence.DiscriminatorColumn; -import javax.persistence.Embedded; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Transient; +import jakarta.persistence.Column; +import jakarta.persistence.DiscriminatorColumn; +import jakarta.persistence.Embedded; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Inheritance; +import jakarta.persistence.InheritanceType; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; /** * Content Filter diff --git a/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentProject.java b/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentProject.java index 0ef4ee0c3c66..147759bac92f 100644 --- a/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentProject.java +++ b/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentProject.java @@ -32,21 +32,21 @@ import java.util.Optional; import java.util.stream.Collectors; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.OneToMany; -import javax.persistence.OneToOne; -import javax.persistence.OrderBy; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Transient; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; +import jakarta.persistence.OneToOne; +import jakarta.persistence.OrderBy; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; /** * A Content Project diff --git a/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentProjectFactory.java b/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentProjectFactory.java index 9db748b8940a..5dc5c7f07499 100644 --- a/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentProjectFactory.java +++ b/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentProjectFactory.java @@ -38,10 +38,10 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Predicate; -import javax.persistence.criteria.Root; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Predicate; +import jakarta.persistence.criteria.Root; /** * HibernateFactory for the {@link com.redhat.rhn.domain.contentmgmt.ContentProject} class and related classes. diff --git a/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentProjectFilter.java b/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentProjectFilter.java index 1cc62b51321e..70fceb4f5f59 100644 --- a/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentProjectFilter.java +++ b/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentProjectFilter.java @@ -18,16 +18,16 @@ import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; /** * Link between {@link ContentProject} and {@link ContentFilter} diff --git a/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentProjectHistoryEntry.java b/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentProjectHistoryEntry.java index e03732a85409..19c23acf4af6 100644 --- a/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentProjectHistoryEntry.java +++ b/java/code/src/com/redhat/rhn/domain/contentmgmt/ContentProjectHistoryEntry.java @@ -23,17 +23,17 @@ import java.util.Date; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.NamedQueries; +import jakarta.persistence.NamedQuery; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; /** * Content Project History entry @@ -141,7 +141,7 @@ public void setVersion(Long versionIn) { * * @return created */ - @Column(nullable = false, updatable = false) + @Column(nullable = false) @CreationTimestamp public Date getCreated() { return created; diff --git a/java/code/src/com/redhat/rhn/domain/contentmgmt/EnvironmentTarget.java b/java/code/src/com/redhat/rhn/domain/contentmgmt/EnvironmentTarget.java index 2a1c1ee780ad..58801d612e29 100644 --- a/java/code/src/com/redhat/rhn/domain/contentmgmt/EnvironmentTarget.java +++ b/java/code/src/com/redhat/rhn/domain/contentmgmt/EnvironmentTarget.java @@ -20,21 +20,21 @@ import java.util.Date; import java.util.Optional; -import javax.persistence.Column; -import javax.persistence.DiscriminatorColumn; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.DiscriminatorColumn; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Inheritance; +import jakarta.persistence.InheritanceType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; /** * Content Environment Target diff --git a/java/code/src/com/redhat/rhn/domain/contentmgmt/ErrataFilter.java b/java/code/src/com/redhat/rhn/domain/contentmgmt/ErrataFilter.java index 065b99054796..41072fb2c552 100644 --- a/java/code/src/com/redhat/rhn/domain/contentmgmt/ErrataFilter.java +++ b/java/code/src/com/redhat/rhn/domain/contentmgmt/ErrataFilter.java @@ -27,9 +27,9 @@ import java.util.regex.Pattern; import java.util.stream.Stream; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.Transient; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.Transient; /** * Errata Filter diff --git a/java/code/src/com/redhat/rhn/domain/contentmgmt/FilterCriteria.java b/java/code/src/com/redhat/rhn/domain/contentmgmt/FilterCriteria.java index fe8e84b0b96f..b1ad48f9ad06 100644 --- a/java/code/src/com/redhat/rhn/domain/contentmgmt/FilterCriteria.java +++ b/java/code/src/com/redhat/rhn/domain/contentmgmt/FilterCriteria.java @@ -53,10 +53,10 @@ import java.util.Map; import java.util.Set; -import javax.persistence.Column; -import javax.persistence.Embeddable; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; /** diff --git a/java/code/src/com/redhat/rhn/domain/contentmgmt/ModuleFilter.java b/java/code/src/com/redhat/rhn/domain/contentmgmt/ModuleFilter.java index 0e09b9be7159..84793400a36c 100644 --- a/java/code/src/com/redhat/rhn/domain/contentmgmt/ModuleFilter.java +++ b/java/code/src/com/redhat/rhn/domain/contentmgmt/ModuleFilter.java @@ -17,9 +17,9 @@ import com.redhat.rhn.domain.contentmgmt.modulemd.Module; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.Transient; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.Transient; /** * This filter must be applied on {@link Module} objects. In order to apply the filtering on diff --git a/java/code/src/com/redhat/rhn/domain/contentmgmt/PackageFilter.java b/java/code/src/com/redhat/rhn/domain/contentmgmt/PackageFilter.java index c6a0f832ebc0..d69a93eac9b5 100644 --- a/java/code/src/com/redhat/rhn/domain/contentmgmt/PackageFilter.java +++ b/java/code/src/com/redhat/rhn/domain/contentmgmt/PackageFilter.java @@ -23,9 +23,9 @@ import java.time.format.DateTimeFormatter; import java.util.regex.Pattern; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.Transient; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.Transient; /** * Package Filter diff --git a/java/code/src/com/redhat/rhn/domain/contentmgmt/ProjectSource.java b/java/code/src/com/redhat/rhn/domain/contentmgmt/ProjectSource.java index 11e1a930605e..a94a4f6eeba9 100644 --- a/java/code/src/com/redhat/rhn/domain/contentmgmt/ProjectSource.java +++ b/java/code/src/com/redhat/rhn/domain/contentmgmt/ProjectSource.java @@ -19,21 +19,21 @@ import java.util.Optional; -import javax.persistence.Column; -import javax.persistence.DiscriminatorColumn; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.DiscriminatorColumn; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Inheritance; +import jakarta.persistence.InheritanceType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; /** * Content Project Source base class diff --git a/java/code/src/com/redhat/rhn/domain/contentmgmt/PtfFilter.java b/java/code/src/com/redhat/rhn/domain/contentmgmt/PtfFilter.java index 30920650932d..e3a82bb4561f 100644 --- a/java/code/src/com/redhat/rhn/domain/contentmgmt/PtfFilter.java +++ b/java/code/src/com/redhat/rhn/domain/contentmgmt/PtfFilter.java @@ -25,9 +25,9 @@ import java.util.Set; import java.util.function.Predicate; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.Transient; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.Transient; @Entity @DiscriminatorValue("ptf") diff --git a/java/code/src/com/redhat/rhn/domain/contentmgmt/SoftwareEnvironmentTarget.java b/java/code/src/com/redhat/rhn/domain/contentmgmt/SoftwareEnvironmentTarget.java index fa0c86c53f0e..728086903ab3 100644 --- a/java/code/src/com/redhat/rhn/domain/contentmgmt/SoftwareEnvironmentTarget.java +++ b/java/code/src/com/redhat/rhn/domain/contentmgmt/SoftwareEnvironmentTarget.java @@ -24,9 +24,9 @@ import java.util.Optional; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.OneToOne; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.OneToOne; /** * Content Environment Target targeting software Channel diff --git a/java/code/src/com/redhat/rhn/domain/contentmgmt/SoftwareProjectSource.java b/java/code/src/com/redhat/rhn/domain/contentmgmt/SoftwareProjectSource.java index dbd484e1a245..01c90efba49f 100644 --- a/java/code/src/com/redhat/rhn/domain/contentmgmt/SoftwareProjectSource.java +++ b/java/code/src/com/redhat/rhn/domain/contentmgmt/SoftwareProjectSource.java @@ -24,10 +24,10 @@ import java.util.Optional; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.JoinColumn; -import javax.persistence.OneToOne; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToOne; /** * Software Project Source diff --git a/java/code/src/com/redhat/rhn/domain/credentials/BaseCredentials.java b/java/code/src/com/redhat/rhn/domain/credentials/BaseCredentials.java index fc0a9eca69be..85cafa90bd38 100644 --- a/java/code/src/com/redhat/rhn/domain/credentials/BaseCredentials.java +++ b/java/code/src/com/redhat/rhn/domain/credentials/BaseCredentials.java @@ -22,21 +22,21 @@ import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; -import javax.persistence.Column; -import javax.persistence.DiscriminatorColumn; -import javax.persistence.DiscriminatorType; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.NamedNativeQuery; -import javax.persistence.NamedQuery; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.DiscriminatorColumn; +import jakarta.persistence.DiscriminatorType; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Inheritance; +import jakarta.persistence.InheritanceType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.NamedNativeQuery; +import jakarta.persistence.NamedQuery; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; /** * Credentials - Java representation of the table SUSECREDENTIALS. diff --git a/java/code/src/com/redhat/rhn/domain/credentials/CloudRMTCredentials.java b/java/code/src/com/redhat/rhn/domain/credentials/CloudRMTCredentials.java index a8551da75834..28be11d5371f 100644 --- a/java/code/src/com/redhat/rhn/domain/credentials/CloudRMTCredentials.java +++ b/java/code/src/com/redhat/rhn/domain/credentials/CloudRMTCredentials.java @@ -24,10 +24,10 @@ import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; -import javax.persistence.Column; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.Transient; +import jakarta.persistence.Column; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.Transient; @Entity @DiscriminatorValue(CredentialsType.Label.CLOUD_RMT) diff --git a/java/code/src/com/redhat/rhn/domain/credentials/CredentialsFactory.java b/java/code/src/com/redhat/rhn/domain/credentials/CredentialsFactory.java index 4cb68c58ad3b..822abf9aa120 100644 --- a/java/code/src/com/redhat/rhn/domain/credentials/CredentialsFactory.java +++ b/java/code/src/com/redhat/rhn/domain/credentials/CredentialsFactory.java @@ -25,8 +25,8 @@ import java.util.Optional; import java.util.stream.Collectors; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; /** * CredentialsFactory diff --git a/java/code/src/com/redhat/rhn/domain/credentials/PasswordBasedCredentials.java b/java/code/src/com/redhat/rhn/domain/credentials/PasswordBasedCredentials.java index 7ee64abb1be8..a9da5c5709de 100644 --- a/java/code/src/com/redhat/rhn/domain/credentials/PasswordBasedCredentials.java +++ b/java/code/src/com/redhat/rhn/domain/credentials/PasswordBasedCredentials.java @@ -19,9 +19,9 @@ import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; -import javax.persistence.Column; -import javax.persistence.MappedSuperclass; -import javax.persistence.Transient; +import jakarta.persistence.Column; +import jakarta.persistence.MappedSuperclass; +import jakarta.persistence.Transient; @MappedSuperclass public abstract class PasswordBasedCredentials extends BaseCredentials { diff --git a/java/code/src/com/redhat/rhn/domain/credentials/RHUICredentials.java b/java/code/src/com/redhat/rhn/domain/credentials/RHUICredentials.java index 519eb83a3c71..85575d30833a 100644 --- a/java/code/src/com/redhat/rhn/domain/credentials/RHUICredentials.java +++ b/java/code/src/com/redhat/rhn/domain/credentials/RHUICredentials.java @@ -22,10 +22,10 @@ import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; -import javax.persistence.Column; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.Transient; +import jakarta.persistence.Column; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.Transient; @Entity @DiscriminatorValue(CredentialsType.Label.RHUI) diff --git a/java/code/src/com/redhat/rhn/domain/credentials/RegistryCredentials.java b/java/code/src/com/redhat/rhn/domain/credentials/RegistryCredentials.java index d53dc2f7357b..99349da3beea 100644 --- a/java/code/src/com/redhat/rhn/domain/credentials/RegistryCredentials.java +++ b/java/code/src/com/redhat/rhn/domain/credentials/RegistryCredentials.java @@ -18,9 +18,9 @@ import org.apache.commons.lang3.builder.ToStringBuilder; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.Transient; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.Transient; @Entity @DiscriminatorValue(CredentialsType.Label.REGISTRY) diff --git a/java/code/src/com/redhat/rhn/domain/credentials/RemoteCredentials.java b/java/code/src/com/redhat/rhn/domain/credentials/RemoteCredentials.java index 2fa505b0ac09..eab775f4f9f5 100644 --- a/java/code/src/com/redhat/rhn/domain/credentials/RemoteCredentials.java +++ b/java/code/src/com/redhat/rhn/domain/credentials/RemoteCredentials.java @@ -18,8 +18,8 @@ import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; -import javax.persistence.Column; -import javax.persistence.MappedSuperclass; +import jakarta.persistence.Column; +import jakarta.persistence.MappedSuperclass; /** * Base class for all the credentials that can be used by {@link com.redhat.rhn.manager.content.ContentSyncManager} diff --git a/java/code/src/com/redhat/rhn/domain/credentials/ReportDBCredentials.java b/java/code/src/com/redhat/rhn/domain/credentials/ReportDBCredentials.java index f7a351d654f9..7d9a7c2e6577 100644 --- a/java/code/src/com/redhat/rhn/domain/credentials/ReportDBCredentials.java +++ b/java/code/src/com/redhat/rhn/domain/credentials/ReportDBCredentials.java @@ -17,9 +17,9 @@ import org.apache.commons.lang3.builder.ToStringBuilder; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.Transient; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.Transient; @Entity @DiscriminatorValue(CredentialsType.Label.REPORT_DATABASE) diff --git a/java/code/src/com/redhat/rhn/domain/credentials/SCCCredentials.java b/java/code/src/com/redhat/rhn/domain/credentials/SCCCredentials.java index fddf8e800c65..309eff446d06 100644 --- a/java/code/src/com/redhat/rhn/domain/credentials/SCCCredentials.java +++ b/java/code/src/com/redhat/rhn/domain/credentials/SCCCredentials.java @@ -17,9 +17,9 @@ import org.apache.commons.lang3.builder.ToStringBuilder; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.Transient; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.Transient; @Entity @DiscriminatorValue(CredentialsType.Label.SCC) diff --git a/java/code/src/com/redhat/rhn/domain/credentials/VHMCredentials.java b/java/code/src/com/redhat/rhn/domain/credentials/VHMCredentials.java index 1aad04d3dc97..a731ff5c0ddc 100644 --- a/java/code/src/com/redhat/rhn/domain/credentials/VHMCredentials.java +++ b/java/code/src/com/redhat/rhn/domain/credentials/VHMCredentials.java @@ -17,9 +17,9 @@ import org.apache.commons.lang3.builder.ToStringBuilder; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.Transient; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.Transient; @Entity @DiscriminatorValue(CredentialsType.Label.VIRT_HOST_MANAGER) diff --git a/java/code/src/com/redhat/rhn/domain/credentials/test/CredentialsTest.java b/java/code/src/com/redhat/rhn/domain/credentials/test/CredentialsTest.java index ad456b1eac28..34feb68b9482 100644 --- a/java/code/src/com/redhat/rhn/domain/credentials/test/CredentialsTest.java +++ b/java/code/src/com/redhat/rhn/domain/credentials/test/CredentialsTest.java @@ -50,7 +50,8 @@ public void testSCCCredentials() throws Exception { assertEquals("secret", creds.getPassword()); Optional r = HibernateFactory.getSession() - .createSQLQuery("select password from suseCredentials where username = 'admin';") + .createNativeQuery( + "select password from suseCredentials where username = 'admin';") .uniqueResultOptional(); // this prove that we really store encoded content in DB assertEquals("c2VjcmV0", r.orElseThrow().toString()); diff --git a/java/code/src/com/redhat/rhn/domain/errata/AdvisoryStatusEnumType.java b/java/code/src/com/redhat/rhn/domain/errata/AdvisoryStatusEnumType.java index b09e4106829b..e7359f78abf3 100644 --- a/java/code/src/com/redhat/rhn/domain/errata/AdvisoryStatusEnumType.java +++ b/java/code/src/com/redhat/rhn/domain/errata/AdvisoryStatusEnumType.java @@ -14,6 +14,12 @@ */ package com.redhat.rhn.domain.errata; +import org.hibernate.engine.spi.SharedSessionContractImplementor; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + /** * AdvisoryStatusEnumType */ @@ -25,4 +31,18 @@ public AdvisoryStatusEnumType() { super(AdvisoryStatus.class, String.class, AdvisoryStatus::getMetadataValue, s -> AdvisoryStatus.fromMetadata(s).orElse(null)); } + + @Override + public String nullSafeGet(ResultSet var1, int var2, + SharedSessionContractImplementor var3, @Deprecated Object var4) + throws SQLException { + // TODO Hibernate 6 + return null; + }; + + @Override + public void nullSafeSet(PreparedStatement var1, Object var2, int var3, + SharedSessionContractImplementor var4) + throws SQLException { + }; } diff --git a/java/code/src/com/redhat/rhn/domain/errata/CustomEnumType.java b/java/code/src/com/redhat/rhn/domain/errata/CustomEnumType.java index 545ec2bc22a8..c7e4dc4fe6a4 100644 --- a/java/code/src/com/redhat/rhn/domain/errata/CustomEnumType.java +++ b/java/code/src/com/redhat/rhn/domain/errata/CustomEnumType.java @@ -71,11 +71,6 @@ public int getSqlType() { return Types.NUMERIC; } - @Override - public int[] sqlTypes() { - return new int[]{getSqlType()}; - } - @Override public Class returnedClass() { return enumClass; @@ -92,28 +87,16 @@ public int hashCode(Object o) throws HibernateException { } @Override - public Object nullSafeGet(ResultSet resultSet, String[] names, SharedSessionContractImplementor session, Object o) - throws HibernateException, SQLException { - String name = names[0]; - K value = resultSet.getObject(name, typeClass); - if (resultSet.wasNull()) { - return null; - } - else { - return fromDb.apply(value); - } + public K nullSafeGet(ResultSet var1, int var2, SharedSessionContractImplementor var3, + @Deprecated Object var4) + throws SQLException { + return null; } @Override - public void nullSafeSet(PreparedStatement statement, Object value, int position, - SharedSessionContractImplementor session) throws HibernateException, SQLException { - K jdbcValue = value == null ? null : toDb.apply(enumClass.cast(value)); - if (jdbcValue == null) { - statement.setNull(position, 12); - } - else { - statement.setObject(position, jdbcValue, getSqlType()); - } + public void nullSafeSet(PreparedStatement var1, Object var2, int var3, + SharedSessionContractImplementor var4) + throws SQLException { } @Override diff --git a/java/code/src/com/redhat/rhn/domain/errata/ErrataFactory.java b/java/code/src/com/redhat/rhn/domain/errata/ErrataFactory.java index 16bc8cdbb290..019a1e9bed0f 100644 --- a/java/code/src/com/redhat/rhn/domain/errata/ErrataFactory.java +++ b/java/code/src/com/redhat/rhn/domain/errata/ErrataFactory.java @@ -397,7 +397,7 @@ public static ErrataFileType lookupErrataFileType(String label) { ErrataFileType retval; try { retval = (ErrataFileType) getSession().getNamedQuery("ErrataFileType.findByLabel") - .setString("label", label).setCacheable(true).uniqueResult(); + .setParameter("label", label).setCacheable(true).uniqueResult(); } catch (HibernateException e) { throw new HibernateRuntimeException(e.getMessage(), e); @@ -415,8 +415,8 @@ public static List lookupErrataFilesByErrataAndFileType(Long errataI List retval; try { Query q = getSession().getNamedQuery("ErrataFile.listByErrataAndFileType"); - q.setLong("errata_id", errataId); - q.setString("file_type", fileType.toUpperCase()); + q.setParameter("errata_id", errataId); + q.setParameter("file_type", fileType.toUpperCase()); retval = q.list(); } catch (HibernateException e) { @@ -447,7 +447,7 @@ public static List lookupErratasByAdvisoryType(String advisoryType) { List retval; try { retval = getSession().getNamedQuery("Errata.findByAdvisoryType") - .setString("type", advisoryType) + .setParameter("type", advisoryType) //Retrieve from cache if there .setCacheable(true).list(); } @@ -467,7 +467,7 @@ public static Errata lookupErrataById(Long id) { Errata retval; try { retval = (Errata) getSession().getNamedQuery("Errata.findById") - .setLong("id", id).uniqueResult(); + .setParameter("id", id).uniqueResult(); } catch (HibernateException he) { log.error("Error loading ActionArchTypes from DB", he); diff --git a/java/code/src/com/redhat/rhn/domain/image/DeltaImageInfo.java b/java/code/src/com/redhat/rhn/domain/image/DeltaImageInfo.java index 9f4074363d56..8a2e99d47d7e 100644 --- a/java/code/src/com/redhat/rhn/domain/image/DeltaImageInfo.java +++ b/java/code/src/com/redhat/rhn/domain/image/DeltaImageInfo.java @@ -18,13 +18,13 @@ import com.redhat.rhn.domain.BaseDomainHelper; import com.redhat.rhn.domain.server.Pillar; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.IdClass; -import javax.persistence.JoinColumn; -import javax.persistence.OneToOne; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.IdClass; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToOne; +import jakarta.persistence.Table; /** * DeltaImageInfo diff --git a/java/code/src/com/redhat/rhn/domain/image/DockerfileProfile.java b/java/code/src/com/redhat/rhn/domain/image/DockerfileProfile.java index 8eb87499b410..2316883d09f7 100644 --- a/java/code/src/com/redhat/rhn/domain/image/DockerfileProfile.java +++ b/java/code/src/com/redhat/rhn/domain/image/DockerfileProfile.java @@ -19,10 +19,10 @@ import java.util.Optional; -import javax.persistence.Column; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; /** * Domain class for Dockerfile image profiles diff --git a/java/code/src/com/redhat/rhn/domain/image/ImageFile.java b/java/code/src/com/redhat/rhn/domain/image/ImageFile.java index 633d77a9e6fc..1917f950f709 100644 --- a/java/code/src/com/redhat/rhn/domain/image/ImageFile.java +++ b/java/code/src/com/redhat/rhn/domain/image/ImageFile.java @@ -20,17 +20,17 @@ import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; -import org.hibernate.annotations.Type; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; + +import jakarta.persistence.Column; +import jakarta.persistence.Convert; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; /** * ImageFile @@ -117,7 +117,7 @@ public void setType(String typeIn) { * @return true if the file is not managed */ @Column(name = "external") - @Type(type = "yes_no") + @Convert(converter = org.hibernate.type.YesNoConverter.class) public boolean isExternal() { return external; } diff --git a/java/code/src/com/redhat/rhn/domain/image/ImageInfo.java b/java/code/src/com/redhat/rhn/domain/image/ImageInfo.java index a3c21d2def0d..8b76050e3c3e 100644 --- a/java/code/src/com/redhat/rhn/domain/image/ImageInfo.java +++ b/java/code/src/com/redhat/rhn/domain/image/ImageInfo.java @@ -28,27 +28,27 @@ import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; -import org.hibernate.annotations.Type; import java.util.HashSet; import java.util.Set; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.JoinTable; -import javax.persistence.ManyToMany; -import javax.persistence.ManyToOne; -import javax.persistence.OneToMany; -import javax.persistence.OneToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Transient; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Convert; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.JoinTable; +import jakarta.persistence.ManyToMany; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; +import jakarta.persistence.OneToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; /** * ImageInfo @@ -255,7 +255,7 @@ public Set getInstalledProducts() { * @return true if the image has been built outside SUSE Manager */ @Column(name = "external_image") - @Type(type = "yes_no") + @Convert(converter = org.hibernate.type.YesNoConverter.class) public boolean isExternalImage() { return externalImage; } @@ -264,7 +264,7 @@ public boolean isExternalImage() { * @return true if the image is obsolete (has been replaced in the store) */ @Column(name = "obsolete") - @Type(type = "yes_no") + @Convert(converter = org.hibernate.type.YesNoConverter.class) public boolean isObsolete() { return obsolete; } @@ -273,7 +273,7 @@ public boolean isObsolete() { * @return true if the image has been successfully built */ @Column(name = "built") - @Type(type = "yes_no") + @Convert(converter = org.hibernate.type.YesNoConverter.class) public boolean isBuilt() { return built; } @@ -304,13 +304,13 @@ public Pillar getPillar() { } @OneToMany - @JoinColumn(name = "source_image_id", updatable = false) + @JoinColumn(name = "source_image_id") public Set getDeltaSourceFor() { return deltaSourceFor; } @OneToMany - @JoinColumn(name = "target_image_id", updatable = false) + @JoinColumn(name = "target_image_id") public Set getDeltaTargetFor() { return deltaTargetFor; } diff --git a/java/code/src/com/redhat/rhn/domain/image/ImageInfoCustomDataValue.java b/java/code/src/com/redhat/rhn/domain/image/ImageInfoCustomDataValue.java index 953f1d5a5e82..a2b6b8edf65f 100644 --- a/java/code/src/com/redhat/rhn/domain/image/ImageInfoCustomDataValue.java +++ b/java/code/src/com/redhat/rhn/domain/image/ImageInfoCustomDataValue.java @@ -24,16 +24,16 @@ import java.util.Date; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; /** * CustomDataValue @@ -124,14 +124,14 @@ public User getLastModifier() { /** * @return Returns the created. */ - @Column(insertable = false, updatable = false) + @Column public Date getCreated() { return created; } /** * @return Returns the modified. */ - @Column(insertable = false, updatable = false) + @Column public Date getModified() { return modified; } diff --git a/java/code/src/com/redhat/rhn/domain/image/ImageInfoFactory.java b/java/code/src/com/redhat/rhn/domain/image/ImageInfoFactory.java index a8592df06f90..ec2d154d26a2 100644 --- a/java/code/src/com/redhat/rhn/domain/image/ImageInfoFactory.java +++ b/java/code/src/com/redhat/rhn/domain/image/ImageInfoFactory.java @@ -50,9 +50,9 @@ import java.util.Optional; import java.util.Set; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Root; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Root; /** * Factory class for ImageInfo entity diff --git a/java/code/src/com/redhat/rhn/domain/image/ImageOverview.java b/java/code/src/com/redhat/rhn/domain/image/ImageOverview.java index cb7860f4d4de..c6e0c24aa511 100644 --- a/java/code/src/com/redhat/rhn/domain/image/ImageOverview.java +++ b/java/code/src/com/redhat/rhn/domain/image/ImageOverview.java @@ -27,23 +27,23 @@ import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import org.hibernate.annotations.Immutable; -import org.hibernate.annotations.Type; import java.util.Date; import java.util.Optional; import java.util.Set; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.JoinTable; -import javax.persistence.ManyToMany; -import javax.persistence.ManyToOne; -import javax.persistence.OneToMany; -import javax.persistence.Table; -import javax.persistence.Transient; +import jakarta.persistence.Column; +import jakarta.persistence.Convert; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.JoinTable; +import jakarta.persistence.ManyToMany; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; /** * View: suseImageOverview @@ -175,8 +175,7 @@ public Integer getCurrRevisionNum() { * @return the build action */ @ManyToOne - @JoinColumn(name = "build_action_id", referencedColumnName = "id", insertable = false, - updatable = false) + @JoinColumn(name = "build_action_id", referencedColumnName = "id") public Action getBuildAction() { return buildAction; } @@ -185,8 +184,7 @@ public Action getBuildAction() { * @return the inspect action */ @ManyToOne - @JoinColumn(name = "inspect_action_id", referencedColumnName = "id", insertable = false, - updatable = false) + @JoinColumn(name = "inspect_action_id", referencedColumnName = "id") public Action getInspectAction() { return inspectAction; } @@ -195,7 +193,7 @@ public Action getInspectAction() { * @return true if the image has been built outside SUSE Manager */ @Column(name = "external_image") - @Type(type = "yes_no") + @Convert(converter = org.hibernate.type.YesNoConverter.class) public boolean isExternalImage() { return externalImage; } @@ -204,7 +202,7 @@ public boolean isExternalImage() { * @return true if the image is obsolete (has been replaced in the store) */ @Column(name = "obsolete") - @Type(type = "yes_no") + @Convert(converter = org.hibernate.type.YesNoConverter.class) public boolean isObsolete() { return obsolete; } @@ -213,7 +211,7 @@ public boolean isObsolete() { * @return true if the image has been successfully built */ @Column(name = "built") - @Type(type = "yes_no") + @Convert(converter = org.hibernate.type.YesNoConverter.class) public boolean isBuilt() { return built; } @@ -221,7 +219,8 @@ public boolean isBuilt() { /** * @return the custom data values */ - @OneToMany(fetch = FetchType.LAZY, mappedBy = "imageInfo") + @OneToMany + @JoinColumn(name = "image_info_custom_data_value_id") public Set getCustomDataValues() { return customDataValues; } @@ -232,9 +231,9 @@ public Set getCustomDataValues() { @ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = "suseImageInfoChannel", joinColumns = { - @JoinColumn(name = "image_info_id", nullable = false, updatable = false)}, + @JoinColumn(name = "image_info_id", nullable = false)}, inverseJoinColumns = { - @JoinColumn(name = "channel_id", nullable = false, updatable = false)} + @JoinColumn(name = "channel_id", nullable = false)} ) public Set getChannels() { return channels; @@ -246,9 +245,9 @@ public Set getChannels() { @ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = "suseImageInfoInstalledProduct", joinColumns = { - @JoinColumn(name = "image_info_id", nullable = false, updatable = false)}, + @JoinColumn(name = "image_info_id", nullable = false)}, inverseJoinColumns = { - @JoinColumn(name = "installed_product_id", nullable = false, updatable = false) + @JoinColumn(name = "installed_product_id", nullable = false) }) public Set getInstalledProducts() { return installedProducts; @@ -257,7 +256,8 @@ public Set getInstalledProducts() { /** * @return the packages */ - @OneToMany(fetch = FetchType.LAZY, mappedBy = "imageInfo") + @OneToMany + @JoinColumn(name = "packages_id") public Set getPackages() { return packages; } @@ -277,7 +277,8 @@ public Set getPatches() { /** * @return the files */ - @OneToMany(fetch = FetchType.LAZY, mappedBy = "imageInfo") + @OneToMany + @JoinColumn(name = "image_info_id") public Set getImageFiles() { return imageFiles; } diff --git a/java/code/src/com/redhat/rhn/domain/image/ImagePackage.java b/java/code/src/com/redhat/rhn/domain/image/ImagePackage.java index d6b5cc0e6a03..0d3c51471b7f 100644 --- a/java/code/src/com/redhat/rhn/domain/image/ImagePackage.java +++ b/java/code/src/com/redhat/rhn/domain/image/ImagePackage.java @@ -25,13 +25,13 @@ import java.util.Date; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.IdClass; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.IdClass; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; /** * suseImageInfoPackage table class. diff --git a/java/code/src/com/redhat/rhn/domain/image/ImageProfile.java b/java/code/src/com/redhat/rhn/domain/image/ImageProfile.java index f916538bf72e..9ddc3996a174 100644 --- a/java/code/src/com/redhat/rhn/domain/image/ImageProfile.java +++ b/java/code/src/com/redhat/rhn/domain/image/ImageProfile.java @@ -24,22 +24,22 @@ import java.util.Optional; import java.util.Set; -import javax.persistence.Column; -import javax.persistence.DiscriminatorColumn; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.OneToMany; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Transient; +import jakarta.persistence.Column; +import jakarta.persistence.DiscriminatorColumn; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Inheritance; +import jakarta.persistence.InheritanceType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; /** * ImageProfile diff --git a/java/code/src/com/redhat/rhn/domain/image/ImageProfileFactory.java b/java/code/src/com/redhat/rhn/domain/image/ImageProfileFactory.java index f8c8d6637226..3064ca8f99b5 100644 --- a/java/code/src/com/redhat/rhn/domain/image/ImageProfileFactory.java +++ b/java/code/src/com/redhat/rhn/domain/image/ImageProfileFactory.java @@ -23,9 +23,9 @@ import java.util.List; import java.util.Optional; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Root; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Root; /** * Factory class for ImageProfile entity diff --git a/java/code/src/com/redhat/rhn/domain/image/ImageRepoDigest.java b/java/code/src/com/redhat/rhn/domain/image/ImageRepoDigest.java index 0479628d16a8..57f9028ac6ca 100644 --- a/java/code/src/com/redhat/rhn/domain/image/ImageRepoDigest.java +++ b/java/code/src/com/redhat/rhn/domain/image/ImageRepoDigest.java @@ -20,15 +20,15 @@ import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; /** * ImageRepoDigest diff --git a/java/code/src/com/redhat/rhn/domain/image/ImageStore.java b/java/code/src/com/redhat/rhn/domain/image/ImageStore.java index 6f9b302787b2..2144479a9f30 100644 --- a/java/code/src/com/redhat/rhn/domain/image/ImageStore.java +++ b/java/code/src/com/redhat/rhn/domain/image/ImageStore.java @@ -21,16 +21,16 @@ import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; /** * ImageStore diff --git a/java/code/src/com/redhat/rhn/domain/image/ImageStoreFactory.java b/java/code/src/com/redhat/rhn/domain/image/ImageStoreFactory.java index d810f29b694d..bfeb669bdb1b 100644 --- a/java/code/src/com/redhat/rhn/domain/image/ImageStoreFactory.java +++ b/java/code/src/com/redhat/rhn/domain/image/ImageStoreFactory.java @@ -27,10 +27,10 @@ import java.util.Map; import java.util.Optional; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Join; -import javax.persistence.criteria.Root; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Join; +import jakarta.persistence.criteria.Root; /** * ImageStoreFactory diff --git a/java/code/src/com/redhat/rhn/domain/image/ImageStoreType.java b/java/code/src/com/redhat/rhn/domain/image/ImageStoreType.java index 56a91656c4db..911036e01a4d 100644 --- a/java/code/src/com/redhat/rhn/domain/image/ImageStoreType.java +++ b/java/code/src/com/redhat/rhn/domain/image/ImageStoreType.java @@ -17,13 +17,13 @@ import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; /** diff --git a/java/code/src/com/redhat/rhn/domain/image/KiwiProfile.java b/java/code/src/com/redhat/rhn/domain/image/KiwiProfile.java index 2e79d6a3d8d5..2adacb5274d2 100644 --- a/java/code/src/com/redhat/rhn/domain/image/KiwiProfile.java +++ b/java/code/src/com/redhat/rhn/domain/image/KiwiProfile.java @@ -19,10 +19,10 @@ import java.util.Optional; -import javax.persistence.Column; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; /** * Domain class for Kiwi image profiles diff --git a/java/code/src/com/redhat/rhn/domain/image/ProfileCustomDataValue.java b/java/code/src/com/redhat/rhn/domain/image/ProfileCustomDataValue.java index bf268f76570b..f8912202c5bd 100644 --- a/java/code/src/com/redhat/rhn/domain/image/ProfileCustomDataValue.java +++ b/java/code/src/com/redhat/rhn/domain/image/ProfileCustomDataValue.java @@ -24,16 +24,16 @@ import java.util.Date; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; /** * CustomDataValue @@ -104,14 +104,14 @@ public User getLastModifier() { /** * @return Returns the created. */ - @Column(insertable = false, updatable = false) + @Column public Date getCreated() { return created; } /** * @return Returns the modified. */ - @Column(insertable = false, updatable = false) + @Column public Date getModified() { return modified; } diff --git a/java/code/src/com/redhat/rhn/domain/kickstart/KickstartFactory.java b/java/code/src/com/redhat/rhn/domain/kickstart/KickstartFactory.java index f78009d2e74d..7b197ae39478 100644 --- a/java/code/src/com/redhat/rhn/domain/kickstart/KickstartFactory.java +++ b/java/code/src/com/redhat/rhn/domain/kickstart/KickstartFactory.java @@ -37,12 +37,8 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.cobbler.Profile; -import org.hibernate.Criteria; import org.hibernate.Session; -import org.hibernate.criterion.CriteriaSpecification; import org.hibernate.query.Query; -import org.hibernate.type.LongType; -import org.hibernate.type.StringType; import java.io.File; import java.util.ArrayList; @@ -54,10 +50,10 @@ import java.util.Set; import java.util.stream.Collectors; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Root; - +import jakarta.persistence.TypedQuery; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Root; /** * KickstartFactory @@ -193,8 +189,8 @@ else if (minor.contains("u")) { public static KickstartData lookupKickstartDataByIdAndOrg(Org orgIn, Long ksid) { return (KickstartData) HibernateFactory.getSession() .getNamedQuery("KickstartData.findByIdAndOrg") - .setParameter("id", ksid, LongType.INSTANCE) - .setParameter(ORG_ID, orgIn.getId(), LongType.INSTANCE) + .setParameter("id", ksid) + .setParameter(ORG_ID, orgIn.getId()) .uniqueResult(); } @@ -208,7 +204,7 @@ public static KickstartData lookupKickstartDataByCobblerIdAndOrg(Org orgIn, return (KickstartData) HibernateFactory.getSession() .getNamedQuery("KickstartData.findByCobblerIdAndOrg") .setParameter("id", cobblerId) - .setParameter(ORG_ID, orgIn.getId(), LongType.INSTANCE) + .setParameter(ORG_ID, orgIn.getId()) .uniqueResult(); } @@ -226,7 +222,7 @@ public static KickstartData lookupKickstartDataByLabelAndOrgId( return (KickstartData) HibernateFactory.getSession(). getNamedQuery("KickstartData.findByLabelAndOrg") .setParameter(LABEL, label) - .setParameter(ORG_ID, orgId, LongType.INSTANCE) + .setParameter(ORG_ID, orgId) .uniqueResult(); } @@ -245,7 +241,7 @@ public static KickstartData lookupKickstartDataByCILabelAndOrgId( return (KickstartData) HibernateFactory.getSession(). getNamedQuery("KickstartData.findByCILabelAndOrg") .setParameter(LABEL, label) - .setParameter(ORG_ID, orgId, LongType.INSTANCE) + .setParameter(ORG_ID, orgId) .uniqueResult(); } @@ -486,7 +482,7 @@ public static CryptoKey lookupCryptoKey(String description, Org org) { if (org != null) { query = session.getNamedQuery("CryptoKey.findByDescAndOrg") .setParameter("description", description) - .setParameter(ORG_ID, org.getId(), LongType.INSTANCE); + .setParameter(ORG_ID, org.getId()); } else { query = session.getNamedQuery("CryptoKey.findByDescAndNullOrg") @@ -504,7 +500,7 @@ public static List lookupCryptoKeys(Org org) { //look for Kickstart data by id Session session = HibernateFactory.getSession(); return session.getNamedQuery("CryptoKey.findByOrg") - .setParameter(ORG_ID, org.getId(), LongType.INSTANCE) + .setParameter(ORG_ID, org.getId()) .list(); } @@ -517,7 +513,7 @@ public static List lookupSslCryptoKeys(Org org) { //look for Kickstart data by id Session session = HibernateFactory.getSession(); return session.getNamedQuery("SslCryptoKey.findByOrg") - .setParameter(ORG_ID, org.getId(), LongType.INSTANCE) + .setParameter(ORG_ID, org.getId()) .list(); } @@ -531,8 +527,8 @@ public static CryptoKey lookupCryptoKeyById(Long keyId, Org org) { //look for Kickstart data by id Session session = HibernateFactory.getSession(); return (CryptoKey) session.getNamedQuery("CryptoKey.findByIdAndOrg") - .setParameter("key_id", keyId, LongType.INSTANCE) - .setParameter(ORG_ID, org.getId(), LongType.INSTANCE) + .setParameter("key_id", keyId) + .setParameter(ORG_ID, org.getId()) .uniqueResult(); } @@ -546,8 +542,8 @@ public static SslCryptoKey lookupSslCryptoKeyById(Long keyId, Org org) { //look for Kickstart data by id Session session = HibernateFactory.getSession(); Query query = session.getNamedQuery("SslCryptoKey.findByIdAndOrg"); - return query.setParameter("key_id", keyId, LongType.INSTANCE) - .setParameter(ORG_ID, org.getId(), LongType.INSTANCE) + return query.setParameter("key_id", keyId) + .setParameter(ORG_ID, org.getId()) .uniqueResult(); } @@ -577,7 +573,7 @@ public static KickstartableTree lookupKickstartTreeByLabel(String label, Org org KickstartableTree retval = (KickstartableTree) session.getNamedQuery("KickstartableTree.findByLabelAndOrg") .setParameter(LABEL, label) - .setParameter(ORG_ID, org.getId(), LongType.INSTANCE) + .setParameter(ORG_ID, org.getId()) .uniqueResult(); // If we don't find by label + org then // we try by label and NULL org (RHN owned channel) @@ -615,8 +611,8 @@ public static List lookupKickstartTreesByChannelAndOrg(Long c String query = "KickstartableTree.findByChannelAndOrg"; Session session = HibernateFactory.getSession(); return session.getNamedQuery(query). - setParameter("channel_id", channelId, LongType.INSTANCE). - setParameter(ORG_ID, org.getId(), LongType.INSTANCE) + setParameter("channel_id", channelId). + setParameter(ORG_ID, org.getId()) //Retrieve from cache if there .setCacheable(true).list(); } @@ -631,7 +627,7 @@ public static List lookupKickstartTreesByChannelAndNullOrg( String query = "KickstartableTree.findByChannelAndNullOrg"; Session session = HibernateFactory.getSession(); return session.getNamedQuery(query) - .setParameter("channel_id", channelId, LongType.INSTANCE) + .setParameter("channel_id", channelId) // Retrieve from cache if there .setCacheable(true).list(); } @@ -652,8 +648,8 @@ public static List lookupKickstartableTrees( query = "KickstartableTree.findByChannel"; session = HibernateFactory.getSession(); retval = session.getNamedQuery(query). - setParameter("channel_id", channelId, LongType.INSTANCE). - setParameter(ORG_ID, org.getId(), LongType.INSTANCE). + setParameter("channel_id", channelId). + setParameter(ORG_ID, org.getId()). list(); return retval; } @@ -717,8 +713,8 @@ public static KickstartableTree lookupKickstartTreeByIdAndOrg(Long treeId, Org o if (treeId != null && org != null) { Session session = HibernateFactory.getSession(); Query query = session.getNamedQuery(queryName); - query.setParameter(ORG_ID, org.getId(), LongType.INSTANCE); - query.setParameter("tree_id", treeId, LongType.INSTANCE); + query.setParameter(ORG_ID, org.getId()); + query.setParameter("tree_id", treeId); //Retrieve from cache if there return query.setCacheable(true).uniqueResult(); } @@ -739,7 +735,7 @@ public static KickstartableTree lookupKickstartTreeByIdAndOrg(Long treeId, Org o public static KickstartSession lookupKickstartSessionByServer(Long sidIn) { Session session = HibernateFactory.getSession(); List ksessions = session.getNamedQuery("KickstartSession.findByServer") - .setParameter("server", sidIn, LongType.INSTANCE) + .setParameter("server", sidIn) .list(); if (!ksessions.isEmpty()) { return ksessions.iterator().next(); @@ -758,7 +754,7 @@ public static KickstartSession lookupKickstartSessionByServer(Long sidIn) { Session session = HibernateFactory.getSession(); List ksessions = session.getNamedQuery( "KickstartSession.findDefaultKickstartSessionForKickstartData") - .setParameter("ksdata", ksdata.getId(), LongType.INSTANCE) + .setParameter("ksdata", ksdata.getId()) .setParameter("mode", KickstartSession.MODE_DEFAULT_SESSION) .list(); if (!ksessions.isEmpty()) { @@ -797,7 +793,7 @@ public static void saveKickstartSession(KickstartSession ksession) { public static List lookupAllKickstartSessionsByServer(Long sidIn) { Session session = HibernateFactory.getSession(); return session.getNamedQuery("KickstartSession.findByServer") - .setParameter("server", sidIn, LongType.INSTANCE) + .setParameter("server", sidIn) .list(); } @@ -830,9 +826,9 @@ public static boolean verifyTreeAssignment(Long channelId, Long orgId, Long tree Session session = HibernateFactory.getSession(); Query query = session. getNamedQuery("KickstartableTree.verifyTreeAssignment"); - query.setParameter("channel_id", channelId, LongType.INSTANCE); - query.setParameter(ORG_ID, orgId, LongType.INSTANCE); - query.setParameter("tree_id", treeId, LongType.INSTANCE); + query.setParameter("channel_id", channelId); + query.setParameter(ORG_ID, orgId); + query.setParameter("tree_id", treeId); KickstartableTree tree = query.uniqueResult(); return tree != null; } @@ -908,7 +904,7 @@ public static List lookupKickstartDatasByTree(KickstartableTree t String query = "KickstartData.lookupByTreeId"; Session session = HibernateFactory.getSession(); return session.getNamedQuery(query) - .setParameter("kstree_id", tree.getId(), LongType.INSTANCE) + .setParameter("kstree_id", tree.getId()) .list(); } @@ -918,11 +914,10 @@ public static List lookupKickstartDatasByTree(KickstartableTree t * @return List of KickstartData objects if found */ public static List listAllKickstartData() { - Session session = getSession(); - Criteria c = session.createCriteria(KickstartData.class); - // Hibernate does not filter out duplicate references by default - c.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); - return c.list(); + String sql = "SELECT DISTINCT * FROM kickstart_data"; + TypedQuery query = + getSession().createNativeQuery(sql, KickstartData.class); + return query.getResultList(); } /** @@ -948,7 +943,7 @@ public static KickstartData lookupOrgDefault(Org org) { return (KickstartData) session .getNamedQuery("KickstartData.findOrgDefault") .setParameter("org", org) - .setParameter("isOrgDefault", "Y", StringType.INSTANCE) + .setParameter("isOrgDefault", "Y") .uniqueResult(); } @@ -1078,8 +1073,8 @@ public static List lookupKsPackageByKsDataAndPackageName( KickstartData ksData, PackageName packageName) { return HibernateFactory.getSession() .getNamedQuery("KickstartPackage.findByKickstartDataAndPackageName") - .setParameter("ks_data", ksData.getId(), LongType.INSTANCE) - .setParameter("package_name", packageName.getId(), LongType.INSTANCE) + .setParameter("ks_data", ksData.getId()) + .setParameter("package_name", packageName.getId()) .list(); } diff --git a/java/code/src/com/redhat/rhn/domain/kickstart/test/KickstartDataTest.java b/java/code/src/com/redhat/rhn/domain/kickstart/test/KickstartDataTest.java index 7a2e27823060..fd49ffe1dd57 100644 --- a/java/code/src/com/redhat/rhn/domain/kickstart/test/KickstartDataTest.java +++ b/java/code/src/com/redhat/rhn/domain/kickstart/test/KickstartDataTest.java @@ -74,7 +74,6 @@ import org.cobbler.Distro; import org.cobbler.test.MockConnection; import org.hibernate.Session; -import org.hibernate.type.LongType; import org.junit.jupiter.api.Test; import java.io.File; @@ -333,7 +332,7 @@ private KickstartData lookupById(Org orgIn, Long id) { Session session = HibernateFactory.getSession(); return (KickstartData) session.getNamedQuery("KickstartData.findByIdAndOrg") .setParameter("id", id) - .setParameter("org_id", orgIn.getId(), LongType.INSTANCE) + .setParameter("org_id", orgIn.getId()) .uniqueResult(); } diff --git a/java/code/src/com/redhat/rhn/domain/matcher/MatcherRunDataFactory.java b/java/code/src/com/redhat/rhn/domain/matcher/MatcherRunDataFactory.java index db127e62e604..6186ceaf2f82 100644 --- a/java/code/src/com/redhat/rhn/domain/matcher/MatcherRunDataFactory.java +++ b/java/code/src/com/redhat/rhn/domain/matcher/MatcherRunDataFactory.java @@ -20,6 +20,12 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import jakarta.persistence.NoResultException; +import jakarta.persistence.TypedQuery; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Root; + /** * MatcherRunData hibernate factory. */ @@ -44,9 +50,22 @@ public static void updateData(MatcherRunData newData) { * @return MatcherRunData instance */ public static MatcherRunData getSingle() { - return (MatcherRunData) getSession() - .createCriteria(MatcherRunData.class) - .uniqueResult(); + CriteriaBuilder cb = getSession().getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(MatcherRunData.class); + Root root = cq.from(MatcherRunData.class); + cq.select(root); + + TypedQuery query = getSession().createQuery(cq); + + try { + return query.getSingleResult(); + } + catch (NoResultException e) { + return null; + } + catch (Exception e) { + throw new RuntimeException("Error retrieving MatcherRunData", e); + } } /** diff --git a/java/code/src/com/redhat/rhn/domain/notification/NotificationMessage.java b/java/code/src/com/redhat/rhn/domain/notification/NotificationMessage.java index 722b403ddc6f..cd34f196cc44 100644 --- a/java/code/src/com/redhat/rhn/domain/notification/NotificationMessage.java +++ b/java/code/src/com/redhat/rhn/domain/notification/NotificationMessage.java @@ -39,18 +39,18 @@ import java.io.Serializable; import java.util.Date; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; -import javax.persistence.Transient; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; +import jakarta.persistence.Transient; /** * A notification NotificationMessage Object. diff --git a/java/code/src/com/redhat/rhn/domain/notification/UserNotification.java b/java/code/src/com/redhat/rhn/domain/notification/UserNotification.java index 3e7cb6d11a26..bd3840778e64 100644 --- a/java/code/src/com/redhat/rhn/domain/notification/UserNotification.java +++ b/java/code/src/com/redhat/rhn/domain/notification/UserNotification.java @@ -20,19 +20,19 @@ import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; -import org.hibernate.annotations.Type; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.UniqueConstraint; + +import jakarta.persistence.Column; +import jakarta.persistence.Convert; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.UniqueConstraint; /** * A notification UserNotification Object. @@ -115,7 +115,7 @@ public void setMessageId(Long messageIdIn) { /** * @return Returns the read. */ - @Type(type = "yes_no") + @Convert(converter = org.hibernate.type.YesNoConverter.class) @Column(name = "read") public boolean getRead() { return read; diff --git a/java/code/src/com/redhat/rhn/domain/notification/UserNotificationFactory.java b/java/code/src/com/redhat/rhn/domain/notification/UserNotificationFactory.java index 97b810e74381..e9d5030304b1 100644 --- a/java/code/src/com/redhat/rhn/domain/notification/UserNotificationFactory.java +++ b/java/code/src/com/redhat/rhn/domain/notification/UserNotificationFactory.java @@ -42,10 +42,10 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaDelete; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Root; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaDelete; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Root; /** diff --git a/java/code/src/com/redhat/rhn/domain/notification/types/SubscriptionWarning.java b/java/code/src/com/redhat/rhn/domain/notification/types/SubscriptionWarning.java index 0e03d8d7b0b4..efdae975f639 100644 --- a/java/code/src/com/redhat/rhn/domain/notification/types/SubscriptionWarning.java +++ b/java/code/src/com/redhat/rhn/domain/notification/types/SubscriptionWarning.java @@ -31,7 +31,7 @@ public class SubscriptionWarning implements NotificationData { * @return boolean **/ public boolean expiresSoon() { - Optional result = getSession().createSQLQuery( + Optional result = getSession().createNativeQuery( "select exists (select name, expires_at, status, subtype " + "from susesccsubscription where subtype != 'internal' " + " and ((status = 'ACTIVE' and expires_at < now() + interval '90 day') " + diff --git a/java/code/src/com/redhat/rhn/domain/org/OrgFactory.java b/java/code/src/com/redhat/rhn/domain/org/OrgFactory.java index 25ccd5f4a4e0..1ea0389a0e8a 100644 --- a/java/code/src/com/redhat/rhn/domain/org/OrgFactory.java +++ b/java/code/src/com/redhat/rhn/domain/org/OrgFactory.java @@ -36,7 +36,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.hibernate.Session; -import org.hibernate.type.LongType; import java.sql.Types; import java.util.Collections; @@ -159,7 +158,7 @@ public static CustomDataKey lookupKeyById(Long cikid) { Session session = HibernateFactory.getSession(); return (CustomDataKey) session.getNamedQuery("CustomDataKey.findById") - .setParameter("id", cikid, LongType.INSTANCE) + .setParameter("id", cikid) //Retrieve from cache if there .setCacheable(true) .uniqueResult(); @@ -234,7 +233,7 @@ public static Org lookupById(Long id) { public static Long getActiveUsers(Org orgIn) { Session session = HibernateFactory.getSession(); return (Long) session.getNamedQuery("Org.numOfActiveUsers") - .setParameter(ORG_ID, orgIn.getId(), LongType.INSTANCE) + .setParameter(ORG_ID, orgIn.getId()) .uniqueResult(); } @@ -247,7 +246,7 @@ public static Long getActiveUsers(Org orgIn) { public static Long getActiveSystems(Org orgIn) { Session session = HibernateFactory.getSession(); return (Long) session.getNamedQuery("Org.numOfSystems") - .setParameter(ORG_ID, orgIn.getId(), LongType.INSTANCE) + .setParameter(ORG_ID, orgIn.getId()) .uniqueResult(); } @@ -259,7 +258,7 @@ public static Long getActiveSystems(Org orgIn) { public static Long getServerGroups(Org orgIn) { Session session = HibernateFactory.getSession(); return (Long) session.getNamedQuery("Org.numOfServerGroups") - .setParameter(ORG_ID, orgIn.getId(), LongType.INSTANCE) + .setParameter(ORG_ID, orgIn.getId()) .uniqueResult(); } @@ -271,7 +270,7 @@ public static Long getServerGroups(Org orgIn) { public static Long getConfigChannels(Org orgIn) { Session session = HibernateFactory.getSession(); return (Long) session.getNamedQuery("Org.numOfConfigChannels") - .setParameter(ORG_ID, orgIn.getId(), LongType.INSTANCE) + .setParameter(ORG_ID, orgIn.getId()) .uniqueResult(); } diff --git a/java/code/src/com/redhat/rhn/domain/product/SUSEProductFactory.java b/java/code/src/com/redhat/rhn/domain/product/SUSEProductFactory.java index 89b715826943..35022029b2ed 100644 --- a/java/code/src/com/redhat/rhn/domain/product/SUSEProductFactory.java +++ b/java/code/src/com/redhat/rhn/domain/product/SUSEProductFactory.java @@ -29,11 +29,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.hibernate.Criteria; import org.hibernate.Session; -import org.hibernate.criterion.Disjunction; -import org.hibernate.criterion.Order; -import org.hibernate.criterion.Restrictions; import java.util.Collection; import java.util.Comparator; @@ -46,9 +42,10 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Root; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Predicate; +import jakarta.persistence.criteria.Root; /** * SUSEProductFactory - the class used to fetch and store @@ -101,8 +98,16 @@ public static void save(SUSEProductSCCRepository productRepo) { * @return a list of all {@link SUSEProductSCCRepository} */ public static List allProductRepos() { - Criteria c = getSession().createCriteria(SUSEProductSCCRepository.class); - return c.list(); + CriteriaBuilder cb = getSession().getCriteriaBuilder(); + + CriteriaQuery query + = cb.createQuery(SUSEProductSCCRepository.class); + + Root root = query.from(SUSEProductSCCRepository.class); + + query.select(root); + + return getSession().createQuery(query).getResultList(); } /** @@ -117,16 +122,10 @@ public static boolean hasProducts() { * @return map of all {@link SUSEProductSCCRepository} by ID triple */ public static Map, SUSEProductSCCRepository> allProductReposByIds() { - return allProductRepos().stream().collect( - Collectors.toMap( - e -> new Tuple3<>( - e.getRootProduct().getProductId(), - e.getProduct().getProductId(), - e.getRepository().getSccId() - ), - e -> e - ) - ); + return allProductRepos().stream().collect(Collectors.toMap( + e -> new Tuple3<>(e.getRootProduct().getProductId(), + e.getProduct().getProductId(), e.getRepository().getSccId()), + e -> e)); } /** @@ -136,30 +135,26 @@ public static Map, SUSEProductSCCRepository> allProduct * @param channelLabel the channel label * @return list of {@link SUSEProductSCCRepository} */ - public static List lookupPSRByChannelLabel(String channelLabel) { - Session session = getSession(); - Criteria c = session.createCriteria(SUSEProductSCCRepository.class); - c.add(Restrictions.eq("channelLabel", channelLabel)); - return ((List) c.list()).stream() - .sorted((a, b) -> - RPM_VERSION_COMPARATOR.compare(b.getProduct().getVersion(), a.getProduct().getVersion())) - .collect(Collectors.toList()); - } + public static List lookupPSRByChannelLabel( + String channelLabel) { - /** - * lookup {@link SUSEProductSCCRepository} by given ID triple - * @param rootId root product id - * @param productId product id - * @param repoId repository id - * @return the product/repository item - */ - public static Optional lookupProductRepoByIds(long rootId, long productId, long repoId) { - Session session = getSession(); - Criteria c = session.createCriteria(SUSEProductSCCRepository.class); - c.add(Restrictions.eq("rootProduct.productId", rootId)); - c.add(Restrictions.eq("product.productId", productId)); - c.add(Restrictions.eq("repository.sccId", repoId)); - return Optional.ofNullable((SUSEProductSCCRepository) c.uniqueResult()); + CriteriaBuilder cb = getSession().getCriteriaBuilder(); + + CriteriaQuery query + = cb.createQuery(SUSEProductSCCRepository.class); + + Root root = query.from(SUSEProductSCCRepository.class); + + Predicate predicate = cb.equal(root.get("channelLabel"), channelLabel); + + query.select(root).where(predicate); + + return ((List) getSession().createQuery(query) + .getResultList()) + .stream() + .sorted((a, b) -> RPM_VERSION_COMPARATOR.compare( + b.getProduct().getVersion(), a.getProduct().getVersion())) + .collect(Collectors.toList()); } /** @@ -185,12 +180,21 @@ public static void remove(SUSEProduct product) { @SuppressWarnings("unchecked") public static void removeAllExcept(Collection products) { if (!products.isEmpty()) { - Collection ids = products.stream().map(SUSEProduct::getId).collect(Collectors.toList()); + Collection ids + = products.stream().map(SUSEProduct::getId).collect(Collectors.toList()); + + CriteriaBuilder cb = getSession().getCriteriaBuilder(); + + CriteriaQuery query = cb.createQuery(SUSEProduct.class); + + Root root = query.from(SUSEProduct.class); + + Predicate predicate = root.get("id").in(ids); - Criteria c = getSession().createCriteria(SUSEProduct.class); - c.add(Restrictions.not(Restrictions.in("id", ids))); + query.select(root).where(predicate); - for (SUSEProduct product : (List) c.list()) { + for (SUSEProduct product : (List) getSession().createQuery(query) + .list()) { remove(product); } } @@ -462,41 +466,45 @@ public static void remove(SUSEProductSCCRepository productRepo) { public static SUSEProduct findSUSEProduct(String name, String version, String release, String arch, boolean imprecise) { - Criteria c = getSession().createCriteria(SUSEProduct.class); - c.add(Restrictions.eq("name", name.toLowerCase())); + CriteriaBuilder cb = getSession().getCriteriaBuilder(); + + CriteriaQuery query = cb.createQuery(SUSEProduct.class); + + Root root = query.from(SUSEProduct.class); + + Predicate predicate = cb.equal(root.get("name"), name.toLowerCase()); - Disjunction versionCriterion = Restrictions.disjunction(); if (imprecise || version == null) { - versionCriterion.add(Restrictions.isNull("version")); + predicate = cb.and(predicate, cb.isNull(root.get("version"))); } if (version != null) { - versionCriterion.add(Restrictions.eq("version", version.toLowerCase())); + predicate + = cb.and(predicate, cb.equal(root.get("version"), version.toLowerCase())); } - c.add(versionCriterion); - Disjunction releaseCriterion = Restrictions.disjunction(); if (imprecise || release == null) { - releaseCriterion.add(Restrictions.isNull("release")); + predicate = cb.and(predicate, cb.isNull(root.get("release"))); } if (release != null) { - releaseCriterion.add(Restrictions.eq("release", release.toLowerCase())); + predicate + = cb.and(predicate, cb.equal(root.get("release"), release.toLowerCase())); } - c.add(releaseCriterion); - Disjunction archCriterion = Restrictions.disjunction(); if (imprecise || arch == null) { - archCriterion.add(Restrictions.isNull("arch")); + predicate = cb.and(predicate, cb.isNull(root.get("arch"))); } if (arch != null) { - archCriterion.add(Restrictions.eq("arch", + predicate = cb.and(predicate, cb.equal(root.get("arch"), PackageFactory.lookupPackageArchByLabel(arch))); } - c.add(archCriterion); - c.addOrder(Order.asc("name")).addOrder(Order.asc("version")) - .addOrder(Order.asc("release")).addOrder(Order.asc("arch")); + query.select(root).where(predicate); + + query.orderBy(cb.asc(root.get("name")), cb.asc(root.get("version")), + cb.asc(root.get("release")), cb.asc(root.get("arch"))); + + List result = getSession().createQuery(query).getResultList(); - List result = c.list(); return result.isEmpty() ? null : result.get(0); } @@ -517,10 +525,17 @@ public static SUSEProduct getProductById(Long id) { * @return SUSE product for given productId */ public static SUSEProduct lookupByProductId(long productId) { - Session session = getSession(); - Criteria c = session.createCriteria(SUSEProduct.class); - c.add(Restrictions.eq("productId", productId)); - return (SUSEProduct) c.uniqueResult(); + CriteriaBuilder cb = getSession().getCriteriaBuilder(); + + CriteriaQuery query = cb.createQuery(SUSEProduct.class); + + Root root = query.from(SUSEProduct.class); + + Predicate predicate = cb.equal(root.get("productId"), productId); + + query.select(root).where(predicate); + + return (SUSEProduct) getSession().createQuery(query).uniqueResult(); } /** @@ -546,34 +561,31 @@ public static List allRecommendedExtensions() { return getSession().createQuery(criteria).getResultList(); } - /** - * Find all {@link SUSEProductChannel} relationships. - * @return list of SUSE product channel relationships - */ - @SuppressWarnings("unchecked") - public static List findAllSUSEProductChannels() { - Session session = getSession(); - Criteria c = session.createCriteria(SUSEProductChannel.class); - return c.list(); - } - /** * Find extensions for the product - * @param root the root product + * @param rootProduct the rootProduct product * @param base the base product * @param ext the extension product * @return the Optional of {@link SUSEProductExtension} product */ - public static Optional findSUSEProductExtension(SUSEProduct root, - SUSEProduct base, - SUSEProduct ext) { - Session session = getSession(); + public static Optional findSUSEProductExtension( + SUSEProduct rootProduct, SUSEProduct base, SUSEProduct ext) { + + CriteriaBuilder cb = getSession().getCriteriaBuilder(); + + CriteriaQuery query + = cb.createQuery(SUSEProductExtension.class); + + Root root = query.from(SUSEProductExtension.class); + + Predicate predicate = cb.equal(root.get("rootProduct"), rootProduct); + predicate = cb.and(predicate, cb.equal(root.get("baseProduct"), base)); + predicate = cb.and(predicate, cb.equal(root.get("extensionProduct"), ext)); + + query.select(root).where(predicate); + + SUSEProductExtension result = getSession().createQuery(query).uniqueResult(); - Criteria c = session.createCriteria(SUSEProductExtension.class) - .add(Restrictions.eq("rootProduct", root)) - .add(Restrictions.eq("baseProduct", base)) - .add(Restrictions.eq("extensionProduct", ext)); - SUSEProductExtension result = (SUSEProductExtension) c.uniqueResult(); if (result == null) { return Optional.empty(); } @@ -588,9 +600,17 @@ public static Optional findSUSEProductExtension(SUSEProduc */ @SuppressWarnings("unchecked") public static List findAllSUSEProductExtensions() { - Session session = getSession(); - Criteria c = session.createCriteria(SUSEProductExtension.class); - return c.list(); + CriteriaBuilder cb = getSession().getCriteriaBuilder(); + + CriteriaQuery query + = cb.createQuery(SUSEProductExtension.class); + + Root root = query.from(SUSEProductExtension.class); + + query.select(root); + + return getSession().createQuery(query).getResultList(); + } /** @@ -609,17 +629,26 @@ public static List findAllExtensionProductsForRootOf(SUSEProduct ba /** * Find all {@link SUSEProductExtension} of a product for a given root. * @param product product to find extensions of - * @param root root product to find extensions in + * @param rootProduct root product to find extensions in * @return list of product extension of the given product */ @SuppressWarnings("unchecked") - public static List findAllProductExtensionsOf(SUSEProduct product, SUSEProduct root) { - Session session = getSession(); + public static List findAllProductExtensionsOf(SUSEProduct product, SUSEProduct rootProduct) { + + CriteriaBuilder cb = getSession().getCriteriaBuilder(); + + CriteriaQuery query + = cb.createQuery(SUSEProductExtension.class); + + Root root = query.from(SUSEProductExtension.class); + + Predicate predicate = cb.equal(root.get("rootProduct"), rootProduct); + predicate = cb.and(predicate, cb.equal(root.get("baseProduct"), product)); + + query.select(root).where(predicate); + + return getSession().createQuery(query).getResultList(); - Criteria c = session.createCriteria(SUSEProductExtension.class) - .add(Restrictions.eq("rootProduct", root)) - .add(Restrictions.eq("baseProduct", product)); - return c.list(); } /** @@ -661,7 +690,15 @@ public static List findAllRootProductsOf(SUSEProduct prd) { */ @SuppressWarnings("unchecked") public static List findAllSUSEProducts() { - return getSession().createCriteria(SUSEProduct.class).list(); + CriteriaBuilder cb = getSession().getCriteriaBuilder(); + + CriteriaQuery query = cb.createQuery(SUSEProduct.class); + + Root root = query.from(SUSEProduct.class); + + query.select(root); + + return getSession().createQuery(query).getResultList(); } /** @@ -691,21 +728,28 @@ public static List findAllExtensionsOfRootProduct(SUSEProduct root) public static Optional findInstalledProduct(String name, String version, String release, PackageArch arch, boolean isBaseProduct) { - Criteria c = getSession().createCriteria(InstalledProduct.class); - c.add(Restrictions.eq("name", name)); - c.add(Restrictions.eq("version", version)); + CriteriaBuilder cb = getSession().getCriteriaBuilder(); + + CriteriaQuery query = cb.createQuery(InstalledProduct.class); + + Root root = query.from(InstalledProduct.class); + + Predicate predicate = cb.equal(root.get("name"), name.toLowerCase()); + predicate = cb.and(predicate, cb.equal(root.get("version"), version.toLowerCase())); + predicate = cb.and(predicate, cb.equal(root.get("arch"), arch)); + predicate = cb.and(predicate, cb.equal(root.get("baseproduct"), isBaseProduct)); if (StringUtils.isEmpty(release)) { - c.add(Restrictions.isNull("release")); + predicate = cb.and(predicate, cb.isNull(root.get("release"))); } else { - c.add(Restrictions.eq("release", release)); + predicate = cb.and(predicate, cb.equal(root.get("release"), release)); } - c.add(Restrictions.eq("arch", arch)); - c.add(Restrictions.eq("baseproduct", isBaseProduct)); - c.addOrder(Order.asc("name")).addOrder(Order.asc("version")) - .addOrder(Order.asc("release")).addOrder(Order.asc("arch")); - return c.list().stream().findFirst(); + query.select(root).where(predicate); + query.orderBy(cb.asc(root.get("name")), cb.asc(root.get("version")), + cb.asc(root.get("release")), cb.asc(root.get("arch"))); + + return getSession().createQuery(query).getResultList().stream().findFirst(); } /** diff --git a/java/code/src/com/redhat/rhn/domain/product/SUSEProductSCCRepository.java b/java/code/src/com/redhat/rhn/domain/product/SUSEProductSCCRepository.java index 8ca94b1e7a28..a5e164096d51 100644 --- a/java/code/src/com/redhat/rhn/domain/product/SUSEProductSCCRepository.java +++ b/java/code/src/com/redhat/rhn/domain/product/SUSEProductSCCRepository.java @@ -17,22 +17,21 @@ import com.redhat.rhn.domain.BaseDomainHelper; import com.redhat.rhn.domain.scc.SCCRepository; -import org.hibernate.annotations.Type; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.UniqueConstraint; +import jakarta.persistence.Column; +import jakarta.persistence.Convert; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.NamedQueries; +import jakarta.persistence.NamedQuery; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; +import jakarta.persistence.UniqueConstraint; /** * SUSEProductSCCRepository - link Product with Repository and hold data for channels @@ -125,7 +124,7 @@ public String getChannelName() { /** * @return Returns the mandatory. */ - @Type(type = "yes_no") + @Convert(converter = org.hibernate.type.YesNoConverter.class) @Column(name = "mandatory") public boolean isMandatory() { return mandatory; diff --git a/java/code/src/com/redhat/rhn/domain/recurringactions/GroupRecurringAction.java b/java/code/src/com/redhat/rhn/domain/recurringactions/GroupRecurringAction.java index 112a2305f522..42a1edceacb7 100644 --- a/java/code/src/com/redhat/rhn/domain/recurringactions/GroupRecurringAction.java +++ b/java/code/src/com/redhat/rhn/domain/recurringactions/GroupRecurringAction.java @@ -33,11 +33,11 @@ import java.util.List; import java.util.stream.Collectors; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.Transient; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Transient; /** * Recurring Action for server group implementation diff --git a/java/code/src/com/redhat/rhn/domain/recurringactions/MinionRecurringAction.java b/java/code/src/com/redhat/rhn/domain/recurringactions/MinionRecurringAction.java index d3b00759e023..c1b45a57c90b 100644 --- a/java/code/src/com/redhat/rhn/domain/recurringactions/MinionRecurringAction.java +++ b/java/code/src/com/redhat/rhn/domain/recurringactions/MinionRecurringAction.java @@ -25,11 +25,11 @@ import java.util.List; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.Transient; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Transient; /** * Recurring Action for minion server implementation diff --git a/java/code/src/com/redhat/rhn/domain/recurringactions/OrgRecurringAction.java b/java/code/src/com/redhat/rhn/domain/recurringactions/OrgRecurringAction.java index ff8cbba5ae1b..ba63cdbe0d4f 100644 --- a/java/code/src/com/redhat/rhn/domain/recurringactions/OrgRecurringAction.java +++ b/java/code/src/com/redhat/rhn/domain/recurringactions/OrgRecurringAction.java @@ -30,11 +30,11 @@ import java.util.List; import java.util.stream.Collectors; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.Transient; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Transient; /** * Recurring Action for organization implementation diff --git a/java/code/src/com/redhat/rhn/domain/recurringactions/RecurringAction.java b/java/code/src/com/redhat/rhn/domain/recurringactions/RecurringAction.java index bd70ea85bf74..56b9e2ae91b8 100644 --- a/java/code/src/com/redhat/rhn/domain/recurringactions/RecurringAction.java +++ b/java/code/src/com/redhat/rhn/domain/recurringactions/RecurringAction.java @@ -26,24 +26,25 @@ import java.util.List; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.DiscriminatorColumn; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.OneToOne; -import javax.persistence.PrimaryKeyJoinColumn; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Transient; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Convert; +import jakarta.persistence.DiscriminatorColumn; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Inheritance; +import jakarta.persistence.InheritanceType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToOne; +import jakarta.persistence.PrimaryKeyJoinColumn; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; /** * Recurring Action base class @@ -204,7 +205,7 @@ public void setCronExpr(String cronExprIn) { * @return active - if action is active */ @Column - @org.hibernate.annotations.Type(type = "yes_no") + @Convert(converter = org.hibernate.type.YesNoConverter.class) public boolean isActive() { return active; } diff --git a/java/code/src/com/redhat/rhn/domain/recurringactions/state/InternalState.java b/java/code/src/com/redhat/rhn/domain/recurringactions/state/InternalState.java index e8033d532a84..2976396af8e7 100644 --- a/java/code/src/com/redhat/rhn/domain/recurringactions/state/InternalState.java +++ b/java/code/src/com/redhat/rhn/domain/recurringactions/state/InternalState.java @@ -17,10 +17,10 @@ import org.hibernate.annotations.Immutable; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; /** * Class representation of the table suseInternalState. diff --git a/java/code/src/com/redhat/rhn/domain/recurringactions/state/RecurringConfigChannel.java b/java/code/src/com/redhat/rhn/domain/recurringactions/state/RecurringConfigChannel.java index 4c1f1f7189f4..b2e36368433b 100644 --- a/java/code/src/com/redhat/rhn/domain/recurringactions/state/RecurringConfigChannel.java +++ b/java/code/src/com/redhat/rhn/domain/recurringactions/state/RecurringConfigChannel.java @@ -23,11 +23,11 @@ import com.suse.manager.webui.services.ConfigChannelSaltManager; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.Transient; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Transient; /** * Recurring State configuration for config channel implementation diff --git a/java/code/src/com/redhat/rhn/domain/recurringactions/state/RecurringInternalState.java b/java/code/src/com/redhat/rhn/domain/recurringactions/state/RecurringInternalState.java index d9b114428572..c78824733b71 100644 --- a/java/code/src/com/redhat/rhn/domain/recurringactions/state/RecurringInternalState.java +++ b/java/code/src/com/redhat/rhn/domain/recurringactions/state/RecurringInternalState.java @@ -20,11 +20,11 @@ import java.util.Optional; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.Transient; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Transient; /** * Recurring State configuration for internal state implementation diff --git a/java/code/src/com/redhat/rhn/domain/recurringactions/state/RecurringStateConfig.java b/java/code/src/com/redhat/rhn/domain/recurringactions/state/RecurringStateConfig.java index 5b70fadc2a28..935d692d5c3b 100644 --- a/java/code/src/com/redhat/rhn/domain/recurringactions/state/RecurringStateConfig.java +++ b/java/code/src/com/redhat/rhn/domain/recurringactions/state/RecurringStateConfig.java @@ -19,19 +19,19 @@ import org.hibernate.annotations.DiscriminatorFormula; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Transient; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Inheritance; +import jakarta.persistence.InheritanceType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; /** * Recurring State Configuration base class diff --git a/java/code/src/com/redhat/rhn/domain/recurringactions/test/RecurringActionFactoryTest.java b/java/code/src/com/redhat/rhn/domain/recurringactions/test/RecurringActionFactoryTest.java index 5b2d4ba4f86e..18bd7cdfbd8b 100644 --- a/java/code/src/com/redhat/rhn/domain/recurringactions/test/RecurringActionFactoryTest.java +++ b/java/code/src/com/redhat/rhn/domain/recurringactions/test/RecurringActionFactoryTest.java @@ -41,7 +41,7 @@ import java.util.List; import java.util.Set; -import javax.persistence.PersistenceException; +import jakarta.persistence.PersistenceException; /** * Tests for {@link RecurringActionFactory} diff --git a/java/code/src/com/redhat/rhn/domain/recurringactions/type/RecurringActionType.java b/java/code/src/com/redhat/rhn/domain/recurringactions/type/RecurringActionType.java index 2d4bc8dc55a6..81c1952f0877 100644 --- a/java/code/src/com/redhat/rhn/domain/recurringactions/type/RecurringActionType.java +++ b/java/code/src/com/redhat/rhn/domain/recurringactions/type/RecurringActionType.java @@ -17,14 +17,14 @@ import com.redhat.rhn.domain.recurringactions.RecurringAction; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.JoinColumn; -import javax.persistence.MapsId; -import javax.persistence.OneToOne; -import javax.persistence.Transient; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Inheritance; +import jakarta.persistence.InheritanceType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.MapsId; +import jakarta.persistence.OneToOne; +import jakarta.persistence.Transient; /** * Recurring Action Type base class diff --git a/java/code/src/com/redhat/rhn/domain/recurringactions/type/RecurringHighstate.java b/java/code/src/com/redhat/rhn/domain/recurringactions/type/RecurringHighstate.java index 3165e2dba3d9..304304a2a959 100644 --- a/java/code/src/com/redhat/rhn/domain/recurringactions/type/RecurringHighstate.java +++ b/java/code/src/com/redhat/rhn/domain/recurringactions/type/RecurringHighstate.java @@ -15,12 +15,11 @@ package com.redhat.rhn.domain.recurringactions.type; -import org.hibernate.annotations.Type; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Table; -import javax.persistence.Transient; +import jakarta.persistence.Column; +import jakarta.persistence.Convert; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; /** * Recurring Action type for highstate implementation @@ -60,7 +59,7 @@ public ActionType getActionType() { * @return testMode - if action is testMode */ @Column(name = "test_mode") - @Type(type = "yes_no") + @Convert(converter = org.hibernate.type.YesNoConverter.class) public boolean isTestMode() { return this.testMode; } diff --git a/java/code/src/com/redhat/rhn/domain/recurringactions/type/RecurringState.java b/java/code/src/com/redhat/rhn/domain/recurringactions/type/RecurringState.java index 52430212d888..e5f9df932e60 100644 --- a/java/code/src/com/redhat/rhn/domain/recurringactions/type/RecurringState.java +++ b/java/code/src/com/redhat/rhn/domain/recurringactions/type/RecurringState.java @@ -18,17 +18,16 @@ import com.redhat.rhn.common.hibernate.HibernateFactory; import com.redhat.rhn.domain.recurringactions.state.RecurringStateConfig; -import org.hibernate.annotations.Type; - import java.util.Set; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.OneToMany; -import javax.persistence.Table; -import javax.persistence.Transient; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Convert; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; /** * Recurring Action type for state implementation @@ -95,7 +94,7 @@ public ActionType getActionType() { * @return testMode - if action is testMode */ @Column(name = "test_mode") - @Type(type = "yes_no") + @Convert(converter = org.hibernate.type.YesNoConverter.class) public boolean isTestMode() { return this.testMode; } diff --git a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageBreaks.java b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageBreaks.java index db2fea80e312..74c86cd00985 100644 --- a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageBreaks.java +++ b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageBreaks.java @@ -16,8 +16,8 @@ import java.io.Serializable; -import javax.persistence.Entity; -import javax.persistence.Table; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; /** * PackageBreaks diff --git a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageConflicts.java b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageConflicts.java index 9569c5e036ce..da3bb41a69a4 100644 --- a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageConflicts.java +++ b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageConflicts.java @@ -16,8 +16,8 @@ import java.io.Serializable; -import javax.persistence.Entity; -import javax.persistence.Table; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; /** * PackageRequires diff --git a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageEnhances.java b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageEnhances.java index 106ef2d73191..dbc5544684b1 100644 --- a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageEnhances.java +++ b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageEnhances.java @@ -16,8 +16,8 @@ import java.io.Serializable; -import javax.persistence.Entity; -import javax.persistence.Table; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; /** * PackageEnhances diff --git a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageEvrFactory.java b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageEvrFactory.java index b3e1c1399918..fb690503b247 100644 --- a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageEvrFactory.java +++ b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageEvrFactory.java @@ -95,7 +95,7 @@ public static PackageEvr lookupOrCreatePackageEvr(String e, String v, String r, */ public static PackageEvr lookupPackageEvrById(Long id) { Session session = HibernateFactory.getSession(); - return (PackageEvr) session.getNamedQuery("PackageEvr.findById").setLong( + return (PackageEvr) session.getNamedQuery("PackageEvr.findById").setParameter( "id", id).uniqueResult(); } @@ -111,10 +111,10 @@ public static Optional lookupPackageEvrByEvr( String epoch, String version, String release, PackageType type) { Session session = HibernateFactory.getSession(); return (Optional) session.getNamedQuery("PackageEvr.lookupByEvr") - .setString("e_in", epoch) - .setString("v_in", version) - .setString("r_in", release) - .setString("t_in", type.getDbString()) + .setParameter("e_in", epoch) + .setParameter("v_in", version) + .setParameter("r_in", release) + .setParameter("t_in", type.getDbString()) .uniqueResultOptional(); } diff --git a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageExtraTagsKeys.java b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageExtraTagsKeys.java index 9146c127ab31..e40b6c0b294a 100644 --- a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageExtraTagsKeys.java +++ b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageExtraTagsKeys.java @@ -22,15 +22,15 @@ import java.io.Serializable; import java.util.Date; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; /** * Entity bean for rhnPackageExtraTagKey. diff --git a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageFactory.java b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageFactory.java index 196bd19a81c2..67c64a0d28d9 100644 --- a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageFactory.java +++ b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageFactory.java @@ -45,8 +45,8 @@ import java.util.Optional; import java.util.Set; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; /** * PackageFactory @@ -300,7 +300,7 @@ public static long lookupOrCreatePackageNameId(String name) { */ public static PackageName lookupPackageName(Long id) { return (PackageName) HibernateFactory.getSession().getNamedQuery("PackageName.findById") - .setLong("id", id).uniqueResult(); + .setParameter("id", id).uniqueResult(); } /** @@ -313,7 +313,7 @@ public static PackageName lookupPackageName(Long id) { */ public static PackageName lookupPackageName(String pn) { return (PackageName) HibernateFactory.getSession().getNamedQuery("PackageName.findByName") - .setString("name", pn).uniqueResult(); + .setParameter("name", pn).uniqueResult(); } /** @@ -342,8 +342,8 @@ public static List lookupByNevra(Org org, String name, String version, String release, String epoch, PackageArch arch) { List packages = HibernateFactory.getSession().getNamedQuery( - "Package.lookupByNevra").setParameter("org", org).setString("name", name) - .setString("version", version).setString("release", release).setParameter( + "Package.lookupByNevra").setParameter("org", org).setParameter("name", name) + .setParameter("version", version).setParameter("release", release).setParameter( "arch", arch).list(); if (epoch == null || packages.size() < 2) { @@ -388,12 +388,12 @@ public static Package lookupByChannelLabelNevraCs(String channel, String name, @SuppressWarnings("unchecked") List packages = HibernateFactory.getSession() .getNamedQuery("Package.lookupByChannelLabelNevraCs") - .setString("channel", channel) - .setString("name", name) - .setString("version", version) - .setString("release", release) - .setString("arch", arch) - .setString("checksum", checksum.orElse(null)) + .setParameter("channel", channel) + .setParameter("name", name) + .setParameter("version", version) + .setParameter("release", release) + .setParameter("arch", arch) + .setParameter("checksum", checksum.orElse(null)) .list(); if (packages.isEmpty()) { diff --git a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageObsoletes.java b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageObsoletes.java index 017f793ddbf2..3ef507028ed9 100644 --- a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageObsoletes.java +++ b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageObsoletes.java @@ -16,8 +16,8 @@ import java.io.Serializable; -import javax.persistence.Entity; -import javax.persistence.Table; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; /** * PackageRequires diff --git a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackagePreDepends.java b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackagePreDepends.java index fe436af3c529..1cc482249ca2 100644 --- a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackagePreDepends.java +++ b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackagePreDepends.java @@ -16,8 +16,8 @@ import java.io.Serializable; -import javax.persistence.Entity; -import javax.persistence.Table; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; /** * PackagePreDepends diff --git a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageProperty.java b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageProperty.java index 5f561c233a9a..13f5f7faadea 100644 --- a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageProperty.java +++ b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageProperty.java @@ -20,13 +20,13 @@ import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.IdClass; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.IdClass; +import jakarta.persistence.Inheritance; +import jakarta.persistence.InheritanceType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; /** * PackageProperty diff --git a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageProvides.java b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageProvides.java index a5538d62be7e..a6322ee3c75a 100644 --- a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageProvides.java +++ b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageProvides.java @@ -16,8 +16,8 @@ import java.io.Serializable; -import javax.persistence.Entity; -import javax.persistence.Table; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; /** * PackageArch diff --git a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageRecommends.java b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageRecommends.java index 08458630ef67..fb8169c6834c 100644 --- a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageRecommends.java +++ b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageRecommends.java @@ -16,8 +16,8 @@ import java.io.Serializable; -import javax.persistence.Entity; -import javax.persistence.Table; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; /** * PackageRecommends diff --git a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageRequires.java b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageRequires.java index a0b62b2394d1..85798db03a38 100644 --- a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageRequires.java +++ b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageRequires.java @@ -16,8 +16,8 @@ import java.io.Serializable; -import javax.persistence.Entity; -import javax.persistence.Table; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; /** * PackageRequires diff --git a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageSuggests.java b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageSuggests.java index e01921e374ee..f50c787ea6bc 100644 --- a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageSuggests.java +++ b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageSuggests.java @@ -16,8 +16,8 @@ import java.io.Serializable; -import javax.persistence.Entity; -import javax.persistence.Table; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; /** * PackageSuggests diff --git a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageSupplements.java b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageSupplements.java index f89c9df4320e..91d21ac198fa 100644 --- a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageSupplements.java +++ b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageSupplements.java @@ -16,8 +16,8 @@ import java.io.Serializable; -import javax.persistence.Entity; -import javax.persistence.Table; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; /** * PackageSupplements diff --git a/java/code/src/com/redhat/rhn/domain/rhnpackage/profile/test/ProfileTest.java b/java/code/src/com/redhat/rhn/domain/rhnpackage/profile/test/ProfileTest.java index 9c7dcd4bb866..da175648a306 100644 --- a/java/code/src/com/redhat/rhn/domain/rhnpackage/profile/test/ProfileTest.java +++ b/java/code/src/com/redhat/rhn/domain/rhnpackage/profile/test/ProfileTest.java @@ -80,8 +80,8 @@ public void testProfileEquals() throws Exception { public static Profile lookupByIdAndOrg(Long id, Org org) { Session session = HibernateFactory.getSession(); return (Profile) session.getNamedQuery("Profile.findByIdAndOrg") - .setLong("id", id) - .setLong("org_id", org.getId()) + .setParameter("id", id) + .setParameter("org_id", org.getId()) .uniqueResult(); } @@ -126,8 +126,8 @@ public void testCompatibleServer() throws Exception { session.flush(); Query qry = session.getNamedQuery("Profile.compatibleWithServer"); - qry.setLong("sid", server.getId()); - qry.setLong("org_id", user.getOrg().getId()); + qry.setParameter("sid", server.getId()); + qry.setParameter("org_id", user.getOrg().getId()); List list = qry.list(); assertNotNull(list, "List is null"); assertFalse(list.isEmpty(), "List is empty"); diff --git a/java/code/src/com/redhat/rhn/domain/rhnpackage/profile/test/ProfileTypeTest.java b/java/code/src/com/redhat/rhn/domain/rhnpackage/profile/test/ProfileTypeTest.java index 5ab04b4044ad..0155f5b1bfb4 100644 --- a/java/code/src/com/redhat/rhn/domain/rhnpackage/profile/test/ProfileTypeTest.java +++ b/java/code/src/com/redhat/rhn/domain/rhnpackage/profile/test/ProfileTypeTest.java @@ -73,7 +73,7 @@ public void testFindByLabel() throws Exception { public static ProfileType lookupByLabel(String label) { Session session = HibernateFactory.getSession(); return (ProfileType) session.getNamedQuery("ProfileType.findByLabel") - .setString("label", label) + .setParameter("label", label) //Retrieve from cache if there .setCacheable(true) .uniqueResult(); diff --git a/java/code/src/com/redhat/rhn/domain/role/RoleFactory.java b/java/code/src/com/redhat/rhn/domain/role/RoleFactory.java index 6f4ad8e277b5..d44cd724967b 100644 --- a/java/code/src/com/redhat/rhn/domain/role/RoleFactory.java +++ b/java/code/src/com/redhat/rhn/domain/role/RoleFactory.java @@ -56,7 +56,7 @@ protected Logger getLogger() { public static Role lookupById(Long id) { Session session = HibernateFactory.getSession(); return (Role) session.getNamedQuery("Role.findById") - .setLong("id", id) + .setParameter("id", id) //Retrieve from cache if there .setCacheable(true) .uniqueResult(); @@ -70,7 +70,7 @@ public static Role lookupById(Long id) { public static Role lookupByLabel(String name) { Session session = HibernateFactory.getSession(); return (Role) session.getNamedQuery("Role.findByLabel") - .setString("label", name) + .setParameter("label", name) //Retrieve from cache if there .setCacheable(true) .uniqueResult(); diff --git a/java/code/src/com/redhat/rhn/domain/scc/SCCCachingFactory.java b/java/code/src/com/redhat/rhn/domain/scc/SCCCachingFactory.java index a1842ec2c22a..2708e48d5985 100644 --- a/java/code/src/com/redhat/rhn/domain/scc/SCCCachingFactory.java +++ b/java/code/src/com/redhat/rhn/domain/scc/SCCCachingFactory.java @@ -35,9 +35,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.hibernate.Criteria; -import org.hibernate.Session; -import org.hibernate.criterion.Restrictions; import java.math.BigDecimal; import java.util.ArrayList; @@ -54,10 +51,14 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaDelete; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Root; +import jakarta.persistence.EntityManager; +import jakarta.persistence.NoResultException; +import jakarta.persistence.Query; +import jakarta.persistence.TypedQuery; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaDelete; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Root; /** * Factory class for populating and reading from SCC caching tables. @@ -177,9 +178,10 @@ public static SCCSubscription saveJsonSubscription(SCCSubscriptionJson jsonSub, @SuppressWarnings("unchecked") public static List lookupSubscriptions() { log.debug("Retrieving subscriptions from cache"); - Session session = getSession(); - Criteria c = session.createCriteria(SCCSubscription.class); - return c.list(); + String sql = "SELECT * FROM suseSCCSubscription"; + TypedQuery query + = getSession().createNativeQuery(sql, SCCSubscription.class); + return query.getResultList(); } /** @@ -191,20 +193,29 @@ public static SCCSubscription lookupSubscriptionBySccId(Long id) { if (id == null) { return null; } - Session session = getSession(); - Criteria c = session.createCriteria(SCCSubscription.class); - c.add(Restrictions.eq("sccId", id)); - return (SCCSubscription) c.uniqueResult(); + + // Define the SQL query + String sql = "SELECT * FROM suseSCCSubscription WHERE scc_id = :sccId"; + + // Create and execute the query + TypedQuery query + = getSession().createNativeQuery(sql, SCCSubscription.class); + query.setParameter("sccId", id); + try { + return query.getSingleResult(); + } + catch (NoResultException e) { + return null; + } } /** * Clear all subscriptions from the database. */ public static void clearSubscriptions() { - CriteriaBuilder builder = getSession().getCriteriaBuilder(); - CriteriaDelete delete = builder.createCriteriaDelete(SCCSubscription.class); - delete.from(SCCSubscription.class); - getSession().createQuery(delete).executeUpdate(); - + EntityManager em = getSession(); // Obtain EntityManager + String sql = "DELETE FROM suseSCCSubscription"; + Query query = em.createNativeQuery(sql); + query.executeUpdate(); } /** @@ -214,9 +225,12 @@ public static void clearSubscriptions() { @SuppressWarnings("unchecked") public static List lookupOrderItems() { log.debug("Retrieving orderItems from cache"); - Session session = getSession(); - Criteria c = session.createCriteria(SCCOrderItem.class); - return c.list(); + + String sql = "SELECT * FROM suseSCCOrderItem"; + + TypedQuery query + = getSession().createNativeQuery(sql, SCCOrderItem.class); + return query.getResultList(); } /** diff --git a/java/code/src/com/redhat/rhn/domain/scc/SCCOrderItem.java b/java/code/src/com/redhat/rhn/domain/scc/SCCOrderItem.java index bd5a498d68e8..a0089d34d161 100644 --- a/java/code/src/com/redhat/rhn/domain/scc/SCCOrderItem.java +++ b/java/code/src/com/redhat/rhn/domain/scc/SCCOrderItem.java @@ -27,16 +27,16 @@ import java.util.Date; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.ManyToOne; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.NamedQueries; +import jakarta.persistence.NamedQuery; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; /** * This is a SUSE orderitem as parsed from JSON coming in from SCC. diff --git a/java/code/src/com/redhat/rhn/domain/scc/SCCRegCacheItem.java b/java/code/src/com/redhat/rhn/domain/scc/SCCRegCacheItem.java index 27544771c6ad..239f03f42502 100644 --- a/java/code/src/com/redhat/rhn/domain/scc/SCCRegCacheItem.java +++ b/java/code/src/com/redhat/rhn/domain/scc/SCCRegCacheItem.java @@ -30,20 +30,21 @@ import java.util.Date; import java.util.Optional; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.OneToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Transient; +import jakarta.persistence.Column; +import jakarta.persistence.Convert; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.NamedQueries; +import jakarta.persistence.NamedQuery; +import jakarta.persistence.OneToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; /** * This is a representation of the SCC registration cache. @@ -178,7 +179,7 @@ public Optional getOptCredentials() { * @return true when updating the registration at SCC is required, otherwise false */ @Column(name = "scc_reg_required") - @org.hibernate.annotations.Type(type = "yes_no") + @Convert(converter = org.hibernate.type.YesNoConverter.class) public boolean isSccRegistrationRequired() { return sccRegistrationRequired; } diff --git a/java/code/src/com/redhat/rhn/domain/scc/SCCRepository.java b/java/code/src/com/redhat/rhn/domain/scc/SCCRepository.java index b5cd94a093ee..ae00e2440880 100644 --- a/java/code/src/com/redhat/rhn/domain/scc/SCCRepository.java +++ b/java/code/src/com/redhat/rhn/domain/scc/SCCRepository.java @@ -22,23 +22,23 @@ import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; -import org.hibernate.annotations.Type; import java.util.HashSet; import java.util.Optional; import java.util.Set; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.NamedQuery; -import javax.persistence.OneToMany; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Transient; +import jakarta.persistence.Column; +import jakarta.persistence.Convert; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.NamedQuery; +import jakarta.persistence.OneToMany; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; /** * This is a SUSE repository as parsed from JSON coming in from SCC. @@ -182,7 +182,7 @@ public void setUrl(String urlIn) { * @return the autorefresh */ @Column(name = "autorefresh") - @Type(type = "yes_no") + @Convert(converter = org.hibernate.type.YesNoConverter.class) public boolean isAutorefresh() { return autorefresh; } @@ -218,7 +218,7 @@ public void setId(Long idIn) { /** * @return the signed */ - @Type(type = "yes_no") + @Convert(converter = org.hibernate.type.YesNoConverter.class) public boolean isSigned() { return signed; } @@ -233,7 +233,7 @@ public void setSigned(boolean signedIn) { /** * @return Return true if this is for installer updates */ - @Type(type = "yes_no") + @Convert(converter = org.hibernate.type.YesNoConverter.class) @Column(name = "installer_updates") public boolean isInstallerUpdates() { return installerUpdates; diff --git a/java/code/src/com/redhat/rhn/domain/scc/SCCRepositoryAuth.java b/java/code/src/com/redhat/rhn/domain/scc/SCCRepositoryAuth.java index d32fbf254af8..fbee662eefb4 100644 --- a/java/code/src/com/redhat/rhn/domain/scc/SCCRepositoryAuth.java +++ b/java/code/src/com/redhat/rhn/domain/scc/SCCRepositoryAuth.java @@ -28,22 +28,22 @@ import java.util.Optional; import java.util.function.Function; -import javax.persistence.Column; -import javax.persistence.DiscriminatorColumn; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.NamedNativeQueries; -import javax.persistence.NamedNativeQuery; -import javax.persistence.OneToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Transient; +import jakarta.persistence.Column; +import jakarta.persistence.DiscriminatorColumn; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Inheritance; +import jakarta.persistence.InheritanceType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.NamedNativeQueries; +import jakarta.persistence.NamedNativeQuery; +import jakarta.persistence.OneToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; /** * This is a SUSE repository as parsed from JSON coming in from SCC. diff --git a/java/code/src/com/redhat/rhn/domain/scc/SCCRepositoryBasicAuth.java b/java/code/src/com/redhat/rhn/domain/scc/SCCRepositoryBasicAuth.java index f56be9dcdb25..8a88581bb974 100644 --- a/java/code/src/com/redhat/rhn/domain/scc/SCCRepositoryBasicAuth.java +++ b/java/code/src/com/redhat/rhn/domain/scc/SCCRepositoryBasicAuth.java @@ -27,9 +27,9 @@ import java.util.Optional; import java.util.function.Function; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.Transient; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.Transient; /** * This is a SUSE repository as parsed from JSON coming in from SCC. diff --git a/java/code/src/com/redhat/rhn/domain/scc/SCCRepositoryCloudRmtAuth.java b/java/code/src/com/redhat/rhn/domain/scc/SCCRepositoryCloudRmtAuth.java index 0520d958d07d..59ebe281bdbb 100644 --- a/java/code/src/com/redhat/rhn/domain/scc/SCCRepositoryCloudRmtAuth.java +++ b/java/code/src/com/redhat/rhn/domain/scc/SCCRepositoryCloudRmtAuth.java @@ -30,9 +30,9 @@ import java.util.Optional; import java.util.function.Function; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.Transient; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.Transient; /** * This is a SUSE repository loaded from a PAYG instance and linked to a cloud rmt server diff --git a/java/code/src/com/redhat/rhn/domain/scc/SCCRepositoryNoAuth.java b/java/code/src/com/redhat/rhn/domain/scc/SCCRepositoryNoAuth.java index e35ac618472a..dd57c403a516 100644 --- a/java/code/src/com/redhat/rhn/domain/scc/SCCRepositoryNoAuth.java +++ b/java/code/src/com/redhat/rhn/domain/scc/SCCRepositoryNoAuth.java @@ -21,9 +21,9 @@ import java.util.function.Function; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.Transient; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.Transient; /** * This is a SUSE repository as parsed from JSON coming in from SCC. diff --git a/java/code/src/com/redhat/rhn/domain/scc/SCCRepositoryTokenAuth.java b/java/code/src/com/redhat/rhn/domain/scc/SCCRepositoryTokenAuth.java index 6857b3ab7d3c..84c24c3a52c4 100644 --- a/java/code/src/com/redhat/rhn/domain/scc/SCCRepositoryTokenAuth.java +++ b/java/code/src/com/redhat/rhn/domain/scc/SCCRepositoryTokenAuth.java @@ -22,10 +22,10 @@ import java.net.URISyntaxException; import java.util.function.Function; -import javax.persistence.Column; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.Transient; +import jakarta.persistence.Column; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.Transient; /** * This is a SUSE repository as parsed from JSON coming in from SCC. diff --git a/java/code/src/com/redhat/rhn/domain/scc/SCCSubscription.java b/java/code/src/com/redhat/rhn/domain/scc/SCCSubscription.java index 8b406be73789..a3405680b748 100644 --- a/java/code/src/com/redhat/rhn/domain/scc/SCCSubscription.java +++ b/java/code/src/com/redhat/rhn/domain/scc/SCCSubscription.java @@ -27,19 +27,19 @@ import java.util.HashSet; import java.util.Set; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.JoinTable; -import javax.persistence.ManyToMany; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.JoinTable; +import jakarta.persistence.ManyToMany; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; /** * This is a subscription representation in the DB from SCC. diff --git a/java/code/src/com/redhat/rhn/domain/server/MinionServerFactory.java b/java/code/src/com/redhat/rhn/domain/server/MinionServerFactory.java index 5ed74b160184..37f5007c9de5 100644 --- a/java/code/src/com/redhat/rhn/domain/server/MinionServerFactory.java +++ b/java/code/src/com/redhat/rhn/domain/server/MinionServerFactory.java @@ -27,26 +27,25 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.hibernate.Criteria; import org.hibernate.Session; -import org.hibernate.criterion.CriteriaSpecification; -import org.hibernate.criterion.Projections; -import org.hibernate.criterion.Restrictions; import org.hibernate.query.Query; import java.math.BigDecimal; +import java.util.Arrays; import java.util.List; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Join; -import javax.persistence.criteria.JoinType; -import javax.persistence.criteria.Predicate; -import javax.persistence.criteria.Root; +import jakarta.persistence.NoResultException; +import jakarta.persistence.TypedQuery; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Join; +import jakarta.persistence.criteria.JoinType; +import jakarta.persistence.criteria.Predicate; +import jakarta.persistence.criteria.Root; /** * MinionFactory - the singleton class used to fetch and store @@ -58,15 +57,22 @@ public class MinionServerFactory extends HibernateFactory { /** * Lookup all Servers that belong to an org + * * @param orgId the org id to search for * @return the Server found */ public static List lookupByOrg(Long orgId) { - return HibernateFactory.getSession() - .createCriteria(MinionServer.class) - .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY) - .add(Restrictions.eq("org.id", orgId)) - .list(); + if (orgId == null) { + return List.of(); + } + + String sql = "SELECT DISTINCT * FROM minion_server WHERE org_id = :orgId"; + + TypedQuery query + = getSession().createNativeQuery(sql, MinionServer.class); + query.setParameter("orgId", orgId); + + return query.getResultList(); } /** @@ -92,10 +98,23 @@ protected Logger getLogger() { * @return server corresponding to the given machine_id */ public static Optional findByMachineId(String machineId) { - Session session = getSession(); - Criteria criteria = session.createCriteria(MinionServer.class); - criteria.add(Restrictions.eq("machineId", machineId)); - return Optional.ofNullable((MinionServer) criteria.uniqueResult()); + if (machineId == null) { + return Optional.empty(); + } + String sql = "SELECT * FROM minion_server WHERE machine_id = :machineId"; + + TypedQuery query + = getSession().createNativeQuery(sql, MinionServer.class); + query.setParameter("machineId", machineId); + + try { + // Attempt to get a single result + MinionServer result = query.getSingleResult(); + return Optional.ofNullable(result); + } + catch (NoResultException e) { + return Optional.empty(); // Return empty if no result is found + } } /** @@ -105,10 +124,11 @@ public static Optional findByMachineId(String machineId) { * @return server corresponding to the given machine_id */ public static Optional findByMinionId(String minionId) { - Session session = getSession(); - Criteria criteria = session.createCriteria(MinionServer.class); - criteria.add(Restrictions.eq("minionId", minionId)); - return Optional.ofNullable((MinionServer) criteria.uniqueResult()); + String sql = "SELECT * FROM minion_server WHERE minion_id = :minionId"; + MinionServer result + = (MinionServer) getSession().createNativeQuery(sql, MinionServer.class) + .setParameter("minionId", minionId).getSingleResult(); + return Optional.ofNullable(result); } /** @@ -118,23 +138,10 @@ public static Optional findByMinionId(String minionId) { */ @SuppressWarnings("unchecked") public static List listMinions() { - return getSession().createCriteria(MinionServer.class) - .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY) - .list(); - } - - /** - * Find all minion ids that belong to an organization. - * - * @param orgId the organization id - * @return a list of minions ids belonging to the given organization - */ - public static List findMinionIdsByOrgId(Long orgId) { - return getSession().createCriteria(MinionServer.class) - .setProjection(Projections.property("minionId")) - .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY) - .add(Restrictions.eq("org.id", orgId)) - .list(); + String sql = "SELECT DISTINCT * FROM minion_server"; + TypedQuery query + = getSession().createNativeQuery(sql, MinionServer.class); + return query.getResultList(); } /** @@ -169,10 +176,12 @@ public static List lookupByMinionIds(Set minionIds) { return emptyList(); } else { - return HibernateFactory.getSession().createCriteria(MinionServer.class) - .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY) - .add(Restrictions.in("minionId", minionIds)) - .list(); + CriteriaBuilder cb = getSession().getCriteriaBuilder(); + CriteriaQuery query = cb.createQuery(MinionServer.class); + Root root = query.from(MinionServer.class); + Predicate predicate = cb.equal(root.get("minionId"), minionIds); + query.select(root).where(predicate).distinct(true); + return getSession().createQuery(query).getResultList(); } } @@ -181,11 +190,13 @@ public static List lookupByMinionIds(Set minionIds) { * @return map of SSH minion id and its contact method */ public static List listSSHMinions() { - return HibernateFactory.getSession().createCriteria(MinionServer.class) - .createAlias("contactMethod", "m") - .add(Restrictions.in("m.label", - "ssh-push", "ssh-push-tunnel")) - .list(); + String sql = "SELECT ms.* FROM minion_server ms " + + "JOIN contact_method cm ON ms.contact_method_id = cm.id " + + "WHERE cm.label IN (:labels)"; + + return HibernateFactory.getSession().createNativeQuery(sql, MinionServer.class) + .setParameter("labels", Arrays.asList("ssh-push", "ssh-push-tunnel")) + .getResultList(); } /** diff --git a/java/code/src/com/redhat/rhn/domain/server/Pillar.java b/java/code/src/com/redhat/rhn/domain/server/Pillar.java index 5ecac5f9152d..95578d36856c 100644 --- a/java/code/src/com/redhat/rhn/domain/server/Pillar.java +++ b/java/code/src/com/redhat/rhn/domain/server/Pillar.java @@ -18,29 +18,26 @@ import com.redhat.rhn.domain.Identifiable; import com.redhat.rhn.domain.org.Org; -import com.vladmihalcea.hibernate.type.json.JsonType; - import org.hibernate.annotations.Type; -import org.hibernate.annotations.TypeDef; -import org.hibernate.annotations.TypeDefs; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.TreeMap; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Root; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Root; +import io.hypersistence.utils.hibernate.type.json.JsonType; /** * Pillar - Class representation of the table suseSaltPillars entries @@ -48,9 +45,6 @@ * https://github.com/uyuni-project/uyuni-rfc/pull/51 */ -@TypeDefs({ - @TypeDef(name = "json", typeClass = JsonType.class) -}) @Entity @Table(name = "suseSaltPillar") public class Pillar implements Identifiable { @@ -76,7 +70,7 @@ public class Pillar implements Identifiable { @Column(name = "category") private String category; - @Type(type = "json") + @Type(JsonType.class) @Column(columnDefinition = "jsonb") private Map pillar = new TreeMap<>(); diff --git a/java/code/src/com/redhat/rhn/domain/server/PinnedSubscriptionFactory.java b/java/code/src/com/redhat/rhn/domain/server/PinnedSubscriptionFactory.java index 7330cdaac2d0..d653d304a041 100644 --- a/java/code/src/com/redhat/rhn/domain/server/PinnedSubscriptionFactory.java +++ b/java/code/src/com/redhat/rhn/domain/server/PinnedSubscriptionFactory.java @@ -20,10 +20,14 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.hibernate.criterion.Restrictions; import java.util.List; +import jakarta.persistence.TypedQuery; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Predicate; +import jakarta.persistence.criteria.Root; /** * A factory for creating PinnedSubscription objects. @@ -69,7 +73,11 @@ protected Logger getLogger() { */ @SuppressWarnings("unchecked") public List listPinnedSubscriptions() { - return getSession().createCriteria(PinnedSubscription.class).list(); + String sql = "SELECT * FROM susePinnedSubscription"; + + TypedQuery query + = getSession().createNativeQuery(sql, PinnedSubscription.class); + return query.getResultList(); } /** @@ -96,7 +104,7 @@ public void remove(PinnedSubscription subscription) { public void cleanStalePins() { getSession() .getNamedQuery("PinnedSubscription.cleanStalePins") - .setLong("selfSystemId", MatcherJsonIO.SELF_SYSTEM_ID) + .setParameter("selfSystemId", MatcherJsonIO.SELF_SYSTEM_ID) .executeUpdate(); } @@ -106,10 +114,10 @@ public void cleanStalePins() { * @return PinnedSubscription object */ public PinnedSubscription lookupById(Long id) { + String sql = "SELECT * FROM susePinnedSubscription WHERE id = :id"; return (PinnedSubscription) getSession() - .createCriteria(PinnedSubscription.class) - .add(Restrictions.eq("id", id)) - .uniqueResult(); + .createNativeQuery(sql, PinnedSubscription.class).setParameter("id", id) + .getSingleResult(); } /** @@ -120,10 +128,17 @@ public PinnedSubscription lookupById(Long id) { */ public PinnedSubscription lookupBySystemIdAndSubscriptionId(Long systemId, Long subscriptionId) { - return (PinnedSubscription) getSession() - .createCriteria(PinnedSubscription.class) - .add(Restrictions.eq("systemId", systemId)) - .add(Restrictions.eq("subscriptionId", subscriptionId)) - .uniqueResult(); + + CriteriaBuilder cb = getSession().getCriteriaBuilder(); + + CriteriaQuery query = cb.createQuery(PinnedSubscription.class); + + Root root = query.from(PinnedSubscription.class); + + Predicate predicate = cb.equal(root.get("systemId"), systemId); + predicate = cb.and(predicate, cb.equal(root.get("subscriptionId"), subscriptionId)); + + query.select(root).where(predicate); + return getSession().createQuery(query).uniqueResult(); } } diff --git a/java/code/src/com/redhat/rhn/domain/server/ServerAppStream.java b/java/code/src/com/redhat/rhn/domain/server/ServerAppStream.java index 66e187d7ddd6..dfcff7bd2d54 100644 --- a/java/code/src/com/redhat/rhn/domain/server/ServerAppStream.java +++ b/java/code/src/com/redhat/rhn/domain/server/ServerAppStream.java @@ -16,15 +16,15 @@ import java.util.Map; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; @Entity @Table(name = "suseServerAppstream") diff --git a/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java b/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java index 767c19f0272f..c08af42c62ca 100644 --- a/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java +++ b/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java @@ -54,13 +54,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.hibernate.Criteria; import org.hibernate.Session; -import org.hibernate.criterion.DetachedCriteria; -import org.hibernate.criterion.MatchMode; -import org.hibernate.criterion.Projections; -import org.hibernate.criterion.Restrictions; -import org.hibernate.criterion.Subqueries; import org.hibernate.query.Query; import org.hibernate.type.StandardBasicTypes; @@ -78,12 +72,13 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import javax.persistence.Tuple; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.JoinType; -import javax.persistence.criteria.Path; -import javax.persistence.criteria.Root; +import jakarta.persistence.Tuple; +import jakarta.persistence.TypedQuery; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.JoinType; +import jakarta.persistence.criteria.Path; +import jakarta.persistence.criteria.Root; /** * ServerFactory - the singleton class used to fetch and store @@ -202,53 +197,45 @@ public static List lookupStorageDevicesByServer(Server s) { @SuppressWarnings("unchecked") public static Optional lookupProxyServer(String name) { boolean nameIsFullyQualified = name.contains("."); - if (!nameIsFullyQualified) { - log.warn("Specified master name \"{}\" is not fully-qualified,proxy attachment might not be correct", name); - log.warn("Please use a FQDN in /etc/salt/minion.d/susemanager.conf"); - } - - DetachedCriteria proxyIds = DetachedCriteria.forClass(ProxyInfo.class) - .setProjection(Projections.property("server.id")); - - Optional result = findByFqdn(name); + Optional result = Optional.empty(); + result = findByFqdn(name); if (result.isPresent()) { return result; } - result = HibernateFactory.getSession() - .createCriteria(Server.class) - .add(Subqueries.propertyIn("id", proxyIds)) - .add(Restrictions.eq("hostname", name)) - .list() - .stream() - .findFirst(); - + String sql + = "SELECT * FROM rhnServer WHERE hostname = :hostname AND id IN (SELECT server_id FROM rhnProxyInfo)"; + TypedQuery query + = HibernateFactory.getSession().createNativeQuery(sql, Server.class); + query.setParameter("hostname", name); + List servers = query.getResultList(); + result = servers.stream().findFirst(); if (result.isPresent()) { return result; } - // precise search did not work, try imprecise if (nameIsFullyQualified) { - String srippedHostname = name.split("\\.")[0]; - - return HibernateFactory.getSession() - .createCriteria(Server.class) - .add(Subqueries.propertyIn("id", proxyIds)) - .add(Restrictions.eq("hostname", srippedHostname)) - .list() - .stream() - .findFirst(); + String strippedHostname = name.split("\\.")[0]; + sql = "SELECT * FROM rhnServer WHERE hostname = :hostname AND id IN" + + "(SELECT server_id FROM rhnProxyInfo)"; + query = HibernateFactory.getSession().createNativeQuery(sql, Server.class); + query.setParameter("hostname", strippedHostname); + servers = query.getResultList(); + result = servers.stream().findFirst(); + if (result.isPresent()) { + return result; + } } else { - return HibernateFactory.getSession() - .createCriteria(Server.class) - .add(Subqueries.propertyIn("id", proxyIds)) - .add(Restrictions.like("hostname", name + ".", MatchMode.START)) - .list() - .stream() - .findFirst(); + sql = "SELECT * FROM rhnServer WHERE hostname LIKE :hostnamePattern AND " + + "id IN (SELECT server_id FROM rhnProxyInfo)"; + query = HibernateFactory.getSession().createNativeQuery(sql, Server.class); + query.setParameter("hostnamePattern", name + "%"); + servers = query.getResultList(); + result = servers.stream().findFirst(); } + return result; } /** @@ -756,9 +743,11 @@ public static Server lookupById(Long id) { */ @SuppressWarnings("unchecked") public static Server lookupForeignSystemByDigitalServerId(String id) { - Criteria criteria = getSession().createCriteria(Server.class); - criteria.add(Restrictions.eq("digitalServerId", id)); - for (Server server : (List) criteria.list()) { + String sql = "SELECT * FROM Server WHERE rhnServer = :id"; + List servers = getSession().createNativeQuery(sql, Server.class) + .setParameter("id", id).getResultList(); + + for (Server server : servers) { if (server.hasEntitlement(EntitlementManager.getByName("foreign_entitled"))) { return server; } @@ -793,7 +782,7 @@ public static List lookupByServerIds(List ids, Strin */ public static ServerGroupType lookupServerGroupTypeByLabel(String label) { return (ServerGroupType) HibernateFactory.getSession().getNamedQuery("ServerGroupType.findByLabel") - .setString("label", label) + .setParameter("label", label) // Retrieve from cache if there .setCacheable(true).uniqueResult(); @@ -897,7 +886,7 @@ private static void updateServerPerms(Server server) { public static ServerArch lookupServerArchByLabel(String label) { Session session = HibernateFactory.getSession(); return (ServerArch) session.getNamedQuery("ServerArch.findByLabel") - .setString("label", label) + .setParameter("label", label) // Retrieve from cache if there .setCacheable(true).uniqueResult(); } @@ -923,7 +912,7 @@ public static ServerArch lookupServerArchByName(String name) { public static CPUArch lookupCPUArchByName(String name) { Session session = HibernateFactory.getSession(); return (CPUArch) session.getNamedQuery("CPUArch.findByName") - .setString("name", name) + .setParameter("name", name) // Retrieve from cache if there .setCacheable(true).uniqueResult(); } @@ -1299,7 +1288,7 @@ public static void removeTagFromSnapshot(Long serverId, SnapshotTag tag) { */ public static SnapshotTag lookupSnapshotTagbyName(String tagName) { return (SnapshotTag) HibernateFactory.getSession().getNamedQuery("SnapshotTag.lookupByTagName") - .setString("tag_name", tagName) + .setParameter("tag_name", tagName) // Do not use setCacheable(true), as tag deletion will // usually end up making this query's output out of date .uniqueResult(); @@ -1311,7 +1300,7 @@ public static SnapshotTag lookupSnapshotTagbyName(String tagName) { */ public static SnapshotTag lookupSnapshotTagbyId(Long tagId) { return (SnapshotTag) HibernateFactory.getSession().getNamedQuery("SnapshotTag.lookupById") - .setLong("id", tagId) + .setParameter("id", tagId) // Do not use setCacheable(true), as tag deletion will // usually end up making this query's output out of date .uniqueResult(); @@ -1340,10 +1329,17 @@ public static ContactMethod findContactMethodById(Long id) { * @return contact method with the given label */ public static ContactMethod findContactMethodByLabel(String label) { - Session session = getSession(); - Criteria criteria = session.createCriteria(ContactMethod.class); - criteria.add(Restrictions.eq("label", label)); - return (ContactMethod) criteria.uniqueResult(); + String sql = "SELECT * FROM suseServerContactMethod WHERE label = :label"; + TypedQuery query + = getSession().createNativeQuery(sql, ContactMethod.class); + query.setParameter("label", label); + + // Execute the query and get the result + List results = query.getResultList(); + if (!results.isEmpty()) { + return results.get(0); // Get the first result if available + } + return null; } /** @@ -1499,10 +1495,10 @@ public static void delete(Device device) { * @return the server if any */ public static Optional findByMachineId(String machineId) { - Session session = getSession(); - Criteria criteria = session.createCriteria(Server.class); - criteria.add(Restrictions.eq("machineId", machineId)); - return Optional.ofNullable((Server) criteria.uniqueResult()); + String jpql = "SELECT s FROM rhnServer s WHERE s.machineId = :machineId"; + TypedQuery query = getSession().createQuery(jpql, Server.class); + query.setParameter("machineId", machineId); + return Optional.ofNullable(query.getResultStream().findFirst().orElse(null)); } /** @@ -1511,9 +1507,12 @@ public static Optional findByMachineId(String machineId) { * @return a {@link Capability} with the given name */ public static Optional findCapability(String name) { - Criteria criteria = getSession().createCriteria(Capability.class); - criteria.add(Restrictions.eq("name", name)); - return Optional.ofNullable((Capability) criteria.uniqueResult()); + String sql = "SELECT * FROM Capability WHERE name = :name"; + Capability capability + = (Capability) getSession().createNativeQuery(sql, Capability.class) + .setParameter("name", name).uniqueResult(); + return Optional.ofNullable(capability); + } /** diff --git a/java/code/src/com/redhat/rhn/domain/server/ServerGroupFactory.java b/java/code/src/com/redhat/rhn/domain/server/ServerGroupFactory.java index 9c67e62c8468..f60f2566e478 100644 --- a/java/code/src/com/redhat/rhn/domain/server/ServerGroupFactory.java +++ b/java/code/src/com/redhat/rhn/domain/server/ServerGroupFactory.java @@ -42,9 +42,9 @@ import java.util.Optional; import java.util.stream.Collectors; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Root; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Root; /** * diff --git a/java/code/src/com/redhat/rhn/domain/server/VirtualInstanceFactory.java b/java/code/src/com/redhat/rhn/domain/server/VirtualInstanceFactory.java index 87d9707e0a5b..2a2a0ad73c0b 100644 --- a/java/code/src/com/redhat/rhn/domain/server/VirtualInstanceFactory.java +++ b/java/code/src/com/redhat/rhn/domain/server/VirtualInstanceFactory.java @@ -251,7 +251,7 @@ public Set findGuestsWithoutAHostByOrg(Org org) { */ public VirtualInstanceType getParaVirtType() { return (VirtualInstanceType)getSession().getNamedQuery( - "VirtualInstanceType.findByLabel").setString("label", "para_virtualized") + "VirtualInstanceType.findByLabel").setParameter("label", "para_virtualized") .setCacheable(true).uniqueResult(); } @@ -262,7 +262,7 @@ public VirtualInstanceType getParaVirtType() { */ public VirtualInstanceType getFullyVirtType() { return (VirtualInstanceType)getSession().getNamedQuery( - "VirtualInstanceType.findByLabel").setString("label", "fully_virtualized") + "VirtualInstanceType.findByLabel").setParameter("label", "fully_virtualized") .setCacheable(true).uniqueResult(); } @@ -274,7 +274,7 @@ public VirtualInstanceType getFullyVirtType() { */ public VirtualInstanceType getVirtualInstanceType(String label) { return (VirtualInstanceType)getSession().getNamedQuery( - "VirtualInstanceType.findByLabel").setString("label", label) + "VirtualInstanceType.findByLabel").setParameter("label", label) .setCacheable(true).uniqueResult(); } @@ -285,7 +285,7 @@ public VirtualInstanceType getVirtualInstanceType(String label) { */ public VirtualInstanceState getRunningState() { return (VirtualInstanceState)getSession().getNamedQuery( - "VirtualInstanceState.findByLabel").setString("label", "running") + "VirtualInstanceState.findByLabel").setParameter("label", "running") .uniqueResult(); } @@ -296,7 +296,7 @@ public VirtualInstanceState getRunningState() { */ public VirtualInstanceState getStoppedState() { return (VirtualInstanceState)getSession().getNamedQuery( - "VirtualInstanceState.findByLabel").setString("label", "stopped") + "VirtualInstanceState.findByLabel").setParameter("label", "stopped") .uniqueResult(); } @@ -307,7 +307,7 @@ public VirtualInstanceState getStoppedState() { */ public VirtualInstanceState getPausedState() { return (VirtualInstanceState)getSession().getNamedQuery( - "VirtualInstanceState.findByLabel").setString("label", "paused") + "VirtualInstanceState.findByLabel").setParameter("label", "paused") .uniqueResult(); } @@ -318,7 +318,7 @@ public VirtualInstanceState getPausedState() { */ public VirtualInstanceState getCrashedState() { return (VirtualInstanceState)getSession().getNamedQuery( - "VirtualInstanceState.findByLabel").setString("label", "crashed") + "VirtualInstanceState.findByLabel").setParameter("label", "crashed") .uniqueResult(); } @@ -329,7 +329,7 @@ public VirtualInstanceState getCrashedState() { */ public VirtualInstanceState getUnknownState() { return (VirtualInstanceState)getSession().getNamedQuery( - "VirtualInstanceState.findByLabel").setString("label", "unknown") + "VirtualInstanceState.findByLabel").setParameter("label", "unknown") .uniqueResult(); } @@ -341,7 +341,7 @@ public VirtualInstanceState getUnknownState() { */ public Optional getState(String label) { return Optional.ofNullable((VirtualInstanceState)getSession().getNamedQuery( - "VirtualInstanceState.findByLabel").setString("label", label) + "VirtualInstanceState.findByLabel").setParameter("label", label) .uniqueResult()); } diff --git a/java/code/src/com/redhat/rhn/domain/server/ansible/AnsiblePath.java b/java/code/src/com/redhat/rhn/domain/server/ansible/AnsiblePath.java index ab02470cbc9d..2548bb83d47a 100644 --- a/java/code/src/com/redhat/rhn/domain/server/ansible/AnsiblePath.java +++ b/java/code/src/com/redhat/rhn/domain/server/ansible/AnsiblePath.java @@ -25,20 +25,20 @@ import java.nio.file.Path; -import javax.persistence.Column; -import javax.persistence.Convert; -import javax.persistence.DiscriminatorColumn; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Transient; +import jakarta.persistence.Column; +import jakarta.persistence.Convert; +import jakarta.persistence.DiscriminatorColumn; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Inheritance; +import jakarta.persistence.InheritanceType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; /** * Represents path to an Ansible entity (inventory, playbook). diff --git a/java/code/src/com/redhat/rhn/domain/server/ansible/InventoryPath.java b/java/code/src/com/redhat/rhn/domain/server/ansible/InventoryPath.java index 0ad82c75186b..c8f037dccf9c 100644 --- a/java/code/src/com/redhat/rhn/domain/server/ansible/InventoryPath.java +++ b/java/code/src/com/redhat/rhn/domain/server/ansible/InventoryPath.java @@ -17,9 +17,9 @@ import com.redhat.rhn.domain.server.MinionServer; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.Transient; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.Transient; /** * Ansible Inventory Path diff --git a/java/code/src/com/redhat/rhn/domain/server/ansible/PlaybookPath.java b/java/code/src/com/redhat/rhn/domain/server/ansible/PlaybookPath.java index 314032475d31..a8840a363abb 100644 --- a/java/code/src/com/redhat/rhn/domain/server/ansible/PlaybookPath.java +++ b/java/code/src/com/redhat/rhn/domain/server/ansible/PlaybookPath.java @@ -17,9 +17,9 @@ import com.redhat.rhn.domain.server.MinionServer; -import javax.persistence.DiscriminatorValue; -import javax.persistence.Entity; -import javax.persistence.Transient; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import jakarta.persistence.Transient; /** * Ansible Playbook path diff --git a/java/code/src/com/redhat/rhn/domain/server/test/LocationTest.java b/java/code/src/com/redhat/rhn/domain/server/test/LocationTest.java index 9b2b2c6f1b35..b53263cd14df 100644 --- a/java/code/src/com/redhat/rhn/domain/server/test/LocationTest.java +++ b/java/code/src/com/redhat/rhn/domain/server/test/LocationTest.java @@ -57,7 +57,7 @@ public void testLocation() throws Exception { Session session = HibernateFactory.getSession(); loc2 = (Location) session.getNamedQuery("Location.findById") - .setLong("id", loc1.getId()) + .setParameter("id", loc1.getId()) .uniqueResult(); assertEquals(loc1, loc2); } diff --git a/java/code/src/com/redhat/rhn/domain/server/test/NoteTest.java b/java/code/src/com/redhat/rhn/domain/server/test/NoteTest.java index 0b1634a518a1..26bab402048c 100644 --- a/java/code/src/com/redhat/rhn/domain/server/test/NoteTest.java +++ b/java/code/src/com/redhat/rhn/domain/server/test/NoteTest.java @@ -50,7 +50,7 @@ public void testEquals() throws Exception { Session session = HibernateFactory.getSession(); note2 = (Note) session.getNamedQuery("Note.findById") - .setLong("id", note1.getId()) + .setParameter("id", note1.getId()) .uniqueResult(); assertEquals(note1, note2); diff --git a/java/code/src/com/redhat/rhn/domain/server/test/VirtualInstanceFactoryTest.java b/java/code/src/com/redhat/rhn/domain/server/test/VirtualInstanceFactoryTest.java index 0a495363ae87..c7c76f1d3dac 100644 --- a/java/code/src/com/redhat/rhn/domain/server/test/VirtualInstanceFactoryTest.java +++ b/java/code/src/com/redhat/rhn/domain/server/test/VirtualInstanceFactoryTest.java @@ -43,7 +43,6 @@ import org.apache.commons.collections.CollectionUtils; import org.hibernate.Session; -import org.hibernate.criterion.Restrictions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -51,6 +50,11 @@ import java.util.List; import java.util.Set; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Predicate; +import jakarta.persistence.criteria.Root; + /** * VirtualInstanceFactoryTest */ @@ -297,12 +301,19 @@ public void testLookupGuestByUuid() throws Exception { @Test public void testLookupHostVirtualInstanceByHostId() throws Exception { - Server host = ServerTestUtils.createVirtHostWithGuest(systemEntitlementManager); + Server host = ServerTestUtils + .createVirtHostWithGuest(systemEntitlementManager); + CriteriaBuilder cb = HibernateFactory.getSession().getCriteriaBuilder(); + CriteriaQuery query + = cb.createQuery(VirtualInstance.class); + + Root root = query.from(VirtualInstance.class); + + Predicate predicate = cb.equal(root.get("hostSystem"), host); + predicate = cb.and(predicate, cb.equal(root.get("guestSystem"), null)); - VirtualInstance fromDb = (VirtualInstance) HibernateFactory.getSession() - .createCriteria(VirtualInstance.class) - .add(Restrictions.eq("hostSystem", host)) - .add(Restrictions.eq("guestSystem", null)) + query.select(root).where(predicate); + VirtualInstance fromDb = HibernateFactory.getSession().createQuery(query) .uniqueResult(); VirtualInstance hostVirtInstance = VirtualInstanceFactory.getInstance() diff --git a/java/code/src/com/redhat/rhn/domain/server/virtualhostmanager/VirtualHostManagerFactory.java b/java/code/src/com/redhat/rhn/domain/server/virtualhostmanager/VirtualHostManagerFactory.java index 7d1076b6a760..5bfff192755d 100644 --- a/java/code/src/com/redhat/rhn/domain/server/virtualhostmanager/VirtualHostManagerFactory.java +++ b/java/code/src/com/redhat/rhn/domain/server/virtualhostmanager/VirtualHostManagerFactory.java @@ -30,8 +30,6 @@ import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.hibernate.criterion.Order; -import org.hibernate.criterion.Restrictions; import java.io.FileOutputStream; import java.io.IOException; @@ -47,9 +45,10 @@ import java.util.Optional; import java.util.Set; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Root; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Predicate; +import jakarta.persistence.criteria.Root; /** * Singleton representing Virtual Host Manager hibernate factory. @@ -106,10 +105,12 @@ protected Logger getLogger() { * exist */ public VirtualHostManager lookupByLabel(String label) { - return (VirtualHostManager) getSession() - .createCriteria(VirtualHostManager.class) - .add(Restrictions.eq("label", label)) - .uniqueResult(); + CriteriaBuilder cb = getSession().getCriteriaBuilder(); + CriteriaQuery query = cb.createQuery(VirtualHostManager.class); + Root root = query.from(VirtualHostManager.class); + Predicate predicate = cb.equal(root.get("label"), label); + query.select(root).where(predicate); + return getSession().createQuery(query).uniqueResult(); } /** @@ -130,11 +131,17 @@ public Optional lookupById(Long id) { * exist */ public VirtualHostManager lookupByIdAndOrg(Long id, Org org) { - return (VirtualHostManager) getSession() - .createCriteria(VirtualHostManager.class) - .add(Restrictions.eq("org", org)) - .add(Restrictions.eq("id", id)) - .uniqueResult(); + CriteriaBuilder cb = getSession().getCriteriaBuilder(); + + CriteriaQuery query = cb.createQuery(VirtualHostManager.class); + + Root root = query.from(VirtualHostManager.class); + + Predicate predicate = cb.equal(root.get("org"), org); + predicate = cb.and(predicate, cb.equal(root.get("id"), id)); + + query.select(root).where(predicate); + return getSession().createQuery(query).uniqueResult(); } /** @@ -163,11 +170,17 @@ public List lookupByIdsAndOrg(List ids, Org org) { * exist */ public VirtualHostManager lookupByLabelAndOrg(String label, Org org) { - return (VirtualHostManager) getSession() - .createCriteria(VirtualHostManager.class) - .add(Restrictions.eq("org", org)) - .add(Restrictions.eq("label", label)) - .uniqueResult(); + CriteriaBuilder cb = getSession().getCriteriaBuilder(); + + CriteriaQuery query = cb.createQuery(VirtualHostManager.class); + + Root root = query.from(VirtualHostManager.class); + + Predicate predicate = cb.equal(root.get("org"), org); + predicate = cb.and(predicate, cb.equal(root.get("label"), label)); + + query.select(root).where(predicate); + return getSession().createQuery(query).uniqueResult(); } /** @@ -177,11 +190,18 @@ public VirtualHostManager lookupByLabelAndOrg(String label, Org org) { */ @SuppressWarnings("unchecked") public List listVirtualHostManagers(Org org) { - return getSession() - .createCriteria(VirtualHostManager.class) - .add(Restrictions.eq("org", org)) - .addOrder(Order.asc("label")) - .list(); + + CriteriaBuilder cb = getSession().getCriteriaBuilder(); + + CriteriaQuery query = cb.createQuery(VirtualHostManager.class); + + Root root = query.from(VirtualHostManager.class); + + Predicate predicate = cb.equal(root.get("org"), org); + + query.select(root).where(predicate); + query.orderBy(cb.asc(root.get("label"))); + return getSession().createQuery(query).getResultList(); } /** @@ -190,9 +210,15 @@ public List listVirtualHostManagers(Org org) { */ @SuppressWarnings("unchecked") public List listVirtualHostManagers() { - return getSession() - .createCriteria(VirtualHostManager.class) - .list(); + CriteriaBuilder cb = getSession().getCriteriaBuilder(); + + CriteriaQuery query = cb.createQuery(VirtualHostManager.class); + + Root root = query.from(VirtualHostManager.class); + + query.select(root); + + return getSession().createQuery(query).getResultList(); } /** @@ -473,10 +499,20 @@ private VHMCredentials createCredentialsFromParams(Map params) { */ public Optional lookupNodeInfoByIdentifier( String identifier) { - VirtualHostManagerNodeInfo result = (VirtualHostManagerNodeInfo) getSession() - .createCriteria(VirtualHostManagerNodeInfo.class) - .add(Restrictions.eq("identifier", identifier)) - .uniqueResult(); + + CriteriaBuilder cb = getSession().getCriteriaBuilder(); + + CriteriaQuery query = + cb.createQuery(VirtualHostManagerNodeInfo.class); + + Root root = + query.from(VirtualHostManagerNodeInfo.class); + + Predicate predicate = cb.equal(root.get("identifier"), identifier); + + query.select(root).where(predicate); + + VirtualHostManagerNodeInfo result = getSession().createQuery(query).uniqueResult(); return Optional.ofNullable(result); } diff --git a/java/code/src/com/redhat/rhn/domain/server/virtualhostmanager/VirtualHostManagerNodeInfo.java b/java/code/src/com/redhat/rhn/domain/server/virtualhostmanager/VirtualHostManagerNodeInfo.java index d92efb5ab212..ad7febd4970a 100644 --- a/java/code/src/com/redhat/rhn/domain/server/virtualhostmanager/VirtualHostManagerNodeInfo.java +++ b/java/code/src/com/redhat/rhn/domain/server/virtualhostmanager/VirtualHostManagerNodeInfo.java @@ -18,15 +18,15 @@ import com.redhat.rhn.domain.BaseDomainHelper; import com.redhat.rhn.domain.server.ServerArch; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; /** * VirtualHostManagerNodeInfo diff --git a/java/code/src/com/redhat/rhn/domain/state/StateFactory.java b/java/code/src/com/redhat/rhn/domain/state/StateFactory.java index 2abe2ebfbc74..e4c176a00537 100644 --- a/java/code/src/com/redhat/rhn/domain/state/StateFactory.java +++ b/java/code/src/com/redhat/rhn/domain/state/StateFactory.java @@ -22,16 +22,17 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.hibernate.criterion.DetachedCriteria; -import org.hibernate.criterion.Projections; -import org.hibernate.criterion.Property; -import org.hibernate.criterion.Restrictions; import java.util.LinkedList; import java.util.List; import java.util.Optional; import java.util.Set; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Root; +import jakarta.persistence.criteria.Subquery; + /** * Factory class for working with states. */ @@ -193,14 +194,26 @@ public static Optional> latestConfigChannels(Org org) { private static Optional latestRevision( Class revisionType, String field, Object bean) { - DetachedCriteria maxQuery = DetachedCriteria.forClass(revisionType) - .add(Restrictions.eq(field, bean)) - .setProjection(Projections.max("id")); - T revision = (T) getSession() - .createCriteria(revisionType) - .add(Restrictions.eq(field, bean)) - .add(Property.forName("id").eq(maxQuery)) - .uniqueResult(); + // Get the CriteriaBuilder + CriteriaBuilder cb = getSession().getCriteriaBuilder(); + + // Create the main query + CriteriaQuery query = cb.createQuery(revisionType); + Root root = query.from(revisionType); + + // Create a subquery to get the maximum ID + Subquery subquery = query.subquery(Long.class); + Root subRoot = subquery.from(revisionType); + subquery.select(cb.max(subRoot.get("id"))) + .where(cb.equal(subRoot.get(field), bean)); + + // Add the subquery result as a restriction in the main query + query.select(root).where(cb.equal(root.get(field), bean), + cb.equal(root.get("id"), subquery)); + + // Execute the query + T revision = getSession().createQuery(query).getSingleResult(); + return Optional.ofNullable(revision); } diff --git a/java/code/src/com/redhat/rhn/domain/task/Task.java b/java/code/src/com/redhat/rhn/domain/task/Task.java index 1b38db7a8872..f07fb9e1de50 100644 --- a/java/code/src/com/redhat/rhn/domain/task/Task.java +++ b/java/code/src/com/redhat/rhn/domain/task/Task.java @@ -22,15 +22,15 @@ import java.io.Serializable; import java.util.Date; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; /** * Task diff --git a/java/code/src/com/redhat/rhn/domain/task/TaskFactory.java b/java/code/src/com/redhat/rhn/domain/task/TaskFactory.java index 84773dd47eae..d4fd2a199469 100644 --- a/java/code/src/com/redhat/rhn/domain/task/TaskFactory.java +++ b/java/code/src/com/redhat/rhn/domain/task/TaskFactory.java @@ -25,10 +25,10 @@ import java.util.Date; import java.util.List; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaDelete; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Root; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaDelete; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Root; /** * TaskFactory diff --git a/java/code/src/com/redhat/rhn/domain/token/ActivationKeyFactory.java b/java/code/src/com/redhat/rhn/domain/token/ActivationKeyFactory.java index c827113065a4..d0f8f7c1e695 100644 --- a/java/code/src/com/redhat/rhn/domain/token/ActivationKeyFactory.java +++ b/java/code/src/com/redhat/rhn/domain/token/ActivationKeyFactory.java @@ -60,7 +60,7 @@ public static ActivationKey lookupByKey(String key) { return (ActivationKey) HibernateFactory.getSession() .getNamedQuery("ActivationKey.findByKey") - .setString("key", key) + .setParameter("key", key) .uniqueResult(); } diff --git a/java/code/src/com/redhat/rhn/domain/token/TokenChannelAppStream.java b/java/code/src/com/redhat/rhn/domain/token/TokenChannelAppStream.java index a65c046cf86d..42b9e9445c6f 100644 --- a/java/code/src/com/redhat/rhn/domain/token/TokenChannelAppStream.java +++ b/java/code/src/com/redhat/rhn/domain/token/TokenChannelAppStream.java @@ -16,15 +16,15 @@ import com.redhat.rhn.domain.channel.Channel; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; @Entity @Table(name = "suseRegTokenChannelAppStream") diff --git a/java/code/src/com/redhat/rhn/domain/token/test/TokenTest.java b/java/code/src/com/redhat/rhn/domain/token/test/TokenTest.java index 05faf1c891bb..d7a6e9a70bc4 100644 --- a/java/code/src/com/redhat/rhn/domain/token/test/TokenTest.java +++ b/java/code/src/com/redhat/rhn/domain/token/test/TokenTest.java @@ -64,7 +64,7 @@ public void testEquals() throws Exception { Session session = HibernateFactory.getSession(); token2 = (Token) session.getNamedQuery("Token.findById") - .setLong("id", token1.getId()) + .setParameter("id", token1.getId()) .uniqueResult(); assertEquals(token1, token2); diff --git a/java/code/src/com/redhat/rhn/domain/user/UserFactory.java b/java/code/src/com/redhat/rhn/domain/user/UserFactory.java index 7e152051ed73..e993ce926f8d 100644 --- a/java/code/src/com/redhat/rhn/domain/user/UserFactory.java +++ b/java/code/src/com/redhat/rhn/domain/user/UserFactory.java @@ -446,7 +446,7 @@ public void syncServerGroupPerms(User usr) { public static RhnTimeZone getTimeZone(int id) { Session session = HibernateFactory.getSession(); return (RhnTimeZone) session.getNamedQuery("RhnTimeZone.loadTimeZoneById") - .setInteger("tid", id) + .setParameter("tid", id) //Retrieve from cache if there .setCacheable(true) .uniqueResult(); @@ -461,7 +461,7 @@ public static RhnTimeZone getTimeZone(String olsonName) { Session session = HibernateFactory.getSession(); return (RhnTimeZone) session .getNamedQuery("RhnTimeZone.loadTimeZoneByOlsonName") - .setString("ton", olsonName) + .setParameter("ton", olsonName) //Retrieve from cache if there .setCacheable(true) .uniqueResult(); diff --git a/java/code/src/com/redhat/rhn/frontend/action/kickstart/test/KickstartDeleteActionTest.java b/java/code/src/com/redhat/rhn/frontend/action/kickstart/test/KickstartDeleteActionTest.java index a92e4119bcb8..cf454b936f78 100644 --- a/java/code/src/com/redhat/rhn/frontend/action/kickstart/test/KickstartDeleteActionTest.java +++ b/java/code/src/com/redhat/rhn/frontend/action/kickstart/test/KickstartDeleteActionTest.java @@ -63,8 +63,8 @@ public void testSubmit() throws Exception { private KickstartData lookupById(Long id) { Session session = HibernateFactory.getSession(); return (KickstartData) session.getNamedQuery("KickstartData.findByIdAndOrg") - .setLong("id", id) - .setLong("org_id", user.getOrg().getId()) + .setParameter("id", id) + .setParameter("org_id", user.getOrg().getId()) .uniqueResult(); } } diff --git a/java/code/src/com/redhat/rhn/frontend/dto/BaseTupleDto.java b/java/code/src/com/redhat/rhn/frontend/dto/BaseTupleDto.java index 9689969a090e..c6ac935303c7 100644 --- a/java/code/src/com/redhat/rhn/frontend/dto/BaseTupleDto.java +++ b/java/code/src/com/redhat/rhn/frontend/dto/BaseTupleDto.java @@ -16,7 +16,7 @@ import java.util.Optional; -import javax.persistence.Tuple; +import jakarta.persistence.Tuple; /** * Base class for DTO objects that can be constructed from a Tuple diff --git a/java/code/src/com/redhat/rhn/frontend/dto/PackageOverview.java b/java/code/src/com/redhat/rhn/frontend/dto/PackageOverview.java index 2cc9e15872af..b492ce49e829 100644 --- a/java/code/src/com/redhat/rhn/frontend/dto/PackageOverview.java +++ b/java/code/src/com/redhat/rhn/frontend/dto/PackageOverview.java @@ -26,7 +26,7 @@ import java.util.Map; import java.util.stream.Collectors; -import javax.persistence.Tuple; +import jakarta.persistence.Tuple; /** * PackageOverview diff --git a/java/code/src/com/redhat/rhn/frontend/dto/SystemOverview.java b/java/code/src/com/redhat/rhn/frontend/dto/SystemOverview.java index a4d86458e4d5..8a5341112028 100644 --- a/java/code/src/com/redhat/rhn/frontend/dto/SystemOverview.java +++ b/java/code/src/com/redhat/rhn/frontend/dto/SystemOverview.java @@ -33,7 +33,7 @@ import java.util.Objects; import java.util.Optional; -import javax.persistence.Tuple; +import jakarta.persistence.Tuple; /** * Simple DTO for transfering data from the DB to the UI through datasource. diff --git a/java/code/src/com/redhat/rhn/frontend/dto/VirtualSystemOverview.java b/java/code/src/com/redhat/rhn/frontend/dto/VirtualSystemOverview.java index e3e1b79b89d8..e0a34561b1c3 100644 --- a/java/code/src/com/redhat/rhn/frontend/dto/VirtualSystemOverview.java +++ b/java/code/src/com/redhat/rhn/frontend/dto/VirtualSystemOverview.java @@ -18,7 +18,7 @@ import java.util.Objects; -import javax.persistence.Tuple; +import jakarta.persistence.Tuple; /** * Simple DTO for transfering data from the DB to the UI through datasource. diff --git a/java/code/src/com/redhat/rhn/frontend/events/TransactionHelper.java b/java/code/src/com/redhat/rhn/frontend/events/TransactionHelper.java index 403ec7fc6b43..bf989ab0cee8 100644 --- a/java/code/src/com/redhat/rhn/frontend/events/TransactionHelper.java +++ b/java/code/src/com/redhat/rhn/frontend/events/TransactionHelper.java @@ -28,7 +28,7 @@ import java.util.Optional; import java.util.function.Consumer; -import javax.persistence.PersistenceException; +import jakarta.persistence.PersistenceException; /** * Offers utility methods to handle database transactions. diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/contentmgmt/ContentManagementHandler.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/contentmgmt/ContentManagementHandler.java index c7c10114f4b9..58c9c8460f04 100644 --- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/contentmgmt/ContentManagementHandler.java +++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/contentmgmt/ContentManagementHandler.java @@ -12,7 +12,6 @@ * granted to use or replicate Red Hat trademarks that are incorporated * in this software or its documentation. */ - package com.redhat.rhn.frontend.xmlrpc.contentmgmt; import static com.redhat.rhn.common.util.StringUtil.nullIfEmpty; @@ -20,6 +19,7 @@ import static java.util.Optional.of; import static java.util.Optional.ofNullable; +import com.redhat.rhn.common.hibernate.HibernateFactory; import com.redhat.rhn.common.hibernate.LookupException; import com.redhat.rhn.common.validator.ValidatorException; import com.redhat.rhn.domain.channel.Channel; @@ -58,12 +58,19 @@ import java.util.Optional; import java.util.stream.Collectors; +import jakarta.persistence.NoResultException; +import jakarta.persistence.TypedQuery; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Predicate; +import jakarta.persistence.criteria.Root; + /** * Content Management XMLRPC handler * * @apidoc.namespace contentmanagement - * @apidoc.doc Provides methods to access and modify Content Lifecycle Management related entities - * (Projects, Environments, Filters, Sources). + * @apidoc.doc Provides methods to access and modify Content Lifecycle + * Management related entities (Projects, Environments, Filters, Sources). */ public class ContentManagementHandler extends BaseHandler { @@ -78,7 +85,8 @@ public ContentManagementHandler() { } /** - * Initialize a handler specifying a content manager instance. Mainly used for testing. + * Initialize a handler specifying a content manager instance. Mainly used + * for testing. * * @param contentManagerIn the content manager instance */ @@ -94,9 +102,7 @@ public ContentManagementHandler(ContentManager contentManagerIn) { * * @apidoc.doc List Content Projects visible to user * @apidoc.param #session_key() - * @apidoc.returntype - * #return_array_begin() - * $ContentProjectSerializer + * @apidoc.returntype #return_array_begin() $ContentProjectSerializer * #array_end() */ @ReadOnly @@ -109,12 +115,14 @@ public List listProjects(User loggedInUser) { * * @param loggedInUser the logged in user * @param projectLabel the Content Project label - * @throws EntityNotExistsFaultException when the Content Project does not exist + * @throws EntityNotExistsFaultException when the Content Project does not + * exist * @return the Content Project with given label * * @apidoc.doc Look up Content Project with given label * @apidoc.param #session_key() - * @apidoc.param #param_desc("string", "projectLabel", "Content Project label") + * @apidoc.param #param_desc("string", "projectLabel", "Content Project + * label") * @apidoc.returntype $ContentProjectSerializer */ @ReadOnly @@ -136,15 +144,19 @@ public ContentProject lookupProject(User loggedInUser, String projectLabel) { * * @apidoc.doc Create Content Project * @apidoc.param #session_key() - * @apidoc.param #param_desc("string", "projectLabel", "Content Project label") + * @apidoc.param #param_desc("string", "projectLabel", "Content Project + * label") * @apidoc.param #param_desc("string", "name", "Content Project name") - * @apidoc.param #param_desc("string", "description", "Content Project description") + * @apidoc.param #param_desc("string", "description", "Content Project + * description") * @apidoc.returntype $ContentProjectSerializer */ - public ContentProject createProject(User loggedInUser, String projectLabel, String name, String description) { + public ContentProject createProject(User loggedInUser, String projectLabel, String name, + String description) { ensureOrgAdmin(loggedInUser); try { - return contentManager.createProject(projectLabel, name, description, loggedInUser); + return contentManager.createProject(projectLabel, name, description, + loggedInUser); } catch (EntityExistsException e) { throw new EntityExistsFaultException(e); @@ -166,21 +178,20 @@ public ContentProject createProject(User loggedInUser, String projectLabel, Stri * * @apidoc.doc Update Content Project with given label * @apidoc.param #session_key() - * @apidoc.param #param_desc("string", "projectLabel", "Content Project label") - * @apidoc.param - * #struct_begin("props") - * #prop_desc("string", "name", "Content Project name") - * #prop_desc("string", "description", "Content Project description") - * #struct_end() + * @apidoc.param #param_desc("string", "projectLabel", "Content Project + * label") + * @apidoc.param #struct_begin("props") #prop_desc("string", "name", + * "Content Project name") #prop_desc("string", "description", "Content + * Project description") #struct_end() * @apidoc.returntype $ContentProjectSerializer */ - public ContentProject updateProject(User loggedInUser, String projectLabel, Map props) { + public ContentProject updateProject(User loggedInUser, String projectLabel, + Map props) { ensureOrgAdmin(loggedInUser); try { return contentManager.updateProject(projectLabel, ofNullable((String) props.get("name")), - ofNullable((String) props.get("description")), - loggedInUser); + ofNullable((String) props.get("description")), loggedInUser); } catch (EntityNotExistsException e) { throw new EntityNotExistsFaultException(e); @@ -200,7 +211,8 @@ public ContentProject updateProject(User loggedInUser, String projectLabel, Map< * * @apidoc.doc Remove Content Project * @apidoc.param #session_key() - * @apidoc.param #param_desc("string", "projectLabel", "Content Project label") + * @apidoc.param #param_desc("string", "projectLabel", "Content Project + * label") * @apidoc.returntype #return_int_success() */ public int removeProject(User loggedInUser, String projectLabel) { @@ -221,16 +233,17 @@ public int removeProject(User loggedInUser, String projectLabel) { * @throws EntityNotExistsFaultException when Project does not exist * @return the List of Content Environments with respect to their ordering * - * @apidoc.doc List Environments in a Content Project with the respect to their ordering + * @apidoc.doc List Environments in a Content Project with the respect to + * their ordering * @apidoc.param #session_key() - * @apidoc.param #param_desc("string", "projectLabel", "Content Project label") - * @apidoc.returntype - * #return_array_begin() - * $ContentEnvironmentSerializer + * @apidoc.param #param_desc("string", "projectLabel", "Content Project + * label") + * @apidoc.returntype #return_array_begin() $ContentEnvironmentSerializer * #array_end() */ @ReadOnly - public List listProjectEnvironments(User loggedInUser, String projectLabel) { + public List listProjectEnvironments(User loggedInUser, + String projectLabel) { try { return ContentManager.listProjectEnvironments(projectLabel, loggedInUser); } @@ -240,7 +253,8 @@ public List listProjectEnvironments(User loggedInUser, Strin } /** - * Look up Content Environment based on Content Project and Content Environment label + * Look up Content Environment based on Content Project and Content + * Environment label * * @param loggedInUser the logged in user * @param projectLabel the Content Project label @@ -248,14 +262,18 @@ public List listProjectEnvironments(User loggedInUser, Strin * @throws EntityNotExistsException when Project does not exist * @return found Content Environment or null if no such environment exists * - * @apidoc.doc Look up Content Environment based on Content Project and Content Environment label + * @apidoc.doc Look up Content Environment based on Content Project and + * Content Environment label * @apidoc.param #session_key() - * @apidoc.param #param_desc("string", "projectLabel", "Content Project label") - * @apidoc.param #param_desc("string", "envLabel", "Content Environment label") + * @apidoc.param #param_desc("string", "projectLabel", "Content Project + * label") + * @apidoc.param #param_desc("string", "envLabel", "Content Environment + * label") * @apidoc.returntype $ContentEnvironmentSerializer */ @ReadOnly - public ContentEnvironment lookupEnvironment(User loggedInUser, String projectLabel, String envLabel) { + public ContentEnvironment lookupEnvironment(User loggedInUser, String projectLabel, + String envLabel) { try { return ContentManager.lookupEnvironment(envLabel, projectLabel, loggedInUser) .orElseThrow(() -> new EntityNotExistsFaultException(envLabel)); @@ -266,7 +284,8 @@ public ContentEnvironment lookupEnvironment(User loggedInUser, String projectLab } /** - * Create a Content Environment and appends it behind given Content Environment + * Create a Content Environment and appends it behind given Content + * Environment * * @param loggedInUser the logged in user * @param projectLabel the Content Project label @@ -274,26 +293,35 @@ public ContentEnvironment lookupEnvironment(User loggedInUser, String projectLab * @param envLabel the Content Environment Label * @param name the Content Environment name * @param description the Content Environment description - * @throws EntityNotExistsFaultException when Project or predecessor Environment does not exist - * @throws EntityExistsFaultException when Environment with given parameters already exists + * @throws EntityNotExistsFaultException when Project or predecessor + * Environment does not exist + * @throws EntityExistsFaultException when Environment with given parameters + * already exists * @throws ValidationException if validation violation occurs * @return the created Content Environment * - * @apidoc.doc Create a Content Environment and appends it behind given Content Environment + * @apidoc.doc Create a Content Environment and appends it behind given + * Content Environment * @apidoc.param #session_key() - * @apidoc.param #param_desc("string", "projectLabel", "Content Project label") - * @apidoc.param #param_desc("string", "predecessorLabel", "Predecessor Environment label") - * @apidoc.param #param_desc("string", "envLabel", "new Content Environment label") - * @apidoc.param #param_desc("string", "name", "new Content Environment name") - * @apidoc.param #param_desc("string", "description", "new Content Environment description") + * @apidoc.param #param_desc("string", "projectLabel", "Content Project + * label") + * @apidoc.param #param_desc("string", "predecessorLabel", "Predecessor + * Environment label") + * @apidoc.param #param_desc("string", "envLabel", "new Content Environment + * label") + * @apidoc.param #param_desc("string", "name", "new Content Environment + * name") + * @apidoc.param #param_desc("string", "description", "new Content + * Environment description") * @apidoc.returntype $ContentEnvironmentSerializer */ - public ContentEnvironment createEnvironment(User loggedInUser, String projectLabel, String predecessorLabel, - String envLabel, String name, String description) { + public ContentEnvironment createEnvironment(User loggedInUser, String projectLabel, + String predecessorLabel, String envLabel, String name, String description) { ensureOrgAdmin(loggedInUser); try { - return contentManager.createEnvironment(projectLabel, ofNullable(nullIfEmpty(predecessorLabel)), envLabel, - name, description, true, loggedInUser); + return contentManager.createEnvironment(projectLabel, + ofNullable(nullIfEmpty(predecessorLabel)), envLabel, name, description, + true, loggedInUser); } catch (EntityNotExistsException e) { throw new EntityNotExistsFaultException(e); @@ -319,24 +347,22 @@ public ContentEnvironment createEnvironment(User loggedInUser, String projectLab * * @apidoc.doc Update Content Environment with given label * @apidoc.param #session_key() - * @apidoc.param #param_desc("string", "projectLabel", "Content Project label") - * @apidoc.param #param_desc("string", "envLabel", "Content Environment label") - * @apidoc.param - * #struct_begin("props") - * #prop_desc("string", "name", "Content Environment name") - * #prop_desc("string", "description", "Content Environment description") - * #struct_end() + * @apidoc.param #param_desc("string", "projectLabel", "Content Project + * label") + * @apidoc.param #param_desc("string", "envLabel", "Content Environment + * label") + * @apidoc.param #struct_begin("props") #prop_desc("string", "name", + * "Content Environment name") #prop_desc("string", "description", "Content + * Environment description") #struct_end() * @apidoc.returntype $ContentEnvironmentSerializer */ - public ContentEnvironment updateEnvironment(User loggedInUser, String projectLabel, String envLabel, - Map props) { + public ContentEnvironment updateEnvironment(User loggedInUser, String projectLabel, + String envLabel, Map props) { ensureOrgAdmin(loggedInUser); try { - return contentManager.updateEnvironment(envLabel, - projectLabel, + return contentManager.updateEnvironment(envLabel, projectLabel, ofNullable((String) props.get("name")), - ofNullable((String) props.get("description")), - loggedInUser); + ofNullable((String) props.get("description")), loggedInUser); } catch (EntityNotExistsException e) { throw new EntityNotExistsFaultException(e); @@ -357,8 +383,10 @@ public ContentEnvironment updateEnvironment(User loggedInUser, String projectLab * * @apidoc.doc Remove a Content Environment * @apidoc.param #session_key() - * @apidoc.param #param_desc("string", "projectLabel", "Content Project label") - * @apidoc.param #param_desc("string", "envLabel", "Content Environment label") + * @apidoc.param #param_desc("string", "projectLabel", "Content Project + * label") + * @apidoc.param #param_desc("string", "envLabel", "Content Environment + * label") * @apidoc.returntype #return_int_success() */ public int removeEnvironment(User loggedInUser, String projectLabel, String envLabel) { @@ -381,10 +409,9 @@ public int removeEnvironment(User loggedInUser, String projectLabel, String envL * * @apidoc.doc List Content Project Sources * @apidoc.param #session_key() - * @apidoc.param #param_desc("string", "projectLabel", "Content Project label") - * @apidoc.returntype - * #return_array_begin() - * $ContentProjectSourceSerializer + * @apidoc.param #param_desc("string", "projectLabel", "Content Project + * label") + * @apidoc.returntype #return_array_begin() $ContentProjectSourceSerializer * #array_end() */ @ReadOnly @@ -401,22 +428,27 @@ public List listProjectSources(User loggedInUser, String projectL * @param projectLabel the Project label * @param sourceType the Source type (e.g. "software") * @param sourceLabel the Source label (e.g. software channel label) - * @throws EntityNotExistsFaultException if the Project or Project Source is not found + * @throws EntityNotExistsFaultException if the Project or Project Source is + * not found * @return list of Project Sources * * @apidoc.doc Look up Content Project Source * @apidoc.param #session_key() - * @apidoc.param #param_desc("string", "projectLabel", "Content Project label") - * @apidoc.param #param_desc("string", "sourceType", "Project Source type, e.g. 'software'") - * @apidoc.param #param_desc("string", "sourceLabel", "Project Source label") + * @apidoc.param #param_desc("string", "projectLabel", "Content Project + * label") + * @apidoc.param #param_desc("string", "sourceType", "Project Source type, + * e.g. 'software'") + * @apidoc.param #param_desc("string", "sourceLabel", "Project Source + * label") * @apidoc.returntype $ContentProjectSourceSerializer */ @ReadOnly - public ProjectSource lookupSource(User loggedInUser, String projectLabel, String sourceType, - String sourceLabel) { + public ProjectSource lookupSource(User loggedInUser, String projectLabel, + String sourceType, String sourceLabel) { Type type = Type.lookupByLabel(sourceType); try { - return ContentManager.lookupProjectSource(projectLabel, type, sourceLabel, loggedInUser) + return ContentManager + .lookupProjectSource(projectLabel, type, sourceLabel, loggedInUser) .orElseThrow(() -> new EntityNotExistsFaultException(sourceLabel)); } catch (EntityNotExistsException e) { @@ -433,20 +465,26 @@ public ProjectSource lookupSource(User loggedInUser, String projectLabel, String * @param sourceLabel the Source label (e.g. software channel label) * @param sourcePosition the Source position * @throws EntityExistsFaultException when Source already exists - * @throws EntityNotExistsFaultException when used entities don't exist or are not accessible + * @throws EntityNotExistsFaultException when used entities don't exist or + * are not accessible * @return the created Source * * @apidoc.doc Attach a Source to a Project * @apidoc.param #session_key() - * @apidoc.param #param_desc("string", "projectLabel", "Content Project label") - * @apidoc.param #param_desc("string", "sourceType", "Project Source type, e.g. 'software'") - * @apidoc.param #param_desc("string", "sourceLabel", "Project Source label") - * @apidoc.param #param_desc("int", "sourcePosition", "Project Source position") + * @apidoc.param #param_desc("string", "projectLabel", "Content Project + * label") + * @apidoc.param #param_desc("string", "sourceType", "Project Source type, + * e.g. 'software'") + * @apidoc.param #param_desc("string", "sourceLabel", "Project Source + * label") + * @apidoc.param #param_desc("int", "sourcePosition", "Project Source + * position") * @apidoc.returntype $ContentProjectSourceSerializer */ - public ProjectSource attachSource(User loggedInUser, String projectLabel, String sourceType, String sourceLabel, - int sourcePosition) { - return attachSource(loggedInUser, projectLabel, sourceType, sourceLabel, of(sourcePosition)); + public ProjectSource attachSource(User loggedInUser, String projectLabel, + String sourceType, String sourceLabel, int sourcePosition) { + return attachSource(loggedInUser, projectLabel, sourceType, sourceLabel, + of(sourcePosition)); } /** @@ -457,27 +495,33 @@ public ProjectSource attachSource(User loggedInUser, String projectLabel, String * @param sourceType the Source type (e.g. "software") * @param sourceLabel the Source label (e.g. software channel label) * @throws EntityExistsFaultException when Source already exists - * @throws EntityNotExistsFaultException when used entities don't exist or are not accessible + * @throws EntityNotExistsFaultException when used entities don't exist or + * are not accessible * @return the created Source * * @apidoc.doc Attach a Source to a Project * @apidoc.param #session_key() - * @apidoc.param #param_desc("string", "projectLabel", "Content Project label") - * @apidoc.param #param_desc("string", "sourceType", "Project Source type, e.g. 'software'") - * @apidoc.param #param_desc("string", "sourceLabel", "Project Source label") + * @apidoc.param #param_desc("string", "projectLabel", "Content Project + * label") + * @apidoc.param #param_desc("string", "sourceType", "Project Source type, + * e.g. 'software'") + * @apidoc.param #param_desc("string", "sourceLabel", "Project Source + * label") * @apidoc.returntype $ContentProjectSourceSerializer */ - public ProjectSource attachSource(User loggedInUser, String projectLabel, String sourceType, String sourceLabel) { + public ProjectSource attachSource(User loggedInUser, String projectLabel, + String sourceType, String sourceLabel) { return attachSource(loggedInUser, projectLabel, sourceType, sourceLabel, empty()); } // helper method - private ProjectSource attachSource(User loggedInUser, String projectLabel, String sourceType, String sourceLabel, - Optional sourcePosition) { + private ProjectSource attachSource(User loggedInUser, String projectLabel, + String sourceType, String sourceLabel, Optional sourcePosition) { ensureOrgAdmin(loggedInUser); Type type = Type.lookupByLabel(sourceType); try { - return contentManager.attachSource(projectLabel, type, sourceLabel, sourcePosition, loggedInUser); + return contentManager.attachSource(projectLabel, type, sourceLabel, + sourcePosition, loggedInUser); } catch (EntityNotExistsException e) { throw new EntityNotExistsFaultException(e); @@ -494,17 +538,22 @@ private ProjectSource attachSource(User loggedInUser, String projectLabel, Strin * @param projectLabel the Project label * @param sourceType the Source type (e.g. "software") * @param sourceLabel the Source label (e.g. software channel label) - * @throws EntityNotExistsFaultException when used entities don't exist or are not accessible + * @throws EntityNotExistsFaultException when used entities don't exist or + * are not accessible * @return 1 on success * * @apidoc.doc Detach a Source from a Project * @apidoc.param #session_key() - * @apidoc.param #param_desc("string", "projectLabel", "Content Project label") - * @apidoc.param #param_desc("string", "sourceType", "Project Source type, e.g. 'software'") - * @apidoc.param #param_desc("string", "sourceLabel", "Project Source label") + * @apidoc.param #param_desc("string", "projectLabel", "Content Project + * label") + * @apidoc.param #param_desc("string", "sourceType", "Project Source type, + * e.g. 'software'") + * @apidoc.param #param_desc("string", "sourceLabel", "Project Source + * label") * @apidoc.returntype #return_int_success() */ - public int detachSource(User loggedInUser, String projectLabel, String sourceType, String sourceLabel) { + public int detachSource(User loggedInUser, String projectLabel, String sourceType, + String sourceLabel) { ensureOrgAdmin(loggedInUser); Type type = Type.lookupByLabel(sourceType); try { @@ -524,9 +573,7 @@ public int detachSource(User loggedInUser, String projectLabel, String sourceTyp * * @apidoc.doc List all Content Filters visible to given user * @apidoc.param #session_key() - * @apidoc.returntype - * #return_array_begin() - * $ContentFilterSerializer + * @apidoc.returntype #return_array_begin() $ContentFilterSerializer * #array_end() */ @ReadOnly @@ -561,14 +608,9 @@ public ContentFilter lookupFilter(User loggedInUser, Integer filterId) { * * @apidoc.doc List of available filter criteria * @apidoc.param #session_key() - * @apidoc.returntype - * #return_array_begin() - * #struct_begin("Filter Criteria") - * #prop("string", "type") - * #prop("string", "matcher") - * #prop("string", "field") - * #struct_end() - * #array_end() + * @apidoc.returntype #return_array_begin() #struct_begin("Filter Criteria") + * #prop("string", "type") #prop("string", "matcher") #prop("string", + * "field") #struct_end() #array_end() */ @ReadOnly public List> listFilterCriteria(User loggedInUser) { @@ -586,70 +628,78 @@ public List> listFilterCriteria(User loggedInUser) { * @throws InvalidArgsException when invalid criteria are passed * @return the created {@link ContentFilter} * - * @apidoc.doc Create a Content Filter - * #paragraph_end() - * #paragraph() - * The following filters are available (you can get the list in machine-readable format using - * the listFilterCriteria() endpoint): - * #paragraph_end() - * #paragraph() - * Package filtering: - * #itemlist() - * #item("by name - field: name; matchers: contains or matches") - * #item("by name, epoch, version, release and architecture - field: nevr or nevra; matcher: equals") - * #itemlist_end() - * #paragraph_end() - * #paragraph() - * Errata/Patch filtering: - * #itemlist() - * #item("by advisory name - field: advisory_name; matcher: equals or matches") - * #item("by type - field: advisory_type (e.g. 'Security Advisory'); matcher: equals") - * #item("by synopsis - field: synopsis; matcher: equals, contains or matches") - * #item("by keyword - field: keyword; matcher: contains") - * #item("by date - field: issue_date; matcher: greater or greatereq; value needs to be in ISO format e.g - * 2022-12-10T12:00:00Z") - * #item("by affected package name - field: package_name; matcher: contains_pkg_name or matches_pkg_name") - * #item("by affected package with version - field: package_nevr; matcher: contains_pkg_lt_evr, - * contains_pkg_le_evr, contains_pkg_eq_evr, contains_pkg_ge_evr or contains_pkg_gt_evr") - * #itemlist_end() - * #paragraph_end() - * #paragraph() - * Appstream module/stream filtering: - * #itemlist() - * #item("by module name, stream - field: module_stream; matcher: equals; value: modulaneme:stream") - * #itemlist_end() - * Note: Only 'allow' rule is supported for appstream filters. - * #paragraph_end() - * #paragraph() - * Note: The 'matches' matcher works on Java regular expressions. + * @apidoc.doc Create a Content Filter #paragraph_end() #paragraph() The + * following filters are available (you can get the list in machine-readable + * format using the listFilterCriteria() endpoint): #paragraph_end() + * #paragraph() Package filtering: #itemlist() #item("by name - field: name; + * matchers: contains or matches") #item("by name, epoch, version, release + * and architecture - field: nevr or nevra; matcher: equals") + * #itemlist_end() #paragraph_end() #paragraph() Errata/Patch filtering: + * #itemlist() #item("by advisory name - field: advisory_name; matcher: + * equals or matches") #item("by type - field: advisory_type (e.g. 'Security + * Advisory'); matcher: equals") #item("by synopsis - field: synopsis; + * matcher: equals, contains or matches") #item("by keyword - field: + * keyword; matcher: contains") #item("by date - field: issue_date; matcher: + * greater or greatereq; value needs to be in ISO format e.g + * 2022-12-10T12:00:00Z") #item("by affected package name - field: + * package_name; matcher: contains_pkg_name or matches_pkg_name") #item("by + * affected package with version - field: package_nevr; matcher: + * contains_pkg_lt_evr, contains_pkg_le_evr, contains_pkg_eq_evr, + * contains_pkg_ge_evr or contains_pkg_gt_evr") #itemlist_end() + * #paragraph_end() #paragraph() Appstream module/stream filtering: + * #itemlist() #item("by module name, stream - field: module_stream; + * matcher: equals; value: modulaneme:stream") #itemlist_end() Note: Only + * 'allow' rule is supported for appstream filters. #paragraph_end() + * #paragraph() Note: The 'matches' matcher works on Java regular + * expressions. * * @apidoc.param #session_key() * @apidoc.param #param_desc("string", "name", "Filter name") - * @apidoc.param #param_desc("string", "rule", "Filter rule ('deny' or 'allow')") - * @apidoc.param #param_desc("string", "entityType", "Filter entityType ('package' or 'erratum')") - * @apidoc.param - * #struct_begin("criteria") - * #prop_desc("string", "matcher", "The matcher type of the filter (e.g. 'contains')") - * #prop_desc("string", "field", "The entity field to match (e.g. 'name'") - * #prop_desc("string", "value", "The field value to match (e.g. 'kernel')") - * #struct_end() + * @apidoc.param #param_desc("string", "rule", "Filter rule ('deny' or + * 'allow')") + * @apidoc.param #param_desc("string", "entityType", "Filter entityType + * ('package' or 'erratum')") + * @apidoc.param #struct_begin("criteria") #prop_desc("string", "matcher", + * "The matcher type of the filter (e.g. 'contains')") #prop_desc("string", + * "field", "The entity field to match (e.g. 'name'") #prop_desc("string", + * "value", "The field value to match (e.g. 'kernel')") #struct_end() * @apidoc.returntype $ContentFilterSerializer */ - public ContentFilter createFilter(User loggedInUser, String name, String rule, String entityType, - Map criteria) { + public ContentFilter createFilter(User loggedInUser, String name, String rule, + String entityType, Map criteria) { ensureOrgAdmin(loggedInUser); ContentManager.lookupFilterByNameAndOrg(name, loggedInUser).ifPresent(cp -> { throw new EntityExistsFaultException(cp); }); ContentFilter.Rule ruleObj = ContentFilter.Rule.lookupByLabel(rule); - ContentFilter.EntityType entityTypeObj = ContentFilter.EntityType.lookupByLabel(entityType); - FilterCriteria criteriaObj = createCriteria(criteria).orElseThrow( - () -> new InvalidArgsException("criteria must be specified") - ); + ContentFilter.EntityType entityTypeObj = + ContentFilter.EntityType.lookupByLabel(entityType); + + CriteriaBuilder cb = HibernateFactory.getSession().getCriteriaBuilder(); + + CriteriaQuery cq = cb.createQuery(FilterCriteria.class); + Root root = cq.from(FilterCriteria.class); + + Predicate[] predicates = criteria.entrySet().stream() + .map(entry -> cb.equal(root.get(entry.getKey()), entry.getValue())) + .toArray(Predicate[]::new); + cq.where(predicates); + + FilterCriteria criteriaObj; try { - return contentManager.createFilter(name, ruleObj, entityTypeObj, criteriaObj, loggedInUser); + TypedQuery query = + HibernateFactory.getSession().createQuery(cq); + criteriaObj = query.getSingleResult(); + } + catch (NoResultException e) { + throw new InvalidArgsException("Criteria must be specified"); + } + + try { + return contentManager.createFilter(name, ruleObj, entityTypeObj, criteriaObj, + loggedInUser); } catch (IllegalArgumentException e) { throw new InvalidArgsException(e.getMessage()); @@ -657,7 +707,8 @@ public ContentFilter createFilter(User loggedInUser, String name, String rule, S } /** - * Create new {@link ContentFilter}s for all AppStream modules with default streams + * Create new {@link ContentFilter}s for all AppStream modules with default + * streams * * @param loggedInUser the logged in user * @param prefix the filter name prefix @@ -666,27 +717,33 @@ public ContentFilter createFilter(User loggedInUser, String name, String rule, S * @throws EntityExistsFaultException when Filter already exist * @return List of created and successfully attached Filter * - * @apidoc.doc Create Filters for AppStream Modular Channel and attach them to CLM Project + * @apidoc.doc Create Filters for AppStream Modular Channel and attach them + * to CLM Project * @apidoc.param #session_key() * @apidoc.param #param_desc("string", "prefix", "Filter name prefix") - * @apidoc.param #param_desc("string", "channelLabel", "Modular Channel label") + * @apidoc.param #param_desc("string", "channelLabel", "Modular Channel + * label") * @apidoc.param #param_desc("string", "projectLabel", "Project label") - * @apidoc.returntype #return_array_begin() $ContentFilterSerializer #array_end() + * @apidoc.returntype #return_array_begin() $ContentFilterSerializer + * #array_end() */ public List createAppStreamFilters(User loggedInUser, String prefix, - String channelLabel, String projectLabel) throws ModulemdApiException { + String channelLabel, String projectLabel) + throws ModulemdApiException { ensureOrgAdmin(loggedInUser); try { - Channel channel = ChannelManager.lookupByLabelAndUser(channelLabel, loggedInUser); + Channel channel = + ChannelManager.lookupByLabelAndUser(channelLabel, loggedInUser); - List createdFilters = filterTemplateManager.createAppStreamFilters( - prefix, channel, loggedInUser); + List createdFilters = filterTemplateManager + .createAppStreamFilters(prefix, channel, loggedInUser); List attachedFilters = new ArrayList<>(); for (ContentFilter createdFilter : createdFilters) { - attachedFilters.add(contentManager.attachFilter(projectLabel, createdFilter.getId(), loggedInUser)); + attachedFilters.add(contentManager.attachFilter(projectLabel, + createdFilter.getId(), loggedInUser)); } return attachedFilters; @@ -710,41 +767,49 @@ public List createAppStreamFilters(User loggedInUser, String pref * @throws EntityNotExistsFaultException when Filter is not found * @return the updated {@link ContentFilter} * - * @apidoc.doc Update a Content Filter - * #paragraph_end() - * #paragraph() - * See also: createFilter(), listFilterCriteria() + * @apidoc.doc Update a Content Filter #paragraph_end() #paragraph() See + * also: createFilter(), listFilterCriteria() * @apidoc.param #session_key() * @apidoc.param #param_desc("int", "filterId", "Filter ID") * @apidoc.param #param_desc("string", "name", "New filter name") - * @apidoc.param #param_desc("string", "rule", "New filter rule ('deny' or 'allow')") - * @apidoc.param - * #struct_begin("criteria") - * #prop_desc("string", "matcher", "The matcher type of the filter (e.g. 'contains')") - * #prop_desc("string", "field", "The entity field to match (e.g. 'name'") - * #prop_desc("string", "value", "The field value to match (e.g. 'kernel')") - * #struct_end() + * @apidoc.param #param_desc("string", "rule", "New filter rule ('deny' or + * 'allow')") + * @apidoc.param #struct_begin("criteria") #prop_desc("string", "matcher", + * "The matcher type of the filter (e.g. 'contains')") #prop_desc("string", + * "field", "The entity field to match (e.g. 'name'") #prop_desc("string", + * "value", "The field value to match (e.g. 'kernel')") #struct_end() * @apidoc.returntype $ContentFilterSerializer */ - public ContentFilter updateFilter(User loggedInUser, Integer filterId, String name, String rule, - Map criteria) { + public ContentFilter updateFilter(User loggedInUser, Integer filterId, String name, + String rule, Map criteria) { ensureOrgAdmin(loggedInUser); - Optional ruleObj; - if (rule.isEmpty()) { - ruleObj = empty(); + Optional ruleObj = + rule == null || rule.isEmpty() ? Optional.empty() : + Optional.of(ContentFilter.Rule.lookupByLabel(rule)); + + CriteriaBuilder cb = HibernateFactory.getSession().getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(FilterCriteria.class); + Root root = cq.from(FilterCriteria.class); + + Predicate[] predicates = criteria.entrySet().stream() + .map(entry -> cb.equal(root.get(entry.getKey()), entry.getValue())) + .toArray(Predicate[]::new); + + cq.where(predicates); + + TypedQuery query = HibernateFactory.getSession().createQuery(cq); + FilterCriteria filterCriteria; + try { + filterCriteria = query.getSingleResult(); } - else { - ruleObj = Optional.of(ContentFilter.Rule.lookupByLabel(rule)); + catch (NoResultException e) { + filterCriteria = null; } - Optional criteriaObj = createCriteria(criteria); try { - return contentManager.updateFilter( - filterId.longValue(), - ofNullable(name), - ruleObj, - criteriaObj, + return contentManager.updateFilter(filterId.longValue(), + Optional.ofNullable(name), ruleObj, Optional.ofNullable(filterCriteria), loggedInUser); } catch (EntityNotExistsException e) { @@ -803,13 +868,12 @@ public int removeFilter(User loggedInUser, Integer filterId) { * @apidoc.doc List all Filters associated with a Project * @apidoc.param #session_key() * @apidoc.param #param_desc("string", "projectLabel", "Project label") - * @apidoc.returntype - * #return_array_begin() - * $ContentProjectFilterSerializer + * @apidoc.returntype #return_array_begin() $ContentProjectFilterSerializer * #array_end() */ @ReadOnly - public List listProjectFilters(User loggedInUser, String projectLabel) { + public List listProjectFilters(User loggedInUser, + String projectLabel) { try { return lookupProject(loggedInUser, projectLabel).getProjectFilters(); } @@ -833,10 +897,12 @@ public List listProjectFilters(User loggedInUser, String p * @apidoc.param #param_desc("int", "filterId", "filter ID to attach") * @apidoc.returntype $ContentFilterSerializer */ - public ContentFilter attachFilter(User loggedInUser, String projectLabel, Integer filterId) { + public ContentFilter attachFilter(User loggedInUser, String projectLabel, + Integer filterId) { ensureOrgAdmin(loggedInUser); try { - return contentManager.attachFilter(projectLabel, filterId.longValue(), loggedInUser); + return contentManager.attachFilter(projectLabel, filterId.longValue(), + loggedInUser); } catch (EntityNotExistsException e) { throw new EntityExistsFaultException(e); @@ -876,7 +942,8 @@ public int detachFilter(User loggedInUser, String projectLabel, Integer filterId * @param loggedInUser the user * @param projectLabel the Project label * @throws EntityNotExistsFaultException when Project does not exist - * @throws ContentManagementFaultException on Content Management-related error + * @throws ContentManagementFaultException on Content Management-related + * error * @return 1 if successful * * @apidoc.doc Build a Project @@ -907,13 +974,15 @@ public int buildProject(User loggedInUser, String projectLabel) { * @param projectLabel the Project label * @param message the log message to be assigned to the build * @throws EntityNotExistsFaultException when Project does not exist - * @throws ContentManagementFaultException on Content Management-related error + * @throws ContentManagementFaultException on Content Management-related + * error * @return 1 if successful * * @apidoc.doc Build a Project * @apidoc.param #session_key() * @apidoc.param #param_desc("string", "projectLabel", "Project label") - * @apidoc.param #param_desc("string", "message", "log message to be assigned to the build") + * @apidoc.param #param_desc("string", "message", "log message to be + * assigned to the build") * @apidoc.returntype #return_int_success() */ public int buildProject(User loggedInUser, String projectLabel, String message) { @@ -939,7 +1008,8 @@ public int buildProject(User loggedInUser, String projectLabel, String message) * @param projectLabel the Project label * @param envLabel the Environment label * @throws EntityNotExistsFaultException when Project does not exist - * @throws ContentManagementFaultException on Content Management-related error + * @throws ContentManagementFaultException on Content Management-related + * error * @return 1 if successful * * @apidoc.doc Promote an Environment in a Project @@ -970,15 +1040,17 @@ public int promoteProject(User loggedInUser, String projectLabel, String envLabe /** * Validates a content project for build/promote * - * The validation fails only in case of an error. Info and warning messages are ignored since the build/promote - * operation can still be performed. + * The validation fails only in case of an error. Info and warning messages + * are ignored since the build/promote operation can still be performed. * * @param project the {@link ContentProject} instance - * @throws ContentValidationFaultException when validation fails with messages + * @throws ContentValidationFaultException when validation fails with + * messages */ - private void validateContentProject(ContentProject project) throws ContentValidationFaultException { - ContentProjectValidator projectValidator = new ContentProjectValidator(project, - contentManager.getModulemdApi()); + private void validateContentProject(ContentProject project) + throws ContentValidationFaultException { + ContentProjectValidator projectValidator = + new ContentProjectValidator(project, contentManager.getModulemdApi()); // Join all error messages in a new line String validationError = projectValidator.validate().stream() diff --git a/java/code/src/com/redhat/rhn/manager/appstreams/AppStreamsManager.java b/java/code/src/com/redhat/rhn/manager/appstreams/AppStreamsManager.java index ea12c1196942..8e103ec2a991 100644 --- a/java/code/src/com/redhat/rhn/manager/appstreams/AppStreamsManager.java +++ b/java/code/src/com/redhat/rhn/manager/appstreams/AppStreamsManager.java @@ -39,10 +39,10 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Predicate; -import javax.persistence.criteria.Root; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Predicate; +import jakarta.persistence.criteria.Root; public class AppStreamsManager { diff --git a/java/code/src/com/redhat/rhn/manager/audit/CVEAuditManager.java b/java/code/src/com/redhat/rhn/manager/audit/CVEAuditManager.java index eb462b12b96d..627d97e486d3 100644 --- a/java/code/src/com/redhat/rhn/manager/audit/CVEAuditManager.java +++ b/java/code/src/com/redhat/rhn/manager/audit/CVEAuditManager.java @@ -60,9 +60,9 @@ import java.util.stream.Stream; import java.util.stream.StreamSupport; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Root; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Root; /** * CVESearchManager. diff --git a/java/code/src/com/redhat/rhn/manager/errata/test/ErrataManagerTest.java b/java/code/src/com/redhat/rhn/manager/errata/test/ErrataManagerTest.java index 8644093fc322..2773ce2dcc0c 100644 --- a/java/code/src/com/redhat/rhn/manager/errata/test/ErrataManagerTest.java +++ b/java/code/src/com/redhat/rhn/manager/errata/test/ErrataManagerTest.java @@ -75,7 +75,6 @@ import com.redhat.rhn.testing.UserTestUtils; import org.apache.commons.lang3.time.StopWatch; -import org.hibernate.criterion.Restrictions; import org.jmock.Expectations; import org.jmock.imposters.ByteBuddyClassImposteriser; import org.junit.jupiter.api.BeforeEach; @@ -1524,8 +1523,11 @@ public void testApplyErrataMultipleErrataActionChainYum() throws Exception { * @return the errata action */ private ErrataAction errataActionFromAction(Action action) { - return (ErrataAction) HibernateFactory.getSession().createCriteria(ErrataAction.class) - .add(Restrictions.idEq(action.getId())).uniqueResult(); + String sql = "SELECT * FROM rhnAction WHERE id = :id"; + return HibernateFactory.getSession() + .createNativeQuery(sql, ErrataAction.class) + .setParameter("id", action.getId()) + .getSingleResult(); } /** diff --git a/java/code/src/com/redhat/rhn/manager/rhnpackage/PackageManager.java b/java/code/src/com/redhat/rhn/manager/rhnpackage/PackageManager.java index 52b7832413f1..34d8cc2151c3 100644 --- a/java/code/src/com/redhat/rhn/manager/rhnpackage/PackageManager.java +++ b/java/code/src/com/redhat/rhn/manager/rhnpackage/PackageManager.java @@ -636,7 +636,7 @@ public static PackageName lookupPackageName(String name) { try { session = HibernateFactory.getSession(); return (PackageName)session.getNamedQuery("PackageName.findByName") - .setString("name", name) + .setParameter("name", name) .uniqueResult(); } catch (HibernateException e) { diff --git a/java/code/src/com/redhat/rhn/manager/system/VirtualInstanceManager.java b/java/code/src/com/redhat/rhn/manager/system/VirtualInstanceManager.java index debd9100e1a8..a5771b7dc58c 100644 --- a/java/code/src/com/redhat/rhn/manager/system/VirtualInstanceManager.java +++ b/java/code/src/com/redhat/rhn/manager/system/VirtualInstanceManager.java @@ -14,8 +14,8 @@ */ package com.redhat.rhn.manager.system; +import com.redhat.rhn.domain.server.MinionServerFactory; import com.redhat.rhn.domain.server.Server; -import com.redhat.rhn.domain.server.ServerFactory; import com.redhat.rhn.domain.server.VirtualInstance; import com.redhat.rhn.domain.server.VirtualInstanceFactory; import com.redhat.rhn.domain.server.VirtualInstanceState; @@ -242,7 +242,7 @@ public static void addGuestVirtualInstance(String vmGuid, String name, // Do we have a System with machineid matching the GUID that has no // virtual instance? if (guest == null) { - ServerFactory.findByMachineId(vmGuid) + MinionServerFactory.findByMachineId(vmGuid) .ifPresent(system -> { if (system.getVirtualInstance() == null) { virtualInstance.setGuestSystem(system); diff --git a/java/code/src/com/redhat/rhn/manager/system/test/SystemManagerTest.java b/java/code/src/com/redhat/rhn/manager/system/test/SystemManagerTest.java index d3c3c3fd0929..bab3aae06715 100644 --- a/java/code/src/com/redhat/rhn/manager/system/test/SystemManagerTest.java +++ b/java/code/src/com/redhat/rhn/manager/system/test/SystemManagerTest.java @@ -151,8 +151,6 @@ import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream; import org.apache.commons.io.FileUtils; import org.cobbler.test.MockConnection; -import org.hibernate.Session; -import org.hibernate.type.IntegerType; import org.jmock.Expectations; import org.jmock.imposters.ByteBuddyClassImposteriser; import org.junit.jupiter.api.AfterEach; @@ -260,33 +258,6 @@ private void createMetadataFiles() { } } - @Test - public void testSnapshotServer() { - User user = UserTestUtils.findNewUser("testUser", - "testOrg" + this.getClass().getSimpleName()); - user.addPermanentRole(RoleFactory.ORG_ADMIN); - Server server = ServerFactoryTest.createTestServer(user, true); - Long id = server.getId(); - - assertTrue(SystemManager.serverHasFeature(id, "ftr_snapshotting")); - assertEquals(Integer.valueOf(0), numberOfSnapshots(id)); - SystemManager.snapshotServer(server, "Testing snapshots"); - assertEquals(Integer.valueOf(1), numberOfSnapshots(id)); - } - - /* - * I know this is ugly, but since we haven't got the sever snapshotting feature fully - * worked out in java yet, just do a sql query to make sure the stored proc worked. - */ - private Integer numberOfSnapshots(Long sid) { - Session session = HibernateFactory.getSession(); - return (Integer) session.createSQLQuery("Select count(*) as cnt " + - " from rhnSnapshot " + - " where server_id = " + sid) - .addScalar("cnt", IntegerType.INSTANCE) - .uniqueResult(); - } - @Test public void testDeleteServer() { User user = UserTestUtils.findNewUser("testUser", diff --git a/java/code/src/com/redhat/rhn/taskomatic/TaskoFactory.java b/java/code/src/com/redhat/rhn/taskomatic/TaskoFactory.java index b2ff8fe0bf96..2a6010299872 100644 --- a/java/code/src/com/redhat/rhn/taskomatic/TaskoFactory.java +++ b/java/code/src/com/redhat/rhn/taskomatic/TaskoFactory.java @@ -14,7 +14,6 @@ */ package com.redhat.rhn.taskomatic; - import com.redhat.rhn.common.hibernate.HibernateFactory; import com.redhat.rhn.taskomatic.domain.TaskoBunch; import com.redhat.rhn.taskomatic.domain.TaskoRun; @@ -24,18 +23,19 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.hibernate.criterion.DetachedCriteria; -import org.hibernate.criterion.Order; -import org.hibernate.criterion.Projections; -import org.hibernate.criterion.Restrictions; -import org.hibernate.criterion.Subqueries; import org.quartz.SchedulerException; +import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import jakarta.persistence.TypedQuery; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Root; +import jakarta.persistence.criteria.Subquery; /** * TaskoFactory @@ -430,28 +430,39 @@ public static List listRunsByBunch(String bunchName) { * @return the latest run or null if none exists */ public static TaskoRun getLatestRun(String bunchName) { - DetachedCriteria bunchIds = DetachedCriteria.forClass(TaskoBunch.class) - .add(Restrictions.eq("name", bunchName)) - .setProjection(Projections.id()); - - DetachedCriteria templateIds = DetachedCriteria.forClass(TaskoTemplate.class) - .add(Subqueries.propertyIn("bunch", bunchIds)) - .setProjection(Projections.id()); - - return (TaskoRun) getSession() - .createCriteria(TaskoRun.class) - .add(Subqueries.propertyIn("template.id", templateIds)) - .add(Restrictions.in("status", - new Object[] { - TaskoRun.STATUS_RUNNING, - TaskoRun.STATUS_FINISHED, - TaskoRun.STATUS_INTERRUPTED - })) - .addOrder(Order.desc("startTime")) - .addOrder(Order.desc("id")) - .setFirstResult(0) - .setMaxResults(1) - .uniqueResult(); + // Obtain CriteriaBuilder from EntityManager + CriteriaBuilder cb = getSession().getCriteriaBuilder(); + + // Main query to fetch TaskoRun + CriteriaQuery query = cb.createQuery(TaskoRun.class); + Root taskoRunRoot = query.from(TaskoRun.class); + + // Subquery to fetch TaskoBunch IDs + Subquery bunchIdsSubquery = query.subquery(Long.class); + Root bunchRoot = bunchIdsSubquery.from(TaskoBunch.class); + bunchIdsSubquery.select(bunchRoot.get("id")) + .where(cb.equal(bunchRoot.get("name"), bunchName)); + + // Subquery to fetch TaskoTemplate IDs + Subquery templateIdsSubquery = query.subquery(Long.class); + Root templateRoot = templateIdsSubquery.from(TaskoTemplate.class); + templateIdsSubquery.select(templateRoot.get("id")) + .where(templateRoot.get("bunch").in(bunchIdsSubquery)); + + // Add criteria to main query + query.select(taskoRunRoot) + .where(taskoRunRoot.get("template").get("id").in(templateIdsSubquery), + taskoRunRoot.get("status").in(Arrays.asList(TaskoRun.STATUS_RUNNING, + TaskoRun.STATUS_FINISHED, TaskoRun.STATUS_INTERRUPTED))) + .orderBy(cb.desc(taskoRunRoot.get("startTime")), + cb.desc(taskoRunRoot.get("id"))); + + // Create and execute the query + TypedQuery typedQuery = getSession().createQuery(query); + typedQuery.setFirstResult(0); + typedQuery.setMaxResults(1); + + return typedQuery.getSingleResult(); } /** diff --git a/java/code/src/com/redhat/rhn/taskomatic/task/HubReportDbUpdateDriver.java b/java/code/src/com/redhat/rhn/taskomatic/task/HubReportDbUpdateDriver.java index 0779910bd77d..04dd3cf75a9b 100644 --- a/java/code/src/com/redhat/rhn/taskomatic/task/HubReportDbUpdateDriver.java +++ b/java/code/src/com/redhat/rhn/taskomatic/task/HubReportDbUpdateDriver.java @@ -31,8 +31,8 @@ import java.util.Set; import java.util.stream.Collectors; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; /** * Hub Reporting DB Task Driver diff --git a/java/code/src/com/redhat/rhn/taskomatic/task/test/KickstartCleanupTest.java b/java/code/src/com/redhat/rhn/taskomatic/task/test/KickstartCleanupTest.java index 04c658e7aa3e..57c0c92515b8 100644 --- a/java/code/src/com/redhat/rhn/taskomatic/task/test/KickstartCleanupTest.java +++ b/java/code/src/com/redhat/rhn/taskomatic/task/test/KickstartCleanupTest.java @@ -156,7 +156,7 @@ private static KickstartSessionState lookupByLabel(String label) { Session session = HibernateFactory.getSession(); return (KickstartSessionState) session .getNamedQuery("KickstartSessionState.findByLabel") - .setString("label", label) + .setParameter("label", label) .uniqueResult(); } diff --git a/java/code/src/com/redhat/rhn/taskomatic/task/test/ReportDbUpdateTaskTest.java b/java/code/src/com/redhat/rhn/taskomatic/task/test/ReportDbUpdateTaskTest.java index bfa0a8fb5ab2..9479e90fa429 100644 --- a/java/code/src/com/redhat/rhn/taskomatic/task/test/ReportDbUpdateTaskTest.java +++ b/java/code/src/com/redhat/rhn/taskomatic/task/test/ReportDbUpdateTaskTest.java @@ -50,7 +50,7 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; -import javax.persistence.Tuple; +import jakarta.persistence.Tuple; public class ReportDbUpdateTaskTest extends JMockBaseTestCaseWithUser { diff --git a/java/code/src/com/redhat/rhn/testing/TestUtils.java b/java/code/src/com/redhat/rhn/testing/TestUtils.java index 7c8dbf06e35e..763063b73560 100644 --- a/java/code/src/com/redhat/rhn/testing/TestUtils.java +++ b/java/code/src/com/redhat/rhn/testing/TestUtils.java @@ -267,7 +267,7 @@ public static List lookupTestObjects(String query) { public static Object lookupFromCacheById(Long id, String queryname) { Session session = HibernateFactory.getSession(); return session.getNamedQuery(queryname) - .setLong("id", id) + .setParameter("id", id) //Retrieve from cache if there .setCacheable(true) .uniqueResult(); @@ -284,7 +284,7 @@ public static Object lookupFromCacheByLabel(String label, String queryname) { Session session = HibernateFactory.getSession(); return session.getNamedQuery(queryname) - .setString("label", label) + .setParameter("label", label) //Retrieve from cache if there .setCacheable(true) .uniqueResult(); diff --git a/java/code/src/com/suse/cloud/domain/BillingDimensionEnumType.java b/java/code/src/com/suse/cloud/domain/BillingDimensionEnumType.java index 36d135d9bb46..7b039f50ff8f 100644 --- a/java/code/src/com/suse/cloud/domain/BillingDimensionEnumType.java +++ b/java/code/src/com/suse/cloud/domain/BillingDimensionEnumType.java @@ -17,6 +17,11 @@ import com.redhat.rhn.domain.errata.CustomEnumType; +import org.hibernate.engine.spi.SharedSessionContractImplementor; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; import java.sql.Types; /** @@ -36,4 +41,18 @@ public int getSqlType() { // Returning other, as this is mapped to a PostgreSQL enum, not to a VARCHAR return Types.OTHER; } + + @Override + public String nullSafeGet(ResultSet var1, int var2, + SharedSessionContractImplementor var3, @Deprecated Object var4) + throws SQLException { + return null; + } + + @Override + public void nullSafeSet(PreparedStatement var1, Object var2, int var3, + SharedSessionContractImplementor var4) + throws SQLException { + return; + } } diff --git a/java/code/src/com/suse/cloud/domain/PaygDimensionComputation.java b/java/code/src/com/suse/cloud/domain/PaygDimensionComputation.java index b0f2308b569d..6333d76d83c6 100644 --- a/java/code/src/com/suse/cloud/domain/PaygDimensionComputation.java +++ b/java/code/src/com/suse/cloud/domain/PaygDimensionComputation.java @@ -24,19 +24,19 @@ import java.util.Set; import java.util.StringJoiner; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.NamedQuery; -import javax.persistence.OneToMany; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.NamedQuery; +import jakarta.persistence.OneToMany; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; /** * Entity that represent the result of computation made by diff --git a/java/code/src/com/suse/cloud/domain/PaygDimensionResult.java b/java/code/src/com/suse/cloud/domain/PaygDimensionResult.java index 5393f113bd6b..638503a1d3b2 100644 --- a/java/code/src/com/suse/cloud/domain/PaygDimensionResult.java +++ b/java/code/src/com/suse/cloud/domain/PaygDimensionResult.java @@ -17,20 +17,20 @@ import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; -import org.hibernate.annotations.Type; import java.util.StringJoiner; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Transient; +import jakarta.persistence.Column; +import jakarta.persistence.Convert; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; @Entity @Table(name = "susepaygdimensionresult") @@ -91,7 +91,7 @@ public Long getComputationId() { } @Column(name = "dimension") - @Type(type = "com.suse.cloud.domain.BillingDimensionEnumType") + @Convert(converter = org.hibernate.type.YesNoConverter.class) public BillingDimension getDimension() { return dimension; } diff --git a/java/code/src/com/suse/manager/metrics/SystemsCollector.java b/java/code/src/com/suse/manager/metrics/SystemsCollector.java index d6af607da43e..cc70e39361dd 100644 --- a/java/code/src/com/suse/manager/metrics/SystemsCollector.java +++ b/java/code/src/com/suse/manager/metrics/SystemsCollector.java @@ -17,7 +17,7 @@ import java.util.ArrayList; import java.util.List; -import javax.persistence.Tuple; +import jakarta.persistence.Tuple; import io.prometheus.client.Collector; diff --git a/java/code/src/com/suse/manager/model/attestation/CoCoAttestationResult.java b/java/code/src/com/suse/manager/model/attestation/CoCoAttestationResult.java index 226499d61c15..097616efab76 100644 --- a/java/code/src/com/suse/manager/model/attestation/CoCoAttestationResult.java +++ b/java/code/src/com/suse/manager/model/attestation/CoCoAttestationResult.java @@ -20,19 +20,19 @@ import java.util.Date; import java.util.Optional; -import javax.persistence.Column; -import javax.persistence.Convert; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Transient; +import jakarta.persistence.Column; +import jakarta.persistence.Convert; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; @Entity @Table(name = "suseCoCoAttestationResult") diff --git a/java/code/src/com/suse/manager/model/attestation/CoCoEnvironmentTypeConverter.java b/java/code/src/com/suse/manager/model/attestation/CoCoEnvironmentTypeConverter.java index de9b85036cac..5fdbfe5bd0e2 100644 --- a/java/code/src/com/suse/manager/model/attestation/CoCoEnvironmentTypeConverter.java +++ b/java/code/src/com/suse/manager/model/attestation/CoCoEnvironmentTypeConverter.java @@ -14,8 +14,8 @@ */ package com.suse.manager.model.attestation; -import javax.persistence.AttributeConverter; -import javax.persistence.Converter; +import jakarta.persistence.AttributeConverter; +import jakarta.persistence.Converter; @Converter(autoApply = true) public class CoCoEnvironmentTypeConverter implements AttributeConverter { diff --git a/java/code/src/com/suse/manager/model/attestation/CoCoResultTypeConverter.java b/java/code/src/com/suse/manager/model/attestation/CoCoResultTypeConverter.java index 3217fee33205..9d974ba2f13a 100644 --- a/java/code/src/com/suse/manager/model/attestation/CoCoResultTypeConverter.java +++ b/java/code/src/com/suse/manager/model/attestation/CoCoResultTypeConverter.java @@ -14,8 +14,8 @@ */ package com.suse.manager.model.attestation; -import javax.persistence.AttributeConverter; -import javax.persistence.Converter; +import jakarta.persistence.AttributeConverter; +import jakarta.persistence.Converter; @Converter(autoApply = true) public class CoCoResultTypeConverter implements AttributeConverter { diff --git a/java/code/src/com/suse/manager/model/attestation/ServerCoCoAttestationConfig.java b/java/code/src/com/suse/manager/model/attestation/ServerCoCoAttestationConfig.java index 9e0f1942f0a7..02c243081d9f 100644 --- a/java/code/src/com/suse/manager/model/attestation/ServerCoCoAttestationConfig.java +++ b/java/code/src/com/suse/manager/model/attestation/ServerCoCoAttestationConfig.java @@ -19,16 +19,16 @@ import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; -import javax.persistence.Column; -import javax.persistence.Convert; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Convert; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; @Entity @Table(name = "suseServerCoCoAttestationConfig") diff --git a/java/code/src/com/suse/manager/model/attestation/ServerCoCoAttestationReport.java b/java/code/src/com/suse/manager/model/attestation/ServerCoCoAttestationReport.java index 87e368b0abf3..d769244e9fe4 100644 --- a/java/code/src/com/suse/manager/model/attestation/ServerCoCoAttestationReport.java +++ b/java/code/src/com/suse/manager/model/attestation/ServerCoCoAttestationReport.java @@ -28,20 +28,22 @@ import java.util.Map; import java.util.TreeMap; -import javax.persistence.Column; -import javax.persistence.Convert; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.OneToMany; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Convert; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; + +import io.hypersistence.utils.hibernate.type.json.JsonType; @Entity @Table(name = "suseServerCoCoAttestationReport") @@ -96,13 +98,13 @@ public CoCoAttestationStatus getStatus() { return status; } - @Type(type = "json") + @Type(JsonType.class) @Column(columnDefinition = "jsonb", name = "in_data") public Map getInData() { return inData; } - @Type(type = "json") + @Type(JsonType.class) @Column(columnDefinition = "jsonb", name = "out_data") public Map getOutData() { return outData; diff --git a/java/code/src/com/suse/manager/model/maintenance/MaintenanceCalendar.java b/java/code/src/com/suse/manager/model/maintenance/MaintenanceCalendar.java index 36038cbb3beb..776d5d7da253 100644 --- a/java/code/src/com/suse/manager/model/maintenance/MaintenanceCalendar.java +++ b/java/code/src/com/suse/manager/model/maintenance/MaintenanceCalendar.java @@ -23,18 +23,18 @@ import java.util.Optional; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Transient; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.NamedQueries; +import jakarta.persistence.NamedQuery; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; @Entity @Table(name = "suseMaintenanceCalendar") diff --git a/java/code/src/com/suse/manager/model/maintenance/MaintenanceSchedule.java b/java/code/src/com/suse/manager/model/maintenance/MaintenanceSchedule.java index e52fe8d52208..79b1b4e78237 100644 --- a/java/code/src/com/suse/manager/model/maintenance/MaintenanceSchedule.java +++ b/java/code/src/com/suse/manager/model/maintenance/MaintenanceSchedule.java @@ -23,20 +23,20 @@ import java.util.Optional; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import javax.persistence.Transient; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.NamedQueries; +import jakarta.persistence.NamedQuery; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; +import jakarta.persistence.Transient; /** * MaintenanceSchedule - store maintenance schedule objects diff --git a/java/code/src/com/suse/manager/utils/PagedSqlQueryBuilder.java b/java/code/src/com/suse/manager/utils/PagedSqlQueryBuilder.java index aefd755df2c9..1095661a2504 100644 --- a/java/code/src/com/suse/manager/utils/PagedSqlQueryBuilder.java +++ b/java/code/src/com/suse/manager/utils/PagedSqlQueryBuilder.java @@ -38,8 +38,8 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import javax.persistence.PersistenceException; -import javax.persistence.Tuple; +import jakarta.persistence.PersistenceException; +import jakarta.persistence.Tuple; /** * Helps building paged SQL queries diff --git a/java/code/src/com/suse/manager/utils/test/PagedSqlQueryBuilderTest.java b/java/code/src/com/suse/manager/utils/test/PagedSqlQueryBuilderTest.java index 2998b9490b98..6d62834d71bb 100644 --- a/java/code/src/com/suse/manager/utils/test/PagedSqlQueryBuilderTest.java +++ b/java/code/src/com/suse/manager/utils/test/PagedSqlQueryBuilderTest.java @@ -40,8 +40,8 @@ import java.util.function.Function; import java.util.stream.Stream; -import javax.persistence.Tuple; -import javax.persistence.TupleElement; +import jakarta.persistence.Tuple; +import jakarta.persistence.TupleElement; /** * Tests for PageSqlQueryBuilder diff --git a/java/code/src/com/suse/manager/utils/test/TestDto.java b/java/code/src/com/suse/manager/utils/test/TestDto.java index af5676bb89ff..cf512d1028b8 100644 --- a/java/code/src/com/suse/manager/utils/test/TestDto.java +++ b/java/code/src/com/suse/manager/utils/test/TestDto.java @@ -18,7 +18,7 @@ import java.util.Objects; -import javax.persistence.Tuple; +import jakarta.persistence.Tuple; /** * Test Dto class for PagedSqlQueryBuilder test diff --git a/java/code/src/com/suse/manager/webui/controllers/VirtualHostManagerController.java b/java/code/src/com/suse/manager/webui/controllers/VirtualHostManagerController.java index 15ab28294dc7..4f7702bbee4d 100644 --- a/java/code/src/com/suse/manager/webui/controllers/VirtualHostManagerController.java +++ b/java/code/src/com/suse/manager/webui/controllers/VirtualHostManagerController.java @@ -69,7 +69,8 @@ import java.util.function.Function; import java.util.stream.Collectors; -import javax.persistence.NoResultException; +import jakarta.persistence.NoResultException; + import javax.servlet.ServletContext; import spark.ModelAndView; diff --git a/java/code/src/com/suse/manager/webui/utils/gson/RecurringActionScheduleJson.java b/java/code/src/com/suse/manager/webui/utils/gson/RecurringActionScheduleJson.java index 7d5e81de6ee4..fb28a5eb7f0e 100644 --- a/java/code/src/com/suse/manager/webui/utils/gson/RecurringActionScheduleJson.java +++ b/java/code/src/com/suse/manager/webui/utils/gson/RecurringActionScheduleJson.java @@ -24,7 +24,7 @@ import java.util.List; import java.util.Objects; -import javax.persistence.Tuple; +import jakarta.persistence.Tuple; /** * JSON representation of the Recurring Action Scheduling diff --git a/java/code/src/com/suse/manager/webui/utils/gson/SimpleMinionJson.java b/java/code/src/com/suse/manager/webui/utils/gson/SimpleMinionJson.java index c819dfd5dce6..9183b71e8e38 100644 --- a/java/code/src/com/suse/manager/webui/utils/gson/SimpleMinionJson.java +++ b/java/code/src/com/suse/manager/webui/utils/gson/SimpleMinionJson.java @@ -18,7 +18,7 @@ import com.redhat.rhn.domain.server.MinionServer; import com.redhat.rhn.frontend.dto.BaseTupleDto; -import javax.persistence.Tuple; +import jakarta.persistence.Tuple; /** * Simple JSON representation of a Salt Minion. diff --git a/java/code/src/com/suse/oval/OvalParser.java b/java/code/src/com/suse/oval/OvalParser.java index babe3b0b22f7..57dc5e312a93 100755 --- a/java/code/src/com/suse/oval/OvalParser.java +++ b/java/code/src/com/suse/oval/OvalParser.java @@ -22,9 +22,9 @@ import java.net.URISyntaxException; import java.net.URL; -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Unmarshaller; +import jakarta.xml.bind.JAXBContext; +import jakarta.xml.bind.JAXBException; +import jakarta.xml.bind.Unmarshaller; /** * The Oval Parser is responsible for parsing OVAL(Open Vulnerability and Assessment Language) documents diff --git a/java/code/src/com/suse/oval/ovaltypes/Advisory.java b/java/code/src/com/suse/oval/ovaltypes/Advisory.java index 2ed4301238ad..f23f13c00718 100644 --- a/java/code/src/com/suse/oval/ovaltypes/Advisory.java +++ b/java/code/src/com/suse/oval/ovaltypes/Advisory.java @@ -19,10 +19,10 @@ import java.util.List; import java.util.Optional; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlType; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(namespace = "http://oval.mitre.org/XMLSchema/oval-definitions-5") diff --git a/java/code/src/com/suse/oval/ovaltypes/AdvisoryAffectedType.java b/java/code/src/com/suse/oval/ovaltypes/AdvisoryAffectedType.java index 614dc60236d4..d5b88bdb90b9 100644 --- a/java/code/src/com/suse/oval/ovaltypes/AdvisoryAffectedType.java +++ b/java/code/src/com/suse/oval/ovaltypes/AdvisoryAffectedType.java @@ -15,10 +15,10 @@ package com.suse.oval.ovaltypes; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlType; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(namespace = "http://oval.mitre.org/XMLSchema/oval-definitions-5") diff --git a/java/code/src/com/suse/oval/ovaltypes/AdvisoryCveType.java b/java/code/src/com/suse/oval/ovaltypes/AdvisoryCveType.java index c2eeb45c8760..0ad875573051 100644 --- a/java/code/src/com/suse/oval/ovaltypes/AdvisoryCveType.java +++ b/java/code/src/com/suse/oval/ovaltypes/AdvisoryCveType.java @@ -15,10 +15,10 @@ package com.suse.oval.ovaltypes; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; -import javax.xml.bind.annotation.XmlValue; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlValue; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(namespace = "http://oval.mitre.org/XMLSchema/oval-definitions-5") diff --git a/java/code/src/com/suse/oval/ovaltypes/AdvisoryResolutionType.java b/java/code/src/com/suse/oval/ovaltypes/AdvisoryResolutionType.java index b1aa806ef4b3..e125f2e5f6ce 100644 --- a/java/code/src/com/suse/oval/ovaltypes/AdvisoryResolutionType.java +++ b/java/code/src/com/suse/oval/ovaltypes/AdvisoryResolutionType.java @@ -17,11 +17,11 @@ import java.util.List; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlAttribute; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlType; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(namespace = "http://oval.mitre.org/XMLSchema/oval-definitions-5") diff --git a/java/code/src/com/suse/oval/ovaltypes/AffectedCpeList.java b/java/code/src/com/suse/oval/ovaltypes/AffectedCpeList.java index e00656e279b5..ce9bce0a0bb0 100644 --- a/java/code/src/com/suse/oval/ovaltypes/AffectedCpeList.java +++ b/java/code/src/com/suse/oval/ovaltypes/AffectedCpeList.java @@ -18,10 +18,10 @@ import java.util.ArrayList; import java.util.List; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlType; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(namespace = "http://oval.mitre.org/XMLSchema/oval-definitions-5") diff --git a/java/code/src/com/suse/oval/ovaltypes/ArchType.java b/java/code/src/com/suse/oval/ovaltypes/ArchType.java index 8dbc2e840704..51f8776d2114 100755 --- a/java/code/src/com/suse/oval/ovaltypes/ArchType.java +++ b/java/code/src/com/suse/oval/ovaltypes/ArchType.java @@ -15,11 +15,11 @@ package com.suse.oval.ovaltypes; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlType; -import javax.xml.bind.annotation.XmlValue; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlAttribute; +import jakarta.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlValue; /** * This is the architecture for which the package was built, like : i386, ppc, sparc, noarch. diff --git a/java/code/src/com/suse/oval/ovaltypes/CriteriaType.java b/java/code/src/com/suse/oval/ovaltypes/CriteriaType.java index 815da71f1e1c..37564be59fca 100755 --- a/java/code/src/com/suse/oval/ovaltypes/CriteriaType.java +++ b/java/code/src/com/suse/oval/ovaltypes/CriteriaType.java @@ -18,12 +18,12 @@ import java.util.ArrayList; import java.util.List; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlElements; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlAttribute; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlElements; +import jakarta.xml.bind.annotation.XmlType; /** * The required operator attribute provides the logical operator that binds the different statements inside a criteria diff --git a/java/code/src/com/suse/oval/ovaltypes/CriterionType.java b/java/code/src/com/suse/oval/ovaltypes/CriterionType.java index 6065ee42b73f..a58972456adf 100755 --- a/java/code/src/com/suse/oval/ovaltypes/CriterionType.java +++ b/java/code/src/com/suse/oval/ovaltypes/CriterionType.java @@ -15,10 +15,10 @@ package com.suse.oval.ovaltypes; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlAttribute; +import jakarta.xml.bind.annotation.XmlType; /** diff --git a/java/code/src/com/suse/oval/ovaltypes/DefinitionClassEnum.java b/java/code/src/com/suse/oval/ovaltypes/DefinitionClassEnum.java index 9f0dc24a162a..1404f10bdc3b 100755 --- a/java/code/src/com/suse/oval/ovaltypes/DefinitionClassEnum.java +++ b/java/code/src/com/suse/oval/ovaltypes/DefinitionClassEnum.java @@ -15,9 +15,9 @@ package com.suse.oval.ovaltypes; -import javax.xml.bind.annotation.XmlEnum; -import javax.xml.bind.annotation.XmlEnumValue; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlEnum; +import jakarta.xml.bind.annotation.XmlEnumValue; +import jakarta.xml.bind.annotation.XmlType; @XmlType(name = "ClassEnumeration", namespace = "http://oval.mitre.org/XMLSchema/oval-common-5") diff --git a/java/code/src/com/suse/oval/ovaltypes/DefinitionType.java b/java/code/src/com/suse/oval/ovaltypes/DefinitionType.java index 79de6daba3ae..0b19c6aff66b 100755 --- a/java/code/src/com/suse/oval/ovaltypes/DefinitionType.java +++ b/java/code/src/com/suse/oval/ovaltypes/DefinitionType.java @@ -21,12 +21,12 @@ import java.util.List; import java.util.Optional; -import javax.persistence.Transient; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; +import jakarta.persistence.Transient; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlAttribute; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlType; diff --git a/java/code/src/com/suse/oval/ovaltypes/DefinitionsType.java b/java/code/src/com/suse/oval/ovaltypes/DefinitionsType.java index 4878de5d6d69..2f4d2a83e73b 100755 --- a/java/code/src/com/suse/oval/ovaltypes/DefinitionsType.java +++ b/java/code/src/com/suse/oval/ovaltypes/DefinitionsType.java @@ -18,10 +18,10 @@ import java.util.ArrayList; import java.util.List; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlType; /** * The DefinitionsType complex type is a container for one or more definition elements. diff --git a/java/code/src/com/suse/oval/ovaltypes/EVRDataTypeEnum.java b/java/code/src/com/suse/oval/ovaltypes/EVRDataTypeEnum.java index 53d6c11e59d7..56e8aadbd60a 100755 --- a/java/code/src/com/suse/oval/ovaltypes/EVRDataTypeEnum.java +++ b/java/code/src/com/suse/oval/ovaltypes/EVRDataTypeEnum.java @@ -15,9 +15,9 @@ package com.suse.oval.ovaltypes; -import javax.xml.bind.annotation.XmlEnum; -import javax.xml.bind.annotation.XmlEnumValue; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlEnum; +import jakarta.xml.bind.annotation.XmlEnumValue; +import jakarta.xml.bind.annotation.XmlType; @XmlType(namespace = "http://oval.mitre.org/XMLSchema/oval-common-5") @XmlEnum diff --git a/java/code/src/com/suse/oval/ovaltypes/EVRType.java b/java/code/src/com/suse/oval/ovaltypes/EVRType.java index 013e5a6c5c2d..be8df6dab6ee 100755 --- a/java/code/src/com/suse/oval/ovaltypes/EVRType.java +++ b/java/code/src/com/suse/oval/ovaltypes/EVRType.java @@ -15,11 +15,11 @@ package com.suse.oval.ovaltypes; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlType; -import javax.xml.bind.annotation.XmlValue; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlAttribute; +import jakarta.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlValue; /** * This represents the epoch, version, and release fields as a single version string. diff --git a/java/code/src/com/suse/oval/ovaltypes/FamilyEnum.java b/java/code/src/com/suse/oval/ovaltypes/FamilyEnum.java index 17e7eaec4f07..18f080be1081 100755 --- a/java/code/src/com/suse/oval/ovaltypes/FamilyEnum.java +++ b/java/code/src/com/suse/oval/ovaltypes/FamilyEnum.java @@ -15,9 +15,9 @@ package com.suse.oval.ovaltypes; -import javax.xml.bind.annotation.XmlEnum; -import javax.xml.bind.annotation.XmlEnumValue; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlEnum; +import jakarta.xml.bind.annotation.XmlEnumValue; +import jakarta.xml.bind.annotation.XmlType; @XmlType(name = "FamilyEnumeration", namespace = "http://oval.mitre.org/XMLSchema/oval-common-5") diff --git a/java/code/src/com/suse/oval/ovaltypes/LogicOperatorType.java b/java/code/src/com/suse/oval/ovaltypes/LogicOperatorType.java index 72628e308d83..cf53c2199814 100755 --- a/java/code/src/com/suse/oval/ovaltypes/LogicOperatorType.java +++ b/java/code/src/com/suse/oval/ovaltypes/LogicOperatorType.java @@ -15,8 +15,8 @@ package com.suse.oval.ovaltypes; -import javax.xml.bind.annotation.XmlEnum; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlEnum; +import jakarta.xml.bind.annotation.XmlType; @XmlType(name = "OperatorEnumeration", namespace = "http://oval.mitre.org/XMLSchema/oval-common-5") @XmlEnum diff --git a/java/code/src/com/suse/oval/ovaltypes/MetadataType.java b/java/code/src/com/suse/oval/ovaltypes/MetadataType.java index 41efdc003ab7..6c9a44bf91ee 100755 --- a/java/code/src/com/suse/oval/ovaltypes/MetadataType.java +++ b/java/code/src/com/suse/oval/ovaltypes/MetadataType.java @@ -17,10 +17,10 @@ import java.util.Optional; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlType; /** * Additional metadata is also allowed, although it is not part of the official OVAL Schema. diff --git a/java/code/src/com/suse/oval/ovaltypes/ObjectRefType.java b/java/code/src/com/suse/oval/ovaltypes/ObjectRefType.java index 85cd0c91196f..6d6f8d67ecbc 100755 --- a/java/code/src/com/suse/oval/ovaltypes/ObjectRefType.java +++ b/java/code/src/com/suse/oval/ovaltypes/ObjectRefType.java @@ -15,10 +15,10 @@ package com.suse.oval.ovaltypes; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlAttribute; +import jakarta.xml.bind.annotation.XmlType; /** * The ObjectRefType defines an object reference to be used by OVAL Tests that are defined in the component schemas. diff --git a/java/code/src/com/suse/oval/ovaltypes/ObjectType.java b/java/code/src/com/suse/oval/ovaltypes/ObjectType.java index 29be99eada9c..078e3c50d911 100755 --- a/java/code/src/com/suse/oval/ovaltypes/ObjectType.java +++ b/java/code/src/com/suse/oval/ovaltypes/ObjectType.java @@ -18,11 +18,11 @@ import com.suse.oval.ovaltypes.linux.DpkginfoObject; import com.suse.oval.ovaltypes.linux.RpminfoObject; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlAttribute; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlType; /** diff --git a/java/code/src/com/suse/oval/ovaltypes/ObjectsType.java b/java/code/src/com/suse/oval/ovaltypes/ObjectsType.java index 3de393c5f04e..f5c99c01db37 100755 --- a/java/code/src/com/suse/oval/ovaltypes/ObjectsType.java +++ b/java/code/src/com/suse/oval/ovaltypes/ObjectsType.java @@ -21,11 +21,11 @@ import java.util.ArrayList; import java.util.List; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlElements; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlElements; +import jakarta.xml.bind.annotation.XmlType; /** * The ObjectsType is a container for one or more object child elements. diff --git a/java/code/src/com/suse/oval/ovaltypes/OperationEnumeration.java b/java/code/src/com/suse/oval/ovaltypes/OperationEnumeration.java index 6719375df3ed..283dbf755469 100755 --- a/java/code/src/com/suse/oval/ovaltypes/OperationEnumeration.java +++ b/java/code/src/com/suse/oval/ovaltypes/OperationEnumeration.java @@ -15,9 +15,9 @@ package com.suse.oval.ovaltypes; -import javax.xml.bind.annotation.XmlEnum; -import javax.xml.bind.annotation.XmlEnumValue; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlEnum; +import jakarta.xml.bind.annotation.XmlEnumValue; +import jakarta.xml.bind.annotation.XmlType; @XmlType(name = "OperationEnumeration", namespace = "http://oval.mitre.org/XMLSchema/oval-common-5") @XmlEnum diff --git a/java/code/src/com/suse/oval/ovaltypes/OvalRootType.java b/java/code/src/com/suse/oval/ovaltypes/OvalRootType.java index 78549984e3e7..45e7c8da9f69 100755 --- a/java/code/src/com/suse/oval/ovaltypes/OvalRootType.java +++ b/java/code/src/com/suse/oval/ovaltypes/OvalRootType.java @@ -21,12 +21,12 @@ import java.util.List; import java.util.Optional; -import javax.persistence.Transient; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; +import jakarta.persistence.Transient; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlRootElement; +import jakarta.xml.bind.annotation.XmlType; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "") diff --git a/java/code/src/com/suse/oval/ovaltypes/StateRefType.java b/java/code/src/com/suse/oval/ovaltypes/StateRefType.java index e5c8a327c101..f25df85ffbe9 100755 --- a/java/code/src/com/suse/oval/ovaltypes/StateRefType.java +++ b/java/code/src/com/suse/oval/ovaltypes/StateRefType.java @@ -15,10 +15,10 @@ package com.suse.oval.ovaltypes; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlAttribute; +import jakarta.xml.bind.annotation.XmlType; /** diff --git a/java/code/src/com/suse/oval/ovaltypes/StateType.java b/java/code/src/com/suse/oval/ovaltypes/StateType.java index a1d42b9e5754..b6e014482140 100755 --- a/java/code/src/com/suse/oval/ovaltypes/StateType.java +++ b/java/code/src/com/suse/oval/ovaltypes/StateType.java @@ -17,11 +17,11 @@ import java.util.Optional; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlAttribute; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlType; /** diff --git a/java/code/src/com/suse/oval/ovaltypes/StatesType.java b/java/code/src/com/suse/oval/ovaltypes/StatesType.java index 031ea7bb5cbe..de8037afac02 100755 --- a/java/code/src/com/suse/oval/ovaltypes/StatesType.java +++ b/java/code/src/com/suse/oval/ovaltypes/StatesType.java @@ -21,11 +21,11 @@ import java.util.ArrayList; import java.util.List; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlElements; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlElements; +import jakarta.xml.bind.annotation.XmlType; /** * The StatesType is a container for one or more state child elements. diff --git a/java/code/src/com/suse/oval/ovaltypes/TestType.java b/java/code/src/com/suse/oval/ovaltypes/TestType.java index 602a564adea7..14c109d69361 100755 --- a/java/code/src/com/suse/oval/ovaltypes/TestType.java +++ b/java/code/src/com/suse/oval/ovaltypes/TestType.java @@ -18,11 +18,11 @@ import java.util.List; import java.util.Optional; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlAttribute; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlType; /** * The optional state_operator attribute provides the logical operator that combines the evaluation results from diff --git a/java/code/src/com/suse/oval/ovaltypes/TestsType.java b/java/code/src/com/suse/oval/ovaltypes/TestsType.java index 874b3e49c70c..1afb8f9c5444 100755 --- a/java/code/src/com/suse/oval/ovaltypes/TestsType.java +++ b/java/code/src/com/suse/oval/ovaltypes/TestsType.java @@ -21,11 +21,11 @@ import java.util.ArrayList; import java.util.List; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlElements; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlElements; +import jakarta.xml.bind.annotation.XmlType; /** * The TestsType complex type is a container for one or more test child elements. diff --git a/java/code/src/com/suse/oval/ovaltypes/VersionType.java b/java/code/src/com/suse/oval/ovaltypes/VersionType.java index 41fa03c4b77b..ea6f9fcd8aab 100755 --- a/java/code/src/com/suse/oval/ovaltypes/VersionType.java +++ b/java/code/src/com/suse/oval/ovaltypes/VersionType.java @@ -15,11 +15,11 @@ package com.suse.oval.ovaltypes; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlType; -import javax.xml.bind.annotation.XmlValue; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlAttribute; +import jakarta.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlValue; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", namespace = "http://oval.mitre.org/XMLSchema/oval-definitions-5") diff --git a/java/code/src/com/suse/oval/ovaltypes/linux/DpkginfoObject.java b/java/code/src/com/suse/oval/ovaltypes/linux/DpkginfoObject.java index da371e9c1961..fa06306d9c77 100755 --- a/java/code/src/com/suse/oval/ovaltypes/linux/DpkginfoObject.java +++ b/java/code/src/com/suse/oval/ovaltypes/linux/DpkginfoObject.java @@ -17,9 +17,9 @@ import com.suse.oval.ovaltypes.ObjectType; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlType; /** diff --git a/java/code/src/com/suse/oval/ovaltypes/linux/DpkginfoState.java b/java/code/src/com/suse/oval/ovaltypes/linux/DpkginfoState.java index 98eda67b7a33..9934a0b4397b 100755 --- a/java/code/src/com/suse/oval/ovaltypes/linux/DpkginfoState.java +++ b/java/code/src/com/suse/oval/ovaltypes/linux/DpkginfoState.java @@ -18,9 +18,9 @@ import com.suse.oval.ovaltypes.StateType; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlType; /** diff --git a/java/code/src/com/suse/oval/ovaltypes/linux/DpkginfoTest.java b/java/code/src/com/suse/oval/ovaltypes/linux/DpkginfoTest.java index 982bbeab1bad..369c65261a93 100755 --- a/java/code/src/com/suse/oval/ovaltypes/linux/DpkginfoTest.java +++ b/java/code/src/com/suse/oval/ovaltypes/linux/DpkginfoTest.java @@ -17,9 +17,9 @@ import com.suse.oval.ovaltypes.TestType; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlType; /** * An OVAL {@link com.suse.oval.ovaltypes.TestType} for DPKG packages diff --git a/java/code/src/com/suse/oval/ovaltypes/linux/RpminfoObject.java b/java/code/src/com/suse/oval/ovaltypes/linux/RpminfoObject.java index 638c7ce89852..b31482028e1b 100755 --- a/java/code/src/com/suse/oval/ovaltypes/linux/RpminfoObject.java +++ b/java/code/src/com/suse/oval/ovaltypes/linux/RpminfoObject.java @@ -17,9 +17,9 @@ import com.suse.oval.ovaltypes.ObjectType; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlType; /** * A rpm info object consists of a single name entity that identifies the package being checked. diff --git a/java/code/src/com/suse/oval/ovaltypes/linux/RpminfoState.java b/java/code/src/com/suse/oval/ovaltypes/linux/RpminfoState.java index 7969a176aa15..63f286141354 100755 --- a/java/code/src/com/suse/oval/ovaltypes/linux/RpminfoState.java +++ b/java/code/src/com/suse/oval/ovaltypes/linux/RpminfoState.java @@ -18,9 +18,9 @@ import com.suse.oval.ovaltypes.StateType; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlType; /** * An OVAL {@link com.suse.oval.ovaltypes.StateType} for RPM packages diff --git a/java/code/src/com/suse/oval/ovaltypes/linux/RpminfoTest.java b/java/code/src/com/suse/oval/ovaltypes/linux/RpminfoTest.java index e7fc464a84a7..f343e280db0e 100755 --- a/java/code/src/com/suse/oval/ovaltypes/linux/RpminfoTest.java +++ b/java/code/src/com/suse/oval/ovaltypes/linux/RpminfoTest.java @@ -17,9 +17,9 @@ import com.suse.oval.ovaltypes.TestType; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlType; /** diff --git a/java/code/src/ehcache.xml b/java/code/src/ehcache.xml deleted file mode 100644 index b8772ba6da60..000000000000 --- a/java/code/src/ehcache.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - diff --git a/java/code/src/log4j2.xml b/java/code/src/log4j2.xml index 9dc9c87e7f97..542f2ee27e0a 100644 --- a/java/code/src/log4j2.xml +++ b/java/code/src/log4j2.xml @@ -109,28 +109,6 @@ --> - - - - - - - - - - - - - - - - - - - - - - diff --git a/java/conf/default/rhn_hibernate.conf b/java/conf/default/rhn_hibernate.conf index a1051e2624e6..c0a4ca99476e 100644 --- a/java/conf/default/rhn_hibernate.conf +++ b/java/conf/default/rhn_hibernate.conf @@ -29,10 +29,8 @@ hibernate.c3p0.idle_test_period=300 hibernate.c3p0.testConnectionOnCheckout=true hibernate.c3p0.preferredTestQuery=select 'c3p0 ping' from dual -hibernate.cache.use_query_cache=true +hibernate.cache.use_query_cache=false +hibernate.cache.use_second_level_cache=false hibernate.bytecode.use_reflection_optimizer=false hibernate.jdbc.batch_size=0 -hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider -hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory hibernate.id.new_generator_mappings = true -hibernate.cache.ehcache.missing_cache_strategy=create diff --git a/java/conf/default/rhn_reporting_hibernate.conf b/java/conf/default/rhn_reporting_hibernate.conf index c084b26c2ebd..c3257afa3306 100644 --- a/java/conf/default/rhn_reporting_hibernate.conf +++ b/java/conf/default/rhn_reporting_hibernate.conf @@ -29,10 +29,8 @@ reporting.hibernate.c3p0.idle_test_period=300 reporting.hibernate.c3p0.testConnectionOnCheckout=true reporting.hibernate.c3p0.preferredTestQuery=select 'c3p0 ping' from dual -reporting.hibernate.cache.use_query_cache=true +hibernate.cache.use_query_cache=false +hibernate.cache.use_second_level_cache=false reporting.hibernate.bytecode.use_reflection_optimizer=false reporting.hibernate.jdbc.batch_size=0 -reporting.hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider -reporting.hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory reporting.hibernate.id.new_generator_mappings = false -reporting.hibernate.cache.ehcache.missing_cache_strategy=create diff --git a/java/conf/eclipse/.settings/eclipse_custom_profile.xml b/java/conf/eclipse/.settings/eclipse_custom_profile.xml new file mode 100644 index 000000000000..1a49e5017717 --- /dev/null +++ b/java/conf/eclipse/.settings/eclipse_custom_profile.xml @@ -0,0 +1,370 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/conf/eclipse/.settings/org.eclipse.jdt.core.prefs b/java/conf/eclipse/.settings/org.eclipse.jdt.core.prefs index 38ea57d434bc..e4515ca7e893 100644 --- a/java/conf/eclipse/.settings/org.eclipse.jdt.core.prefs +++ b/java/conf/eclipse/.settings/org.eclipse.jdt.core.prefs @@ -1,9 +1,9 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=11 +org.eclipse.jdt.core.compiler.compliance=17 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate @@ -12,7 +12,7 @@ org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning org.eclipse.jdt.core.compiler.release=disabled -org.eclipse.jdt.core.compiler.source=11 +org.eclipse.jdt.core.compiler.source=17 org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false diff --git a/java/conf/intellij-codestyle.xml b/java/conf/intellij-codestyle.xml index 75f1ae4928fb..9c1d231b54a1 100644 --- a/java/conf/intellij-codestyle.xml +++ b/java/conf/intellij-codestyle.xml @@ -18,6 +18,8 @@ + + @@ -31,4 +33,4 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/java/spacewalk-java.changes.mbussolotto.hibernate_upgrade b/java/spacewalk-java.changes.mbussolotto.hibernate_upgrade new file mode 100644 index 000000000000..d490515f4cf9 --- /dev/null +++ b/java/spacewalk-java.changes.mbussolotto.hibernate_upgrade @@ -0,0 +1 @@ +- hibernate 6 upgrade diff --git a/java/spacewalk-java.spec b/java/spacewalk-java.spec index 60b8861511d3..4366b5c5bc23 100644 --- a/java/spacewalk-java.spec +++ b/java/spacewalk-java.spec @@ -97,11 +97,11 @@ BuildRequires: concurrent BuildRequires: dom4j BuildRequires: dwr >= 3 BuildRequires: glassfish-activation -BuildRequires: glassfish-jaxb-api +BuildRequires: jaxb-api BuildRequires: glassfish-jaxb-runtime BuildRequires: glassfish-jaxb-txw2 -BuildRequires: hibernate-commons-annotations -BuildRequires: hibernate-types +BuildRequires: hibernate-commons-annotations >= 6 +BuildRequires: hypersistence-utils >= 3.8.2 BuildRequires: httpcomponents-asyncclient BuildRequires: httpcomponents-client BuildRequires: ical4j @@ -116,7 +116,7 @@ BuildRequires: jboss-logging BuildRequires: jdom BuildRequires: joda-time BuildRequires: jose4j -BuildRequires: jpa-api +BuildRequires: jpa-api >= 3.1 BuildRequires: jsch BuildRequires: jta BuildRequires: libxml2 @@ -150,9 +150,9 @@ BuildRequires: xalan-j2 BuildRequires: xmlsec BuildRequires: (google-gson >= 2.2.4 with google-gson < 2.10.0) BuildRequires: mvn(org.apache.velocity:velocity-engine-core) >= 2.2 -BuildRequires: mvn(org.hibernate:hibernate-c3p0) -BuildRequires: mvn(org.hibernate:hibernate-core) -BuildRequires: mvn(org.hibernate:hibernate-ehcache) +BuildRequires: mvn(org.hibernate:hibernate-c3p0) >= 6 +BuildRequires: mvn(org.hibernate:hibernate-core) >= 6 +BuildRequires: mvn(org.hibernate:hibernate-ehcache) >= 6 %if 0%{?suse_version} BuildRequires: ant-nodeps BuildRequires: libxml2-tools @@ -188,8 +188,8 @@ Requires: glassfish-activation Requires: glassfish-jaxb-api Requires: glassfish-jaxb-runtime Requires: glassfish-jaxb-txw2 -Requires: hibernate-commons-annotations -Requires: hibernate-types +Requires: hibernate-commons-annotations >= 6 +Requires: hypersistence-utils >= 3.8.2 Requires: httpcomponents-client Requires: ical4j Requires: istack-commons-runtime @@ -203,7 +203,7 @@ Requires: jboss-logging Requires: jdom Requires: joda-time Requires: jose4j -Requires: jpa-api +Requires: jpa-api >= 3.1 Requires: jta Requires: libsolv-tools Requires: log4j @@ -241,9 +241,9 @@ Requires: xmlsec Requires: (/sbin/unix2_chkpwd or /usr/sbin/unix2_chkpwd) Requires: (google-gson >= 2.2.4 with google-gson < 2.10.0) Requires: mvn(org.apache.tomcat:tomcat-servlet-api) > 8 -Requires: mvn(org.hibernate:hibernate-c3p0) -Requires: mvn(org.hibernate:hibernate-core) -Requires: mvn(org.hibernate:hibernate-ehcache) +Requires: mvn(org.hibernate:hibernate-c3p0) >= 6 +Requires: mvn(org.hibernate:hibernate-core) >= 6 +Requires: mvn(org.hibernate:hibernate-ehcache) >= 6 Requires: openssl # libtcnative-1-0 is only recommended in tomcat. # We want it always to prevent warnings about openssl cannot be used @@ -364,7 +364,7 @@ Requires: cglib Requires: classmate Requires: cobbler Requires: concurrent -Requires: hibernate-commons-annotations +Requires: hibernate-commons-annotations >= 6 Requires: httpcomponents-client Requires: httpcomponents-core Requires: java-%{java_version}-openjdk @@ -385,9 +385,9 @@ Requires: tomcat-taglibs-standard Requires: xalan-j2 >= 2.6.0 Requires: xerces-j2 Requires: (/sbin/unix2_chkpwd or /usr/sbin/unix2_chkpwd) -Requires: mvn(org.hibernate:hibernate-c3p0) -Requires: mvn(org.hibernate:hibernate-core) -Requires: mvn(org.hibernate:hibernate-ehcache) +Requires: mvn(org.hibernate:hibernate-c3p0) >= 6 +Requires: mvn(org.hibernate:hibernate-core) >= 6 +Requires: mvn(org.hibernate:hibernate-ehcache) >= 6 Conflicts: quartz < 2.0 diff --git a/spacewalk/setup/share/tomcat_java_opts.conf b/spacewalk/setup/share/tomcat_java_opts.conf index 510e0d9f4bf7..e26502369a99 100644 --- a/spacewalk/setup/share/tomcat_java_opts.conf +++ b/spacewalk/setup/share/tomcat_java_opts.conf @@ -1 +1 @@ -JAVA_OPTS="$JAVA_OPTS -ea -Xms256m -Xmx1G -Djava.awt.headless=true -Dorg.xml.sax.driver=com.redhat.rhn.frontend.xmlrpc.util.RhnSAXParser -Dorg.apache.tomcat.util.http.Parameters.MAX_COUNT=1024 -Dnet.sf.ehcache.skipUpdateCheck=true" +JAVA_OPTS="$JAVA_OPTS -ea -Xms256m -Xmx1G -Djava.awt.headless=true -Dorg.xml.sax.driver=com.redhat.rhn.frontend.xmlrpc.util.RhnSAXParser -Dorg.apache.tomcat.util.http.Parameters.MAX_COUNT=1024"