You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2017/09/15 08:34:01 UTC

openmeetings git commit: [OPENMEETINGS-1704] some defects are eliminated

Repository: openmeetings
Updated Branches:
  refs/heads/master b4fe443df -> cfb231e5b


[OPENMEETINGS-1704] some defects are eliminated


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/cfb231e5
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/cfb231e5
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/cfb231e5

Branch: refs/heads/master
Commit: cfb231e5b5d35ed7dc7d20e7ecc378a32558d721
Parents: b4fe443
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Fri Sep 15 15:33:53 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Fri Sep 15 15:33:53 2017 +0700

----------------------------------------------------------------------
 .../org/apache/openmeetings/test/rtmp/LoadTestRtmpClient.java  | 3 +--
 .../org/apache/openmeetings/screenshare/job/OmKeyEvent.java    | 2 +-
 .../apache/openmeetings/service/calendar/caldav/iCalUtils.java | 2 +-
 .../java/org/apache/openmeetings/service/user/UserManager.java | 5 -----
 .../src/main/java/org/apache/openmeetings/util/Version.java    | 5 ++++-
 .../java/org/apache/openmeetings/util/crypt/CryptProvider.java | 2 +-
 .../apache/openmeetings/util/crypt/SCryptImplementation.java   | 3 ++-
 .../main/java/org/apache/openmeetings/web/app/Application.java | 6 ++++--
 .../main/java/org/apache/openmeetings/web/common/Captcha.java  | 4 +++-
 .../web/data/SearchableGroupAdminDataProvider.java             | 5 +----
 .../main/java/org/apache/openmeetings/web/pages/BasePage.java  | 2 +-
 .../apache/openmeetings/web/pages/install/InstallWizard.java   | 2 +-
 .../apache/openmeetings/web/room/RedirectMessageDialog.java    | 2 +-
 .../apache/openmeetings/web/user/calendar/CalendarDialog.java  | 4 +++-
 .../org/apache/openmeetings/web/user/record/VideoInfo.java     | 2 +-
 .../webservice/util/AppointmentListMessageBodyWriter.java      | 5 +++--
 .../webservice/util/AppointmentMessageBodyWriter.java          | 5 +++--
 .../openmeetings/webservice/util/UserMessageBodyWriter.java    | 5 +++--
 18 files changed, 34 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cfb231e5/openmeetings-core/src/test/java/org/apache/openmeetings/test/rtmp/LoadTestRtmpClient.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/test/rtmp/LoadTestRtmpClient.java b/openmeetings-core/src/test/java/org/apache/openmeetings/test/rtmp/LoadTestRtmpClient.java
index 8d29056..b6cc1c4 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/test/rtmp/LoadTestRtmpClient.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/test/rtmp/LoadTestRtmpClient.java
@@ -31,8 +31,7 @@ import org.red5.server.api.service.IPendingServiceCallback;
 import org.red5.server.net.rtmp.event.Notify;
 
 public class LoadTestRtmpClient extends RTMPClient implements IPendingServiceCallback, INetStreamEventHandler, ClientExceptionHandler {
-
-	private class CallObject {
+	private static class CallObject {
 		Date started;
 		Date ended;
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cfb231e5/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/OmKeyEvent.java
----------------------------------------------------------------------
diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/OmKeyEvent.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/OmKeyEvent.java
index 7d861e7..254b22e 100644
--- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/OmKeyEvent.java
+++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/OmKeyEvent.java
@@ -163,7 +163,7 @@ public class OmKeyEvent {
 				if (UMLAUTS.contains(ch)) {
 					list.add(KeyEvent.VK_ALT);
 					list.add(KeyEvent.VK_ADD);
-					String code = String.format("%04", (int)ch);
+					String code = String.format("%04d", (int)ch);
 					for (int i = 0; i < code.length(); ++i) {
 						list.add(KeyEvent.VK_NUMPAD0 + code.charAt(i));
 					}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cfb231e5/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/iCalUtils.java
----------------------------------------------------------------------
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 ecc3343..59133e3 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
@@ -232,7 +232,7 @@ public class iCalUtils {
 				if (org == null) {
 					org = userDao.getContact(email, a.getOwner());
 					attList.add(createMeetingMember(a, org));
-				} else if (org.getId() != a.getOwner().getId()) {
+				} else if (!org.getId().equals(a.getOwner().getId())) {
 					attList.add(createMeetingMember(a, org));
 				}
 			}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cfb231e5/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
----------------------------------------------------------------------
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
index 520d484..34d0c6c 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
@@ -215,15 +215,10 @@ public class UserManager implements IUserManager {
 						password, adr, sendSMS, age, hash, timezone,
 						forceTimeZoneCheck, userOffers, userSearchs, showContactData,
 						showContactDataToContacts, null, null, groups, null);
-				if (u == null) {
-					return -111L;
-				}
 				log.debug("Added user-Id " + u.getId());
 
 				if (adr.getId() != null && u.getId() != null) {
 					return u;
-				} else {
-					return UNKNOWN.getKey();
 				}
 			} else {
 				if (!checkName) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cfb231e5/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java
----------------------------------------------------------------------
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java
index 525fc38..2aeb421 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java
@@ -19,6 +19,7 @@
 package org.apache.openmeetings.util;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.Properties;
 
 import org.red5.logging.Red5LoggerFactory;
@@ -33,7 +34,9 @@ public class Version {
 
 	private static void init() throws IOException {
 		Properties props = new Properties();
-		props.load(Version.class.getResourceAsStream("version.properties"));
+		try (InputStream is = Version.class.getResourceAsStream("version.properties")) {
+			props.load(is);
+		}
 		version = props.getProperty("version");
 		revision = props.getProperty("revision");
 		buildDate = props.getProperty("date");

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cfb231e5/openmeetings-util/src/main/java/org/apache/openmeetings/util/crypt/CryptProvider.java
----------------------------------------------------------------------
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/crypt/CryptProvider.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/crypt/CryptProvider.java
index dce6b11..b601158 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/crypt/CryptProvider.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/crypt/CryptProvider.java
@@ -26,7 +26,7 @@ import org.slf4j.Logger;
 
 public class CryptProvider {
 	private static final Logger log = Red5LoggerFactory.getLogger(CryptProvider.class, webAppRootKey);
-	private static ICrypt crypt;
+	private static volatile ICrypt crypt;
 
 	public static ICrypt get() {
 		if (crypt == null) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cfb231e5/openmeetings-util/src/main/java/org/apache/openmeetings/util/crypt/SCryptImplementation.java
----------------------------------------------------------------------
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/crypt/SCryptImplementation.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/crypt/SCryptImplementation.java
index 1c4a012..0aa8072 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/crypt/SCryptImplementation.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/crypt/SCryptImplementation.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.util.crypt;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.security.NoSuchAlgorithmException;
@@ -43,7 +44,7 @@ public class SCryptImplementation implements ICrypt {
 	}
 
 	private static String hash(String str, byte[] salt) {
-		byte[] dk = SCrypt.generate(str.getBytes(), salt, COST, 8, 8, KEY_LENGTH);
+		byte[] dk = SCrypt.generate(str.getBytes(UTF_8), salt, COST, 8, 8, KEY_LENGTH);
 		return Base64.encodeBase64String(dk);
 	}
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cfb231e5/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
index 019e731..d95093a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
@@ -37,6 +37,7 @@ import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -198,9 +199,10 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 					}
 				}
 				Map<String, StreamClient> streams = getStreamClients();
-				for (Map.Entry<String, StreamClient> e : streams.entrySet()) {
+				for (Iterator<Map.Entry<String, StreamClient>> iter = streams.entrySet().iterator(); iter.hasNext(); ) {
+					Map.Entry<String, StreamClient> e = iter.next();
 					if (serverId.equals(e.getValue().getServerId())) {
-						streams.remove(e.getKey());
+						iter.remove();
 					}
 				}
 				updateJpaAddresses(_getBean(ConfigurationDao.class));

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cfb231e5/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/Captcha.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/Captcha.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/Captcha.java
index 19027e7..47aa8a7 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/Captcha.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/Captcha.java
@@ -18,6 +18,8 @@
  */
 package org.apache.openmeetings.web.common;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
+
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.extensions.markup.html.captcha.CaptchaImageResource;
@@ -96,7 +98,7 @@ public class Captcha extends Panel {
 		for (int i = 0; i < num; ++i) {
 			b[i] = (byte)randomInt('a', 'z');
 		}
-		return new String(b);
+		return new String(b, UTF_8);
 	}
 
 	public Image refresh(IPartialPageRequestHandler handler) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cfb231e5/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/SearchableGroupAdminDataProvider.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/SearchableGroupAdminDataProvider.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/SearchableGroupAdminDataProvider.java
index 3e45808..6cbcf29 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/SearchableGroupAdminDataProvider.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/SearchableGroupAdminDataProvider.java
@@ -19,7 +19,6 @@
 package org.apache.openmeetings.web.data;
 
 import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
-import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getRights;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
@@ -30,16 +29,14 @@ import org.apache.openmeetings.db.entity.IDataProviderEntity;
 
 public class SearchableGroupAdminDataProvider<T extends IDataProviderEntity> extends SearchableDataProvider<T> {
 	private static final long serialVersionUID = 1L;
-	protected Class<? extends IGroupAdminDataProviderDao<T>> clazz;
 
 	public SearchableGroupAdminDataProvider(Class<? extends IGroupAdminDataProviderDao<T>> c) {
 		super(c);
-		this.clazz = c;
 	}
 
 	@Override
 	protected IGroupAdminDataProviderDao<T> getDao() {
-		return getBean(clazz);
+		return (IGroupAdminDataProviderDao<T>)super.getDao();
 	}
 
 	@Override

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cfb231e5/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java
index f46dcf7..952c42d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java
@@ -68,7 +68,7 @@ public abstract class BasePage extends AsyncUrlFragmentAwarePage {
 				.add(new AttributeModifier("dir", isRtl() ? "rtl" : "ltr")));
 		add(new Label("pageTitle", appName));
 		add(header = new HeaderPanel("header", appName));
-		add(loader.setVisible(isMainPage()).setOutputMarkupId(true));
+		add(loader.setVisible(isMainPage()).setOutputMarkupPlaceholderTag(true).setOutputMarkupId(true));
 	}
 
 	protected OmUrlFragment getUrlFragment(IRequestParameters params) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cfb231e5/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
----------------------------------------------------------------------
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 eaac138..c0efd4d 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
@@ -493,11 +493,11 @@ public class InstallWizard extends AbstractWizard<InstallationConfig> {
 
 	private final class ParamsStep3 extends BaseStep {
 		private static final long serialVersionUID = 1L;
+		private static final String regex = "\\r\\n|\\r|\\n";
 		private final TextField<String> ffmpegPath;
 		private final TextField<String> imageMagicPath;
 		private final TextField<String> soxPath;
 		private final TextField<String> officePath;
-		private final String regex = "\\r\\n|\\r|\\n";
 		private boolean isAllChecked = false;
 		public ParamsStep3() {
 			super(paramsStep2);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cfb231e5/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RedirectMessageDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RedirectMessageDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RedirectMessageDialog.java
index c318609..dab023d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RedirectMessageDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RedirectMessageDialog.java
@@ -36,9 +36,9 @@ import com.googlecode.wicket.jquery.ui.widget.dialog.DialogIcon;
 
 public class RedirectMessageDialog extends NonClosableMessageDialog {
 	private static final long serialVersionUID = 1L;
+	private static final int delay = 5;
 	private final String labelId;
 	private final String url;
-	private final int delay = 5;
 	private final boolean autoOpen;
 	private Component label;
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cfb231e5/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarDialog.java
index 60b5b5a..761a800 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarDialog.java
@@ -380,6 +380,7 @@ public class CalendarDialog extends AbstractFormDialog<OmCalendar> {
 					getBean(AppointmentDao.class).update(appointment, getUserId());
 					calendarPanel.refresh(handler);
 				}
+				break;
 			case DELETE_APPOINTMENT:
 				appointment = null;
 				break;
@@ -561,8 +562,9 @@ public class CalendarDialog extends AbstractFormDialog<OmCalendar> {
 			if (!hasError()) {
 				switch (type) {
 					case UPDATE_CALENDAR:
-						if (getModelObject().getId() != null || gcal.getModelObject())
+						if (getModelObject().getId() != null || gcal.getModelObject()) {
 							return;
+						}
 					case UPDATE_APPOINTMENT:
 					case DELETE_APPOINTMENT:
 					case SYNC_CALENDAR:

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cfb231e5/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
index 0891d5f..c642012 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
@@ -136,7 +136,7 @@ public class VideoInfo extends Panel {
 		boolean reConvEnabled = false;
 		boolean exists = false;
 		if (_r instanceof Recording) {
-			Recording r = _r == null ? new Recording() : (Recording)_r;
+			Recording r = (Recording)_r;
 			rm.setObject(r);
 			exists = r.exists();
 			try {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cfb231e5/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentListMessageBodyWriter.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentListMessageBodyWriter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentListMessageBodyWriter.java
index 4dd6cc8..d20b2eb 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentListMessageBodyWriter.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentListMessageBodyWriter.java
@@ -18,11 +18,12 @@
  */
 package org.apache.openmeetings.webservice.util;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.openmeetings.webservice.util.AppointmentParamConverter.ROOT;
 
 import java.io.IOException;
 import java.io.OutputStream;
-import java.io.PrintWriter;
+import java.io.OutputStreamWriter;
 import java.io.Writer;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.ParameterizedType;
@@ -66,7 +67,7 @@ public class AppointmentListMessageBodyWriter implements MessageBodyWriter<List<
 			MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream out)
 			throws IOException, WebApplicationException
 	{
-		Writer writer = new PrintWriter(out);
+		Writer writer = new OutputStreamWriter(out, UTF_8);
 		JSONArray rr = new JSONArray();
 		for (AppointmentDTO dto : t) {
 			rr.put(AppointmentParamConverter.json(dto));

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cfb231e5/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentMessageBodyWriter.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentMessageBodyWriter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentMessageBodyWriter.java
index d46e29a..563b937 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentMessageBodyWriter.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentMessageBodyWriter.java
@@ -18,11 +18,12 @@
  */
 package org.apache.openmeetings.webservice.util;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.openmeetings.webservice.util.AppointmentParamConverter.ROOT;
 
 import java.io.IOException;
 import java.io.OutputStream;
-import java.io.PrintWriter;
+import java.io.OutputStreamWriter;
 import java.io.Writer;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
@@ -56,7 +57,7 @@ public class AppointmentMessageBodyWriter implements MessageBodyWriter<Appointme
 			MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream out)
 			throws IOException, WebApplicationException
 	{
-		Writer writer = new PrintWriter(out);
+		Writer writer = new OutputStreamWriter(out, UTF_8);
 		writer.write(new JSONObject().put(ROOT, AppointmentParamConverter.json(t)).toString());
 		writer.flush();
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/cfb231e5/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/UserMessageBodyWriter.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/UserMessageBodyWriter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/UserMessageBodyWriter.java
index efad818..1254941 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/UserMessageBodyWriter.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/UserMessageBodyWriter.java
@@ -18,11 +18,12 @@
  */
 package org.apache.openmeetings.webservice.util;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.openmeetings.webservice.util.UserParamConverter.ROOT;
 
 import java.io.IOException;
 import java.io.OutputStream;
-import java.io.PrintWriter;
+import java.io.OutputStreamWriter;
 import java.io.Writer;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
@@ -56,7 +57,7 @@ public class UserMessageBodyWriter implements MessageBodyWriter<UserDTO> {
 			MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream out)
 			throws IOException, WebApplicationException
 	{
-		Writer writer = new PrintWriter(out);
+		Writer writer = new OutputStreamWriter(out, UTF_8);
 		writer.write(new JSONObject().put(ROOT, UserParamConverter.json(t)).toString());
 		writer.flush();
 	}