EOL
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/4662843a Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/4662843a Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/4662843a Branch: refs/heads/tomee-1.7.x Commit: 4662843a3020a7b2fa43a53fdee66c7065f0874b Parents: 879e03a Author: AndyGee <andy...@gmx.de> Authored: Fri Nov 20 12:00:41 2015 +0100 Committer: AndyGee <andy...@gmx.de> Committed: Fri Nov 20 12:00:41 2015 +0100 ---------------------------------------------------------------------- examples/applet/pom.xml | 2 +- .../WebApp1/pom.xml | 206 +++---- .../WebApp2/pom.xml | 196 +++---- examples/cdi-produces-field/README.md | 540 +++++++++---------- examples/myfaces-codi-demo/README.md | 128 ++--- 5 files changed, 536 insertions(+), 536 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/4662843a/examples/applet/pom.xml ---------------------------------------------------------------------- diff --git a/examples/applet/pom.xml b/examples/applet/pom.xml index b41c2c6..2d5825c 100644 --- a/examples/applet/pom.xml +++ b/examples/applet/pom.xml @@ -57,7 +57,7 @@ <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> + <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.6</source> http://git-wip-us.apache.org/repos/asf/tomee/blob/4662843a/examples/bval-evaluation-redeployment/WebApp1/pom.xml ---------------------------------------------------------------------- diff --git a/examples/bval-evaluation-redeployment/WebApp1/pom.xml b/examples/bval-evaluation-redeployment/WebApp1/pom.xml index 8935c5a..65820d1 100644 --- a/examples/bval-evaluation-redeployment/WebApp1/pom.xml +++ b/examples/bval-evaluation-redeployment/WebApp1/pom.xml @@ -1,103 +1,103 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. ---> -<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> - - <parent> - <groupId>org.superbiz</groupId> - <artifactId>bval-evaluation-redeployment</artifactId> - <version>1.1.1-SNAPSHOT</version> - </parent> - - <artifactId>WebApp1</artifactId> - <version>1.1.1-SNAPSHOT</version> - <packaging>war</packaging> - - <name>WebApp1</name> - - <properties> - <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> - </properties> - - <dependencies> - <dependency> - <groupId>org.apache.openejb</groupId> - <artifactId>javaee-api</artifactId> - </dependency> - <dependency> - <groupId>com.fasterxml.jackson.jaxrs</groupId> - <artifactId>jackson-jaxrs-json-provider</artifactId> - </dependency> - <dependency> - <groupId>org.apache.openejb</groupId> - <artifactId>openejb-cxf-rs</artifactId> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <configuration> - <source>1.6</source> - <target>1.6</target> - <compilerArguments> - <endorseddirs>${endorsed.dir}</endorseddirs> - </compilerArguments> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-war-plugin</artifactId> - <configuration> - <failOnMissingWebXml>false</failOnMissingWebXml> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <phase>validate</phase> - <goals> - <goal>copy</goal> - </goals> - <configuration> - <outputDirectory>${endorsed.dir}</outputDirectory> - <silent>true</silent> - <artifactItems> - <artifactItem> - <groupId>javax</groupId> - <artifactId>javaee-endorsed-api</artifactId> - <version>6.0</version> - <type>jar</type> - </artifactItem> - </artifactItems> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - -</project> +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<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> + + <parent> + <groupId>org.superbiz</groupId> + <artifactId>bval-evaluation-redeployment</artifactId> + <version>1.1.1-SNAPSHOT</version> + </parent> + + <artifactId>WebApp1</artifactId> + <version>1.1.1-SNAPSHOT</version> + <packaging>war</packaging> + + <name>WebApp1</name> + + <properties> + <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> + </properties> + + <dependencies> + <dependency> + <groupId>org.apache.openejb</groupId> + <artifactId>javaee-api</artifactId> + </dependency> + <dependency> + <groupId>com.fasterxml.jackson.jaxrs</groupId> + <artifactId>jackson-jaxrs-json-provider</artifactId> + </dependency> + <dependency> + <groupId>org.apache.openejb</groupId> + <artifactId>openejb-cxf-rs</artifactId> + <scope>provided</scope> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>1.6</source> + <target>1.6</target> + <compilerArguments> + <endorseddirs>${endorsed.dir}</endorseddirs> + </compilerArguments> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-war-plugin</artifactId> + <configuration> + <failOnMissingWebXml>false</failOnMissingWebXml> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <executions> + <execution> + <phase>validate</phase> + <goals> + <goal>copy</goal> + </goals> + <configuration> + <outputDirectory>${endorsed.dir}</outputDirectory> + <silent>true</silent> + <artifactItems> + <artifactItem> + <groupId>javax</groupId> + <artifactId>javaee-endorsed-api</artifactId> + <version>6.0</version> + <type>jar</type> + </artifactItem> + </artifactItems> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + +</project> http://git-wip-us.apache.org/repos/asf/tomee/blob/4662843a/examples/bval-evaluation-redeployment/WebApp2/pom.xml ---------------------------------------------------------------------- diff --git a/examples/bval-evaluation-redeployment/WebApp2/pom.xml b/examples/bval-evaluation-redeployment/WebApp2/pom.xml index 8b86921..55675d6 100644 --- a/examples/bval-evaluation-redeployment/WebApp2/pom.xml +++ b/examples/bval-evaluation-redeployment/WebApp2/pom.xml @@ -1,98 +1,98 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. ---> -<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> - - <parent> - <groupId>org.superbiz</groupId> - <artifactId>bval-evaluation-redeployment</artifactId> - <version>1.1.1-SNAPSHOT</version> - </parent> - - <artifactId>WebApp2</artifactId> - <version>1.1.1-SNAPSHOT</version> - <packaging>war</packaging> - - <name>WebApp2</name> - - <properties> - <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> - </properties> - - <dependencies> - <dependency> - <groupId>org.apache.openejb</groupId> - <artifactId>javaee-api</artifactId> - </dependency> - <dependency> - <groupId>com.fasterxml.jackson.jaxrs</groupId> - <artifactId>jackson-jaxrs-json-provider</artifactId> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <configuration> - <source>1.6</source> - <target>1.6</target> - <compilerArguments> - <endorseddirs>${endorsed.dir}</endorseddirs> - </compilerArguments> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-war-plugin</artifactId> - <configuration> - <failOnMissingWebXml>false</failOnMissingWebXml> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <phase>validate</phase> - <goals> - <goal>copy</goal> - </goals> - <configuration> - <outputDirectory>${endorsed.dir}</outputDirectory> - <silent>true</silent> - <artifactItems> - <artifactItem> - <groupId>javax</groupId> - <artifactId>javaee-endorsed-api</artifactId> - <version>6.0</version> - <type>jar</type> - </artifactItem> - </artifactItems> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - -</project> +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<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> + + <parent> + <groupId>org.superbiz</groupId> + <artifactId>bval-evaluation-redeployment</artifactId> + <version>1.1.1-SNAPSHOT</version> + </parent> + + <artifactId>WebApp2</artifactId> + <version>1.1.1-SNAPSHOT</version> + <packaging>war</packaging> + + <name>WebApp2</name> + + <properties> + <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> + </properties> + + <dependencies> + <dependency> + <groupId>org.apache.openejb</groupId> + <artifactId>javaee-api</artifactId> + </dependency> + <dependency> + <groupId>com.fasterxml.jackson.jaxrs</groupId> + <artifactId>jackson-jaxrs-json-provider</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>1.6</source> + <target>1.6</target> + <compilerArguments> + <endorseddirs>${endorsed.dir}</endorseddirs> + </compilerArguments> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-war-plugin</artifactId> + <configuration> + <failOnMissingWebXml>false</failOnMissingWebXml> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <executions> + <execution> + <phase>validate</phase> + <goals> + <goal>copy</goal> + </goals> + <configuration> + <outputDirectory>${endorsed.dir}</outputDirectory> + <silent>true</silent> + <artifactItems> + <artifactItem> + <groupId>javax</groupId> + <artifactId>javaee-endorsed-api</artifactId> + <version>6.0</version> + <type>jar</type> + </artifactItem> + </artifactItems> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + +</project> http://git-wip-us.apache.org/repos/asf/tomee/blob/4662843a/examples/cdi-produces-field/README.md ---------------------------------------------------------------------- diff --git a/examples/cdi-produces-field/README.md b/examples/cdi-produces-field/README.md index 7deb6d5..bc62bfb 100644 --- a/examples/cdi-produces-field/README.md +++ b/examples/cdi-produces-field/README.md @@ -1,270 +1,270 @@ -Title: CDI field producer - -This example shows the usage of the @Produces annotation. @Produces is a CDI mechanism which allows defining a source - for injection. This example shows one of two ways of declaring a producer. Instead of a producer method (see CDI-produces-disposes example) -a producer field can be used. A producer field can be used instead of a simple getter method. It could be used to -inject resources, such as persistence contexts. One caveat to using producer fields over producer - methods is that a @Disposes method cannot be used in conjunction with @Produces field. - -## ConsoleHandler - - package org.superbiz.cdi.produces.field; - - public class ConsoleHandler implements LogHandler { - - private String name; - - public ConsoleHandler(String name) { - this.name = name; - } - - @Override - public String getName() { - return name; - } - - @Override - public void writeLog(String s) { - System.out.printf("##### Handler: %s, Writing to the console!\n", getName()); - } - } - -## DatabaseHandler - - package org.superbiz.cdi.produces.field; - - public class DatabaseHandler implements LogHandler { - - private String name; - - public DatabaseHandler(String name) { - this.name = name; - } - - @Override - public String getName() { - return name; - } - - @Override - public void writeLog(String s) { - System.out.printf("##### Handler: %s, Writing to the database!\n", getName()); - // Use connection to write log to database - } - } - -## FileHandler - - package org.superbiz.cdi.produces.field; - - public class FileHandler implements LogHandler { - - private String name; - - public FileHandler(String name) { - this.name = name; - } - - @Override - public String getName() { - return name; - } - - @Override - public void writeLog(String s) { - System.out.printf("##### Handler: %s, Writing to the file!\n", getName()); - // Write to log file - } - } - -## LogFactory - - package org.superbiz.cdi.produces.field; - - import javax.enterprise.inject.Produces; - - public class LogFactory { - - private int type = 2; - - @Produces - LogHandler handler; - - public LogFactory(){ - handler = getLogHandler(); - } - - public LogHandler getLogHandler() { - switch (type) { - case 1: - return new FileHandler("@Produces created FileHandler!"); - case 2: - return new DatabaseHandler("@Produces created DatabaseHandler!"); - case 3: - default: - return new ConsoleHandler("@Produces created ConsoleHandler!"); - } - - } - } - -## Logger - - package org.superbiz.cdi.produces.field; - - public interface Logger { - - public void log(String s); - - public LogHandler getHandler(); - } - -## LoggerImpl - - package org.superbiz.cdi.produces.field; - - import javax.inject.Inject; - import javax.inject.Named; - - @Named("logger") - public class LoggerImpl implements Logger { - - @Inject - private LogHandler handler; - - @Override - public void log(String s) { - getHandler().writeLog(s); - } - - public LogHandler getHandler() { - return handler; - } - } - -## LogHandler - - package org.superbiz.cdi.produces.field; - - public interface LogHandler { - - public String getName(); - - public void writeLog(String s); - } - -## beans.xml - - <beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://java.sun.com/xml/ns/javaee - http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"> - - </beans> - -## LoggerTest - - package org.superbiz.cdi.produces.field; - - import org.junit.After; - import org.junit.Before; - import org.junit.Test; - - import javax.ejb.embeddable.EJBContainer; - import javax.inject.Inject; - import javax.naming.Context; - - import static junit.framework.Assert.assertNotNull; - import static org.junit.Assert.assertFalse; - import static org.junit.Assert.assertTrue; - - public class LoggerTest { - - @Inject - Logger logger; - - private Context ctxt; - - @Before - public void setUp() { - try { - ctxt = EJBContainer.createEJBContainer().getContext(); - ctxt.bind("inject", this); - } catch (Exception e) { - e.printStackTrace(); - } - } - - @After - public void cleanUp() { - try { - ctxt.unbind("inject"); - ctxt.close(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - @Test - public void testLogHandler() { - assertNotNull(logger); - assertFalse("Handler should not be a ConsoleHandler", logger.getHandler() instanceof ConsoleHandler); - assertFalse("Handler should not be a FileHandler", logger.getHandler() instanceof FileHandler); - assertTrue("Handler should be a DatabaseHandler", logger.getHandler() instanceof DatabaseHandler); - logger.log("##### Testing write\n"); - logger = null; - } - - } - -# Running - - - ------------------------------------------------------- - T E S T S - ------------------------------------------------------- - Running org.superbiz.cdi.produces.field.LoggerTest - INFO - ******************************************************************************** - INFO - OpenEJB http://tomee.apache.org/ - INFO - Startup: Thu May 10 01:28:19 CDT 2012 - INFO - Copyright 1999-2012 (C) Apache OpenEJB Project, All Rights Reserved. - INFO - Version: 4.0.0-beta-3-SNAPSHOT - INFO - Build date: 20120510 - INFO - Build time: 04:06 - INFO - ******************************************************************************** - INFO - openejb.home = /home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field - INFO - openejb.base = /home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field - INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@a81b1fb - INFO - succeeded in installing singleton service - INFO - Using 'javax.ejb.embeddable.EJBContainer=true' - INFO - Cannot find the configuration file [conf/openejb.xml]. Will attempt to create one for the beans deployed. - INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service) - INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager) - INFO - Creating TransactionManager(id=Default Transaction Manager) - INFO - Creating SecurityService(id=Default Security Service) - INFO - Inspecting classpath for applications: 26 urls. Consider adjusting your exclude/include. Current settings: openejb.deployments.classpath.exclude='', openejb.deployments.classpath.include='.*' - INFO - Searched 26 classpath urls in 2015 milliseconds. Average 77 milliseconds per url. - INFO - Beginning load: /home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field/target/classes - INFO - Configuring enterprise application: /home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field - INFO - Auto-deploying ejb cdi-produces-field.Comp: EjbDeployment(deployment-id=cdi-produces-field.Comp) - INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container) - INFO - Auto-creating a container for bean cdi-produces-field.Comp: Container(type=MANAGED, id=Default Managed Container) - INFO - Creating Container(id=Default Managed Container) - INFO - Using directory /tmp for stateful session passivation - INFO - Enterprise application "/home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field" loaded. - INFO - Assembling app: /home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field - INFO - ignoreXmlConfiguration == true - INFO - ignoreXmlConfiguration == true - INFO - existing thread singleton service in SystemInstance() org.apache.openejb.cdi.ThreadSingletonServiceImpl@a81b1fb - INFO - OpenWebBeans Container is starting... - INFO - Adding OpenWebBeansPlugin : [CdiPlugin] - INFO - All injection points were validated successfully. - INFO - OpenWebBeans Container has started, it took [69] ms. - INFO - Deployed Application(path=/home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field) - ##### Handler: @Produces created DatabaseHandler!, Writing to the database! - INFO - Undeploying app: /home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field - Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.79 sec - - Results : - - Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 - +Title: CDI field producer + +This example shows the usage of the @Produces annotation. @Produces is a CDI mechanism which allows defining a source + for injection. This example shows one of two ways of declaring a producer. Instead of a producer method (see CDI-produces-disposes example) +a producer field can be used. A producer field can be used instead of a simple getter method. It could be used to +inject resources, such as persistence contexts. One caveat to using producer fields over producer + methods is that a @Disposes method cannot be used in conjunction with @Produces field. + +## ConsoleHandler + + package org.superbiz.cdi.produces.field; + + public class ConsoleHandler implements LogHandler { + + private String name; + + public ConsoleHandler(String name) { + this.name = name; + } + + @Override + public String getName() { + return name; + } + + @Override + public void writeLog(String s) { + System.out.printf("##### Handler: %s, Writing to the console!\n", getName()); + } + } + +## DatabaseHandler + + package org.superbiz.cdi.produces.field; + + public class DatabaseHandler implements LogHandler { + + private String name; + + public DatabaseHandler(String name) { + this.name = name; + } + + @Override + public String getName() { + return name; + } + + @Override + public void writeLog(String s) { + System.out.printf("##### Handler: %s, Writing to the database!\n", getName()); + // Use connection to write log to database + } + } + +## FileHandler + + package org.superbiz.cdi.produces.field; + + public class FileHandler implements LogHandler { + + private String name; + + public FileHandler(String name) { + this.name = name; + } + + @Override + public String getName() { + return name; + } + + @Override + public void writeLog(String s) { + System.out.printf("##### Handler: %s, Writing to the file!\n", getName()); + // Write to log file + } + } + +## LogFactory + + package org.superbiz.cdi.produces.field; + + import javax.enterprise.inject.Produces; + + public class LogFactory { + + private int type = 2; + + @Produces + LogHandler handler; + + public LogFactory(){ + handler = getLogHandler(); + } + + public LogHandler getLogHandler() { + switch (type) { + case 1: + return new FileHandler("@Produces created FileHandler!"); + case 2: + return new DatabaseHandler("@Produces created DatabaseHandler!"); + case 3: + default: + return new ConsoleHandler("@Produces created ConsoleHandler!"); + } + + } + } + +## Logger + + package org.superbiz.cdi.produces.field; + + public interface Logger { + + public void log(String s); + + public LogHandler getHandler(); + } + +## LoggerImpl + + package org.superbiz.cdi.produces.field; + + import javax.inject.Inject; + import javax.inject.Named; + + @Named("logger") + public class LoggerImpl implements Logger { + + @Inject + private LogHandler handler; + + @Override + public void log(String s) { + getHandler().writeLog(s); + } + + public LogHandler getHandler() { + return handler; + } + } + +## LogHandler + + package org.superbiz.cdi.produces.field; + + public interface LogHandler { + + public String getName(); + + public void writeLog(String s); + } + +## beans.xml + + <beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee + http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"> + + </beans> + +## LoggerTest + + package org.superbiz.cdi.produces.field; + + import org.junit.After; + import org.junit.Before; + import org.junit.Test; + + import javax.ejb.embeddable.EJBContainer; + import javax.inject.Inject; + import javax.naming.Context; + + import static junit.framework.Assert.assertNotNull; + import static org.junit.Assert.assertFalse; + import static org.junit.Assert.assertTrue; + + public class LoggerTest { + + @Inject + Logger logger; + + private Context ctxt; + + @Before + public void setUp() { + try { + ctxt = EJBContainer.createEJBContainer().getContext(); + ctxt.bind("inject", this); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @After + public void cleanUp() { + try { + ctxt.unbind("inject"); + ctxt.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Test + public void testLogHandler() { + assertNotNull(logger); + assertFalse("Handler should not be a ConsoleHandler", logger.getHandler() instanceof ConsoleHandler); + assertFalse("Handler should not be a FileHandler", logger.getHandler() instanceof FileHandler); + assertTrue("Handler should be a DatabaseHandler", logger.getHandler() instanceof DatabaseHandler); + logger.log("##### Testing write\n"); + logger = null; + } + + } + +# Running + + + ------------------------------------------------------- + T E S T S + ------------------------------------------------------- + Running org.superbiz.cdi.produces.field.LoggerTest + INFO - ******************************************************************************** + INFO - OpenEJB http://tomee.apache.org/ + INFO - Startup: Thu May 10 01:28:19 CDT 2012 + INFO - Copyright 1999-2012 (C) Apache OpenEJB Project, All Rights Reserved. + INFO - Version: 4.0.0-beta-3-SNAPSHOT + INFO - Build date: 20120510 + INFO - Build time: 04:06 + INFO - ******************************************************************************** + INFO - openejb.home = /home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field + INFO - openejb.base = /home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field + INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@a81b1fb + INFO - succeeded in installing singleton service + INFO - Using 'javax.ejb.embeddable.EJBContainer=true' + INFO - Cannot find the configuration file [conf/openejb.xml]. Will attempt to create one for the beans deployed. + INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service) + INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager) + INFO - Creating TransactionManager(id=Default Transaction Manager) + INFO - Creating SecurityService(id=Default Security Service) + INFO - Inspecting classpath for applications: 26 urls. Consider adjusting your exclude/include. Current settings: openejb.deployments.classpath.exclude='', openejb.deployments.classpath.include='.*' + INFO - Searched 26 classpath urls in 2015 milliseconds. Average 77 milliseconds per url. + INFO - Beginning load: /home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field/target/classes + INFO - Configuring enterprise application: /home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field + INFO - Auto-deploying ejb cdi-produces-field.Comp: EjbDeployment(deployment-id=cdi-produces-field.Comp) + INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container) + INFO - Auto-creating a container for bean cdi-produces-field.Comp: Container(type=MANAGED, id=Default Managed Container) + INFO - Creating Container(id=Default Managed Container) + INFO - Using directory /tmp for stateful session passivation + INFO - Enterprise application "/home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field" loaded. + INFO - Assembling app: /home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field + INFO - ignoreXmlConfiguration == true + INFO - ignoreXmlConfiguration == true + INFO - existing thread singleton service in SystemInstance() org.apache.openejb.cdi.ThreadSingletonServiceImpl@a81b1fb + INFO - OpenWebBeans Container is starting... + INFO - Adding OpenWebBeansPlugin : [CdiPlugin] + INFO - All injection points were validated successfully. + INFO - OpenWebBeans Container has started, it took [69] ms. + INFO - Deployed Application(path=/home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field) + ##### Handler: @Produces created DatabaseHandler!, Writing to the database! + INFO - Undeploying app: /home/daniel/projects/openejb/source/openejb/examples/cdi-produces-field + Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.79 sec + + Results : + + Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 + http://git-wip-us.apache.org/repos/asf/tomee/blob/4662843a/examples/myfaces-codi-demo/README.md ---------------------------------------------------------------------- diff --git a/examples/myfaces-codi-demo/README.md b/examples/myfaces-codi-demo/README.md index 49fd421..2a8cf72 100644 --- a/examples/myfaces-codi-demo/README.md +++ b/examples/myfaces-codi-demo/README.md @@ -1,65 +1,65 @@ -Title: MyFaces CODI Demo -Notice: Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - . - http://www.apache.org/licenses/LICENSE-2.0 - . - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - -<h2>Steps to run the example</h2> - -Build and start the demo: - - mvn clean package tomee:run - -Open: - - http://localhost:8080/myfaces-codi-1.1.1-SNAPSHOT/ - -This example shows how to improve JSF2/CDI/BV/JPA applications with features provided by Apache MyFaces CODI and ExtVal. - -<h2>Intro of MyFaces CODI and ExtVal</h2> - -The Apache MyFaces Extensions CDI project (aka CODI) hosts portable extensions for Contexts and Dependency Injection (CDI - JSR 299). CODI is a toolbox for your CDI application. Like CDI itself CODI is focused on type-safety. It is a modularized and extensible framework. So it's easy to choose the needed parts to facilitate the daily work in your project. - -MyFaces Extensions Validator (aka ExtVal) is a JSF centric validation framework which is compatible with JSF 1.x and JSF 2.x. -This example shows how it improves the default integration of Bean-Validation (JSR-303) with JSF2 as well as meta-data based cross-field validation. - - -<h2>Illustrated Features</h2> - -<h3>Apache MyFaces CODI</h3> - -<ul> - <li><a href="./src/main/java/org/superbiz/myfaces/view/config/Pages.java" target="_blank">Type-safe view-config</a></li> - <li><a href="./src/main/java/org/superbiz/myfaces/view/InfoPage.java" target="_blank">Type-safe (custom) view-meta-data</a></li> - <li><a href="./src/main/java/org/superbiz/myfaces/view/MenuBean.java" target="_blank">Type-safe navigation</a></li> - <li><a href="./src/main/java/org/superbiz/myfaces/CustomJsfModuleConfig.java" target="_blank">Type-safe (specialized) config</a></li> - <li><a href="./src/main/java/org/superbiz/myfaces/CustomProjectStage.java" target="_blank">Type-safe custom project-stage</a></li> - <li><a href="./src/main/java/org/superbiz/myfaces/view/UserHolder.java" target="_blank">@WindowScoped</a></li> - <li><a href="./src/main/java/org/superbiz/myfaces/view/MenuBean.java" target="_blank">Controlling CODI scopes with WindowContext</a></li> - <li><a href="./src/main/java/org/superbiz/myfaces/view/FeedbackPage.java" target="_blank">@ViewAccessScoped</a></li> - <li><a href="./src/main/java/org/superbiz/myfaces/view/FeedbackPage.java" target="_blank">Manual conversation handling</a></li> - <li><a href="./src/main/java/org/superbiz/myfaces/view/security/LoginAccessDecisionVoter.java" target="_blank">Secured pages (AccessDecisionVoter)</a></li> - <li><a href="./src/main/java/org/superbiz/myfaces/repository/Repository.java" target="_blank">@Transactional</a></li> - <li><a href="./src/main/java/org/superbiz/myfaces/view/RegistrationPage.java" target="_blank">I18n (fluent API)</a></li> - <li><a href="./src/main/java/org/superbiz/myfaces/domain/validation/UniqueUserNameValidator.java" target="_blank">Dependency-Injection for JSR303 (BV) constraint-validators</a></li> - <li><a href="./src/main/java/org/superbiz/myfaces/DebugPhaseListener.java" target="_blank">Dependency-Injection for JSF phase-listeners</a></li> -</ul> - -<h3>Apache MyFaces ExtVal</h3> - -<ul> - <li><a href="./src/main/java/org/superbiz/myfaces/view/RegistrationPage.java" target="_blank">Cross-Field validation (@Equals)</a></li> - <li><a href="./src/main/java/org/superbiz/myfaces/view/RegistrationPage.java" target="_blank">Type-safe group-validation (@BeanValidation) for JSF action-methods</a></li> +Title: MyFaces CODI Demo +Notice: Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + . + http://www.apache.org/licenses/LICENSE-2.0 + . + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + +<h2>Steps to run the example</h2> + +Build and start the demo: + + mvn clean package tomee:run + +Open: + + http://localhost:8080/myfaces-codi-1.1.1-SNAPSHOT/ + +This example shows how to improve JSF2/CDI/BV/JPA applications with features provided by Apache MyFaces CODI and ExtVal. + +<h2>Intro of MyFaces CODI and ExtVal</h2> + +The Apache MyFaces Extensions CDI project (aka CODI) hosts portable extensions for Contexts and Dependency Injection (CDI - JSR 299). CODI is a toolbox for your CDI application. Like CDI itself CODI is focused on type-safety. It is a modularized and extensible framework. So it's easy to choose the needed parts to facilitate the daily work in your project. + +MyFaces Extensions Validator (aka ExtVal) is a JSF centric validation framework which is compatible with JSF 1.x and JSF 2.x. +This example shows how it improves the default integration of Bean-Validation (JSR-303) with JSF2 as well as meta-data based cross-field validation. + + +<h2>Illustrated Features</h2> + +<h3>Apache MyFaces CODI</h3> + +<ul> + <li><a href="./src/main/java/org/superbiz/myfaces/view/config/Pages.java" target="_blank">Type-safe view-config</a></li> + <li><a href="./src/main/java/org/superbiz/myfaces/view/InfoPage.java" target="_blank">Type-safe (custom) view-meta-data</a></li> + <li><a href="./src/main/java/org/superbiz/myfaces/view/MenuBean.java" target="_blank">Type-safe navigation</a></li> + <li><a href="./src/main/java/org/superbiz/myfaces/CustomJsfModuleConfig.java" target="_blank">Type-safe (specialized) config</a></li> + <li><a href="./src/main/java/org/superbiz/myfaces/CustomProjectStage.java" target="_blank">Type-safe custom project-stage</a></li> + <li><a href="./src/main/java/org/superbiz/myfaces/view/UserHolder.java" target="_blank">@WindowScoped</a></li> + <li><a href="./src/main/java/org/superbiz/myfaces/view/MenuBean.java" target="_blank">Controlling CODI scopes with WindowContext</a></li> + <li><a href="./src/main/java/org/superbiz/myfaces/view/FeedbackPage.java" target="_blank">@ViewAccessScoped</a></li> + <li><a href="./src/main/java/org/superbiz/myfaces/view/FeedbackPage.java" target="_blank">Manual conversation handling</a></li> + <li><a href="./src/main/java/org/superbiz/myfaces/view/security/LoginAccessDecisionVoter.java" target="_blank">Secured pages (AccessDecisionVoter)</a></li> + <li><a href="./src/main/java/org/superbiz/myfaces/repository/Repository.java" target="_blank">@Transactional</a></li> + <li><a href="./src/main/java/org/superbiz/myfaces/view/RegistrationPage.java" target="_blank">I18n (fluent API)</a></li> + <li><a href="./src/main/java/org/superbiz/myfaces/domain/validation/UniqueUserNameValidator.java" target="_blank">Dependency-Injection for JSR303 (BV) constraint-validators</a></li> + <li><a href="./src/main/java/org/superbiz/myfaces/DebugPhaseListener.java" target="_blank">Dependency-Injection for JSF phase-listeners</a></li> +</ul> + +<h3>Apache MyFaces ExtVal</h3> + +<ul> + <li><a href="./src/main/java/org/superbiz/myfaces/view/RegistrationPage.java" target="_blank">Cross-Field validation (@Equals)</a></li> + <li><a href="./src/main/java/org/superbiz/myfaces/view/RegistrationPage.java" target="_blank">Type-safe group-validation (@BeanValidation) for JSF action-methods</a></li> </ul> \ No newline at end of file