/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.intel.mtwilson.user.management.rest.v2.rpc; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; import com.intel.dcsg.cpg.crypto.Sha1Digest; import com.intel.dcsg.cpg.crypto.Sha256Digest; import com.intel.dcsg.cpg.io.UUID; import com.intel.mtwilson.user.management.rest.v2.model.User; import com.intel.mtwilson.launcher.ws.ext.RPC; import com.intel.mtwilson.repository.RepositoryCreateException; import com.intel.mtwilson.user.management.rest.v2.model.UserLoginCertificate; import com.intel.mtwilson.user.management.rest.v2.repository.UserLoginCertificateRepository; import com.intel.mtwilson.user.management.rest.v2.repository.UserRepository; /** * * @author ssbangal */ @RPC("register-user-with-certificate") @JacksonXmlRootElement(localName="register_user_with_certificate") public class RegisterUserWithCertificateRunnable implements Runnable{ private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(RegisterUserWithCertificateRunnable.class); private User user; private UserLoginCertificate userLoginCertificate; private boolean result; public User getUser() { return user; } public void setUser(User user) { this.user = user; } public UserLoginCertificate getUserLoginCertificate() { return userLoginCertificate; } public void setUserLoginCertificate(UserLoginCertificate userLoginCertificate) { this.userLoginCertificate = userLoginCertificate; } public boolean isResult() { return result; } public void setResult(boolean result) { this.result = result; } @Override public void run() { result = false; UserRepository userRepo = new UserRepository(); UserLoginCertificateRepository userLoginCertRepo = new UserLoginCertificateRepository(); try { if (getUser() != null && getUserLoginCertificate() != null) { log.debug("Starting to process the user registration with certificate for {}.", getUser().getUsername()); User userObj = new User(); UserLoginCertificate userCertObj = new UserLoginCertificate(); UUID userId = new UUID(); UUID userCertId = new UUID(); userObj.setId(userId); userObj.setUsername(getUser().getUsername()); userObj.setLocale(getUser().getLocale()); userObj.setComment(getUser().getComment()); userRepo.create(userObj); log.debug("Added the user {} with id {} successfully.", getUser().getUsername(), userId); userCertObj.setId(userCertId); userCertObj.setUserId(userId); userCertObj.setCertificate(getUserLoginCertificate().getCertificate()); userCertObj.setSha1Hash(Sha1Digest.digestOf(getUserLoginCertificate().getCertificate()).toByteArray()); userCertObj.setSha256Hash(Sha256Digest.digestOf(getUserLoginCertificate().getCertificate()).toByteArray()); userCertObj.setComment(getUser().getComment()); userCertObj.setExpires(getUserLoginCertificate().getX509Certificate().getNotAfter()); userLoginCertRepo.create(userCertObj); result = true; log.debug("Completed processing user registration with certificate for {}.", getUser().getUsername()); } } catch (Exception ex) { log.error("Exception during registration of user with certificate.", ex); throw new RepositoryCreateException(ex); } } }