You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by dd...@apache.org on 2020/08/12 20:52:56 UTC

[tomee] branch master updated: Add Spanish Trans. injection-of-env-entry

This is an automated email from the ASF dual-hosted git repository.

dds pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomee.git


The following commit(s) were added to refs/heads/master by this push:
     new 16be417  Add Spanish Trans. injection-of-env-entry
     new 3722fdc  Merge pull request #705 from emecas/TOMEE-2898-env-entry
16be417 is described below

commit 16be417a27b4d4c64e4d41cd9b55a9547f67d7e9
Author: Emerson Castaneda <em...@users.noreply.github.com>
AuthorDate: Wed Aug 12 07:43:36 2020 -0400

    Add Spanish Trans. injection-of-env-entry
    
    Signed-off-by: Emerson Castaneda <em...@users.noreply.github.com>
---
 examples/injection-of-env-entry/README_es.adoc | 282 +++++++++++++++++++++++++
 1 file changed, 282 insertions(+)

diff --git a/examples/injection-of-env-entry/README_es.adoc b/examples/injection-of-env-entry/README_es.adoc
new file mode 100644
index 0000000..4892a6f
--- /dev/null
+++ b/examples/injection-of-env-entry/README_es.adoc
@@ -0,0 +1,282 @@
+:index-group: Environment Entries
+:jbake-type: page
+:jbake-status: status=published
+= Using EnvEntries
+
+La anotación `@Resource` se puede usar para inyectar varias cosas,
+incluyendo fuentes de datos, temas, colas, etc. La mayoría 
+objetos suministrados por el contenedor.
+
+Sin embargo, es posible proporcionar sus propios valores para inyectarlos mediante una etiqueta
+`<env-entry>` en su descriptor de implementación `ejb-jar.xml` o` web.xml`.
+Los tipos `<env-entry>` compatibles con Java EE 6 están limitados a los siguientes:
+
+* java.lang.String
+* java.lang.Integer
+* java.lang.Short
+* java.lang.Float
+* java.lang.Double
+* java.lang.Byte
+* java.lang.Character
+* java.lang.Boolean
+* java.lang.Class
+* java.lang.Enum (any enum)
+
+Consulte también el ejemplo link:../custom-injection[Custom Injection] para una
+funcionalidad de TomEE y OpenEJB que le permitirá usar más que solo los anteriores
+tipos, así como declarar elementos `<env-entry>` con un archivo de propiedades.
+
+== Usando @Resource para propiedades básicas
+
+El uso de la anotación `@Resource` no se limita a los metodos establecedores (setters). Por
+ejemplo, esta anotación podría haberse utilizado en el correspondiente _campo_ así:
+
+[source,java]
+----
+@Resource
+private int maxLineItems;
+----
+
+Un ejemplo más completo podría verse así:
+
+[source,java]
+----
+package org.superbiz.injection.enventry;
+
+import javax.annotation.Resource;
+import javax.ejb.Singleton;
+import java.util.Date;
+
+@Singleton
+public class Configuration {
+
+    @Resource
+    private String color;
+
+    @Resource
+    private Shape shape;
+
+    @Resource
+    private Class strategy;
+
+    @Resource(name = "date")
+    private long date;
+
+    public String getColor() {
+        return color;
+    }
+
+    public Shape getShape() {
+        return shape;
+    }
+
+    public Class getStrategy() {
+        return strategy;
+    }
+
+    public Date getDate() {
+        return new Date(date);
+    }
+}
+----
+
+Aquí tenemos un bean `@Singleton` llamado `Configuration` que tiene la
+siguientes propiedades (elementos `<env-entry>`)
+
+* String color
+* Shape shape
+* Class strategy
+* long date
+
+=== Suministro de valores de @Resource para elementos en ejb-jar.xml
+
+Los valores de nuestras propiedades de color, forma, estrategia y fecha
+se suministran a través de elementos `<env-entry>` en el archivo `ejb-jar.xml` o
+Archivo `web.xml` así:
+
+[source,xml]
+----
+<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" version="3.0" metadata-complete="false">
+  <enterprise-beans>
+    <session>
+      <ejb-name>Configuration</ejb-name>
+      <env-entry>
+        <env-entry-name>org.superbiz.injection.enventry.Configuration/color</env-entry-name>
+        <env-entry-type>java.lang.String</env-entry-type>
+        <env-entry-value>orange</env-entry-value>
+      </env-entry>
+      <env-entry>
+        <env-entry-name>org.superbiz.injection.enventry.Configuration/shape</env-entry-name>
+        <env-entry-type>org.superbiz.injection.enventry.Shape</env-entry-type>
+        <env-entry-value>TRIANGLE</env-entry-value>
+      </env-entry>
+      <env-entry>
+        <env-entry-name>org.superbiz.injection.enventry.Configuration/strategy</env-entry-name>
+        <env-entry-type>java.lang.Class</env-entry-type>
+        <env-entry-value>org.superbiz.injection.enventry.Widget</env-entry-value>
+      </env-entry>
+      <env-entry>
+        <description>The name was explicitly set in the annotation so the classname prefix isn't required</description>
+        <env-entry-name>date</env-entry-name>
+        <env-entry-type>java.lang.Long</env-entry-type>
+        <env-entry-value>123456789</env-entry-value>
+      </env-entry>
+    </session>
+  </enterprise-beans>
+</ejb-jar>
+----
+
+==== Usando el atributo @Resource `name` 
+
+Tenga en cuenta que  `date` fue referenciada por `nombre` como:
+
+[source,java]
+----
+@Resource(name = "date")
+private long date;
+----
+
+Cuando se utiliza el `@Resource(name)`, no es necesario especificar el
+nombre de clase del bean y puede hacerlo brevemente así:
+
+[source,java]
+----
+  <env-entry>
+    <description>The name was explicitly set in the annotation so the classname prefix is not required</description>
+    <env-entry-name>date</env-entry-name>
+    <env-entry-type>java.lang.Long</env-entry-type>
+    <env-entry-value>123456789</env-entry-value>
+  </env-entry>
+----
+
+Por el contrario, `color` no fue referenciado por `nombre`
+
+[source,java]
+----
+@Resource
+private String color;
+----
+
+Cuando algo no está referenciado por `nombre` en la anotación `@Resource`
+se crea un nombre predeterminado. El formato es esencialmente este:
+
+[source,java]
+----
+bean.getClass() + "/" + field.getName()
+----
+
+Entonces, el `nombre` predeterminado de la propiedad `color` anterior termina siendo
+`org.superbiz.injection.enventry.Configuration/color`. Este es el nombre que
+debemos usar cuando intentamos decalre un valor para él en xml.
+
+[source,java]
+----
+  <env-entry>
+    <env-entry-name>org.superbiz.injection.enventry.Configuration/color</env-entry-name>
+    <env-entry-type>java.lang.String</env-entry-type>
+    <env-entry-value>orange</env-entry-value>
+  </env-entry>
+----
+
+==== @Resource y Enum (enumeraciones)
+
+El campo `shape` es en realidad un tipo Java Enum personalizado
+
+[source,java]
+----
+package org.superbiz.injection.enventry;
+
+public enum Shape {
+
+    CIRCLE,
+    TRIANGLE,
+    SQUARE
+}
+----
+
+A partir de Java EE 6, los tipos java.lang.Enum están permitidos como elementos `<env-entry>`. 
+La declaración de uno en xml se realiza utilizando el nombre de clase de la enumeración real
+al igual que:
+
+[source,java]
+----
+      <env-entry>
+        <env-entry-name>org.superbiz.injection.enventry.Configuration/shape</env-entry-name>
+        <env-entry-type>org.superbiz.injection.enventry.Shape</env-entry-type>
+        <env-entry-value>TRIANGLE</env-entry-value>
+      </env-entry>
+----
+
+¡No use `<env-entry-type> java.lang.Enum </env-entry-type>` o no funcionará!
+
+=== ConfigurationTest
+
+[source,java]
+----
+package org.superbiz.injection.enventry;
+
+import junit.framework.TestCase;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import java.util.Date;
+
+public class ConfigurationTest extends TestCase {
+
+
+    public void test() throws Exception {
+        final Context context = EJBContainer.createEJBContainer().getContext();
+
+        final Configuration configuration = (Configuration) context.lookup("java:global/injection-of-env-entry/Configuration");
+
+        assertEquals("orange", configuration.getColor());
+
+        assertEquals(Shape.TRIANGLE, configuration.getShape());
+
+        assertEquals(Widget.class, configuration.getStrategy());
+
+        assertEquals(new Date(123456789), configuration.getDate());
+    }
+}
+----
+
+== Ejecución 
+
+[source,console]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.enventry.ConfigurationTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/injection-of-env-entry
+INFO - openejb.base = /Users/dblevins/examples/injection-of-env-entry
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+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 - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-env-entry/target/classes
+INFO - Beginning load: /Users/dblevins/examples/injection-of-env-entry/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-env-entry
+WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.
+INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)
+INFO - Auto-creating a container for bean Configuration: Container(type=SINGLETON, id=Default Singleton Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean org.superbiz.injection.enventry.ConfigurationTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Enterprise application "/Users/dblevins/examples/injection-of-env-entry" loaded.
+INFO - Assembling app: /Users/dblevins/examples/injection-of-env-entry
+INFO - Jndi(name="java:global/injection-of-env-entry/Configuration!org.superbiz.injection.enventry.Configuration")
+INFO - Jndi(name="java:global/injection-of-env-entry/Configuration")
+INFO - Jndi(name="java:global/EjbModule1355224018/org.superbiz.injection.enventry.ConfigurationTest!org.superbiz.injection.enventry.ConfigurationTest")
+INFO - Jndi(name="java:global/EjbModule1355224018/org.superbiz.injection.enventry.ConfigurationTest")
+INFO - Created Ejb(deployment-id=org.superbiz.injection.enventry.ConfigurationTest, ejb-name=org.superbiz.injection.enventry.ConfigurationTest, container=Default Managed Container)
+INFO - Created Ejb(deployment-id=Configuration, ejb-name=Configuration, container=Default Singleton Container)
+INFO - Started Ejb(deployment-id=org.superbiz.injection.enventry.ConfigurationTest, ejb-name=org.superbiz.injection.enventry.ConfigurationTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Configuration, ejb-name=Configuration, container=Default Singleton Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-env-entry)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.664 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----