Skip to content

Commit

Permalink
Demo 09
Browse files Browse the repository at this point in the history
  • Loading branch information
agoncal committed Nov 9, 2015
1 parent 0cba9b0 commit 9f3b612
Show file tree
Hide file tree
Showing 75 changed files with 5,217 additions and 0 deletions.
122 changes: 122 additions & 0 deletions code/demo09-alternatives/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
<?xml version="1.0" encoding="UTF-8"?>
<project 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"
xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>org.expenses.web</groupId>
<artifactId>expenses-web</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jboss-javaee-7.0.version>1.0.3.Final</jboss-javaee-7.0.version>
<weld.version>2.2.6.Final</weld.version>

<arquillian.version>1.1.10.Final</arquillian.version>
<arquillian-weld-ee-embedded.version>1.0.0.CR9</arquillian-weld-ee-embedded.version>
<shrinkwrap-resolver.version>2.1.0</shrinkwrap-resolver.version>
<junit.version>4.12</junit.version>
<maven-surefire-plugin.skip>false</maven-surefire-plugin.skip>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.spec</groupId>
<artifactId>jboss-javaee-7.0</artifactId>
<version>${jboss-javaee-7.0.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.annotation</groupId>
<artifactId>jboss-annotations-api_1.2_spec</artifactId>
</dependency>
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.transaction</groupId>
<artifactId>jboss-transaction-api_1.2_spec</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.ws.rs</groupId>
<artifactId>jboss-jaxrs-api_2.0_spec</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.json</groupId>
<artifactId>jboss-json-api_1.0_spec</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.interceptor</groupId>
<artifactId>jboss-interceptors-api_1.2_spec</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.faces</groupId>
<artifactId>jboss-jsf-api_2.2_spec</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.servlet</groupId>
<artifactId>jboss-servlet-api_3.1_spec</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>5.3</version>
</dependency>
<dependency>
<groupId>org.primefaces.themes</groupId>
<artifactId>all-themes</artifactId>
<version>1.0.10</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>2.3.2</version>
</dependency>

</dependencies>
<build>
<finalName>expenses-web</finalName>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>

<repositories>
<repository>
<id>prime-repo</id>
<name>PrimeFaces Maven Repository</name>
<url>http://repository.primefaces.org</url>
<layout>default</layout>
</repository>
</repositories>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.expenses.web.beans;

import javax.inject.Qualifier;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

@Qualifier
@Retention(RUNTIME)
@Target({FIELD, TYPE, METHOD, PARAMETER})
public @interface Clear {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package org.expenses.web.beans;

@Clear
public class ClearPassword implements DigestPassword {
public String digest(String plainTextPassword) {
return plainTextPassword;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package org.expenses.web.beans;

import java.io.Serializable;

public interface DigestPassword extends Serializable {
String digest(String plainTextPassword);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package org.expenses.web.beans;

import java.security.MessageDigest;
import java.util.Base64;

@Encrypted
public class EncryptPassword implements DigestPassword {

/**
* Digest password with <code>SHA-256</code> then encode it with Base64 when persisting or updating the entity.
*
* @throws RuntimeException if password could not be digested
*/
public String digest(String plainTextPassword) {
try {
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(plainTextPassword.getBytes("UTF-8"));
byte[] passwordDigest = md.digest();
return new String(Base64.getEncoder().encode(passwordDigest));
} catch (Exception e) {
throw new RuntimeException("Exception encoding password", e);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.expenses.web.beans;

import javax.inject.Qualifier;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

@Qualifier
@Retention(RUNTIME)
@Target({FIELD, TYPE, METHOD, PARAMETER})
public @interface Encrypted {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package org.expenses.web.beans;

import javax.interceptor.InterceptorBinding;
import java.lang.annotation.*;

@InterceptorBinding
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
@Documented
public @interface Loggable {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package org.expenses.web.beans;

import javax.enterprise.inject.Produces;
import javax.enterprise.inject.spi.InjectionPoint;
import java.util.logging.Logger;

public class LoggerProducer {

@Produces
private Logger produceLogger(InjectionPoint injectionPoint) {
return Logger.getLogger(injectionPoint.getMember().getDeclaringClass().getName());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package org.expenses.web.beans;

import javax.enterprise.inject.Intercepted;
import javax.enterprise.inject.spi.Bean;
import javax.inject.Inject;
import javax.interceptor.AroundInvoke;
import javax.interceptor.Interceptor;
import javax.interceptor.InvocationContext;
import java.util.logging.Logger;

@Loggable
@Interceptor
public class LoggingInterceptor {

@Inject
private Logger logger;

@Inject @Intercepted
private Bean<?> intercepted;

@AroundInvoke
private Object intercept(InvocationContext ic) throws Exception {
logger.info("> > " + intercepted.getBeanClass().getName() + " - " + ic.getMethod().getName());
try {
return ic.proceed();
} finally {
logger.info("< < " + intercepted.getBeanClass().getName() + " - " + ic.getMethod().getName());
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
package org.expenses.web.model;

import javax.persistence.*;
import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;

@Entity
@Table(name = "t_conference")
@XmlRootElement
public class Conference implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
@Version
@Column(name = "version")
private int version;

private String name;

@Temporal(TemporalType.DATE)
private Date date;

private String country;

private String city;

public Long getId() {
return this.id;
}

public void setId(final Long id) {
this.id = id;
}

public int getVersion() {
return this.version;
}

public void setVersion(final int version) {
this.version = version;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Date getDate() {
return date;
}

public void setDate(Date date) {
this.date = date;
}

public String getCountry() {
return country;
}

public void setCountry(String country) {
this.country = country;
}

public String getCity() {
return city;
}

public void setCity(String city) {
this.city = city;
}

@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
Conference that = (Conference) o;
return Objects.equals(name, that.name) &&
Objects.equals(date, that.date) &&
Objects.equals(country, that.country) &&
Objects.equals(city, that.city);
}

@Override
public int hashCode() {
return Objects.hash(name, date, country, city);
}

@Override
public String toString() {
return name;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package org.expenses.web.model;

public enum Currency {
USD, EURO
}
Loading

0 comments on commit 9f3b612

Please sign in to comment.