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 2015/07/05 08:16:41 UTC

svn commit: r1689219 - in /openmeetings/trunk/singlewebapp: openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/ openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ openmeetings-db/src/main/java/org/apache/openmeetings/db/...

Author: solomax
Date: Sun Jul  5 06:16:40 2015
New Revision: 1689219

URL: http://svn.apache.org/r1689219
Log:
[OPENMEETINGS-1118] SOAP/REST services are reorganized and simplified

Added:
    openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java
      - copied, changed from r1688990, openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ErrorResult.java
    openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java
    openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java
Removed:
    openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ErrorResult.java
Modified:
    openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/IUserManager.java
    openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
    openmeetings/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
    openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
    openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/cluster/RestClient.java

Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/IUserManager.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/IUserManager.java?rev=1689219&r1=1689218&r2=1689219&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/IUserManager.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/IUserManager.java Sun Jul  5 06:16:40 2015
@@ -33,7 +33,7 @@ public interface IUserManager {
 			String firstname, String email, Date age, String street,
 			String additionalname, String fax, String zip, long stateId,
 			String town, long languageId, String phone, boolean sendSMS,
-			boolean generateSipUserData, String jNameTimeZone);
+			boolean generateSipUserData, String jNameTimeZone, Boolean sendConfirmation);
 	
 	Long registerUserInit(Set<Right> rights, String login, String password, String lastname,
 			String firstname, String email, Date age, String street,
@@ -44,12 +44,6 @@ public interface IUserManager {
 			String userOffers, String userSearchs, Boolean showContactData,
 			Boolean showContactDataToContacts, String activatedHash) throws Exception;
 
-	Long registerUserNoEmail(String login, String Userpass,
-			String lastname, String firstname, String email, Date age,
-			String street, String additionalname, String fax, String zip,
-			long stateId, String town, long languageId, String phone, boolean sendSMS, 
-			boolean generateSipUserData, String jNameTimeZone);
-	
 	Boolean kickUserByStreamId(String SID, Long roomId);
 	
 	Boolean kickUserByPublicSID(String SID, String publicSID);

Copied: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java (from r1688990, openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ErrorResult.java)
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java?p2=openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java&p1=openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ErrorResult.java&r1=1688990&r2=1689219&rev=1689219&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ErrorResult.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java Sun Jul  5 06:16:40 2015
@@ -18,42 +18,62 @@
  */
 package org.apache.openmeetings.db.dto.basic;
 
-public class ErrorResult {
-	private Long errorId;
-	private String errmessage;
-	private String errortype;
+import java.io.Serializable;
 
-	public ErrorResult() {
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class ServiceResult implements Serializable {
+	private static final long serialVersionUID = 1L;
+	private long code;
+	private String message;
+	private String type;
+	public enum Type {
+		ERROR
+		, SUCCESS
+	}
+
+	public ServiceResult() {
 	}
 	
-	public ErrorResult(Long errorId, String errmessage, String errortype) {
+	public ServiceResult(long code, String message, String type) {
 		super();
-		this.errorId = errorId;
-		this.errmessage = errmessage;
-		this.errortype = errortype;
+		this.code = code;
+		this.message = message;
+		this.type = type;
 	}
 
-	public Long getErrorId() {
-		return errorId;
+	public ServiceResult(long code, String message, Type type) {
+		super();
+		this.code = code;
+		this.message = message;
+		this.type = type.name();
+	}
+	
+	public long getCode() {
+		return code;
 	}
 
-	public void setErrorId(Long errorId) {
-		this.errorId = errorId;
+	public void setCode(long code) {
+		this.code = code;
 	}
 
-	public String getErrmessage() {
-		return errmessage;
+	public String getMessage() {
+		return message;
 	}
 
-	public void setErrmessage(String errmessage) {
-		this.errmessage = errmessage;
+	public void setMessage(String message) {
+		this.message = message;
 	}
 
-	public String getErrortype() {
-		return errortype;
+	public String getType() {
+		return type;
 	}
 
-	public void setErrortype(String errortype) {
-		this.errortype = errortype;
+	public void setType(String type) {
+		this.type = type;
 	}
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java?rev=1689219&r1=1689218&r2=1689219&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java Sun Jul  5 06:16:40 2015
@@ -35,6 +35,8 @@ public class UserDTO {
 	private Long languageId;
 	private Address address;
 	private String timeZoneId;
+	private String externalId;
+	private String externalType;
 	private Type type = Type.user;
 
 	public UserDTO() {}
@@ -49,6 +51,8 @@ public class UserDTO {
 		address = u.getAddress();
 		timeZoneId = u.getTimeZoneId();
 		type = u.getType();
+		externalId = u.getExternalId();
+		externalType = u.getExternalType();
 	}
 	
 	public Long getId() {
@@ -130,4 +134,20 @@ public class UserDTO {
 	public void setPassword(String password) {
 		this.password = password;
 	}
+
+	public String getExternalId() {
+		return externalId;
+	}
+
+	public void setExternalId(String externalId) {
+		this.externalId = externalId;
+	}
+
+	public String getExternalType() {
+		return externalType;
+	}
+
+	public void setExternalType(String externalType) {
+		this.externalType = externalType;
+	}
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java?rev=1689219&r1=1689218&r2=1689219&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java Sun Jul  5 06:16:40 2015
@@ -263,9 +263,6 @@ public class UserManager implements IUse
 	 * Organisation with the id specified in the configuration value
 	 * default_group_id
 	 * 
-	 * @param user_level
-	 * @param availible
-	 * @param status
 	 * @param login
 	 * @param Userpass
 	 * @param lastname
@@ -279,43 +276,27 @@ public class UserManager implements IUse
 	 * @param stateId
 	 * @param town
 	 * @param languageId
+	 * @param phone
+	 * @param sendSMS
+	 * @param generateSipUserData
+	 * @param jNameTimeZone
+	 * @param sendConfirmation
 	 * @return
 	 */
 	public Long registerUser(String login, String Userpass, String lastname,
 			String firstname, String email, Date age, String street,
 			String additionalname, String fax, String zip, long stateId,
-			String town, long languageId, String phone, boolean sendSMS, boolean generateSipUserData, String jNameTimeZone) {
-		
-		String baseURL = configurationDao.getBaseUrl();
-		boolean sendConfirmation = baseURL != null
-				&& !baseURL.isEmpty()
-				&& 1 == configurationDao.getConfValue("sendEmailWithVerficationCode", Integer.class, "0");
-		
-		return registerUser(login, Userpass, lastname, firstname, email, age,
-				street, additionalname, fax, zip, stateId, town, languageId,
-				phone, sendSMS, generateSipUserData, jNameTimeZone, sendConfirmation);
-	}
-
-	public Long registerUserNoEmail(String login, String Userpass,
-			String lastname, String firstname, String email, Date age,
-			String street, String additionalname, String fax, String zip,
-			long stateId, String town, long languageId, String phone, boolean sendSMS, 
-			boolean generateSipUserData, String jNameTimeZone) {
-		
-		return registerUser(login, Userpass, lastname, firstname, email, age,
-				street, additionalname, fax, zip, stateId, town, languageId,
-				phone, sendSMS, generateSipUserData, jNameTimeZone, false);
-	}
-
-	private Long registerUser(String login, String Userpass, String lastname,
-			String firstname, String email, Date age, String street,
-			String additionalname, String fax, String zip, long stateId,
 			String town, long languageId, String phone, boolean sendSMS,
 			boolean generateSipUserData, String jNameTimeZone, Boolean sendConfirmation) {
 		try {
 			// Checks if FrontEndUsers can register
 			if ("1".equals(configurationDao.getConfValue(CONFIG_SOAP_REGISTER_KEY, String.class, "0"))) {
-				
+				if (sendConfirmation == null) {
+					String baseURL = configurationDao.getBaseUrl();
+					sendConfirmation = baseURL != null
+							&& !baseURL.isEmpty()
+							&& 1 == configurationDao.getConfValue("sendEmailWithVerficationCode", Integer.class, "0");
+				}
 				// TODO: Read and generate SIP-Data via RPC-Interface Issue 1098
 
 				Long userId = registerUserInit(UserDao.getDefaultRights(), login,
@@ -484,9 +465,7 @@ public class UserManager implements IUse
 
 			// admins only
 			if (AuthLevelUtil.hasWebServiceLevel(usersDao.getRights(userId))) {
-
-				Client rcl = sessionManager
-						.getClientByPublicSID(publicSID, false, null);
+				Client rcl = sessionManager.getClientByPublicSID(publicSID, false, null);
 
 				if (rcl == null) {
 					return true;
@@ -496,19 +475,16 @@ public class UserManager implements IUse
 				if (rcl.getRoomId() != null) {
 					scopeName = rcl.getRoomId().toString();
 				}
-				IScope currentScope = scopeApplicationAdapter
-						.getRoomScope(scopeName);
+				IScope currentScope = scopeApplicationAdapter.getRoomScope(scopeName);
 
 				HashMap<Integer, String> messageObj = new HashMap<Integer, String>();
 				messageObj.put(0, "kick");
-				scopeApplicationAdapter.sendMessageById(messageObj,
-						rcl.getStreamid(), currentScope);
+				scopeApplicationAdapter.sendMessageById(messageObj, rcl.getStreamid(), currentScope);
 
 				scopeApplicationAdapter.roomLeaveByScope(rcl, currentScope, true);
 
 				return true;
 			}
-
 		} catch (Exception err) {
 			log.error("[kickUserByStreamId]", err);
 		}

Added: openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java?rev=1689219&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java (added)
+++ openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java Sun Jul  5 06:16:40 2015
@@ -0,0 +1,99 @@
+/*
+ * 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;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import javax.jws.WebParam;
+import javax.jws.WebService;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+import org.apache.cxf.feature.Features;
+import org.apache.openmeetings.db.dao.basic.ErrorDao;
+import org.apache.openmeetings.db.dao.label.LabelDao;
+import org.apache.openmeetings.db.dto.basic.ServiceResult;
+import org.apache.openmeetings.db.entity.basic.ErrorType;
+import org.apache.openmeetings.db.entity.basic.ErrorValue;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 
+ * The Service contains methods to login and create hash to directly enter
+ * conference rooms, recordings or the application in general
+ * 
+ * @author sebawagner
+ * @webservice ErrorService
+ * 
+ */
+@WebService(name = "ErrorService")
+@Features(features = "org.apache.cxf.feature.LoggingFeature")
+@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
+@Path("/error")
+public class ErrorWebService {
+	private static final Logger log = Red5LoggerFactory.getLogger(ErrorWebService.class, webAppRootKey);
+
+	@Autowired
+	private ErrorDao errorDao;
+	@Autowired
+	private LabelDao labelDao;
+
+	/**
+	 * loads an Error-Object. If a Method returns a negative Result, its an
+	 * Error-id, it needs a languageId to specify in which language you want to
+	 * display/read the error-message. English has the Language-ID one, for
+	 * different one see the list of languages
+	 * 
+	 * @param id
+	 *            the error id (negative Value here!)
+	 * @param lang
+	 *            The id of the language
+	 *            
+	 * @return - error with the code given
+	 */
+	@GET
+	@Path("/{id}/{lang}")
+	public ServiceResult get(@WebParam @PathParam("id") long id, @WebParam @PathParam("lang") long lang) {
+		try {
+			if (id < 0) {
+				ErrorValue eValues = errorDao.get(-1 * id);
+				if (eValues != null) {
+					ErrorType eType = errorDao.getErrorType(eValues.getTypeId());
+					log.debug("eValues.getLabelId() = " + eValues.getLabelId());
+					log.debug("eValues.getErrorType() = " + eType);
+					String eValue = labelDao.getString(eValues.getLabelId(), lang);
+					String tValue = labelDao.getString(eType.getLabelId(), lang);
+					if (eValue != null) {
+						return new ServiceResult(id, eValue, tValue);
+					}
+				}
+			} else {
+				return new ServiceResult(id, "Error ... please check your input", "Error");
+			}
+		} catch (Exception err) {
+			log.error("[getErrorByCode] ", err);
+		}
+		return null;
+	}
+}

Added: openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java?rev=1689219&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java (added)
+++ openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java Sun Jul  5 06:16:40 2015
@@ -0,0 +1,188 @@
+/*
+ * 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;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.ArrayList;
+
+import javax.jws.WebParam;
+import javax.jws.WebService;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.apache.cxf.feature.Features;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.OrganisationDao;
+import org.apache.openmeetings.db.dao.user.OrganisationUserDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.basic.SearchResult;
+import org.apache.openmeetings.db.dto.basic.ServiceResult;
+import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
+import org.apache.openmeetings.db.dto.user.UserSearchResult;
+import org.apache.openmeetings.db.entity.user.Organisation;
+import org.apache.openmeetings.db.entity.user.OrganisationUser;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.util.AuthLevelUtil;
+import org.apache.openmeetings.webservice.error.ServiceException;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 
+ * The Service contains methods to login and create hash to directly enter
+ * conference rooms, recordings or the application in general
+ * 
+ * @author sebawagner
+ * @webservice GroupService
+ * 
+ */
+@WebService(name = "GroupService")
+@Features(features = "org.apache.cxf.feature.LoggingFeature")
+@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
+@Path("/group")
+public class GroupWebService {
+	private static final Logger log = Red5LoggerFactory.getLogger(GroupWebService.class, webAppRootKey);
+
+	@Autowired
+	private OrganisationDao orgDao;
+	@Autowired
+	private OrganisationUserDao orgUserDao;
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private SessiondataDao sessionDao;
+
+	/**
+	 * add a new organisation
+	 * 
+	 * @param sid
+	 *            The SID from getSession
+	 * @param name
+	 *            the name of the org
+	 * @return the new id of the org or -1 in case an error happened
+	 * @throws ServiceException
+	 */
+	@POST
+	@Path("/")
+	public ServiceResult add(@QueryParam("sid") @WebParam String sid, @QueryParam("name") @WebParam String name) throws ServiceException {
+		Long userId = sessionDao.checkSession(sid);
+		if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+			Organisation o = new Organisation();
+			o.setName(name);
+			return new ServiceResult(orgDao.update(o, userId).getId(), "Success", Type.SUCCESS);
+		} else {
+			log.error("Could not create organization");
+			return new ServiceResult(-26L, "Insufficient permissins", Type.ERROR);
+		}
+	}
+	
+	/**
+	 * 
+	 * Add a user to a certain organization
+	 * 
+	 * @param sid
+	 *            The SID from getSession
+	 * @param userId
+	 *            the user id
+	 * @param id
+	 *            the organization id
+	 * @return - id of the user added, or error id in case of the error
+	 */
+	@POST
+	@Path("/{id}/{userId}")
+	public ServiceResult addUser(
+			@QueryParam("sid") @WebParam String sid
+			, @PathParam("id") @WebParam Long id
+			, @PathParam("userId") @WebParam Long userId
+			)
+	{
+		try {
+			Long authUserId = sessionDao.checkSession(sid);
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(authUserId))) {
+				if (!orgUserDao.isUserInOrganization(id, userId)) {
+					User u = userDao.get(userId);
+					u.getOrganisationUsers().add(new OrganisationUser(orgDao.get(id)));
+					userDao.update(u, authUserId);
+				}
+				return new ServiceResult(userId, "Success", Type.SUCCESS);
+			} else {
+				return new ServiceResult(-26L, "Insufficient permissins", Type.ERROR);
+			}
+		} catch (Exception err) {
+			log.error("addUserToOrganisation", err);
+			return new ServiceResult(-1L, err.getMessage(), Type.ERROR);
+		}
+	}
+
+	/**
+	 * Search users and return them
+	 * 
+	 * @param sid
+	 *            The SID from getSession
+	 * @param organisationId
+	 *            the organization id
+	 * @param start
+	 *            first record
+	 * @param max
+	 *            max records
+	 * @param orderby
+	 *            orderby clause
+	 * @param asc
+	 *            asc or desc
+	 * @return - users found
+	 */
+	@GET
+	@Path("/{id}")
+	public UserSearchResult getUsersByOrganisation(
+			@QueryParam("sid") @WebParam String sid
+			, @PathParam("id") @WebParam long id
+			, @QueryParam("start") @WebParam int start
+			, @QueryParam("max") @WebParam int max
+			, @QueryParam("orderby") @WebParam String orderby
+			, @QueryParam("asc") @WebParam boolean asc
+			)
+	{
+		try {
+			Long userId = sessionDao.checkSession(sid);
+			SearchResult<User> result = new SearchResult<User>();
+			result.setObjectName(User.class.getName());
+			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
+				result.setRecords(orgUserDao.count(id));
+				result.setResult(new ArrayList<User>());
+				for (OrganisationUser ou : orgUserDao.get(id, null, start, max, orderby + " " + (asc ? "ASC" : "DESC"))) {
+					result.getResult().add(ou.getUser());
+				}
+			} else {
+				log.error("Need Administration Account");
+				result.setErrorId(-26L);
+			}
+			return new UserSearchResult(result);
+		} catch (Exception err) {
+			log.error("getUsersByOrganisation", err);
+		}
+		return null;
+	}
+}

Modified: openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java?rev=1689219&r1=1689218&r2=1689219&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java Sun Jul  5 06:16:40 2015
@@ -20,36 +20,32 @@ package org.apache.openmeetings.webservi
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
-import java.util.ArrayList;
 import java.util.Date;
 
 import javax.jws.WebParam;
 import javax.jws.WebService;
+import javax.ws.rs.DELETE;
 import javax.ws.rs.GET;
+import javax.ws.rs.POST;
 import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
-import org.apache.openmeetings.db.dao.basic.ErrorDao;
-import org.apache.openmeetings.db.dao.label.LabelDao;
 import org.apache.openmeetings.db.dao.server.SOAPLoginDao;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
 import org.apache.openmeetings.db.dao.user.IUserManager;
-import org.apache.openmeetings.db.dao.user.OrganisationDao;
-import org.apache.openmeetings.db.dao.user.OrganisationUserDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.dto.basic.ErrorResult;
-import org.apache.openmeetings.db.dto.basic.SearchResult;
+import org.apache.openmeetings.db.dto.basic.ServiceResult;
+import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
 import org.apache.openmeetings.db.dto.user.UserDTO;
-import org.apache.openmeetings.db.dto.user.UserSearchResult;
-import org.apache.openmeetings.db.entity.basic.ErrorType;
-import org.apache.openmeetings.db.entity.basic.ErrorValue;
 import org.apache.openmeetings.db.entity.server.RemoteSessionObject;
 import org.apache.openmeetings.db.entity.server.Sessiondata;
-import org.apache.openmeetings.db.entity.user.Organisation;
-import org.apache.openmeetings.db.entity.user.OrganisationUser;
+import org.apache.openmeetings.db.entity.user.Address;
+import org.apache.openmeetings.db.entity.user.State;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
@@ -59,8 +55,6 @@ import org.red5.logging.Red5LoggerFactor
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 
-import com.sun.istack.NotNull;
-
 /**
  * 
  * The Service contains methods to login and create hash to directly enter
@@ -72,349 +66,131 @@ import com.sun.istack.NotNull;
  */
 @WebService(name = "UserService")
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
+//@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.TEXT_HTML})
 @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
+//@Consumes({MediaType.APPLICATION_FORM_URLENCODED, MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
 @Path("/user")
 public class UserWebService {
 	private static final Logger log = Red5LoggerFactory.getLogger(UserWebService.class, webAppRootKey);
 
 	@Autowired
-	private SessiondataDao sessiondataDao;
-	@Autowired
 	private ConfigurationDao configurationDao;
 	@Autowired
 	private IUserManager userManagement;
 	@Autowired
-	private ErrorDao errorDao;
-	@Autowired
-	private OrganisationDao orgDao;
-	@Autowired
-	private OrganisationUserDao orgUserDao;
-	@Autowired
 	private SOAPLoginDao soapLoginDao;
 	@Autowired
 	private UserDao userDao;
 	@Autowired
 	private SessiondataDao sessionDao;
-	@Autowired
-	private LabelDao labelDao;
-
-	/**
-	 * load this session id before doing anything else Returns an Object of Type
-	 * Sessiondata, this contains a sessionId, use that sessionId in all Methods
-	 * 
-	 * @return - creates new session
-	 */
-	@GET
-	@Path("/getSession")
-	public Sessiondata getSession() {
-		log.debug("SPRING LOADED getSession -- ");
-		return sessionDao.startsession();
-	}
 
 	/**
-	 * Auth function, use the SID you get by getSession, return positive means
-	 * logged-in, if negative its an ErrorCode, you have to invoke the Method
-	 * getErrorByCode to get the Text-Description of that ErrorCode
-	 * 
-	 * @param SID - The SID from getSession
-	 * @param username - Username from OpenMeetings, the user has to have Admin-rights
-	 * @param userpass - Userpass from OpenMeetings
+	 * @param login - login or email of Openmeetings user with admin or SOAP-rights
+	 * @param pass - password
 	 *            
-	 * @return - id of the logged in user, -1 in case of the error
+	 * @return - {@link ServiceResult} with error code or SID and userId
 	 */
 	@GET
 	@Path("/login")
-	public Long login(@WebParam String SID, @WebParam String username, @WebParam String userpass) {
+	public ServiceResult login(@WebParam @QueryParam("user") String login, @WebParam @QueryParam("pass") String pass) {
 		try {
-			log.debug("Login user SID : " + SID);
-			User u = userDao.login(username, userpass);
+			log.debug("Login user");
+			User u = userDao.login(login, pass);
 			if (u == null) {
-				return -1L;
+				return new ServiceResult(-1L, "Login failed", Type.ERROR);
 			}
 			
-			boolean bool = sessiondataDao.updateUser(SID, u.getId(), false, u.getLanguageId());
-			if (!bool) {
-				// invalid Session-Object
-				return -35L;
+			Sessiondata sd = sessionDao.startsession();
+			log.debug("Login user SID : " + sd.getSessionId());
+			if (!sessionDao.updateUser(sd.getSessionId(), u.getId(), false, u.getLanguageId())) {
+				return new ServiceResult(-35L, "invalid Session-Object", Type.ERROR);
 			}
 			
-			return u.getId();
+			return new ServiceResult(u.getId(), sd.getSessionId(), Type.SUCCESS);
 		} catch (OmException oe) {
-			if (oe.getCode() != null) {
-				return oe.getCode();
-			}
+			return new ServiceResult(oe.getCode() == null ? -1 : oe.getCode(), oe.getMessage(), Type.ERROR);
 		} catch (Exception err) {
 			log.error("[login]", err);
+			return new ServiceResult(-1L, err.getMessage(), Type.ERROR);
 		}
-		return -1L;
-	}
-
-	/**
-	 * loads an Error-Object. If a Method returns a negative Result, its an
-	 * Error-id, it needs a languageId to specify in which language you want to
-	 * display/read the error-message. English has the Language-ID one, for
-	 * different one see the list of languages
-	 * 
-	 * @param SID
-	 *            The SID from getSession
-	 * @param errorid
-	 *            the error id (negative Value here!)
-	 * @param langId
-	 *            The id of the language
-	 *            
-	 * @return - error with the code given
-	 */
-	@GET
-	@Path("/getErrorByCode")
-	public ErrorResult getErrorByCode(@WebParam String SID, @WebParam long errorid, @WebParam long langId) {
-		try {
-			if (errorid < 0) {
-				ErrorValue eValues = errorDao.get(-1 * errorid);
-				if (eValues != null) {
-					ErrorType eType = errorDao.getErrorType(eValues.getTypeId());
-					log.debug("eValues.getLabelId() = " + eValues.getLabelId());
-					log.debug("eValues.getErrorType() = " + eType);
-					String eValue = labelDao.getString(eValues.getLabelId(), langId);
-					String tValue = labelDao.getString(eType.getLabelId(), langId);
-					if (eValue != null) {
-						return new ErrorResult(errorid, eValue, tValue);
-					}
-				}
-			} else {
-				return new ErrorResult(errorid, "Error ... please check your input", "Error");
-			}
-		} catch (Exception err) {
-			log.error("[getErrorByCode] ", err);
-		}
-		return null;
 	}
 
 	/**
 	 * Adds a new User like through the Frontend, but also does activates the
 	 * Account To do SSO see the methods to create a hash and use those ones!
 	 * 
-	 * @param SID
+	 * @param sid
 	 *            The SID from getSession
-	 * @param userDTO
+	 * @param user
 	 *            user object
-	 *            
-	 * @return - id of the user added or error code
-	 * @throws ServiceException
-	 */
-	@GET
-	@Path("/addUser")
-	public Long addUser(@WebParam String SID, @WebParam @NotNull UserDTO userDto)
-			throws ServiceException {
-		try {
-			Long authUserId = sessiondataDao.checkSession(SID);
-
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(authUserId))) {
-
-				String jName_timeZone = configurationDao.getConfValue("default.timezone", String.class, "");
-
-				Long userId = userManagement.registerUser(userDto.getLogin(), userDto.getPassword(),
-						userDto.getLastname(), userDto.getFirstname(), userDto.getAddress() != null ? userDto.getAddress().getEmail() : "", new Date(), userDto.getAddress().getStreet(), //FIXME NPE signature
-						userDto.getAddress().getAdditionalname(), userDto.getAddress().getFax(), userDto.getAddress().getZip(), userDto.getAddress().getState().getId() //FIXME NPE signature
-						, userDto.getAddress().getTown(), userDto.getLanguageId(), //FIXME NPE signature
-						"", false, true, // generate SIP Data if the config is enabled
-						jName_timeZone);
-
-				if (userId == null || userId < 0) {
-					return userId;
-				}
-
-				User user = userDao.get(userId);
-
-				// activate the User
-				user.getRights().add(Right.Dashboard);
-				user.getRights().add(Right.Login);
-				user.getRights().add(Right.Room);
-				user.setUpdated(new Date());
-
-				userDao.update(user, authUserId);
-
-				return userId;
-
-			} else {
-				return new Long(-26);
-			}
-		} catch (Exception err) {
-			log.error("addNewUser", err);
-			throw new ServiceException(err.getMessage());
-		}
-	}
-
-	/**
-	 * Adds a new User like through the Frontend, but also does activates the
-	 * Account
-	 * 
-	 * @param SID
-	 *            The SID from getSession
-	 * @param username
-	 *            any username
-	 * @param userpass
-	 *            any userpass
-	 * @param lastname
-	 *            any lastname
-	 * @param firstname
-	 *            any firstname
 	 * @param email
-	 *            any email
-	 * @param additionalname
-	 *            any additionalname
-	 * @param street
-	 *            any street
-	 * @param zip
-	 *            any zip
-	 * @param fax
-	 *            any fax
-	 * @param stateId
-	 *            a valid stateId
-	 * @param town
-	 *            any town
-	 * @param languageId
-	 *            the languageId
-	 * @param jNameTimeZone
-	 *            the name of the timezone for the user
+	 *            whatever or not to send email, leave empty for auto-send
 	 *            
-	 * @return - id of the user added or the error code
+	 * @return - id of the user added or error code
 	 * @throws ServiceException
 	 */
-	public Long addNewUserWithTimeZone(String SID, String username,
-			String userpass, String lastname, String firstname, String email,
-			String additionalname, String street, String zip, String fax,
-			long stateId, String town, long languageId, String jNameTimeZone) throws ServiceException {
+	@POST
+	@Path("/")
+	public Long add(
+			@WebParam @QueryParam("sid") String sid
+			, @WebParam @QueryParam("user") UserDTO user
+			, @WebParam @QueryParam("email") Boolean email
+			) throws ServiceException
+	{
 		try {
-			Long authUserId = sessiondataDao.checkSession(SID);
+			Long authUserId = sessionDao.checkSession(sid);
 
 			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(authUserId))) {
-
-				Long userId = userManagement.registerUser(username, userpass,
-						lastname, firstname, email, new Date(), street,
-						additionalname, fax, zip, stateId, town, languageId,
-						"", false, true, // generate
-											// SIP
-											// Data
-											// if
-											// the
-											// config
-											// is
-											// enabled
-						jNameTimeZone); 
-
-				if (userId == null || userId < 0) {
-					return userId;
-				}
-
-				User user = userDao.get(userId);
-
-				// activate the User
-				user.getRights().add(Right.Login);
-				user.setUpdated(new Date());
-
-				userDao.update(user, authUserId);
-
-				return userId;
-
-			} else {
-				return new Long(-26);
-			}
-		} catch (Exception err) {
-			log.error("addNewUserWithTimeZone", err);
-			throw new ServiceException(err.getMessage());
-		}
-	}
-
-	/**
-	 * Adds a new User like through the Frontend, but also does activates the
-	 * Account, sends NO email (no matter what you configured) and sets the
-	 * users external user id and type
-	 * 
-	 * Use the methods to create a hash for SSO, creating users is not required
-	 * for SSO
-	 * 
-	 * @param SID
-	 *            The SID from getSession
-	 * @param username
-	 *            any username
-	 * @param userpass
-	 *            any userpass
-	 * @param lastname
-	 *            any lastname
-	 * @param firstname
-	 *            any firstname
-	 * @param email
-	 *            any email
-	 * @param additionalname
-	 *            any additionalname
-	 * @param street
-	 *            any street
-	 * @param zip
-	 *            any zip
-	 * @param fax
-	 *            any fax
-	 * @param stateId
-	 *            a valid stateId
-	 * @param town
-	 *            any town
-	 * @param languageId
-	 *            the languageId
-	 * @param jNameTimeZone
-	 *            the name of the timezone for the user
-	 * @param externalUserId
-	 *            externalUserId
-	 * @param externalUserType
-	 *            externalUserType
-	 *            
-	 * @return - id of user added or error code
-	 * @throws ServiceException
-	 */
-	public Long addNewUserWithExternalType(String SID, String username,
-			String userpass, String lastname, String firstname, String email,
-			String additionalname, String street, String zip, String fax,
-			long stateId, String town, long languageId,
-			String jNameTimeZone, String externalUserId, String externalUserType)
-			throws ServiceException {
-		try {
-			Long authUserId = sessiondataDao.checkSession(SID);
-
-			if (AuthLevelUtil.hasAdminLevel(userDao.getRights(authUserId))) {
-
-				User testUser = userDao.getExternalUser(externalUserId, externalUserType);
+				User testUser = userDao.getExternalUser(user.getExternalId(), user.getExternalType());
 
 				if (testUser != null) {
-					throw new Exception("User does already exist!");
+					throw new ServiceException("User does already exist!");
 				}
 
-				// This will send no email to the users
-				Long userId = userManagement.registerUserNoEmail(username,
-						userpass, lastname, firstname, email, new Date(),
-						street, additionalname, fax, zip, stateId, town,
-						languageId, "", false, true, // generate SIP Data if the config is enabled
-						jNameTimeZone);
+				String jName_timeZone = configurationDao.getConfValue("default.timezone", String.class, "");
+				if (user.getAddress() == null) {
+					user.setAddress(new Address());
+					State s = new State();
+					s.setId(1L);
+					user.getAddress().setState(s);
+				}
+				if (user.getLanguageId() == null) {
+					user.setLanguageId(1L);
+				}
+				Long userId = userManagement.registerUser(user.getLogin(), user.getPassword(),
+						user.getLastname(), user.getFirstname(), user.getAddress().getEmail(), new Date(), user.getAddress().getStreet(),
+						user.getAddress().getAdditionalname(), user.getAddress().getFax(), user.getAddress().getZip(), user.getAddress().getState().getId()
+						, user.getAddress().getTown(), user.getLanguageId(),
+						"", false, true, // generate SIP Data if the config is enabled
+						jName_timeZone, email);
 
 				if (userId == null || userId < 0) {
 					return userId;
 				}
 
-				User user = userDao.get(userId);
+				User u = userDao.get(userId);
 
-				// activate the User
-				user.getRights().add(Right.Login);
-				user.setUpdated(new Date());
-				user.setExternalId(externalUserId);
-				user.setExternalType(externalUserType);
+				u.getRights().add(Right.Room);
+				if (user.getExternalId() == null && user.getExternalType() == null) {
+					// activate the User
+					u.getRights().add(Right.Login);
+					u.getRights().add(Right.Dashboard);
+				} else {
+					u.setExternalId(user.getExternalId());
+					u.setExternalType(user.getExternalType());
+				}
 
-				userDao.update(user, authUserId);
+				userDao.update(u, authUserId);
 
 				return userId;
 
 			} else {
 				return new Long(-26);
 			}
-
+		} catch (ServiceException err) {
+			throw err;
 		} catch (Exception err) {
-			log.error("addNewUserWithExternalType", err);
+			log.error("addNewUser", err);
 			throw new ServiceException(err.getMessage());
 		}
 	}
@@ -423,29 +199,27 @@ public class UserWebService {
 	 * 
 	 * Delete a certain user by its id
 	 * 
-	 * @param SID
+	 * @param sid
 	 *            The SID from getSession
-	 * @param userId
+	 * @param id
 	 *            the openmeetings user id
 	 *            
 	 * @return - id of the user deleted, error code otherwise
 	 * @throws ServiceException
 	 */
-	public Long deleteUserById(String SID, Long userId) throws ServiceException {
+	@DELETE
+	@Path("/{id}")
+	public ServiceResult delete(@WebParam @QueryParam("sid") String sid, @WebParam @PathParam("id") long id) throws ServiceException {
 		try {
-			Long authUserId = sessiondataDao.checkSession(SID);
+			Long authUserId = sessionDao.checkSession(sid);
 
 			if (AuthLevelUtil.hasAdminLevel(userDao.getRights(authUserId))) {
+				userDao.deleteUserID(id);
 
-				// Setting user deleted
-				userDao.deleteUserID(userId);
-
-				return userId;
-
+				return new ServiceResult(id, "Deleted", Type.SUCCESS);
 			} else {
-				return new Long(-26);
+				return new ServiceResult(-26L, "Insufficient permissins", Type.ERROR);
 			}
-
 		} catch (Exception err) {
 			log.error("deleteUserById", err);
 			throw new ServiceException(err.getMessage());
@@ -456,7 +230,7 @@ public class UserWebService {
 	 * 
 	 * Delete a certain user by its external user id
 	 * 
-	 * @param SID
+	 * @param sid
 	 *            The SID from getSession
 	 * @param externalId
 	 *            externalUserId
@@ -466,13 +240,18 @@ public class UserWebService {
 	 * @return - id of user deleted, or error code
 	 * @throws ServiceException
 	 */
-	public Long deleteUserByExternalUserIdAndType(String SID,
-			String externalId, String externalType) throws ServiceException {
+	@DELETE
+	@Path("/{externalType}/{externalId}")
+	public ServiceResult deleteExternal(
+			@QueryParam("sid") String sid
+			, @PathParam("externalType") String externalType
+			, @PathParam("externalId") String externalId
+			) throws ServiceException
+	{
 		try {
-			Long authUserId = sessiondataDao.checkSession(SID);
+			Long authUserId = sessionDao.checkSession(sid);
 
 			if (AuthLevelUtil.hasAdminLevel(userDao.getRights(authUserId))) {
-
 				User userExternal = userDao.getExternalUser(externalId, externalType);
 
 				Long userId = userExternal.getId();
@@ -480,12 +259,10 @@ public class UserWebService {
 				// Setting user deleted
 				userDao.deleteUserID(userId);
 
-				return userId;
-
+				return new ServiceResult(userId, "Deleted", Type.SUCCESS);
 			} else {
-				return new Long(-26);
+				return new ServiceResult(-26L, "Insufficient permissins", Type.ERROR);
 			}
-
 		} catch (Exception err) {
 			log.error("deleteUserByExternalUserIdAndType", err);
 			throw new ServiceException(err.getMessage());
@@ -530,7 +307,7 @@ public class UserWebService {
 			Long roomId, int becomeModeratorAsInt, int showAudioVideoTestAsInt)
 			throws ServiceException {
 		try {
-			Long userId = sessiondataDao.checkSession(SID);
+			Long userId = sessionDao.checkSession(SID);
 			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
 
 				RemoteSessionObject remoteSessionObject = new RemoteSessionObject(
@@ -543,7 +320,7 @@ public class UserWebService {
 
 				log.debug("xmlString " + xmlString);
 
-				sessiondataDao.updateUserRemoteSession(SID, xmlString);
+				sessionDao.updateUserRemoteSession(SID, xmlString);
 
 				boolean becomeModerator = false;
 				if (becomeModeratorAsInt != 0) {
@@ -621,7 +398,7 @@ public class UserWebService {
 
 		log.debug("UserService.setUserObjectAndGenerateRoomHashByURL");
 		try {
-			Long userId = sessiondataDao.checkSession(SID);
+			Long userId = sessionDao.checkSession(SID);
 			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
 
 				RemoteSessionObject remoteSessionObject = new RemoteSessionObject(
@@ -634,7 +411,7 @@ public class UserWebService {
 
 				log.debug("xmlString " + xmlString);
 
-				sessiondataDao.updateUserRemoteSession(SID, xmlString);
+				sessionDao.updateUserRemoteSession(SID, xmlString);
 
 				boolean becomeModerator = false;
 				if (becomeModeratorAsInt != 0) {
@@ -714,7 +491,7 @@ public class UserWebService {
 			String externalUserType, Long roomId, int becomeModeratorAsInt,
 			int showAudioVideoTestAsInt, int allowRecording) {
 		try {
-			Long userId = sessiondataDao.checkSession(SID);
+			Long userId = sessionDao.checkSession(SID);
 			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
 
 				RemoteSessionObject remoteSessionObject = new RemoteSessionObject(
@@ -727,7 +504,7 @@ public class UserWebService {
 
 				log.debug("xmlString " + xmlString);
 
-				sessiondataDao.updateUserRemoteSession(SID, xmlString);
+				sessionDao.updateUserRemoteSession(SID, xmlString);
 
 				boolean becomeModerator = false;
 				if (becomeModeratorAsInt != 0) {
@@ -800,7 +577,7 @@ public class UserWebService {
 		log.debug("UserService.setUserObjectMainLandingZone");
 
 		try {
-			Long userId = sessiondataDao.checkSession(SID);
+			Long userId = sessionDao.checkSession(SID);
 			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
 
 				RemoteSessionObject remoteSessionObject = new RemoteSessionObject(
@@ -813,7 +590,7 @@ public class UserWebService {
 
 				log.debug("xmlString " + xmlString);
 
-				sessiondataDao.updateUserRemoteSession(SID, xmlString);
+				sessionDao.updateUserRemoteSession(SID, xmlString);
 
 				String hash = soapLoginDao.addSOAPLogin(SID, null, false, true,
 						true, // allowSameURLMultipleTimes
@@ -886,7 +663,7 @@ public class UserWebService {
 			Long roomId, int becomeModeratorAsInt,
 			int showAudioVideoTestAsInt, int showNickNameDialogAsInt) {
 		try {
-			Long userId = sessiondataDao.checkSession(SID);
+			Long userId = sessionDao.checkSession(SID);
 			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
 
 				RemoteSessionObject remoteSessionObject = new RemoteSessionObject(
@@ -900,7 +677,7 @@ public class UserWebService {
 
 				log.debug("xmlString " + xmlString);
 
-				sessiondataDao.updateUserRemoteSession(SID, xmlString);
+				sessionDao.updateUserRemoteSession(SID, xmlString);
 
 				boolean becomeModerator = false;
 				if (becomeModeratorAsInt != 0) {
@@ -961,7 +738,7 @@ public class UserWebService {
 			String username, String firstname, String lastname,
 			String externalUserId, String externalUserType, Long recordingId) {
 		try {
-			Long userId = sessiondataDao.checkSession(SID);
+			Long userId = sessionDao.checkSession(SID);
 			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
 
 				RemoteSessionObject remoteSessionObject = new RemoteSessionObject(
@@ -974,7 +751,7 @@ public class UserWebService {
 
 				log.debug("xmlString " + xmlString);
 
-				sessiondataDao.updateUserRemoteSession(SID, xmlString);
+				sessionDao.updateUserRemoteSession(SID, xmlString);
 
 				String hash = soapLoginDao.addSOAPLogin(SID, null, false,
 						false, true, // allowSameURLMultipleTimes
@@ -998,81 +775,6 @@ public class UserWebService {
 	}
 
 	/**
-	 * 
-	 * Add a user to a certain organization
-	 * 
-	 * @param SID
-	 *            The SID from getSession
-	 * @param userId
-	 *            the user id
-	 * @param organisationId
-	 *            the organization id
-	 * @param insertedby
-	 *            user id of the operating user
-	 * @return - id of the user added, or error id in case of the error
-	 */
-	public Long addUserToOrganisation(String SID, Long userId,
-			Long organisationId, Long insertedby) {
-		try {
-			Long authUserId = sessiondataDao.checkSession(SID);
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(authUserId))) {
-				if (!orgUserDao.isUserInOrganization(organisationId, userId)) {
-					User u = userDao.get(userId);
-					u.getOrganisationUsers().add(new OrganisationUser(orgDao.get(organisationId)));
-					userDao.update(u, authUserId);
-				}
-				return userId;
-			} else {
-				return new Long(-26);
-			}
-		} catch (Exception err) {
-			log.error("addUserToOrganisation", err);
-		}
-		return new Long(-1);
-	}
-
-	/**
-	 * Search users and return them
-	 * 
-	 * @param SID
-	 *            The SID from getSession
-	 * @param organisationId
-	 *            the organization id
-	 * @param start
-	 *            first record
-	 * @param max
-	 *            max records
-	 * @param orderby
-	 *            orderby clause
-	 * @param asc
-	 *            asc or desc
-	 * @return - users found
-	 */
-	public UserSearchResult getUsersByOrganisation(String SID,
-			long organisationId, int start, int max, String orderby,
-			boolean asc) {
-		try {
-			Long userId = sessiondataDao.checkSession(SID);
-			SearchResult<User> result = new SearchResult<User>();
-			result.setObjectName(User.class.getName());
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
-				result.setRecords(orgUserDao.count(organisationId));
-				result.setResult(new ArrayList<User>());
-				for (OrganisationUser ou : orgUserDao.get(organisationId, null, start, max, orderby + " " + (asc ? "ASC" : "DESC"))) {
-					result.getResult().add(ou.getUser());
-				}
-			} else {
-				log.error("Need Administration Account");
-				result.setErrorId(-26L);
-			}
-			return new UserSearchResult(result);
-		} catch (Exception err) {
-			log.error("getUsersByOrganisation", err);
-		}
-		return null;
-	}
-
-	/**
 	 * Kick a user by its public SID
 	 * 
 	 * @param SID
@@ -1084,12 +786,11 @@ public class UserWebService {
 	 */
 	public Boolean kickUserByPublicSID(String SID, String publicSID) {
 		try {
-			Boolean success = false;
+			Boolean success = userManagement.kickUserByPublicSID(SID, publicSID);
 
-			success = userManagement.kickUserByPublicSID(SID, publicSID);
-
-			if (success == null)
+			if (success == null) {
 				success = false;
+			}
 
 			return success;
 		} catch (Exception err) {
@@ -1097,26 +798,4 @@ public class UserWebService {
 		}
 		return null;
 	}
-	
-	/**
-	 * add a new organisation
-	 * 
-	 * @param SID
-	 *            The SID from getSession
-	 * @param name
-	 *            the name of the org
-	 * @return the new id of the org or -1 in case an error happened
-	 * @throws ServiceException
-	 */
-	public Long addOrganisation(String SID, String name) throws ServiceException {
-		Long userId = sessiondataDao.checkSession(SID);
-		if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
-			Organisation o = new Organisation();
-			o.setName(name);
-			return orgDao.update(o, userId).getId();
-		}
-		log.error("Could not create organization");
-		return -1L;
-	}
-
 }

Modified: openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/cluster/RestClient.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/cluster/RestClient.java?rev=1689219&r1=1689218&r2=1689219&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/cluster/RestClient.java (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/cluster/RestClient.java Sun Jul  5 06:16:40 2015
@@ -25,6 +25,7 @@ import java.net.URL;
 import javax.xml.namespace.QName;
 import javax.xml.ws.Service;
 
+import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.entity.server.Server;
 import org.apache.openmeetings.webservice.UserWebService;
 import org.red5.logging.Red5LoggerFactory;
@@ -171,11 +172,9 @@ public class RestClient {
 	public void loginUser(Action action) throws Exception {
 		UserWebService client = getUserClient();
 		
-		sessionId = client.getSession().getSessionId();
+		ServiceResult result = client.login(user, pass);
 
-		Long uId = client.login(sessionId, user, pass);
-
-		loginSuccess = uId > 0;
+		loginSuccess = result.getCode() > 0;
 
 		switch (action) {
 			case KICK_USER: