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/07 04:06:46 UTC
openmeetings git commit: [OPENMEETINGS-1693] user is now created
using @Form parameters
Repository: openmeetings
Updated Branches:
refs/heads/3.3.x 83cb67202 -> c1dc35ca5
[OPENMEETINGS-1693] user is now created using @Form parameters
Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/c1dc35ca
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/c1dc35ca
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/c1dc35ca
Branch: refs/heads/3.3.x
Commit: c1dc35ca5333156e85571b181fd199bf8abbc1ef
Parents: 83cb672
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Thu Sep 7 11:06:38 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Thu Sep 7 11:06:38 2017 +0700
----------------------------------------------------------------------
.../main/webapp/WEB-INF/classes/cxf-servlet.xml | 1 +
.../test/webservice/AbstractWebServiceTest.java | 7 ++-
.../test/webservice/TestUserService.java | 5 +-
.../openmeetings/webservice/UserWebService.java | 9 ++-
.../util/OmParamConverterProvider.java | 3 +
.../webservice/util/UserMessageBodyWriter.java | 63 ++++++++++++++++++++
.../webservice/util/UserParamConverter.java | 47 +++++++++++++++
7 files changed, 128 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c1dc35ca/openmeetings-web/src/main/webapp/WEB-INF/classes/cxf-servlet.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/cxf-servlet.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/cxf-servlet.xml
index 6387bad..4475d20 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/cxf-servlet.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/cxf-servlet.xml
@@ -57,6 +57,7 @@
<jaxrs:providers>
<bean id="appDtoMessageBodyWriter" class="org.apache.openmeetings.webservice.util.AppointmentMessageBodyWriter" />
<bean id="appDtoListMessageBodyWriter" class="org.apache.openmeetings.webservice.util.AppointmentListMessageBodyWriter" />
+ <bean id="userDtoMessageBodyWriter" class="org.apache.openmeetings.webservice.util.UserMessageBodyWriter" />
<bean id="omParamProvider" class="org.apache.openmeetings.webservice.util.OmParamConverterProvider"/>
</jaxrs:providers>
</jaxrs:server>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c1dc35ca/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java
index 5d90e04..846b7c2 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/AbstractWebServiceTest.java
@@ -18,6 +18,7 @@
*/
package org.apache.openmeetings.test.webservice;
+import static javax.ws.rs.core.MediaType.APPLICATION_FORM_URLENCODED;
import static org.apache.openmeetings.db.util.ApplicationHelper.getWicketTester;
import static org.apache.openmeetings.util.OmFileHelper.getOmHome;
import static org.junit.Assert.assertEquals;
@@ -28,6 +29,8 @@ import java.nio.file.Files;
import java.util.Arrays;
import java.util.UUID;
+import javax.ws.rs.core.Form;
+
import org.apache.catalina.LifecycleState;
import org.apache.catalina.startup.Tomcat;
import org.apache.cxf.jaxrs.client.WebClient;
@@ -125,8 +128,8 @@ public class AbstractWebServiceTest extends AbstractJUnitDefaults {
UserDTO user = getClient(USER_SERVICE_URL)
.path("/")
.query("sid", r.getMessage())
- .query("user", dto.toString())
- .query("confirm", false).post(null, UserDTO.class);
+ .type(APPLICATION_FORM_URLENCODED)
+ .post(new Form().param("user", dto.toString()).param("confirm", "" + false), UserDTO.class);
Assert.assertNotNull(user.getId());
u.setId(user.getId());
}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c1dc35ca/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
index ddc9882..01861d3 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
@@ -18,6 +18,7 @@
*/
package org.apache.openmeetings.test.webservice;
+import static javax.ws.rs.core.MediaType.APPLICATION_FORM_URLENCODED;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
@@ -102,8 +103,8 @@ public class TestUserService extends AbstractWebServiceTest {
UserDTO user = getClient(USER_SERVICE_URL)
.path("/")
.query("sid", r.getMessage())
- .query("user", u.toString())
- .query("confirm", false).post(null, UserDTO.class);
+ .type(APPLICATION_FORM_URLENCODED)
+ .post(new Form().param("user", u.toString()).param("confirm", "" + false), UserDTO.class);
assertNotNull("Valid UserDTO should be returned", user);
assertNotNull("Id should not be NULL", user.getId());
assertEquals("OM Call should be successful", u.getLogin(), user.getLogin());
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c1dc35ca/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
index 2fef310..e9ce939 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
@@ -46,6 +46,7 @@ import org.apache.cxf.feature.Features;
import org.apache.openmeetings.IApplication;
import org.apache.openmeetings.core.util.StrongPasswordValidator;
import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.basic.ErrorDao;
import org.apache.openmeetings.db.dao.server.SOAPLoginDao;
import org.apache.openmeetings.db.dao.user.IUserManager;
import org.apache.openmeetings.db.dao.user.UserDao;
@@ -160,8 +161,8 @@ public class UserWebService extends BaseWebService {
@Path("/")
public UserDTO add(
@WebParam(name="sid") @QueryParam("sid") String sid
- , @WebParam(name="user") @QueryParam("user") UserDTO user
- , @WebParam(name="confirm") @QueryParam("confirm") Boolean confirm
+ , @WebParam(name="user") @FormParam("user") UserDTO user
+ , @WebParam(name="confirm") @FormParam("confirm") Boolean confirm
) throws ServiceException
{
try {
@@ -203,8 +204,10 @@ public class UserWebService extends BaseWebService {
"", false, true, // generate SIP Data if the config is enabled
tz, confirm);
- if (userId == null || userId < 0) {
+ if (userId == null) {
throw new ServiceException("Unknown error");
+ } else if (userId < 0) {
+ throw new ServiceException(getBean(ErrorDao.class).getMessage(userId, 1L));
}
User u = userDao.get(userId);
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c1dc35ca/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/OmParamConverterProvider.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/OmParamConverterProvider.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/OmParamConverterProvider.java
index 2d328d5..52fafc7 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/OmParamConverterProvider.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/OmParamConverterProvider.java
@@ -27,6 +27,7 @@ import javax.ws.rs.ext.ParamConverter;
import javax.ws.rs.ext.ParamConverterProvider;
import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
+import org.apache.openmeetings.db.dto.user.UserDTO;
public class OmParamConverterProvider implements ParamConverterProvider {
@@ -39,6 +40,8 @@ public class OmParamConverterProvider implements ParamConverterProvider {
return (ParamConverter<T>)new DateParamConverter();
} else if (AppointmentDTO.class.isAssignableFrom(rawType)) {
return (ParamConverter<T>)new AppointmentParamConverter();
+ } else if (UserDTO.class.isAssignableFrom(rawType)) {
+ return (ParamConverter<T>)new UserParamConverter();
}
return null;
}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c1dc35ca/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
new file mode 100644
index 0000000..efad818
--- /dev/null
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/UserMessageBodyWriter.java
@@ -0,0 +1,63 @@
+/*
+ * 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.webservice.util;
+
+import static org.apache.openmeetings.webservice.util.UserParamConverter.ROOT;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.io.Writer;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+
+import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.ext.MessageBodyWriter;
+import javax.ws.rs.ext.Provider;
+
+import org.apache.openmeetings.db.dto.user.UserDTO;
+
+import com.github.openjson.JSONObject;
+
+@Provider
+@Produces({MediaType.APPLICATION_JSON})
+public class UserMessageBodyWriter implements MessageBodyWriter<UserDTO> {
+ @Override
+ public boolean isWriteable(Class<?> clazz, Type type, Annotation[] annotations, MediaType mediaType) {
+ return UserDTO.class.equals(type);
+ }
+
+ @Override
+ public long getSize(UserDTO t, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
+ return 0;
+ }
+
+ @Override
+ public void writeTo(UserDTO t, Class<?> type, Type genericType, Annotation[] annotations,
+ MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream out)
+ throws IOException, WebApplicationException
+ {
+ Writer writer = new PrintWriter(out);
+ writer.write(new JSONObject().put(ROOT, UserParamConverter.json(t)).toString());
+ writer.flush();
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c1dc35ca/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/UserParamConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/UserParamConverter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/UserParamConverter.java
new file mode 100644
index 0000000..9ffde2e
--- /dev/null
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/UserParamConverter.java
@@ -0,0 +1,47 @@
+/*
+ * 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.webservice.util;
+
+import javax.ws.rs.ext.ParamConverter;
+
+import org.apache.openmeetings.db.dto.user.UserDTO;
+
+import com.github.openjson.JSONObject;
+
+public class UserParamConverter implements ParamConverter<UserDTO> {
+ public static final String ROOT = "userDTO";
+
+ @Override
+ public UserDTO fromString(String val) {
+ JSONObject o = new JSONObject(val);
+ if (o.has(ROOT)) {
+ o = o.getJSONObject(ROOT);
+ }
+ return UserDTO.get(o);
+ }
+
+ public static JSONObject json(UserDTO val) {
+ return new JSONObject(val);
+ }
+
+ @Override
+ public String toString(UserDTO val) {
+ return json(val).toString();
+ }
+}