This is an automated email from the ASF dual-hosted git repository. solomax pushed a commit to branch h2-test-DB in repository https://gitbox.apache.org/repos/asf/openmeetings.git
commit 908fa6298519d5d6448f331a3a909cbf0742ceaa Author: Maxim Solodovnik <solomax...@gmail.com> AuthorDate: Tue Dec 25 16:01:41 2018 +0700 no jira: H2 is being used as main test DB --- openmeetings-core/pom.xml | 1 - .../java/org/apache/openmeetings/cli/Admin.java | 2 +- .../cli/ConnectionPropertiesPatcher.java | 19 +++-- .../org/apache/openmeetings/cli/H2Patcher.java | 26 +++++++ .../service/calendar/caldav/IcalUtils.java | 25 ++++--- .../openmeetings/util/ConnectionProperties.java | 20 ++++-- .../org/apache/openmeetings/util/OmFileHelper.java | 6 +- openmeetings-web/pom.xml | 8 ++- .../web/pages/install/InstallWizard.java | 58 ++++++++++------ .../WEB-INF/classes/META-INF/h2_persistence.xml | 81 ++++++++++++++++++++++ .../org/apache/openmeetings/cli/TestAdmin.java | 4 +- .../openmeetings/derby/PrepareSystemFiles.java | 2 +- .../webservice/AbstractWebServiceTest.java | 17 ++++- pom.xml | 8 ++- 14 files changed, 221 insertions(+), 56 deletions(-) diff --git a/openmeetings-core/pom.xml b/openmeetings-core/pom.xml index d7538d8..a6b4b0e 100644 --- a/openmeetings-core/pom.xml +++ b/openmeetings-core/pom.xml @@ -98,7 +98,6 @@ <dependency> <groupId>org.kurento</groupId> <artifactId>kurento-client</artifactId> - <version>6.8.0</version> </dependency> <!-- Test dependencies --> <dependency> diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java index 00838cc..5317515 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java @@ -320,7 +320,7 @@ public class Admin { || cmdl.hasOption(OPTION_DB_PORT) || cmdl.hasOption(OPTION_DB_NAME) || cmdl.hasOption(OPTION_DB_USER) || cmdl.hasOption(OPTION_DB_PASS)) { - String dbType = cmdl.getOptionValue(OPTION_DB_TYPE, DbType.derby.name()); + String dbType = cmdl.getOptionValue(OPTION_DB_TYPE, DbType.DERBY.getLabel()); connectionProperties = ConnectionPropertiesPatcher.patch(dbType , cmdl.getOptionValue(OPTION_DB_HOST, "localhost") , cmdl.getOptionValue(OPTION_DB_PORT, null) diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/ConnectionPropertiesPatcher.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/ConnectionPropertiesPatcher.java index 6fc273d..80ab310 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/ConnectionPropertiesPatcher.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/ConnectionPropertiesPatcher.java @@ -19,6 +19,7 @@ package org.apache.openmeetings.cli; import java.io.File; +import java.util.Locale; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; @@ -50,22 +51,25 @@ public abstract class ConnectionPropertiesPatcher { public static ConnectionPropertiesPatcher getPatcher(ConnectionProperties props) { ConnectionPropertiesPatcher patcher; switch (props.getDbType()) { - case db2: + case DB2: patcher = new Db2Patcher(); break; - case mssql: + case MSSQL: patcher = new MssqlPatcher(); break; - case mysql: + case MYSQL: patcher = new MysqlPatcher(); break; - case oracle: + case ORACLE: patcher = new OraclePatcher(); break; - case postgresql: + case POSTGRESQL: patcher = new PostgresPatcher(); break; - case derby: + case H2: + patcher = new H2Patcher(); + break; + case DERBY: default: patcher = new DerbyPatcher(); break; @@ -165,7 +169,8 @@ public abstract class ConnectionPropertiesPatcher { try { //will try to "guess" dbType String[] parts = prop.split(":"); - connectionProperties.setDbType("sqlserver".equals(parts[1]) ? DbType.mssql : DbType.valueOf(parts[1])); + final String name = parts[1].toUpperCase(Locale.ROOT); + connectionProperties.setDbType("SQLSERVER".equals(name) ? DbType.MSSQL : DbType.valueOf(name)); } catch (Exception e) { //ignore } diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/H2Patcher.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/H2Patcher.java new file mode 100644 index 0000000..a6ab29f --- /dev/null +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/H2Patcher.java @@ -0,0 +1,26 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License") + you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.openmeetings.cli; + +public class H2Patcher extends ConnectionPropertiesPatcher { + @Override + protected String getUrl(String _url, String host, String _port, String _db) { + return _url; // no processing + } +} diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/IcalUtils.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/IcalUtils.java index fe96d1a..7a4acd1 100644 --- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/IcalUtils.java +++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/IcalUtils.java @@ -53,7 +53,7 @@ import net.fortuna.ical4j.model.DateTime; import net.fortuna.ical4j.model.Parameter; import net.fortuna.ical4j.model.Property; import net.fortuna.ical4j.model.PropertyList; -import net.fortuna.ical4j.model.Recur; +import net.fortuna.ical4j.model.Recur.Frequency; import net.fortuna.ical4j.model.TimeZoneRegistry; import net.fortuna.ical4j.model.TimeZoneRegistryFactory; import net.fortuna.ical4j.model.component.CalendarComponent; @@ -205,17 +205,26 @@ public class IcalUtils { } if (recur != null) { - Parameter freq = recur.getParameter("FREQ"); - if (freq != null) { - if (freq.getValue().equals(Recur.DAILY)) { + Parameter pFreq = recur.getParameter("FREQ"); + Frequency freq = Frequency.valueOf(pFreq.getValue()); + switch (freq) { + case DAILY: a.setIsDaily(true); - } else if (freq.getValue().equals(Recur.WEEKLY)) { + break; + case WEEKLY: a.setIsWeekly(true); - } else if (freq.getValue().equals(Recur.MONTHLY)) { + break; + case MONTHLY: a.setIsMonthly(true); - } else if (freq.getValue().equals(Recur.YEARLY)) { + break; + case YEARLY: a.setIsYearly(true); - } + break; + case SECONDLY: + case MINUTELY: + case HOURLY: + default: + break; } } diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/ConnectionProperties.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/ConnectionProperties.java index 9bdd639..1223467 100644 --- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/ConnectionProperties.java +++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/ConnectionProperties.java @@ -19,24 +19,30 @@ package org.apache.openmeetings.util; import java.io.Serializable; +import java.util.Locale; public class ConnectionProperties implements Serializable { private static final long serialVersionUID = 1L; public enum DbType { - db2 - , derby - , mssql - , mysql - , oracle - , postgresql + DB2 + , DERBY + , MSSQL + , MYSQL + , ORACLE + , POSTGRESQL + , H2; // for testing purposes + + public final String getLabel() { + return name().toLowerCase(Locale.ROOT); + } } private String driver = "org.apache.derby.jdbc.EmbeddedDriver"; private String url = "jdbc:derby:openmeetings"; private String login = "user"; private String password = "secret"; - private DbType dbType = DbType.derby; + private DbType dbType = DbType.DERBY; public String getDriver() { return driver; diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java index fee3d02..b014e42 100644 --- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java +++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java @@ -31,6 +31,7 @@ import java.util.Locale; import java.util.Properties; import org.apache.openmeetings.util.ConnectionProperties.DbType; +import org.apache.wicket.util.string.Strings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -255,11 +256,12 @@ public class OmFileHelper { } public static File getPersistence(String dbType) { - return getPersistence(DbType.valueOf(dbType)); + return getPersistence(Strings.isEmpty(dbType) ? null + : DbType.valueOf(dbType.toUpperCase(Locale.ROOT))); } public static File getPersistence(DbType dbType) { - return new File(OmFileHelper.getWebinfDir(), dbType == null ? PERSISTENCE_NAME : String.format(DB_PERSISTENCE_NAME, dbType)); + return new File(OmFileHelper.getWebinfDir(), dbType == null ? PERSISTENCE_NAME : String.format(DB_PERSISTENCE_NAME, dbType.getLabel())); } public static File getLdapConf(String name) { diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml index 94092e4..3fb30fc 100644 --- a/openmeetings-web/pom.xml +++ b/openmeetings-web/pom.xml @@ -521,7 +521,7 @@ <phase>generate-test-resources</phase> <configuration> <target> - <copy file="${project.basedir}/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml" + <copy file="${project.basedir}/src/main/webapp/WEB-INF/classes/META-INF/h2_persistence.xml" tofile="${project.build.directory}/generated-test-res/META-INF/persistence.xml" overwrite="true" force="true"/> </target> @@ -738,5 +738,11 @@ <artifactId>mockito-core</artifactId> <scope>test</scope> </dependency> +<dependency> + <groupId>com.h2database</groupId> + <artifactId>h2</artifactId> + <version>1.4.197</version> + <scope>test</scope> +</dependency> </dependencies> </project> diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java index d746010..df90df0 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java @@ -34,9 +34,11 @@ import java.sql.DriverManager; import java.sql.PreparedStatement; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Set; import org.apache.openmeetings.cli.ConnectionPropertiesPatcher; import org.apache.openmeetings.core.converter.DocumentConverter; @@ -195,21 +197,20 @@ public class InstallWizard extends AbstractWizard<InstallationConfig> { } } - private final class DbStep extends BaseStep { + private final static class DbTypeDropDown extends DropDownChoice<DbType> { private static final long serialVersionUID = 1L; - private final RequiredTextField<String> host = new RequiredTextField<>("host", Model.of("")); - private final RequiredTextField<Integer> port = new RequiredTextField<>("port", Model.of(0)); - private final RequiredTextField<String> dbname = new RequiredTextField<>("dbname", Model.of("")); - private final RequiredTextField<String> user = new RequiredTextField<>("login"); - private final TextField<String> pass = new TextField<>("password"); - private final Form<ConnectionProperties> form = new Form<ConnectionProperties>("form", new CompoundPropertyModel<>(getProps(null))) { - private static final long serialVersionUID = 1L; - private final DropDownChoice<DbType> db = new DropDownChoice<>("dbType", Arrays.asList(DbType.values()), new ChoiceRenderer<DbType>() { + + public DbTypeDropDown(String id) { + super(id); + Set<DbType> types = new LinkedHashSet<>(Arrays.asList(DbType.values())); + types.remove(DbType.H2); + setChoices(new ArrayList<>(types)); + setChoiceRenderer(new ChoiceRenderer<DbType>() { private static final long serialVersionUID = 1L; @Override public Object getDisplayValue(DbType object) { - return getString(String.format("install.wizard.db.step.%s.name", object.name())); + return getString(String.format("install.wizard.db.step.%s.name", object.getLabel())); } @Override @@ -217,6 +218,19 @@ public class InstallWizard extends AbstractWizard<InstallationConfig> { return object.name(); } }); + } + } + + private final class DbStep extends BaseStep { + private static final long serialVersionUID = 1L; + private final RequiredTextField<String> host = new RequiredTextField<>("host", Model.of("")); + private final RequiredTextField<Integer> port = new RequiredTextField<>("port", Model.of(0)); + private final RequiredTextField<String> dbname = new RequiredTextField<>("dbname", Model.of("")); + private final RequiredTextField<String> user = new RequiredTextField<>("login"); + private final TextField<String> pass = new TextField<>("password"); + private final Form<ConnectionProperties> form = new Form<ConnectionProperties>("form", new CompoundPropertyModel<>(getProps(null))) { + private static final long serialVersionUID = 1L; + private final DbTypeDropDown db = new DbTypeDropDown("dbType"); @Override protected void onInitialize() { @@ -247,7 +261,7 @@ public class InstallWizard extends AbstractWizard<InstallationConfig> { } private String getDbName(ConnectionProperties props) { - return getString("install.wizard.db.step.instructions." + props.getDbType().name()); + return getString("install.wizard.db.step.instructions." + props.getDbType().getLabel()); } @Override @@ -266,13 +280,13 @@ public class InstallWizard extends AbstractWizard<InstallationConfig> { valid = conn.isValid(0); //no timeout String sql = null; switch (props.getDbType()) { - case db2: + case DB2: sql = "select count(*) from systables"; break; - case oracle: + case ORACLE: sql = "SELECT 1 FROM DUAL"; break; - case derby: + case DERBY: sql = "SELECT 1 FROM SYSIBM.SYSDUMMY1"; break; default: @@ -330,7 +344,7 @@ public class InstallWizard extends AbstractWizard<InstallationConfig> { return props; // initial select } props = ConnectionPropertiesPatcher.getConnectionProperties(conf); - if (DbType.derby != props.getDbType()) { + if (DbType.DERBY != props.getDbType()) { // resetting default login/password props.setLogin(null); props.setPassword(null); @@ -344,13 +358,13 @@ public class InstallWizard extends AbstractWizard<InstallationConfig> { private void initForm(boolean getProps, AjaxRequestTarget target) { ConnectionProperties props = getProps ? getProps(form.getModelObject().getDbType()) : form.getModelObject(); form.setModelObject(props); - host.setVisible(props.getDbType() != DbType.derby); - port.setVisible(props.getDbType() != DbType.derby); - user.setVisible(props.getDbType() != DbType.derby); - pass.setVisible(props.getDbType() != DbType.derby); + host.setVisible(props.getDbType() != DbType.DERBY); + port.setVisible(props.getDbType() != DbType.DERBY); + user.setVisible(props.getDbType() != DbType.DERBY); + pass.setVisible(props.getDbType() != DbType.DERBY); try { switch (props.getDbType()) { - case mssql: { + case MSSQL: { String url = props.getURL().substring("jdbc:sqlserver://".length()); String[] parts = url.split(";"); String[] hp = parts[0].split(":"); @@ -359,14 +373,14 @@ public class InstallWizard extends AbstractWizard<InstallationConfig> { dbname.setModelObject(parts[1].substring(parts[1].indexOf('=') + 1)); } break; - case oracle: { + case ORACLE: { String[] parts = props.getURL().split(":"); host.setModelObject(parts[3].substring(1)); port.setModelObject(Integer.parseInt(parts[4])); dbname.setModelObject(parts[5]); } break; - case derby: { + case DERBY: { host.setModelObject(""); port.setModelObject(0); String[] parts = props.getURL().split(";"); diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/h2_persistence.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/h2_persistence.xml new file mode 100644 index 0000000..f22558c --- /dev/null +++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/h2_persistence.xml @@ -0,0 +1,81 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + +--> +<!-- persistence.xml schema --> +<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" + version="2.0"> + <persistence-unit name="openmeetings" transaction-type="RESOURCE_LOCAL"> + <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> + <class>org.apache.openmeetings.db.entity.HistoricalEntity</class> + <class>org.apache.openmeetings.db.entity.basic.ChatMessage</class> + <class>org.apache.openmeetings.db.entity.basic.Configuration</class> + <class>org.apache.openmeetings.db.entity.basic.MailMessage</class> + <class>org.apache.openmeetings.db.entity.calendar.Appointment</class> + <class>org.apache.openmeetings.db.entity.calendar.MeetingMember</class> + <class>org.apache.openmeetings.db.entity.calendar.OmCalendar</class> + <class>org.apache.openmeetings.db.entity.file.BaseFileItem</class> + <class>org.apache.openmeetings.db.entity.file.FileItem</class> + <class>org.apache.openmeetings.db.entity.file.FileItemLog</class> + <class>org.apache.openmeetings.db.entity.log.ConferenceLog</class> + <class>org.apache.openmeetings.db.entity.record.Recording</class> + <class>org.apache.openmeetings.db.entity.record.RecordingChunk</class> + <class>org.apache.openmeetings.db.entity.room.Invitation</class> + <class>org.apache.openmeetings.db.entity.room.Room</class> + <class>org.apache.openmeetings.db.entity.room.RoomFile</class> + <class>org.apache.openmeetings.db.entity.room.RoomGroup</class> + <class>org.apache.openmeetings.db.entity.room.RoomModerator</class> + <class>org.apache.openmeetings.db.entity.room.RoomPoll</class> + <class>org.apache.openmeetings.db.entity.room.RoomPollAnswer</class> + <class>org.apache.openmeetings.db.entity.server.LdapConfig</class> + <class>org.apache.openmeetings.db.entity.server.OAuthServer</class> + <class>org.apache.openmeetings.db.entity.server.Sessiondata</class> + <class>org.apache.openmeetings.db.entity.server.SOAPLogin</class> + <class>org.apache.openmeetings.db.entity.user.Address</class> + <class>org.apache.openmeetings.db.entity.user.AsteriskSipUser</class> + <class>org.apache.openmeetings.db.entity.user.Group</class> + <class>org.apache.openmeetings.db.entity.user.GroupUser</class> + <class>org.apache.openmeetings.db.entity.user.PrivateMessage</class> + <class>org.apache.openmeetings.db.entity.user.PrivateMessageFolder</class> + <class>org.apache.openmeetings.db.entity.user.User</class> + <class>org.apache.openmeetings.db.entity.user.UserContact</class> + <exclude-unlisted-classes>false</exclude-unlisted-classes> + <properties> + <property name="openjpa.RuntimeUnenhancedClasses" value="unsupported" /> + <property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp2.BasicDataSource" /> + <property name="openjpa.ConnectionProperties" + value="DriverClassName=org.h2.Driver, + Url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1, + create=true, + MaxActive=100, + MaxWait=10000, + TestOnBorrow=true, + Username=omdbuser, + Password=" /> + <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" /> + <property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO" /> + <property name="openjpa.DataCache" value="true" /> + <!-- QueryCache disabled due to changes outside of JPA doesn't take effect with caching --> + <property name="openjpa.QueryCache" value="false" /> + <property name="openjpa.jdbc.DBDictionary" value="batchLimit=100" /> + <property name="openjpa.jdbc.QuerySQLCache" value="false" /> + </properties> + </persistence-unit> +</persistence> diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/cli/TestAdmin.java b/openmeetings-web/src/test/java/org/apache/openmeetings/cli/TestAdmin.java index d6e0395..543c995 100644 --- a/openmeetings-web/src/test/java/org/apache/openmeetings/cli/TestAdmin.java +++ b/openmeetings-web/src/test/java/org/apache/openmeetings/cli/TestAdmin.java @@ -18,7 +18,7 @@ */ package org.apache.openmeetings.cli; -import static org.apache.commons.io.FileUtils.deleteDirectory; +import static org.apache.commons.io.FileUtils.deleteQuietly; import static org.apache.openmeetings.AbstractJUnitDefaults.adminUsername; import static org.apache.openmeetings.AbstractJUnitDefaults.email; import static org.apache.openmeetings.AbstractJUnitDefaults.group; @@ -63,7 +63,7 @@ public class TestAdmin { public void tearDown() throws IOException { resetDerbyHome(); System.getProperties().remove(RED5_HOME); - deleteDirectory(tempFolder); + deleteQuietly(tempFolder); WebApplication app = (WebApplication)Application.get(getWicketApplicationName()); if (app != null) { destroyApplication(); diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/derby/PrepareSystemFiles.java b/openmeetings-web/src/test/java/org/apache/openmeetings/derby/PrepareSystemFiles.java index 3e6f6f7..3987450 100644 --- a/openmeetings-web/src/test/java/org/apache/openmeetings/derby/PrepareSystemFiles.java +++ b/openmeetings-web/src/test/java/org/apache/openmeetings/derby/PrepareSystemFiles.java @@ -50,7 +50,7 @@ public class PrepareSystemFiles { conf.delete(); } - ConnectionPropertiesPatcher.patch(DbType.derby.name() + ConnectionPropertiesPatcher.patch(DbType.DERBY.name() , "localhost" , "1527" , databaseHomeDirectory + "openmeetings" diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java index d2ac7fd..b2a2cd2 100644 --- a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java +++ b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java @@ -20,10 +20,13 @@ package org.apache.openmeetings.webservice; import static java.util.UUID.randomUUID; import static javax.ws.rs.core.MediaType.APPLICATION_FORM_URLENCODED; +import static org.apache.commons.io.FileUtils.deleteQuietly; import static org.apache.openmeetings.AbstractJUnitDefaults.createPass; import static org.apache.openmeetings.AbstractJUnitDefaults.ensureSchema; import static org.apache.openmeetings.AbstractJUnitDefaults.soapUsername; import static org.apache.openmeetings.AbstractJUnitDefaults.userpass; +import static org.apache.openmeetings.AbstractSpringTest.setOmHome; +import static org.apache.openmeetings.cli.Admin.RED5_HOME; import static org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication; import static org.apache.openmeetings.util.OmFileHelper.getOmHome; import static org.junit.Assert.assertEquals; @@ -35,6 +38,7 @@ import java.io.IOException; import java.io.InputStream; import java.net.InetAddress; import java.nio.file.Files; +import java.nio.file.Path; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -48,7 +52,6 @@ import org.apache.catalina.startup.Tomcat; import org.apache.cxf.jaxrs.client.WebClient; import org.apache.cxf.jaxrs.ext.multipart.Attachment; import org.apache.cxf.transports.http.configuration.HTTPClientPolicy; -import org.apache.openmeetings.AbstractSpringTest; import org.apache.openmeetings.db.dao.user.UserDao; import org.apache.openmeetings.db.dto.basic.ServiceResult; import org.apache.openmeetings.db.dto.basic.ServiceResult.Type; @@ -59,12 +62,14 @@ import org.apache.openmeetings.db.entity.file.BaseFileItem; import org.apache.openmeetings.db.entity.user.User; import org.apache.openmeetings.installation.ImportInitvalues; import org.apache.openmeetings.webservice.util.AppointmentMessageBodyReader; +import org.apache.tomcat.util.scan.Constants; import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; public class AbstractWebServiceTest { + private static Path TEMP_TOMCAT_BASE; private static Tomcat tomcat; private static final String HOST = "localhost"; private static final String CONTEXT = "/openmeetings"; @@ -106,14 +111,18 @@ public class AbstractWebServiceTest { @BeforeClass public static void initialize() throws Exception { - AbstractSpringTest.init(); + setOmHome(); + System.setProperty(Constants.SKIP_JARS_PROPERTY, "*"); + TEMP_TOMCAT_BASE = Files.createTempDirectory("om" + randomUUID().toString()); + File wd = TEMP_TOMCAT_BASE.toFile(); + System.setProperty("user.dir", wd.getCanonicalPath()); + System.setProperty(RED5_HOME, getOmHome().getCanonicalPath()); tomcat = new Tomcat(); Connector connector = new Connector("HTTP/1.1"); connector.setAttribute("address", InetAddress.getByName(HOST).getHostAddress()); connector.setPort(0); tomcat.getService().addConnector(connector); tomcat.setConnector(connector); - File wd = Files.createTempDirectory("om" + randomUUID().toString()).toFile(); tomcat.setBaseDir(wd.getCanonicalPath()); tomcat.getHost().setAppBase(wd.getCanonicalPath()); tomcat.getHost().setAutoDeploy(false); @@ -137,6 +146,8 @@ public class AbstractWebServiceTest { } tomcat.destroy(); } + System.getProperties().remove(RED5_HOME); + deleteQuietly(TEMP_TOMCAT_BASE.toFile()); } protected static CallResult<RoomDTO> createAndValidate(RoomDTO r) { diff --git a/pom.xml b/pom.xml index 6539adc..03e2d14 100644 --- a/pom.xml +++ b/pom.xml @@ -76,7 +76,7 @@ <wicket.version>8.3.0-SNAPSHOT</wicket.version> <wicketju.version>8.1.0</wicketju.version> <wickets.version>8.2.0</wickets.version> - <red5-client.version>1.0.10-M9</red5-client.version> + <red5-client.version>1.0.10-M10</red5-client.version> <spring.version>5.1.3.RELEASE</spring.version> <mina.version>2.0.19</mina.version> <tomcat.version>9.0.14</tomcat.version> @@ -113,6 +113,7 @@ <license.excludedScopes>test</license.excludedScopes> <bcprov-jdk15on.version>1.60</bcprov-jdk15on.version> <mockito.version>2.23.4</mockito.version> + <kurento.version>6.9.0</kurento.version> <!-- URL of the ASF SonarQube server --> <sonar.host.url>https://builds.apache.org/analysis</sonar.host.url> <!-- Exclude all generated code --> @@ -643,6 +644,11 @@ <version>${mockito.version}</version> <scope>test</scope> </dependency> + <dependency> + <groupId>org.kurento</groupId> + <artifactId>kurento-client</artifactId> + <version>${kurento.version}</version> + </dependency> </dependencies> </dependencyManagement> <dependencies>