Commit edd050a3 authored by Siva Rama Krishna's avatar Siva Rama Krishna

initial commit

parents
# Created by .ignore support plugin (hsz.mobi)
FROM openjdk:8-jre-alpine3.7
ADD /target/#ARTIFACT# //
ADD /src/main/resources/application.properties //
ADD /src/main/resources/logback.xml //
ADD /src/main/resources/db-config.properties //
ADD /src/main/resources/service.properties //
ENTRYPOINT ["java", "-jar", "/#ARTIFACT#"]
pipeline {
agent any
environment {
BRANCHES="${env.GIT_BRANCH}"
COMMIT="${env.GIT_COMMIT}"
}
stages {
stage('Set variables') {
steps {
script {
BRANCH = "${BRANCHES}".tokenize('/')[-1]
def data = readJSON file:'metadata.json'
DOCKERHOST="""${data.hosting."${BRANCH}".dockerHost}"""
DOCKERPORT="""${data.hosting."${BRANCH}".dockerPort}"""
HOSTPORT="""${data.hosting."${BRANCH}".hostPort}"""
DOCKERREPO="docker.artifactory"
VALIDATIONURL="""${data.'application.properties'."${BRANCH}".validationURL}"""
VALIDATIONSLEEP="""${data.'application.properties'."${BRANCH}".validationSleep}"""
DBNODEPRIMARY="""${data.'db-config.properties'."${BRANCH}".DBNODEPRIMARY}"""
DBNODESECONDARY1="""${data.'db-config.properties'."${BRANCH}".DBNODESECONDARY1}"""
DBNODESECONDARY2="""${data.'db-config.properties'."${BRANCH}".DBNODESECONDARY2}"""
DBREPLICASET="""${data.'db-config.properties'."${BRANCH}".DBREPLICASET}"""
DBSCHEMA="""${data."db-config.properties"."${BRANCH}".DBSCHEMA}"""
DBUSR="""${data."db-config.properties"."${BRANCH}".DBUSR}"""
DBPW="""${data."db-config.properties"."${BRANCH}".DBPW}"""
PLAYGROUNDSERVICEURL="""${data."application.properties"."${BRANCH}".PLAYGROUNDSERVICEURL}"""
USESWAGGER="""${data."application.properties"."${BRANCH}".USESWAGGER}"""
def (NS, ENV2, JOB)="${JOB_NAME}".tokenize('/')
def (NET1, B1, B2)="${NS}".tokenize('.')
JOBENV="${ENV2}"
NET="${NET1}"
ORG="${NET}-${JOBENV}"
OLDBUILD=(BUILD_ID as int) - 1
def pom=readMavenPom file: 'pom.xml'
ARTIFACTID="${pom.artifactId}"
ARTIFACTVERSION="${pom.version}"
ARTIFACTPACKAGING="${pom.packaging}"
ARTIFACT="${ARTIFACTID}-${ARTIFACTVERSION}.${ARTIFACTPACKAGING}"
sh "sed -i s/#DBNODEPRIMARY#/${DBNODEPRIMARY}/g ./src/main/resources/db-config.properties"
sh "sed -i s/#DBNODESECONDARY1#/${DBNODESECONDARY1}/g ./src/main/resources/db-config.properties"
sh "sed -i s/#DBNODESECONDARY2#/${DBNODESECONDARY2}/g ./src/main/resources/db-config.properties"
sh "sed -i s/#DBREPLICASET#/${DBREPLICASET}/g ./src/main/resources/db-config.properties"
sh "sed -i s/#DBSCHEMA#/${DBSCHEMA}/g ./src/main/resources/db-config.properties"
sh "sed -i s/#DBUSR#/${DBUSR}/g ./src/main/resources/db-config.properties"
sh "set +x && sed -i s/#DBPW#/${DBPW}/g ./src/main/resources/db-config.properties"
sh "sed -i s/#PLAYGROUNDSERVICEURL#/${PLAYGROUNDSERVICEURL}/g ./src/main/resources/application.properties"
sh "sed -i s/#PLAYGROUNDSERVICEURL#/${PLAYGROUNDSERVICEURL}/g ./src/test/resources/application-test.properties"
sh "sed -i s/#USESWAGGER#/${USESWAGGER}/g ./src/main/resources/application.properties"
}
}
}
stage('Maven build') {
steps {
sh 'mvn clean package'
}
}
stage('Jacoco Coverage') {
steps {
jacoco changeBuildStatus: false, maximumClassCoverage: '50', maximumComplexityCoverage: '50', maximumLineCoverage: '50'
}
}
stage('Sonarqube') {
steps {
script {
def scannerHome=tool 'sonarqube'
withSonarQubeEnv('sonarqube_local') {
sh "${scannerHome}/bin/sonar-scanner -Dsonar.projectKey=${JOB_BASE_NAME} -Dsonar.sources='.' -Dsonar.java.binaries='.' -Dsonar.exclusions='target/**/*' -Dsonar.projectVersion=${JOBENV}.${BUILD_ID} -Dsonar.branch=${BRANCH} "
}
}
}
}
stage('Build docker image') {
steps {
script {
sh "sed -i s/#ARTIFACT#/${ARTIFACT}/g Dockerfile"
withDockerRegistry([credentialsId: 'dockeraws_pw', url: "http://docker.artifactory/"]) {
TAG="docker.artifactory/${ORG}/${JOB_BASE_NAME}:${BUILD_ID}"
def image=docker.build("${TAG}", "--no-cache -f Dockerfile .")
stage('Push docker image') {
image.push "${BUILD_ID}"
}
}
}
}
}
stage('Deploy docker image') {
steps {
script {
println "ENV: ${JOBENV}"
if (("${JOBENV}"=="3dash") || ("${JOBENV}"=="prod")) {
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'dockeraws_pw', usernameVariable: '_DOCKERUSER', passwordVariable: '_DOCKERPWD']]) {
sh """
ssh centos@${DOCKERHOST} "docker login -u $_DOCKERUSER -p $_DOCKERPWD ${DOCKERREPO} && docker pull ${DOCKERREPO}/${ORG}/${JOB_BASE_NAME}:${BUILD_ID}"
ssh centos@${DOCKERHOST} "docker stop ${JOB_BASE_NAME} || true && docker rm ${JOB_BASE_NAME} || true"
ssh centos@${DOCKERHOST} "docker run -d --name ${JOB_BASE_NAME} --restart always --network=${NET} -p ${HOSTPORT}:${DOCKERPORT} ${DOCKERREPO}/${ORG}/${JOB_BASE_NAME}:${BUILD_ID}"
ssh centos@${DOCKERHOST} "docker rmi ${DOCKERREPO}/${ORG}/${JOB_BASE_NAME}:${OLDBUILD} || true"
"""
}
}
else {
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'dockeraws_pw', usernameVariable: '_DOCKERUSER', passwordVariable: '_DOCKERPWD']]) {
sh """
ssh centos@${DOCKERHOST} "docker login -u $_DOCKERUSER -p $_DOCKERPWD ${DOCKERREPO} && docker pull ${DOCKERREPO}/${ORG}/${JOB_BASE_NAME}:${BUILD_ID}"
ssh centos@${DOCKERHOST} "docker stop ${JOB_BASE_NAME} || true && docker rm ${JOB_BASE_NAME} || true"
ssh centos@${DOCKERHOST} "docker run -d --name ${JOB_BASE_NAME} --restart always -p ${HOSTPORT}:${DOCKERPORT} ${DOCKERREPO}/${ORG}/${JOB_BASE_NAME}:${BUILD_ID}"
ssh centos@${DOCKERHOST} "docker rmi ${DOCKERREPO}/${ORG}/${JOB_BASE_NAME}:${OLDBUILD} || true"
"""
}
}
}
}
}
stage ('Validate End-Point') {
steps {
script {
sh """sleep "${VALIDATIONSLEEP}" && curl -H "Content-Type: application/json" "${VALIDATIONURL}" """
def connection=new URL("${VALIDATIONURL}").openConnection() as HttpURLConnection
connection.setRequestProperty('User-Agent', 'groovy-2.4.4')
connection.setRequestProperty('Content-Type', 'application/json')
RESULT=connection.inputStream.text
//if $RESULT
}
}
}
stage('Send results to Slack') {
steps {
slackSend(color: '#439FE0', message: "'${env.JOB_NAME}' #'${env.BUILD_ID}' '${COMMIT}' ", channel: '#pg-svcs')
}
}
}
post {
always {
script {
currentBuild.result = currentBuild.result ?: 'SUCCESS'
notifyBitbucket()
}
}
}
}
## Description ##
The template used in creating this service has the configuration inclusive of
1. `Consul` - Service Registry and Discovery
2. `Hystrix` - Circuit Breaker
3. `RabbitMQ` - Message Broker
4. `SpringBootAdmin` - Service Monitoring
5. `ElasticSearch` - Log Indexer
6. `Logstash` - Log Collector
7. `Kibana` - Log Visualizer
8. `Zipkin` - Log Trace Collector
9. `SpringCloudSleuth` - Log Tracing
10. `Togglz` - Feature Toggles
11. `Swagger` - API documentation
# Playground Template #
{
"hosting": {
"feature": {
"dockerPort": "8080",
"hostPort": "50116",
"dockerHost": "10.101.102.56"
},
"develop": {
"dockerPort": "8080",
"hostPort": "50116",
"dockerHost": "10.101.101.128"
},
"release": {
"dockerPort": "8080",
"hostPort": "50116",
"dockerHost": "10.101.103.65"
},
"master": {
"dockerPort": "8080",
"hostPort": "50116",
"dockerHost": "10.101.102.123"
}
},
"db-config.properties": {
"feature": {
"DBNODEPRIMARY": "cluster0-shard-00-00-q6qiu.azure.mongodb.net:27017",
"DBNODESECONDARY1": "cluster0-shard-00-01-q6qiu.azure.mongodb.net:27017",
"DBNODESECONDARY2": "cluster0-shard-00-02-q6qiu.azure.mongodb.net:27017",
"DBREPLICASET": "Cluster0-shard-0",
"DBSCHEMA": "pg_innovation_dev",
"DBUSR": "pg-dev",
"DBPW": "bek7sgkny5yJIjIS"
},
"develop": {
"DBNODEPRIMARY": "cluster0-shard-00-00-q6qiu.azure.mongodb.net:27017",
"DBNODESECONDARY1": "cluster0-shard-00-01-q6qiu.azure.mongodb.net:27017",
"DBNODESECONDARY2": "cluster0-shard-00-02-q6qiu.azure.mongodb.net:27017",
"DBREPLICASET": "Cluster0-shard-0",
"DBSCHEMA": "pg_innovation_qa",
"DBUSR": "pg-dev",
"DBPW": "bek7sgkny5yJIjIS"
},
"release": {
"DBNODEPRIMARY": "cluster0-shard-00-00-q6qiu.azure.mongodb.net:27017",
"DBNODESECONDARY1": "cluster0-shard-00-01-q6qiu.azure.mongodb.net:27017",
"DBNODESECONDARY2": "cluster0-shard-00-02-q6qiu.azure.mongodb.net:27017",
"DBREPLICASET": "Cluster0-shard-0",
"DBSCHEMA": "pg_innovation_uat",
"DBUSR": "pg-dev",
"DBPW": "bek7sgkny5yJIjIS"
},
"master": {
"DB": "playground-db:3306",
"DBSCHEMA": "pg_innovation",
"DBUSR": "appsupport",
"DBPW": "Oracle@123"
}
},
"application.properties": {
"feature": {
"USESWAGGER": true,
"PLAYGROUNDSERVICEURL": "3-playground.altimetrik.com",
"validationURL": "https://3-playground.altimetrik.com/template/",
"validationSleep": "30"
},
"develop": {
"USESWAGGER": true,
"PLAYGROUNDSERVICEURL": "2-playground.altimetrik.com",
"validationURL": "https://2-playground.altimetrik.com/template/",
"validationSleep": "30"
},
"release": {
"USESWAGGER": true,
"PLAYGROUNDSERVICEURL": "1-playground.altimetrik.com",
"validationURL": "https://1-playground.altimetrik.com/template/",
"validationSleep": "30"
},
"master": {
"USESWAGGER": false,
"PLAYGROUNDSERVICEURL": "playground.altimetrik.com",
"validationURL": "https://playground.altimetrik.com/template/",
"validationSleep": "30"
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.altimetrik</groupId>
<artifactId>playground-template</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<name>playground-template</name>
<description>Playground Template</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
<spring-boot-admin.version>2.1.0</spring-boot-admin.version>
<hystrix.version>1.3.0.RELEASE</hystrix.version>
<logback-encoder.version>4.9</logback-encoder.version>
<swagger.version>2.9.2</swagger.version>
<swagger-annotations.version>1.5.20</swagger-annotations.version>
<togglz.version>2.6.1.Final</togglz.version>
<commons-io.version>2.6</commons-io.version>
<gson.version>2.8.5</gson.version>
</properties>
<developers>
<developer>
<name>Tushar Das</name>
<email>tdas@altimetrik.com</email>
<organization>Altimetrik India Pvt Ltd</organization>
<organizationUrl>http://www.altimetrik.com</organizationUrl>
</developer>
</developers>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>${spring-boot-admin.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
<version>${hystrix.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
<version>${hystrix.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>${logback-encoder.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>${swagger-annotations.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.togglz</groupId>
<artifactId>togglz-spring-boot-starter</artifactId>
<version>${togglz.version}</version>
</dependency>
<dependency>
<groupId>org.togglz</groupId>
<artifactId>togglz-console</artifactId>
<version>${togglz.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${gson.version}</version><!--$NO-MVN-MAN-VER$ -->
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>
<options>
<option>-Xms512m</option>
<option>-Xmx1024m</option>
<option>-XX:+UseG1GC</option>
<option>-XX:MaxMetaspaceSize=512m</option>
<option>-XX:+UnlockExperimentalVMOptions</option>
<option>-XX:MaxGCPauseMillis=100</option>
<option>-XX:+ExplicitGCInvokesConcurrent</option>
<option>-XX:+UseStringDeduplication</option>
<option>-XX:ParallelGCThreads=10</option>
</options>
</jvmArguments>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.3</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/jacoco</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</project>
/*******************************************************************************
* Copyright (C) Altimetrik 2018. All rights reserved.
*
* This software is the confidential and proprietary information
* of Altimetrik. You shall not disclose such Confidential Information
* and shall use it only in accordance with the terms and conditions
* entered into with Altimetrik.
******************************************************************************/
package com.altimetrik.playground.innovation;
import java.io.File;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.PropertySource;
import org.togglz.core.manager.EnumBasedFeatureProvider;
import org.togglz.core.repository.StateRepository;
import org.togglz.core.repository.file.FileBasedStateRepository;
import org.togglz.core.spi.FeatureProvider;
import org.togglz.core.user.NoOpUserProvider;
import org.togglz.core.user.UserProvider;
import com.altimetrik.playground.innovation.feature.Features;
import com.altimetrik.playground.innovation.properties.ErrorProperties;
import com.altimetrik.playground.innovation.properties.ServiceProperties;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@ServletComponentScan
@SpringBootApplication
@EnableDiscoveryClient
@EnableCircuitBreaker
@EnableHystrixDashboard
@PropertySource(value = { "classpath:db-config.properties", "classpath:service.properties" })
@EnableConfigurationProperties({ ServiceProperties.class, ErrorProperties.class })
public class PlaygroundApplication {
public static void main(String[] args) {
SpringApplication.run(PlaygroundApplication.class, args);
}
@Bean
public FeatureProvider featureProvider() {
return new EnumBasedFeatureProvider(Features.class);
}
@Bean
public UserProvider userProvider() {
return new NoOpUserProvider();
}
@Bean
public StateRepository getStateRepository() {
return new FileBasedStateRepository(new File("src/main/resources/features.properties"), 10_000);
}
@Bean
public Gson gson() {
return new GsonBuilder().serializeNulls().create();
}
}
/*******************************************************************************
* Copyright (C) Altimetrik 2018. All rights reserved.
*
* This software is the confidential and proprietary information
* of Altimetrik. You shall not disclose such Confidential Information
* and shall use it only in accordance with the terms and conditions
* entered into with Altimetrik.
******************************************************************************/
package com.altimetrik.playground.innovation.bean;
import lombok.Data;
@Data
public class BaseRequestBean {
public BaseRequestBean() {
super();
}
}
/*******************************************************************************
* Copyright (C) Altimetrik 2018. All rights reserved.
*
* This software is the confidential and proprietary information
* of Altimetrik. You shall not disclose such Confidential Information
* and shall use it only in accordance with the terms and conditions
* entered into with Altimetrik.
******************************************************************************/
package com.altimetrik.playground.innovation.bean;
public class BaseResponse extends ResponseModel {
private static final long serialVersionUID = 1L;
public BaseResponse(StatusDetails status) {
super.setStatus(status);
}
public BaseResponse() {
}
}
/*******************************************************************************
* Copyright (C) Altimetrik 2018. All rights reserved.
*
* This software is the confidential and proprietary information
* of Altimetrik. You shall not disclose such Confidential Information
* and shall use it only in accordance with the terms and conditions
* entered into with Altimetrik.
******************************************************************************/
package com.altimetrik.playground.innovation.bean;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
public class PgUser {
private Long userId;
private String name;
private String emailId;
public PgUser() {
super();
}
}
package com.altimetrik.playground.innovation.bean;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
/**
* The Class Principal.
*
* @author Senthilkumar Duraisamy
*/
@JsonInclude(Include.NON_NULL)
public class Principal implements Serializable {
/** The Constant serialVersionUID. */
private static final long serialVersionUID = -1364484672867322008L;
/** The user id. */
private String userId;
/** The user name. */
private String userName;
/** The default realm. */
private String realm;
/** The default roles. */
private String roles;
/** The authenticated. */
private Boolean authenticated;
/** The first name. */
private String firstName;
/** The last name. */
private String lastName;
/** The user info mstr id. */
private String userInfoMstrId;
public String getUserInfoMstrId() {
return userInfoMstrId;
}
public void setUserInfoMstrId(String userInfoMstrId) {
this.userInfoMstrId = userInfoMstrId;