-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
75 changed files
with
5,217 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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> |
14 changes: 14 additions & 0 deletions
14
code/demo09-alternatives/src/main/java/org/expenses/web/beans/Clear.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 { | ||
} |
8 changes: 8 additions & 0 deletions
8
code/demo09-alternatives/src/main/java/org/expenses/web/beans/ClearPassword.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
} | ||
} |
7 changes: 7 additions & 0 deletions
7
code/demo09-alternatives/src/main/java/org/expenses/web/beans/DigestPassword.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | ||
} |
24 changes: 24 additions & 0 deletions
24
code/demo09-alternatives/src/main/java/org/expenses/web/beans/EncryptPassword.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | ||
} | ||
} | ||
} |
14 changes: 14 additions & 0 deletions
14
code/demo09-alternatives/src/main/java/org/expenses/web/beans/Encrypted.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 { | ||
} |
11 changes: 11 additions & 0 deletions
11
code/demo09-alternatives/src/main/java/org/expenses/web/beans/Loggable.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 { | ||
} |
13 changes: 13 additions & 0 deletions
13
code/demo09-alternatives/src/main/java/org/expenses/web/beans/LoggerProducer.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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()); | ||
} | ||
} |
30 changes: 30 additions & 0 deletions
30
code/demo09-alternatives/src/main/java/org/expenses/web/beans/LoggingInterceptor.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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()); | ||
} | ||
} | ||
} |
101 changes: 101 additions & 0 deletions
101
code/demo09-alternatives/src/main/java/org/expenses/web/model/Conference.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
} | ||
} |
5 changes: 5 additions & 0 deletions
5
code/demo09-alternatives/src/main/java/org/expenses/web/model/Currency.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
package org.expenses.web.model; | ||
|
||
public enum Currency { | ||
USD, EURO | ||
} |
Oops, something went wrong.