// Path: src/main/java/yourwebproject2/model/dto/UserDTO.java
// public class UserDTO {
//     String email;
//     String password;
//     String displayName;
//     String encryptedPassword;
//     String iv;
//     String salt;
//     int keySize;
//     int iterations;
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getPassword() {
//         return password;
//     }
// 
//     public void setPassword(String password) {
//         this.password = password;
//     }
// 
//     public String getDisplayName() {
//         return displayName;
//     }
// 
//     public void setDisplayName(String displayName) {
//         this.displayName = displayName;
//     }
// 
//     public String getEncryptedPassword() {
//         return encryptedPassword;
//     }
// 
//     public void setEncryptedPassword(String encryptedPassword) {
//         this.encryptedPassword = encryptedPassword;
//     }
// 
//     public String getIv() {
//         return iv;
//     }
// 
//     public void setIv(String iv) {
//         this.iv = iv;
//     }
// 
//     public String getSalt() {
//         return salt;
//     }
// 
//     public void setSalt(String salt) {
//         this.salt = salt;
//     }
// 
//     public int getKeySize() {
//         return keySize;
//     }
// 
//     public void setKeySize(int keySize) {
//         this.keySize = keySize;
//     }
// 
//     public int getIterations() {
//         return iterations;
//     }
// 
//     public void setIterations(int iterations) {
//         this.iterations = iterations;
//     }
// }


import yourwebproject2.model.dto.UserDTO;
import org.apache.commons.lang.Validate;
import org.json.JSONObject;
import org.springframework.security.crypto.codec.Base64;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.Scanner;
package yourwebproject2.framework.controller;



/**
 * All controllers in spring should extend this controller so as to have
 * centralize control for doing any sort of common functionality.
 * e.g. extracting data from post request body
 *
 * @author : Y Kamesh Rao
 */
public abstract class BaseController {
    protected static final String JSON_API_CONTENT_HEADER = "Content-type=application/json";

    public String extractPostRequestBody(HttpServletRequest request) throws IOException {
        if ("POST".equalsIgnoreCase(request.getMethod())) {
            Scanner s = new Scanner(request.getInputStream(), "UTF-8").useDelimiter("\\A");
            return s.hasNext() ? s.next() : "";
        }
        return "";
    }

    public JSONObject parseJSON(String object) {
        return new JSONObject(object);
    }

// Path: src/main/java/yourwebproject2/model/dto/UserDTO.java
// public class UserDTO {
//     String email;
//     String password;
//     String displayName;
//     String encryptedPassword;
//     String iv;
//     String salt;
//     int keySize;
//     int iterations;
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getPassword() {
//         return password;
//     }
// 
//     public void setPassword(String password) {
//         this.password = password;
//     }
// 
//     public String getDisplayName() {
//         return displayName;
//     }
// 
//     public void setDisplayName(String displayName) {
//         this.displayName = displayName;
//     }
// 
//     public String getEncryptedPassword() {
//         return encryptedPassword;
//     }
// 
//     public void setEncryptedPassword(String encryptedPassword) {
//         this.encryptedPassword = encryptedPassword;
//     }
// 
//     public String getIv() {
//         return iv;
//     }
// 
//     public void setIv(String iv) {
//         this.iv = iv;
//     }
// 
//     public String getSalt() {
//         return salt;
//     }
// 
//     public void setSalt(String salt) {
//         this.salt = salt;
//     }
// 
//     public int getKeySize() {
//         return keySize;
//     }
// 
//     public void setKeySize(int keySize) {
//         this.keySize = keySize;
//     }
// 
//     public int getIterations() {
//         return iterations;
//     }
// 
//     public void setIterations(int iterations) {
//         this.iterations = iterations;
//     }
// }


// Path: src/main/java/yourwebproject2/framework/controller/BaseController.java
import yourwebproject2.model.dto.UserDTO;
import org.apache.commons.lang.Validate;
import org.json.JSONObject;
import org.springframework.security.crypto.codec.Base64;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.Scanner;

package yourwebproject2.framework.controller;



/**
 * All controllers in spring should extend this controller so as to have
 * centralize control for doing any sort of common functionality.
 * e.g. extracting data from post request body
 *
 * @author : Y Kamesh Rao
 */
public abstract class BaseController {
    protected static final String JSON_API_CONTENT_HEADER = "Content-type=application/json";

    public String extractPostRequestBody(HttpServletRequest request) throws IOException {
        if ("POST".equalsIgnoreCase(request.getMethod())) {
            Scanner s = new Scanner(request.getInputStream(), "UTF-8").useDelimiter("\\A");
            return s.hasNext() ? s.next() : "";
        }
        return "";
    }

    public JSONObject parseJSON(String object) {
        return new JSONObject(object);
    }

    public void decorateUserDTOWithCredsFromAuthHeader(String authHeader, UserDTO userDTO) {