Seam SVN: r10020 - branches/enterprise/JBPAPP_4_3_FP01/src/main/org/jboss/seam/util.
by seam-commits@lists.jboss.org
Author: manaRH
Date: 2009-02-06 16:52:21 -0500 (Fri, 06 Feb 2009)
New Revision: 10020
Modified:
branches/enterprise/JBPAPP_4_3_FP01/src/main/org/jboss/seam/util/ProxyFactory.java
Log:
JBPAPP-1669
Modified: branches/enterprise/JBPAPP_4_3_FP01/src/main/org/jboss/seam/util/ProxyFactory.java
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/src/main/org/jboss/seam/util/ProxyFactory.java 2009-02-06 20:24:20 UTC (rev 10019)
+++ branches/enterprise/JBPAPP_4_3_FP01/src/main/org/jboss/seam/util/ProxyFactory.java 2009-02-06 21:52:21 UTC (rev 10020)
@@ -1,11 +1,13 @@
package org.jboss.seam.util;
-/**
- * Derived from javassist MethodProxy.java to create a ProxyFactory that does not generate
+
+/* Derived from javassist MethodProxy.java to create a ProxyFactory that does not generate
* FINAL methods. It is a cut & paste due methods on the javassist version largely
* being static and private, and thus completely non-extensible.
- *
+ */
+
+/*
* Javassist, a Java-bytecode translator toolkit.
- * Copyright (C) 1999-2006 Shigeru Chiba. All Rights Reserved.
+ * Copyright (C) 1999-2007 Shigeru Chiba. All Rights Reserved.
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
@@ -18,34 +20,36 @@
* License.
*/
-import java.lang.reflect.Constructor;
+import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Constructor;
import java.lang.reflect.Member;
-import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.security.ProtectionDomain;
import java.util.HashMap;
+import java.util.WeakHashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
+import java.lang.ref.WeakReference;
import javassist.CannotCompileException;
-import javassist.bytecode.AccessFlag;
-import javassist.bytecode.Bytecode;
-import javassist.bytecode.ClassFile;
-import javassist.bytecode.ConstPool;
-import javassist.bytecode.Descriptor;
-import javassist.bytecode.ExceptionsAttribute;
-import javassist.bytecode.FieldInfo;
-import javassist.bytecode.MethodInfo;
-import javassist.bytecode.Opcode;
+import javassist.bytecode.*;
import javassist.util.proxy.FactoryHelper;
import javassist.util.proxy.MethodFilter;
import javassist.util.proxy.MethodHandler;
import javassist.util.proxy.ProxyObject;
import javassist.util.proxy.RuntimeSupport;
+/*
+ * This class is implemented only with the lower-level API of Javassist.
+ * This design decision is for maximizing performance.
+ */
+
/**
* Factory of dynamic proxy classes.
*
@@ -67,7 +71,6 @@
* return proceed.invoke(self, args); // execute the original method.
* }
* };
- * f.setHandler(mi);
* f.setFilter(new MethodFilter() {
* public boolean isHandled(Method m) {
* // ignore finalize()
@@ -76,6 +79,7 @@
* });
* Class c = f.createClass();
* Foo foo = (Foo)c.newInstance();
+ * ((ProxyObject)foo).setHandler(mi);
* </pre></ul>
*
* <p>Then, the following method call will be forwarded to MethodHandler
@@ -86,6 +90,15 @@
* foo.bar();
* </pre></ul>
*
+ * <p>The last three lines of the code shown above can be replaced with a call to
+ * the helper method <code>create</code>, which generates a proxy class, instantiates
+ * it, and sets the method handler of the instance:
+ *
+ * <ul><pre>
+ * :
+ * Foo foo = (Foo)f.create(new Class[0], new Object[0], mi);
+ * </pre></ul>
+ *
* <p>To change the method handler during runtime,
* execute the following code:
*
@@ -94,7 +107,20 @@
* ((ProxyObject)foo).setHandler(mi2);
* </pre></ul>
*
- * <p>Here is an example of method handler. It does not execute
+ * <p>You can also specify the default method handler:
+ *
+ * <ul><pre>
+ * ProxyFactory f2 = new ProxyFactory();
+ * f2.setSuperclass(Foo.class);
+ * f2.setHandler(mi); // set the default handler
+ * Class c2 = f2.createClass();
+ * </pre></ul>
+ *
+ * <p>The default handler is implicitly attached to an instance of the generated class
+ * <code>c2</code>. Calling <code>setHandler</code> on the instance is not necessary
+ * unless another method handler must be attached to the instance.
+ *
+ * <p>The following code is an example of method handler. It does not execute
* anything except invoking the original method:
*
* <ul><pre>
@@ -106,6 +132,11 @@
* }
* </pre></ul>
*
+ * <p>A proxy object generated by <code>ProxyFactory</code> is serializable
+ * if its super class or interfaces implement a <code>java.io.Serializable</code>.
+ * However, a serialized proxy object will not be compatible with future releases.
+ * The serialization support should be used for short-term storage or RMI.
+ *
* @see MethodHandler
* @since 3.1
*/
@@ -131,6 +162,7 @@
private static final String HOLDER = "_methods_";
private static final String HOLDER_TYPE = "[Ljava/lang/reflect/Method;";
+ private static final String METHOD_FILTER_FIELD = "_method_filter";
private static final String HANDLER = "handler";
private static final String NULL_INTERCEPTOR_HOLDER = "javassist.util.proxy.RuntimeSupport";
private static final String DEFAULT_INTERCEPTOR = "default_interceptor";
@@ -140,6 +172,61 @@
private static final String HANDLER_SETTER_TYPE = "(" + HANDLER_TYPE + ")V";
/**
+ * If true, a generated proxy class is cached and it will be reused
+ * when generating the proxy class with the same properties is requested.
+ * The default value is true.
+ *
+ * @since 3.4
+ */
+ public static boolean useCache = true;
+
+ private static WeakHashMap proxyCache = new WeakHashMap();
+
+ static class CacheKey {
+ String classes;
+ MethodFilter filter;
+ private int hash;
+ WeakReference proxyClass;
+ MethodHandler handler;
+
+ public CacheKey(Class superClass, Class[] interfaces,
+ MethodFilter f, MethodHandler h)
+ {
+ classes = getKey(superClass, interfaces);
+ hash = classes.hashCode();
+ filter = f;
+ handler = h;
+ proxyClass = null;
+ }
+
+ public int hashCode() { return hash; }
+
+ public boolean equals(Object obj) {
+ if (obj instanceof CacheKey) {
+ CacheKey target = (CacheKey)obj;
+ return target.filter == filter && target.handler == handler
+ && target.classes.equals(classes);
+ }
+ else
+ return false;
+ }
+
+ static String getKey(Class superClass, Class[] interfaces) {
+ StringBuffer sbuf = new StringBuffer();
+ if (superClass != null)
+ sbuf.append(superClass.getName());
+ sbuf.append(':');
+ if (interfaces != null) {
+ int len = interfaces.length;
+ for (int i = 0; i < len; i++)
+ sbuf.append(interfaces[i].getName()).append(',');
+ }
+
+ return sbuf.toString();
+ }
+ }
+
+ /**
* Constructs a factory of proxy class.
*/
public ProxyFactory() {
@@ -159,6 +246,13 @@
}
/**
+ * Obtains the super class set by <code>setSuperclass()</code>.
+ *
+ * @since 3.4
+ */
+ public Class getSuperclass() { return superClass; }
+
+ /**
* Sets the interfaces of a proxy class.
*/
public void setInterfaces(Class[] ifs) {
@@ -166,6 +260,13 @@
}
/**
+ * Obtains the interfaces set by <code>setInterfaces</code>.
+ *
+ * @since 3.4
+ */
+ public Class[] getInterfaces() { return interfaces; }
+
+ /**
* Sets a filter that selects the methods that will be controlled by a handler.
*/
public void setFilter(MethodFilter mf) {
@@ -176,36 +277,183 @@
* Generates a proxy class.
*/
public Class createClass() {
- if (thisClass == null)
- try {
- ClassFile cf = make();
- ClassLoader cl = getClassLoader();
- if (writeDirectory != null)
- FactoryHelper.writeFile(cf, writeDirectory);
+ if (thisClass == null) {
+ ClassLoader cl = getClassLoader();
+ synchronized (proxyCache) {
+ if (useCache)
+ createClass2(cl);
+ else
+ createClass3(cl);
+ }
+ }
- thisClass = FactoryHelper.toClass(cf, cl, getDomain());
- setHandler();
+ return thisClass;
+ }
+
+ private void createClass2(ClassLoader cl) {
+ CacheKey key = new CacheKey(superClass, interfaces, methodFilter, handler);
+ /*
+ * Excessive concurrency causes a large memory footprint and slows the
+ * execution speed down (with JDK 1.5). Thus, we use a jumbo lock for
+ * reducing concrrency.
+ */
+ // synchronized (proxyCache) {
+ HashMap cacheForTheLoader = (HashMap)proxyCache.get(cl);
+ if (cacheForTheLoader == null) {
+ cacheForTheLoader = new HashMap();
+ proxyCache.put(cl, cacheForTheLoader);
+ cacheForTheLoader.put(key, key);
}
- catch (CannotCompileException e) {
- throw new RuntimeException(e.getMessage(), e);
+ else {
+ CacheKey found = (CacheKey)cacheForTheLoader.get(key);
+ if (found == null)
+ cacheForTheLoader.put(key, key);
+ else {
+ key = found;
+ Class c = isValidEntry(key); // no need to synchronize
+ if (c != null) {
+ thisClass = c;
+ return;
+ }
+ }
}
+ // }
- return thisClass;
+ // synchronized (key) {
+ Class c = isValidEntry(key);
+ if (c == null) {
+ createClass3(cl);
+ key.proxyClass = new WeakReference(thisClass);
+ }
+ else
+ thisClass = c;
+ // }
}
+ private Class isValidEntry(CacheKey key) {
+ WeakReference ref = key.proxyClass;
+ if (ref != null) {
+ Class c = (Class)ref.get();
+ if(c != null)
+ return c;
+ }
+
+ return null;
+ }
+
+ private void createClass3(ClassLoader cl) {
+ try {
+ ClassFile cf = make();
+ if (writeDirectory != null)
+ FactoryHelper.writeFile(cf, writeDirectory);
+
+ thisClass = FactoryHelper.toClass(cf, cl, getDomain());
+ setField(DEFAULT_INTERCEPTOR, handler);
+ setField(METHOD_FILTER_FIELD, methodFilter);
+ }
+ catch (CannotCompileException e) {
+ throw new RuntimeException(e.getMessage(), e);
+ }
+
+ }
+
+ private void setField(String fieldName, Object value) {
+ if (thisClass != null && value != null)
+ try {
+ Field f = thisClass.getField(fieldName);
+ // SEAM CHANGE
+ setAccessible(f, true);
+ f.set(null, value);
+ // SEAM CHANGE
+ setAccessible(f, false);
+ }
+ catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ static MethodFilter getFilter(Class clazz) {
+ return (MethodFilter)getField(clazz, METHOD_FILTER_FIELD);
+ }
+
+ static MethodHandler getHandler(Class clazz) {
+ return (MethodHandler)getField(clazz, DEFAULT_INTERCEPTOR);
+ }
+
+ private static Object getField(Class clazz, String fieldName) {
+ try {
+ Field f = clazz.getField(fieldName);
+ f.setAccessible(true);
+ Object value = f.get(null);
+ f.setAccessible(false);
+ return value;
+ }
+ catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * A provider of class loaders.
+ *
+ * @see #classLoaderProvider
+ * @since 3.4
+ */
+ public static interface ClassLoaderProvider {
+ /**
+ * Returns a class loader.
+ *
+ * @param pf a proxy factory that is going to obtain a class loader.
+ */
+ public ClassLoader get(ProxyFactory pf);
+ }
+
+ /**
+ * A provider used by <code>createClass()</code> for obtaining
+ * a class loader.
+ * <code>get()</code> on this <code>ClassLoaderProvider</code> object
+ * is called to obtain a class loader.
+ *
+ * <p>The value of this field can be updated for changing the default
+ * implementation.
+ *
+ * <p>Example:
+ * <ul><pre>
+ * ProxyFactory.classLoaderProvider = new ProxyFactory.ClassLoaderProvider() {
+ * public ClassLoader get(ProxyFactory pf) {
+ * return Thread.currentThread().getContextClassLoader();
+ * }
+ * };
+ * </pre></ul>
+ *
+ * @since 3.4
+ */
+ public static ClassLoaderProvider classLoaderProvider
+ = new ClassLoaderProvider() {
+ public ClassLoader get(ProxyFactory pf) {
+ return pf.getClassLoader0();
+ }
+ };
+
protected ClassLoader getClassLoader() {
- // return Thread.currentThread().getContextClassLoader();
+ return classLoaderProvider.get(this);
+ }
+
+ protected ClassLoader getClassLoader0() {
ClassLoader loader = null;
if (superClass != null && !superClass.getName().equals("java.lang.Object"))
loader = superClass.getClassLoader();
else if (interfaces != null && interfaces.length > 0)
loader = interfaces[0].getClassLoader();
-
+
if (loader == null) {
loader = getClass().getClassLoader();
// In case javassist is in the endorsed dir
- if (loader == null)
- loader = ClassLoader.getSystemClassLoader();
+ if (loader == null) {
+ loader = Thread.currentThread().getContextClassLoader();
+ if (loader == null)
+ loader = ClassLoader.getSystemClassLoader();
+ }
}
return loader;
@@ -228,7 +476,24 @@
*
* @param paramTypes parameter types for a constructor.
* @param args arguments passed to a constructor.
+ * @param mh the method handler for the proxy class.
+ * @since 3.4
*/
+ public Object create(Class[] paramTypes, Object[] args, MethodHandler mh)
+ throws NoSuchMethodException, IllegalArgumentException,
+ InstantiationException, IllegalAccessException, InvocationTargetException
+ {
+ Object obj = create(paramTypes, args);
+ ((ProxyObject)obj).setHandler(mh);
+ return obj;
+ }
+
+ /**
+ * Creates a proxy class and returns an instance of that class.
+ *
+ * @param paramTypes parameter types for a constructor.
+ * @param args arguments passed to a constructor.
+ */
public Object create(Class[] paramTypes, Object[] args)
throws NoSuchMethodException, IllegalArgumentException,
InstantiationException, IllegalAccessException, InvocationTargetException
@@ -245,24 +510,16 @@
*/
public void setHandler(MethodHandler mi) {
handler = mi;
- setHandler();
+ setField(DEFAULT_INTERCEPTOR, handler);
}
- private void setHandler() {
- if (thisClass != null && handler != null)
- try {
- Field f = thisClass.getField(DEFAULT_INTERCEPTOR);
- f.setAccessible(true);
- f.set(null, handler);
- f.setAccessible(false);
- }
- catch (Exception e) {
- throw new RuntimeException(e);
- }
+ private static int counter = 0;
+
+ private static synchronized String makeProxyName(String classname) {
+ // SEAM CHANGE
+ return classname + "_$$_javassist_seam_" + counter++;
}
- private static int counter = 0;
-
private ClassFile make() throws CannotCompileException {
String superName, classname;
if (interfaces == null)
@@ -282,8 +539,7 @@
if (Modifier.isFinal(superClass.getModifiers()))
throw new CannotCompileException(superName + " is final");
- // generate a proxy name.
- classname = classname + "_$$_javassist_" + counter++;
+ classname = makeProxyName(classname);
if (classname.startsWith("java."))
classname = "org.javassist.tmp." + classname;
@@ -299,12 +555,25 @@
finfo2.setAccessFlags(AccessFlag.PRIVATE);
cf.addField(finfo2);
+ FieldInfo finfo3 = new FieldInfo(pool, METHOD_FILTER_FIELD,
+ "Ljavassist/util/proxy/MethodFilter;");
+ finfo3.setAccessFlags(AccessFlag.PUBLIC | AccessFlag.STATIC);
+ cf.addField(finfo3);
+
HashMap allMethods = getMethods(superClass, interfaces);
+ int size = allMethods.size();
makeConstructors(classname, cf, pool, classname);
int s = overrideMethods(cf, pool, classname, allMethods);
addMethodsHolder(cf, pool, classname, s);
addSetter(classname, cf, pool);
+ try {
+ cf.addMethod(makeWriteReplace(pool));
+ }
+ catch (DuplicateMemberException e) {
+ // writeReplace() is already declared in the super class/interfaces.
+ }
+
thisClass = null;
return cf;
}
@@ -333,6 +602,7 @@
finfo.setAccessFlags(AccessFlag.PRIVATE | AccessFlag.STATIC);
cf.addField(finfo);
MethodInfo minfo = new MethodInfo(cp, "<clinit>", "()V");
+ minfo.setAccessFlags(AccessFlag.STATIC);
Bytecode code = new Bytecode(cp, 0, 0);
code.addIconst(size * 2);
code.addAnewarray("java.lang.reflect.Method");
@@ -405,7 +675,8 @@
private void makeConstructors(String thisClassName, ClassFile cf,
ConstPool cp, String classname) throws CannotCompileException
{
- Constructor[] cons = superClass.getDeclaredConstructors();
+ // SEAM CHANGE
+ Constructor[] cons = getDeclaredConstructors(superClass);
for (int i = 0; i < cons.length; i++) {
Constructor c = cons[i];
int mod = c.getModifiers();
@@ -487,7 +758,8 @@
if (parent != null)
getMethods(hash, parent);
- Method[] methods = clazz.getDeclaredMethods();
+ // SEAM CHANGE
+ Method[] methods = getDeclaredMethods(clazz);
for (int i = 0; i < methods.length; i++)
if (!Modifier.isPrivate(methods[i].getModifiers())) {
Method m = methods[i];
@@ -511,27 +783,34 @@
code.addAload(0);
code.addGetstatic(thisClassName, DEFAULT_INTERCEPTOR, HANDLER_TYPE);
- code.addOpcode(Opcode.DUP);
+ code.addPutfield(thisClassName, HANDLER, HANDLER_TYPE);
+ code.addGetstatic(thisClassName, DEFAULT_INTERCEPTOR, HANDLER_TYPE);
code.addOpcode(Opcode.IFNONNULL);
- code.addIndex(7);
- code.addOpcode(Opcode.POP);
+ code.addIndex(10);
+ code.addAload(0);
code.addGetstatic(NULL_INTERCEPTOR_HOLDER, DEFAULT_INTERCEPTOR, HANDLER_TYPE);
code.addPutfield(thisClassName, HANDLER, HANDLER_TYPE);
+ int pc = code.currentPc();
code.addAload(0);
int s = addLoadParameters(code, cons.getParameterTypes(), 1);
code.addInvokespecial(superClass.getName(), "<init>", desc);
code.addOpcode(Opcode.RETURN);
code.setMaxLocals(s + 1);
- minfo.setCodeAttribute(code.toCodeAttribute());
+ CodeAttribute ca = code.toCodeAttribute();
+ minfo.setCodeAttribute(ca);
+
+ StackMapTable.Writer writer = new StackMapTable.Writer(32);
+ writer.sameFrame(pc);
+ ca.setAttribute(writer.toStackMapTable(cp));
return minfo;
}
private static MethodInfo makeDelegator(Method meth, String desc,
ConstPool cp, Class declClass, String delegatorName) {
MethodInfo delegator = new MethodInfo(cp, delegatorName, desc);
- // SEAM CHANGE - originally had Modifier.FINAL |
- delegator.setAccessFlags( Modifier.PUBLIC
+ // SEAM CHANGE: remove FINAL
+ delegator.setAccessFlags(Modifier.PUBLIC
| (meth.getModifiers() & ~(Modifier.PRIVATE
| Modifier.PROTECTED
| Modifier.ABSTRACT
@@ -555,8 +834,8 @@
Method meth, String desc, ConstPool cp,
Class declClass, String delegatorName, int index) {
MethodInfo forwarder = new MethodInfo(cp, meth.getName(), desc);
- // SEAM CHANGE - originally had Modifier.FINAL
- forwarder.setAccessFlags( (meth.getModifiers() & ~(Modifier.ABSTRACT
+ // SEAM CHANGE: remove FINAL
+ forwarder.setAccessFlags((meth.getModifiers() & ~(Modifier.ABSTRACT
| Modifier.NATIVE
| Modifier.SYNCHRONIZED)));
setThrows(forwarder, cp, meth);
@@ -588,7 +867,8 @@
callFindMethod(code, "findSuperMethod", arrayVar, origIndex, meth.getName(), desc);
callFindMethod(code, "findMethod", arrayVar, delIndex, delegatorName, desc);
- code.write16bit(pc, code.currentPc() - pc + 1);
+ int pc2 = code.currentPc();
+ code.write16bit(pc, pc2 - pc + 1);
code.addAload(0);
code.addGetfield(thisClassName, HANDLER, HANDLER_TYPE);
code.addAload(0);
@@ -609,7 +889,12 @@
addUnwrapper(code, retType);
addReturn(code, retType);
- forwarder.setCodeAttribute(code.toCodeAttribute());
+ CodeAttribute ca = code.toCodeAttribute();
+ forwarder.setCodeAttribute(ca);
+ StackMapTable.Writer writer = new StackMapTable.Writer(32);
+ writer.appendFrame(pc2, new int[] { StackMapTable.OBJECT },
+ new int[] { cp.addClassInfo(HOLDER_TYPE) });
+ ca.setAttribute(writer.toStackMapTable(cp));
return forwarder;
}
@@ -758,4 +1043,64 @@
else
code.addCheckcast(type.getName());
}
+
+ private static MethodInfo makeWriteReplace(ConstPool cp) {
+ MethodInfo minfo = new MethodInfo(cp, "writeReplace", "()Ljava/lang/Object;");
+ String[] list = new String[1];
+ list[0] = "java.io.ObjectStreamException";
+ ExceptionsAttribute ea = new ExceptionsAttribute(cp);
+ ea.setExceptions(list);
+ minfo.setExceptionsAttribute(ea);
+ Bytecode code = new Bytecode(cp, 0, 1);
+ code.addAload(0);
+ code.addInvokestatic("javassist.util.proxy.RuntimeSupport",
+ "makeSerializedProxy",
+ "(Ljava/lang/Object;)Ljavassist/util/proxy/SerializedProxy;");
+ code.addOpcode(Opcode.ARETURN);
+ minfo.setCodeAttribute(code.toCodeAttribute());
+ return minfo;
+ }
+
+ // SEAM: from SecurityActions
+ static void setAccessible(final AccessibleObject ao,
+ final boolean accessible) {
+ if (System.getSecurityManager() == null) {
+ ao.setAccessible(accessible);
+ } else {
+ AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ ao.setAccessible(accessible);
+ return null;
+ }
+ });
+ }
+ }
+
+ // SEAM: from SecurityActions
+ static Method[] getDeclaredMethods(final Class clazz) {
+ if (System.getSecurityManager() == null) {
+ return clazz.getDeclaredMethods();
+ } else {
+ return (Method[]) AccessController
+ .doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ return clazz.getDeclaredMethods();
+ }
+ });
+ }
+ }
+
+ // SEAM: from SecurityActions
+ static Constructor[] getDeclaredConstructors(final Class clazz) {
+ if (System.getSecurityManager() == null) {
+ return clazz.getDeclaredConstructors();
+ } else {
+ return (Constructor[]) AccessController
+ .doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ return clazz.getDeclaredConstructors();
+ }
+ });
+ }
+ }
}
15 years, 11 months
Seam SVN: r10019 - branches/enterprise/JBPAPP_4_3_FP01/build.
by seam-commits@lists.jboss.org
Author: manaRH
Date: 2009-02-06 15:24:20 -0500 (Fri, 06 Feb 2009)
New Revision: 10019
Modified:
branches/enterprise/JBPAPP_4_3_FP01/build/root.pom.xml
branches/enterprise/JBPAPP_4_3_FP01/build/ui.pom.xml
Log:
JBPAPP-1447 - fix the hudson issue with emma coverage report
Modified: branches/enterprise/JBPAPP_4_3_FP01/build/root.pom.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/build/root.pom.xml 2009-02-06 19:30:12 UTC (rev 10018)
+++ branches/enterprise/JBPAPP_4_3_FP01/build/root.pom.xml 2009-02-06 20:24:20 UTC (rev 10019)
@@ -926,6 +926,12 @@
</exclusions>
</dependency>
+ <dependency>
+ <groupId>emma</groupId>
+ <artifactId>emma</artifactId>
+ <version>2.0.5312</version>
+ </dependency>
+
</dependencies>
</dependencyManagement>
Modified: branches/enterprise/JBPAPP_4_3_FP01/build/ui.pom.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_FP01/build/ui.pom.xml 2009-02-06 19:30:12 UTC (rev 10018)
+++ branches/enterprise/JBPAPP_4_3_FP01/build/ui.pom.xml 2009-02-06 20:24:20 UTC (rev 10019)
@@ -197,6 +197,12 @@
</exclusion>
</exclusions>
</dependency>
+
+ <dependency>
+ <groupId>emma</groupId>
+ <artifactId>emma</artifactId>
+ <optional>true</optional>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
15 years, 11 months
Seam SVN: r10018 - trunk/build.
by seam-commits@lists.jboss.org
Author: manaRH
Date: 2009-02-06 14:30:12 -0500 (Fri, 06 Feb 2009)
New Revision: 10018
Modified:
trunk/build/root.pom.xml
trunk/build/ui.pom.xml
Log:
JBSEAM-3894 - next fix for emma coverage
Modified: trunk/build/root.pom.xml
===================================================================
--- trunk/build/root.pom.xml 2009-02-06 17:45:07 UTC (rev 10017)
+++ trunk/build/root.pom.xml 2009-02-06 19:30:12 UTC (rev 10018)
@@ -1249,7 +1249,12 @@
</exclusions>
</dependency>
-
+ <dependency>
+ <groupId>emma</groupId>
+ <artifactId>emma</artifactId>
+ <version>2.0.5312</version>
+ </dependency>
+
</dependencies>
</dependencyManagement>
Modified: trunk/build/ui.pom.xml
===================================================================
--- trunk/build/ui.pom.xml 2009-02-06 17:45:07 UTC (rev 10017)
+++ trunk/build/ui.pom.xml 2009-02-06 19:30:12 UTC (rev 10018)
@@ -199,8 +199,7 @@
<dependency>
<groupId>emma</groupId>
<artifactId>emma</artifactId>
- <version>2.0.5312</version>
- <scope>optional</scope>
+ <optional>true</optional>
</dependency>
</dependencies>
15 years, 11 months
Seam SVN: r10017 - trunk/doc/Seam_Reference_Guide/it-IT.
by seam-commits@lists.jboss.org
Author: nico.ben
Date: 2009-02-06 12:45:07 -0500 (Fri, 06 Feb 2009)
New Revision: 10017
Modified:
trunk/doc/Seam_Reference_Guide/it-IT/Configuration.po
trunk/doc/Seam_Reference_Guide/it-IT/Mail.po
trunk/doc/Seam_Reference_Guide/it-IT/Persistence.po
trunk/doc/Seam_Reference_Guide/it-IT/Remoting.po
Log:
JBSEAM-3767: Italian translation of Seam guide
Modified: trunk/doc/Seam_Reference_Guide/it-IT/Configuration.po
===================================================================
--- trunk/doc/Seam_Reference_Guide/it-IT/Configuration.po 2009-02-06 17:43:34 UTC (rev 10016)
+++ trunk/doc/Seam_Reference_Guide/it-IT/Configuration.po 2009-02-06 17:45:07 UTC (rev 10017)
@@ -6,7 +6,7 @@
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2009-01-18 15:00+0000\n"
-"PO-Revision-Date: 2009-02-04 18:18+0100\n"
+"PO-Revision-Date: 2009-02-06 18:27+0100\n"
"Last-Translator: Nicola Benaglia <nico.benaz(a)gmail.com>\n"
"Language-Team: none\n"
"MIME-Version: 1.0\n"
@@ -85,7 +85,7 @@
#: Configuration.xml:25
#, no-c-format
msgid "In addition, Seam requires the following entry in your <literal>web.xml</literal> file:"
-msgstr ""
+msgstr "In aggiunta, Seam richiede la seguente voce nel file <literal>web.xml</literal>:"
#. Tag: programlisting
#: Configuration.xml:27
@@ -103,13 +103,13 @@
#: Configuration.xml:29
#, no-c-format
msgid "This listener is responsible for bootstrapping Seam, and for destroying session and application contexts."
-msgstr ""
+msgstr "Questo listener è responsabile dell'avvio di Seam e della distruzione dei contesti di sessione e di applicazione."
#. Tag: para
#: Configuration.xml:32
#, no-c-format
msgid "Some JSF implementations have a broken implementation of server-side state saving that interferes with Seam's conversation propagation. If you have problems with conversation propagation during form submissions, try switching to client-side state saving. You'll need this in <literal>web.xml</literal>:"
-msgstr ""
+msgstr "Alcune implementazioni JSF hanno un'implementazione erronea della conservazione dello stato lato server, che interferisce con la propagazione della conversazione di Seam. Se si hanno problemi con la propagazione della conversazione durante l'invio di form, si provi a cambiare impostanto la conservazione lato client. Occorre impostare questo in <literal>web.xml</literal>:"
#. Tag: programlisting
#: Configuration.xml:36
@@ -129,7 +129,7 @@
#: Configuration.xml:38
#, no-c-format
msgid "There is a minor gray area in the JSF specification regarding the mutability of view state values. Since Seam uses the JSF view state to back its PAGE scope this can become an issue in some cases. If you're using server side state saving with the JSF-RI and you want a PAGE scoped bean to keep its exact value for a given view of a page you will need to specify the following context-param. Otherwise if a user uses the \"back\" button a PAGE scoped component will have the latest value if it has changed not the value of the \"back\" page. (see <ulink url=\"https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=295\"> Spec Issue </ulink> ). This setting is not enabled by default because of the performance hit of serializing the JSF view with every request."
-msgstr ""
+msgstr "C'è una piccola parte grigia nella specifica JSF riguardante la mutabilità dei valore dello stato della vista. Poiché Seam usa lo stato della vista JSF per tornare allo scope PAGE, questo in alcuni casi può diventare un problema. Se si usa la conservazione dello stato lato server con JSF-RI e si vuole che il bean con scope PAGE mantenga l'esatto valore per una data vista di pagina, occorre specificare il seguente parametro di contesto. Altrimenti se un utente usa il pulsante \"indietro\" un componente con scope PAGE avrà l'ultimo valore se questo non è cambiato nella pagina \"indietro\". (si veda <ulink url=\"https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=295\"> Spec Issue </ulink> ). Quest'impostazione non è abilitata di default a causa della performance nella serializzazione della vista JSF ad ogni richiesta."
#. Tag: programlisting
#: Configuration.xml:52
@@ -155,7 +155,7 @@
#: Configuration.xml:58
#, no-c-format
msgid "If you want follow our advice and use Facelets instead of JSP, add the following lines to <literal>faces-config.xml</literal>:"
-msgstr ""
+msgstr "Se si vuole seguire il consiglio ed usare Facelets invece di JSP, si aggiungano le seguenti linee a <literal>faces-config.xml</literal>:"
#. Tag: programlisting
#: Configuration.xml:61
@@ -173,7 +173,7 @@
#: Configuration.xml:63
#, no-c-format
msgid "And the following lines to <literal>web.xml</literal>:"
-msgstr ""
+msgstr "E le seguenti linee a <literal>web.xml</literal>:"
#. Tag: programlisting
#: Configuration.xml:65
@@ -193,7 +193,7 @@
#: Configuration.xml:67
#, no-c-format
msgid "If you are using facelets in JBoss AS, you'll find that Facelets logging is broken (the log messages don't make it to the server log). Seam provides a bridge to fix this, to use it copy <literal>lib/interop/jboss-seam-jul.jar</literal> to <literal>$JBOSS_HOME/server/default/deploy/jboss-web.deployer/jsf-libs/</literal> and include the <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> of your application. The Facelets logging catagories are itemized in the <ulink url=\"https://facelets.dev.java.net/nonav/docs/dev/docbook.html#config-logging\">Facelets Developer Documentation</ulink>."
-msgstr ""
+msgstr "Se si usa facelets in JBoss AS, si noterà che il logging di Facelets è guasto (i messaggi di log non appaiono nel log del server). Seam fornisce un modo per sistemare questo problema, per usarlo si copi <literal>lib/interop/jboss-seam-jul.jar</literal> in <literal>$JBOSS_HOME/server/default/deploy/jboss-web.deployer/jsf-libs/</literal> e si includa <literal>jboss-seam-ui.jar</literal> nel <literal>WEB-INF/lib</literal> dell'applicazione. Le categorie di logging di Facelets sono elencate nella <ulink url=\"https://facelets.dev.java.net/nonav/docs/dev/docbook.html#config-logging\">Documentazione per lo sviluppatore Facelets</ulink>."
#. Tag: title
#: Configuration.xml:81
@@ -295,7 +295,7 @@
#: Configuration.xml:125
#, no-c-format
msgid "<literal>disabled</literal> — Used to disable a built in filter."
-msgstr ""
+msgstr "<literal>disabled</literal> — Usato per disabilitare il filtro predefinito."
#. Tag: para
#: Configuration.xml:131
@@ -313,7 +313,7 @@
#: Configuration.xml:140
#, no-c-format
msgid "Exception handling"
-msgstr ""
+msgstr "Gestione delle eccezioni."
#. Tag: para
#: Configuration.xml:141
@@ -397,7 +397,7 @@
#: Configuration.xml:186
#, no-c-format
msgid "Multipart form submissions"
-msgstr ""
+msgstr "Invio di form multipart"
#. Tag: para
#: Configuration.xml:187
@@ -433,7 +433,7 @@
#: Configuration.xml:211
#, no-c-format
msgid "Character encoding"
-msgstr ""
+msgstr "Codifica dei caratteri"
#. Tag: para
#: Configuration.xml:212
@@ -464,7 +464,7 @@
#: Configuration.xml:221
#, no-c-format
msgid "<literal>encoding</literal> — The encoding to use."
-msgstr ""
+msgstr "<literal>encoding</literal> — La codifica da usare."
#. Tag: para
#: Configuration.xml:225
Modified: trunk/doc/Seam_Reference_Guide/it-IT/Mail.po
===================================================================
--- trunk/doc/Seam_Reference_Guide/it-IT/Mail.po 2009-02-06 17:43:34 UTC (rev 10016)
+++ trunk/doc/Seam_Reference_Guide/it-IT/Mail.po 2009-02-06 17:45:07 UTC (rev 10017)
@@ -6,7 +6,7 @@
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2008-10-14 11:38+0000\n"
-"PO-Revision-Date: 2008-12-31 00:20+0100\n"
+"PO-Revision-Date: 2009-02-06 18:43+0100\n"
"Last-Translator: Nicola Benaglia <nico.benaz(a)gmail.com>\n"
"Language-Team: none\n"
"MIME-Version: 1.0\n"
@@ -23,25 +23,25 @@
#: Mail.xml:3
#, no-c-format
msgid "Seam now includes an optional components for templating and sending emails."
-msgstr ""
+msgstr "Seam include ora dei componenti opzionali per modellare e spedire le email."
#. Tag: para
#: Mail.xml:7
#, no-c-format
msgid "Email support is provided by <literal>jboss-seam-mail.jar</literal>. This JAR contains the mail JSF controls, which are used to construct emails, and the <literal>mailSession</literal> manager component."
-msgstr ""
+msgstr "Il supporto email è fornito da <literal>jboss-seam-mail.jar</literal>. Questo JAR contiene i controlli JSF per la mail, che vengono impiegati per costruire le email, ed il componente manager <literal>mailSession</literal>."
#. Tag: para
#: Mail.xml:13
#, no-c-format
msgid "The examples/mail project contains an example of the email support in action. It demonstrates proper packaging, and it contains a number of example that demonstrate the key features currently supported."
-msgstr ""
+msgstr "Il progetto examples/mail contiene un esempio di supporto email in azione. Mostra un pacchetto idoneo e contiene esempi che mostrano le funzionalità chiave attualmente supportate."
#. Tag: para
#: Mail.xml:19
#, no-c-format
msgid "You can also test your mail's using Seam's integration testing environment. See <xref linkend=\"testing.mail\"/>."
-msgstr ""
+msgstr "Si può testare la propria mail usando l'ambiente di test di Seam. Si veda <xref linkend=\"testing.mail\"/>."
#. Tag: title
#: Mail.xml:25
@@ -53,7 +53,7 @@
#: Mail.xml:27
#, no-c-format
msgid "You don't need to learn a whole new templating language to use Seam Mail — an email is just facelet!"
-msgstr ""
+msgstr "Non occorre imparare un nuovo linguaggio di template per usare Seam Mail — un'email è semplicemente un facelet!"
#. Tag: programlisting
#: Mail.xml:32
@@ -99,13 +99,13 @@
#: Mail.xml:34
#, no-c-format
msgid "The <literal><m:message></literal> tag wraps the whole message, and tells Seam to start rendering an email. Inside the <literal><m:message></literal> tag we use an <literal><m:from></literal> tag to set who the message is from, a <literal><m:to></literal> tag to specify a sender (notice how we use EL as we would in a normal facelet), and a <literal><m:subject></literal> tag."
-msgstr ""
+msgstr "Il tag <literal><m:message></literal> racchiude l'intero messaggio e dice a Seam di iniziare a generare la mail. Dentro al tag <literal><m:message></literal> si usa un tag <literal><m:from></literal> per impostare il mittente, un tag <literal><m:to></literal> per specificare un destinatario (si noti che EL viene impiegato come in un facelet normale), e un tag <literal><m:subject></literal>."
#. Tag: para
#: Mail.xml:43
#, no-c-format
msgid "The <literal><m:body></literal> tag wraps the body of the email. You can use regular HTML tags inside the body as well as JSF components."
-msgstr ""
+msgstr "Il tag <literal><m:body></literal> racchiude il corpo della mail. Si possono usare tag HTML dentro il corpo così come componenti JSF."
#. Tag: para
#: Mail.xml:48
@@ -773,19 +773,19 @@
#: Mail.xml:418
#, no-c-format
msgid "<literal>importance</literal> — low, normal or high. By default normal, this sets the importance of the mail message."
-msgstr ""
+msgstr "<literal>importance</literal> — low, normal or high. Di default è normal, questo imposta l'importanza del messaggio email."
#. Tag: para
#: Mail.xml:424
#, no-c-format
msgid "<literal>precedence</literal> — sets the precedence of the message (e.g. bulk)."
-msgstr ""
+msgstr "<literal>precedence</literal> — imposta la precedenza del messaggio (es. bulk)."
#. Tag: para
#: Mail.xml:430
#, no-c-format
msgid "<literal>requestReadReceipt</literal> — by default false, if set, a read receipt request will be will be added, with the read receipt being sent to the <literal>From:</literal> address."
-msgstr ""
+msgstr "<literal>requestReadReceipt</literal> — di default è false, se impostato, verrà aggiunta un richiesta di conferma di lettura, da inviare all'indirizzo <literal>From:</literal>."
#. Tag: para
#: Mail.xml:438
@@ -964,7 +964,7 @@
#: Mail.xml:630
#, no-c-format
msgid "If the value attribute is ommitted:"
-msgstr ""
+msgstr "Se viene omesso l'attributo value:"
#. Tag: para
#: Mail.xml:633
@@ -976,19 +976,19 @@
#: Mail.xml:641
#, no-c-format
msgid "If this tag contains other JSF tags a HTML document will be generated from them and attached to the email. A <literal>fileName</literal> should be specfied."
-msgstr ""
+msgstr "Se questo tag contiene altri tag JSF, da questi verrà generato un documento HTML ed allegato alla mail. Un <literal>fileName</literal> dovrebbe sempre essere specificato."
#. Tag: para
#: Mail.xml:650
#, no-c-format
msgid "<literal>fileName</literal> — Specify the file name to use for the attached file."
-msgstr ""
+msgstr "<literal>fileName</literal> — Specifica il nome del file da usare per il file allegato."
#. Tag: para
#: Mail.xml:656
#, no-c-format
msgid "<literal>contentType</literal> — Specify the MIME type of the attached file"
-msgstr ""
+msgstr "<literal>contentType</literal> — Specifica il tipo MIME del file allegato."
#. Tag: term
#: Mail.xml:665
@@ -1012,11 +1012,11 @@
#: Mail.xml:675
#, no-c-format
msgid "Set's the body for the email. Supports an <literal>alternative</literal> facet which, if an HTML email is generated can contain alternative text for a mail reader which doesn't support html."
-msgstr ""
+msgstr "Si imposti il corpo della mail. Supporta un facet <literal>alternativo</literal> che, se viene generata una mail HTML, può contenere testo alternativo per un lettore di email che non supporta HTML."
#. Tag: para
#: Mail.xml:682
#, no-c-format
msgid "<literal>type</literal> — If set to <literal>plain</literal> then a plain text email will be generated otherwise an HTML email is generated."
-msgstr ""
+msgstr "<literal>type</literal> — Se impostato a <literal>plain</literal> allora verrà generata una mail con semplice testo, altrimenti una mail HTML."
Modified: trunk/doc/Seam_Reference_Guide/it-IT/Persistence.po
===================================================================
--- trunk/doc/Seam_Reference_Guide/it-IT/Persistence.po 2009-02-06 17:43:34 UTC (rev 10016)
+++ trunk/doc/Seam_Reference_Guide/it-IT/Persistence.po 2009-02-06 17:45:07 UTC (rev 10017)
@@ -6,7 +6,7 @@
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2009-01-18 15:00+0000\n"
-"PO-Revision-Date: 2008-12-30 12:24+0100\n"
+"PO-Revision-Date: 2009-02-06 18:44+0100\n"
"Last-Translator: Nicola Benaglia <nico.benaz(a)gmail.com>\n"
"Language-Team: none\n"
"MIME-Version: 1.0\n"
@@ -22,11 +22,7 @@
#. Tag: para
#: Persistence.xml:4
#, no-c-format
-msgid ""
-"Seam provides extensive support for the two most popular persistence "
-"architectures for Java: Hibernate3, and the Java Persistence API introduced "
-"with EJB 3.0. Seam's unique state-management architecture allows the most "
-"sophisticated ORM integration of any web application framework."
+msgid "Seam provides extensive support for the two most popular persistence architectures for Java: Hibernate3, and the Java Persistence API introduced with EJB 3.0. Seam's unique state-management architecture allows the most sophisticated ORM integration of any web application framework."
msgstr ""
#. Tag: title
@@ -38,75 +34,37 @@
#. Tag: para
#: Persistence.xml:15
#, no-c-format
-msgid ""
-"Seam grew out of the frustration of the Hibernate team with the "
-"statelessness typical of the previous generation of Java application "
-"architectures. The state management architecture of Seam was originally "
-"designed to solve problems relating to persistence — in particular "
-"problems associated with <emphasis>optimistic transaction processing</"
-"emphasis>. Scalable online applications always use optimistic transactions. "
-"An atomic (database/JTA) level transaction should not span a user "
-"interaction unless the application is designed to support only a very small "
-"number of concurrent clients. But almost all interesting work involves first "
-"displaying data to a user, and then, slightly later, updating the same data. "
-"So Hibernate was designed to support the idea of a persistence context which "
-"spanned an optimistic transaction."
+msgid "Seam grew out of the frustration of the Hibernate team with the statelessness typical of the previous generation of Java application architectures. The state management architecture of Seam was originally designed to solve problems relating to persistence — in particular problems associated with <emphasis>optimistic transaction processing</emphasis>. Scalable online applications always use optimistic transactions. An atomic (database/JTA) level transaction should not span a user interaction unless the application is designed to support only a very small number of concurrent clients. But almost all interesting work involves first displaying data to a user, and then, slightly later, updating the same data. So Hibernate was designed to support the idea of a persistence context which spanned an optimistic transaction."
msgstr ""
#. Tag: para
#: Persistence.xml:30
#, no-c-format
-msgid ""
-"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
-"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
-"instead, these architectures provided persistence contexts scoped to the "
-"atomic transaction. Of course, this resulted in many problems for users, and "
-"is the cause of the number one user complaint about Hibernate: the dreaded "
-"<literal>LazyInitializationException</literal>. What we need is a construct "
-"for representing an optimistic transaction in the application tier."
+msgid "Unfortunately, the so-called \"stateless\" architectures that preceded Seam and EJB 3.0 had no construct for representing an optimistic transaction. So, instead, these architectures provided persistence contexts scoped to the atomic transaction. Of course, this resulted in many problems for users, and is the cause of the number one user complaint about Hibernate: the dreaded <literal>LazyInitializationException</literal>. What we need is a construct for representing an optimistic transaction in the application tier."
msgstr ""
#. Tag: para
#: Persistence.xml:40
#, no-c-format
-msgid ""
-"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
-"component (a stateful session bean) with an <emphasis>extended persistence "
-"context</emphasis> scoped to the lifetime of the component. This is a "
-"partial solution to the problem (and is a useful construct in and of itself) "
-"however there are two problems:"
+msgid "EJB 3.0 recognizes this problem, and introduces the idea of a stateful component (a stateful session bean) with an <emphasis>extended persistence context</emphasis> scoped to the lifetime of the component. This is a partial solution to the problem (and is a useful construct in and of itself) however there are two problems:"
msgstr ""
#. Tag: para
#: Persistence.xml:50
#, no-c-format
-msgid ""
-"The lifecycle of the stateful session bean must be managed manually via code "
-"in the web tier (it turns out that this is a subtle problem and much more "
-"difficult in practice than it sounds)."
+msgid "The lifecycle of the stateful session bean must be managed manually via code in the web tier (it turns out that this is a subtle problem and much more difficult in practice than it sounds)."
msgstr ""
#. Tag: para
#: Persistence.xml:57
#, no-c-format
-msgid ""
-"Propagation of the persistence context between stateful components in the "
-"same optimistic transaction is possible, but tricky."
+msgid "Propagation of the persistence context between stateful components in the same optimistic transaction is possible, but tricky."
msgstr ""
#. Tag: para
#: Persistence.xml:64
#, no-c-format
-msgid ""
-"Seam solves the first problem by providing conversations, and stateful "
-"session bean components scoped to the conversation. (Most conversations "
-"actually represent optimistic transactions in the data layer.) This is "
-"sufficient for many simple applications (such as the Seam booking demo) "
-"where persistence context propagation is not needed. For more complex "
-"applications, with many loosly-interacting components in each conversation, "
-"propagation of the persistence context across components becomes an "
-"important issue. So Seam extends the persistence context management model of "
-"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgid "Seam solves the first problem by providing conversations, and stateful session bean components scoped to the conversation. (Most conversations actually represent optimistic transactions in the data layer.) This is sufficient for many simple applications (such as the Seam booking demo) where persistence context propagation is not needed. For more complex applications, with many loosly-interacting components in each conversation, propagation of the persistence context across components becomes an important issue. So Seam extends the persistence context management model of EJB 3.0, to provide conversation-scoped extended persistence contexts."
msgstr ""
#. Tag: title
@@ -118,33 +76,19 @@
#. Tag: para
#: Persistence.xml:81
#, no-c-format
-msgid ""
-"EJB session beans feature declarative transaction management. The EJB "
-"container is able to start a transaction transparently when the bean is "
-"invoked, and end it when the invocation ends. If we write a session bean "
-"method that acts as a JSF action listener, we can do all the work associated "
-"with that action in one transaction, and be sure that it is committed or "
-"rolled back when we finish processing the action. This is a great feature, "
-"and all that is needed by some Seam applications."
+msgid "EJB session beans feature declarative transaction management. The EJB container is able to start a transaction transparently when the bean is invoked, and end it when the invocation ends. If we write a session bean method that acts as a JSF action listener, we can do all the work associated with that action in one transaction, and be sure that it is committed or rolled back when we finish processing the action. This is a great feature, and all that is needed by some Seam applications."
msgstr ""
#. Tag: para
#: Persistence.xml:90
#, no-c-format
-msgid ""
-"However, there is a problem with this approach. A Seam application may not "
-"perform all data access for a request from a single method call to a session "
-"bean."
+msgid "However, there is a problem with this approach. A Seam application may not perform all data access for a request from a single method call to a session bean."
msgstr ""
#. Tag: para
#: Persistence.xml:97
#, no-c-format
-msgid ""
-"The request might require processing by several loosly-coupled components, "
-"each of which is called independently from the web layer. It is common to "
-"see several or even many calls per request from the web layer to EJB "
-"components in Seam."
+msgid "The request might require processing by several loosly-coupled components, each of which is called independently from the web layer. It is common to see several or even many calls per request from the web layer to EJB components in Seam."
msgstr ""
#. Tag: para
@@ -156,86 +100,49 @@
#. Tag: para
#: Persistence.xml:110
#, no-c-format
-msgid ""
-"The more transactions per request, the more likely we are to encounter "
-"atomicity and isolation problems when our application is processing many "
-"concurrent requests. Certainly, all write operations should occur in the "
-"same transaction!"
+msgid "The more transactions per request, the more likely we are to encounter atomicity and isolation problems when our application is processing many concurrent requests. Certainly, all write operations should occur in the same transaction!"
msgstr ""
#. Tag: para
#: Persistence.xml:116
#, no-c-format
-msgid ""
-"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
-"pattern to work around this problem. In the Hibernate community, \"open "
-"session in view\" was historically even more important because frameworks "
-"like Spring use transaction-scoped persistence contexts. So rendering the "
-"view would cause <literal>LazyInitializationException</literal>s when "
-"unfetched associations were accessed."
+msgid "Hibernate users developed the <emphasis>\"open session in view\"</emphasis> pattern to work around this problem. In the Hibernate community, \"open session in view\" was historically even more important because frameworks like Spring use transaction-scoped persistence contexts. So rendering the view would cause <literal>LazyInitializationException</literal>s when unfetched associations were accessed."
msgstr ""
#. Tag: para
#: Persistence.xml:124
#, no-c-format
-msgid ""
-"This pattern is usually implemented as a single transaction which spans the "
-"entire request. There are several problems with this implementation, the "
-"most serious being that we can never be sure that a transaction is "
-"successful until we commit it — but by the time the \"open session in "
-"view\" transaction is committed, the view is fully rendered, and the "
-"rendered response may already have been flushed to the client. How can we "
-"notify the user that their transaction was unsuccessful?"
+msgid "This pattern is usually implemented as a single transaction which spans the entire request. There are several problems with this implementation, the most serious being that we can never be sure that a transaction is successful until we commit it — but by the time the \"open session in view\" transaction is committed, the view is fully rendered, and the rendered response may already have been flushed to the client. How can we notify the user that their transaction was unsuccessful?"
msgstr ""
#. Tag: para
#: Persistence.xml:133
#, no-c-format
-msgid ""
-"Seam solves both the transaction isolation problem and the association "
-"fetching problem, while working around the problems with \"open session in "
-"view\". The solution comes in two parts:"
+msgid "Seam solves both the transaction isolation problem and the association fetching problem, while working around the problems with \"open session in view\". The solution comes in two parts:"
msgstr ""
#. Tag: para
#: Persistence.xml:141
#, no-c-format
-msgid ""
-"use an extended persistence context that is scoped to the conversation, "
-"instead of to the transaction"
+msgid "use an extended persistence context that is scoped to the conversation, instead of to the transaction"
msgstr ""
#. Tag: para
#: Persistence.xml:147
#, no-c-format
-msgid ""
-"use two transactions per request; the first spans the beginning of the "
-"restore view phase (some transaction managers begin the transaction later at "
-"the beginning of the apply request vaues phase) until the end of the invoke "
-"application phase; the second spans the render response phase"
+msgid "use two transactions per request; the first spans the beginning of the restore view phase (some transaction managers begin the transaction later at the beginning of the apply request vaues phase) until the end of the invoke application phase; the second spans the render response phase"
msgstr ""
#. Tag: para
#: Persistence.xml:156
#, no-c-format
-msgid ""
-"In the next section, we'll tell you how to set up a conversation-scope "
-"persistence context. But first we need to tell you how to enable Seam "
-"transaction management. Note that you can use conversation-scoped "
-"persistence contexts without Seam transaction management, and there are good "
-"reasons to use Seam transaction management even when you're not using Seam-"
-"managed persistence contexts. However, the two facilities were designed to "
-"work together, and work best when used together."
+msgid "In the next section, we'll tell you how to set up a conversation-scope persistence context. But first we need to tell you how to enable Seam transaction management. Note that you can use conversation-scoped persistence contexts without Seam transaction management, and there are good reasons to use Seam transaction management even when you're not using Seam-managed persistence contexts. However, the two facilities were designed to work together, and work best when used together."
msgstr ""
#. Tag: para
#: Persistence.xml:165
#, no-c-format
-msgid ""
-"Seam transaction management is useful even if you're using EJB 3.0 container-"
-"managed persistence contexts. But it is especially useful if you use Seam "
-"outside a Java EE 5 environment, or in any other case where you would use a "
-"Seam-managed persistence context."
+msgid "Seam transaction management is useful even if you're using EJB 3.0 container-managed persistence contexts. But it is especially useful if you use Seam outside a Java EE 5 environment, or in any other case where you would use a Seam-managed persistence context."
msgstr ""
#. Tag: title
@@ -247,10 +154,7 @@
#. Tag: para
#: Persistence.xml:175
#, no-c-format
-msgid ""
-"Seam transaction management is enabled by default for all JSF requests. If "
-"you want to <emphasis>disable</emphasis> this feature, you can do it in "
-"<literal>components.xml</literal>:"
+msgid "Seam transaction management is enabled by default for all JSF requests. If you want to <emphasis>disable</emphasis> this feature, you can do it in <literal>components.xml</literal>:"
msgstr ""
#. Tag: programlisting
@@ -274,13 +178,7 @@
#. Tag: para
#: Persistence.xml:188
#, no-c-format
-msgid ""
-"Seam provides a transaction management abstraction for beginning, "
-"committing, rolling back, and synchronizing with a transaction. By default "
-"Seam uses a JTA transaction component that integrates with Container Managed "
-"and programmatic EJB transactions. If you are working in a Java EE 5 "
-"environment, you should install the EJB synchronization component in "
-"<literal>components.xml</literal>:"
+msgid "Seam provides a transaction management abstraction for beginning, committing, rolling back, and synchronizing with a transaction. By default Seam uses a JTA transaction component that integrates with Container Managed and programmatic EJB transactions. If you are working in a Java EE 5 environment, you should install the EJB synchronization component in <literal>components.xml</literal>:"
msgstr ""
#. Tag: programlisting
@@ -292,40 +190,25 @@
#. Tag: para
#: Persistence.xml:197
#, no-c-format
-msgid ""
-"However, if you are working in a non EE 5 container, Seam will try auto "
-"detect the transaction synchronization mechanism to use. However, if Seam is "
-"unable to detect the correct transaction synchronization to use, you may "
-"find you need configure one of the following:"
+msgid "However, if you are working in a non EE 5 container, Seam will try auto detect the transaction synchronization mechanism to use. However, if Seam is unable to detect the correct transaction synchronization to use, you may find you need configure one of the following:"
msgstr ""
#. Tag: para
#: Persistence.xml:204
#, no-c-format
-msgid ""
-"JPA RESOURCE_LOCAL transactions with the <literal>javax.persistence."
-"EntityTransaction</literal> interface. <literal>EntityTransaction</literal> "
-"begins the transaction at the beginning of the apply request values phase."
+msgid "JPA RESOURCE_LOCAL transactions with the <literal>javax.persistence.EntityTransaction</literal> interface. <literal>EntityTransaction</literal> begins the transaction at the beginning of the apply request values phase."
msgstr ""
#. Tag: para
#: Persistence.xml:212
#, no-c-format
-msgid ""
-"Hibernate managed transactions with the <literal>org.hibernate.Transaction</"
-"literal> interface. <literal>HibernateTransaction</literal> begins the "
-"transaction at the beginning of the apply request values phase."
+msgid "Hibernate managed transactions with the <literal>org.hibernate.Transaction</literal> interface. <literal>HibernateTransaction</literal> begins the transaction at the beginning of the apply request values phase."
msgstr ""
#. Tag: para
#: Persistence.xml:220
#, no-c-format
-msgid ""
-"Spring managed transactions with the <literal>org.springframework."
-"transaction.PlatformTransactionManager</literal> interface. The Spring "
-"<literal>PlatformTransactionManagement</literal> manager may begin the "
-"transaction at the beginning of the apply request values phase if the "
-"<literal>userConversationContext</literal> attribute is set."
+msgid "Spring managed transactions with the <literal>org.springframework.transaction.PlatformTransactionManager</literal> interface. The Spring <literal>PlatformTransactionManagement</literal> manager may begin the transaction at the beginning of the apply request values phase if the <literal>userConversationContext</literal> attribute is set."
msgstr ""
#. Tag: para
@@ -337,14 +220,7 @@
#. Tag: para
#: Persistence.xml:234
#, no-c-format
-msgid ""
-"Configure JPA RESOURCE_LOCAL transaction management by adding the following "
-"to your components.xml where <literal>#{em}</literal> is the name of the "
-"<literal>persistence:managed-persistence-context</literal> component. If "
-"your managed persistence context is named <literal>entityManager</literal>, "
-"you can opt to leave out the <literal>entity-manager</literal> attribute. "
-"(see <link linkend=\"persistence.seam-managed-persistence-contexts\">Seam-"
-"managed persistence contexts</link> )"
+msgid "Configure JPA RESOURCE_LOCAL transaction management by adding the following to your components.xml where <literal>#{em}</literal> is the name of the <literal>persistence:managed-persistence-context</literal> component. If your managed persistence context is named <literal>entityManager</literal>, you can opt to leave out the <literal>entity-manager</literal> attribute. (see <link linkend=\"persistence.seam-managed-persistence-contexts\">Seam-managed persistence contexts</link> )"
msgstr ""
#. Tag: programlisting
@@ -356,32 +232,19 @@
#. Tag: para
#: Persistence.xml:245
#, no-c-format
-msgid ""
-"To configure Hibernate managed transactions declare the following in your "
-"components.xml where <literal>#{hibernateSession}</literal> is the name of "
-"the project's <literal>persistence:managed-hibernate-session</literal> "
-"component. If your managed hibernate session is named <literal>session</"
-"literal>, you can opt to leave out the <literal>session</literal> attribute. "
-"(see <link linkend=\"persistence.seam-managed-persistence-contexts\">Seam-"
-"managed persistence contexts</link> )"
+msgid "To configure Hibernate managed transactions declare the following in your components.xml where <literal>#{hibernateSession}</literal> is the name of the project's <literal>persistence:managed-hibernate-session</literal> component. If your managed hibernate session is named <literal>session</literal>, you can opt to leave out the <literal>session</literal> attribute. (see <link linkend=\"persistence.seam-managed-persistence-contexts\">Seam-managed persistence contexts</link> )"
msgstr ""
#. Tag: programlisting
#: Persistence.xml:255
#, no-c-format
-msgid ""
-"<![CDATA[<transaction:hibernate-transaction session=\"#{hibernateSession}\"/"
-">]]>"
-msgstr ""
-"<![CDATA[<transaction:hibernate-transaction session=\"#{hibernateSession}\"/"
-">]]>"
+msgid "<![CDATA[<transaction:hibernate-transaction session=\"#{hibernateSession}\"/>]]>"
+msgstr "<![CDATA[<transaction:hibernate-transaction session=\"#{hibernateSession}\"/>]]>"
#. Tag: para
#: Persistence.xml:256
#, no-c-format
-msgid ""
-"To explicitly disable Seam managed transactions declare the following in "
-"your components.xml:"
+msgid "To explicitly disable Seam managed transactions declare the following in your components.xml:"
msgstr ""
#. Tag: programlisting
@@ -393,9 +256,7 @@
#. Tag: para
#: Persistence.xml:260
#, no-c-format
-msgid ""
-"For configuring Spring managed transactions see <link linkend=\"spring-"
-"transactions\">using Spring PlatformTransactionManagement</link> ."
+msgid "For configuring Spring managed transactions see <link linkend=\"spring-transactions\">using Spring PlatformTransactionManagement</link> ."
msgstr ""
#. Tag: title
@@ -407,17 +268,7 @@
#. Tag: para
#: Persistence.xml:269
#, no-c-format
-msgid ""
-"Transaction synchronization provides callbacks for transaction related "
-"events such as <literal>beforeCompletion()</literal> and "
-"<literal>afterCompletion()</literal>. By default, Seam uses it's own "
-"transaction synchronization component which requires explicit use of the "
-"Seam transaction component when committing a transaction to ensure "
-"synchronization callbacks are correctly executed. If in a Java EE 5 "
-"environment the <literal><transaction:ejb-transaction/></literal> "
-"component should be be declared in <literal>components.xml</literal> to "
-"ensure that Seam synchronization callbacks are correctly called if the "
-"container commits a transaction outside of Seam's knowledge."
+msgid "Transaction synchronization provides callbacks for transaction related events such as <literal>beforeCompletion()</literal> and <literal>afterCompletion()</literal>. By default, Seam uses it's own transaction synchronization component which requires explicit use of the Seam transaction component when committing a transaction to ensure synchronization callbacks are correctly executed. If in a Java EE 5 environment the <literal><transaction:ejb-transaction/></literal> component should be be declared in <literal>components.xml</literal> to ensure that Seam synchronization callbacks are correctly called if the container commits a transaction outside of Seam's knowledge."
msgstr ""
#. Tag: title
@@ -429,38 +280,19 @@
#. Tag: para
#: Persistence.xml:285
#, no-c-format
-msgid ""
-"If you're using Seam outside of a Java EE 5 environment, you can't rely upon "
-"the container to manage the persistence context lifecycle for you. Even if "
-"you are in an EE 5 environment, you might have a complex application with "
-"many loosly coupled components that collaborate together in the scope of a "
-"single conversation, and in this case you might find that propagation of the "
-"persistence context between component is tricky and error-prone."
+msgid "If you're using Seam outside of a Java EE 5 environment, you can't rely upon the container to manage the persistence context lifecycle for you. Even if you are in an EE 5 environment, you might have a complex application with many loosly coupled components that collaborate together in the scope of a single conversation, and in this case you might find that propagation of the persistence context between component is tricky and error-prone."
msgstr ""
#. Tag: para
#: Persistence.xml:294
#, no-c-format
-msgid ""
-"In either case, you'll need to use a <emphasis>managed persistence context</"
-"emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
-"Hibernate) in your components. A Seam-managed persistence context is just a "
-"built-in Seam component that manages an instance of <literal>EntityManager</"
-"literal> or <literal>Session</literal> in the conversation context. You can "
-"inject it with <literal>@In</literal>."
+msgid "In either case, you'll need to use a <emphasis>managed persistence context</emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for Hibernate) in your components. A Seam-managed persistence context is just a built-in Seam component that manages an instance of <literal>EntityManager</literal> or <literal>Session</literal> in the conversation context. You can inject it with <literal>@In</literal>."
msgstr ""
#. Tag: para
#: Persistence.xml:302
#, no-c-format
-msgid ""
-"Seam-managed persistence contexts are extremely efficient in a clustered "
-"environment. Seam is able to perform an optimization that EJB 3.0 "
-"specification does not allow containers to use for container-managed "
-"extended persistence contexts. Seam supports transparent failover of "
-"extended persisence contexts, without the need to replicate any persistence "
-"context state between nodes. (We hope to fix this oversight in the next "
-"revision of the EJB spec.)"
+msgid "Seam-managed persistence contexts are extremely efficient in a clustered environment. Seam is able to perform an optimization that EJB 3.0 specification does not allow containers to use for container-managed extended persistence contexts. Seam supports transparent failover of extended persisence contexts, without the need to replicate any persistence context state between nodes. (We hope to fix this oversight in the next revision of the EJB spec.)"
msgstr ""
#. Tag: title
@@ -472,9 +304,7 @@
#. Tag: para
#: Persistence.xml:314
#, no-c-format
-msgid ""
-"Configuring a managed persistence context is easy. In <literal>components."
-"xml</literal>, we can write:"
+msgid "Configuring a managed persistence context is easy. In <literal>components.xml</literal>, we can write:"
msgstr ""
#. Tag: programlisting
@@ -483,33 +313,22 @@
msgid ""
"<![CDATA[<persistence:managed-persistence-context name=\"bookingDatabase\" \n"
" auto-create=\"true\"\n"
-" persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
-"bookingData\"/>]]>"
+" persistence-unit-jndi-name=\"java:/EntityManagerFactories/bookingData\"/>]]>"
msgstr ""
"<![CDATA[<persistence:managed-persistence-context name=\"bookingDatabase\" \n"
" auto-create=\"true\"\n"
-" persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
-"bookingData\"/>]]>"
+" persistence-unit-jndi-name=\"java:/EntityManagerFactories/bookingData\"/>]]>"
#. Tag: para
#: Persistence.xml:321
#, no-c-format
-msgid ""
-"This configuration creates a conversation-scoped Seam component named "
-"<literal>bookingDatabase</literal> that manages the lifecycle of "
-"<literal>EntityManager</literal> instances for the persistence unit "
-"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
-"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgid "This configuration creates a conversation-scoped Seam component named <literal>bookingDatabase</literal> that manages the lifecycle of <literal>EntityManager</literal> instances for the persistence unit (<literal>EntityManagerFactory</literal> instance) with JNDI name <literal>java:/EntityManagerFactories/bookingData</literal>."
msgstr ""
#. Tag: para
#: Persistence.xml:328
#, no-c-format
-msgid ""
-"Of course, you need to make sure that you have bound the "
-"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
-"by adding the following property setting to <literal>persistence.xml</"
-"literal>."
+msgid "Of course, you need to make sure that you have bound the <literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this by adding the following property setting to <literal>persistence.xml</literal>."
msgstr ""
#. Tag: programlisting
@@ -537,15 +356,7 @@
#. Tag: para
#: Persistence.xml:342
#, no-c-format
-msgid ""
-"If you are using EJB3 and mark your class or method "
-"<literal>@TransactionAttribute(REQUIRES_NEW)</literal> then the transaction "
-"and persistence context shouldn't be propagated to method calls on this "
-"object. However as the Seam-managed persistence context is propagated to any "
-"component within the conversation, it will be propagated to methods marked "
-"<literal>REQUIRES_NEW</literal>. Therefore, if you mark a method "
-"<literal>REQUIRES_NEW</literal> then you should access the entity manager "
-"using @PersistenceContext."
+msgid "If you are using EJB3 and mark your class or method <literal>@TransactionAttribute(REQUIRES_NEW)</literal> then the transaction and persistence context shouldn't be propagated to method calls on this object. However as the Seam-managed persistence context is propagated to any component within the conversation, it will be propagated to methods marked <literal>REQUIRES_NEW</literal>. Therefore, if you mark a method <literal>REQUIRES_NEW</literal> then you should access the entity manager using @PersistenceContext."
msgstr ""
#. Tag: title
@@ -557,37 +368,29 @@
#. Tag: para
#: Persistence.xml:358
#, no-c-format
-msgid ""
-"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
-"literal>:"
+msgid "Seam-managed Hibernate sessions are similar. In <literal>components.xml</literal>:"
msgstr ""
#. Tag: programlisting
#: Persistence.xml:362
#, no-c-format
msgid ""
-"<![CDATA[<persistence:hibernate-session-factory name="
-"\"hibernateSessionFactory\"/>\n"
+"<![CDATA[<persistence:hibernate-session-factory name=\"hibernateSessionFactory\"/>\n"
"\n"
"<persistence:managed-hibernate-session name=\"bookingDatabase\" \n"
" auto-create=\"true\"\n"
-" session-factory-jndi-name=\"java:/bookingSessionFactory\"/"
-">]]>"
+" session-factory-jndi-name=\"java:/bookingSessionFactory\"/>]]>"
msgstr ""
-"<![CDATA[<persistence:hibernate-session-factory name="
-"\"hibernateSessionFactory\"/>\n"
+"<![CDATA[<persistence:hibernate-session-factory name=\"hibernateSessionFactory\"/>\n"
"\n"
"<persistence:managed-hibernate-session name=\"bookingDatabase\" \n"
" auto-create=\"true\"\n"
-" session-factory-jndi-name=\"java:/bookingSessionFactory\"/"
-">]]>"
+" session-factory-jndi-name=\"java:/bookingSessionFactory\"/>]]>"
#. Tag: para
#: Persistence.xml:364
#, no-c-format
-msgid ""
-"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
-"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgid "Where <literal>java:/bookingSessionFactory</literal> is the name of the session factory specified in <literal>hibernate.cfg.xml</literal>."
msgstr ""
#. Tag: programlisting
@@ -597,42 +400,31 @@
"<![CDATA[<session-factory name=\"java:/bookingSessionFactory\">\n"
" <property name=\"transaction.flush_before_completion\">true</property>\n"
" <property name=\"connection.release_mode\">after_statement</property>\n"
-" <property name=\"transaction.manager_lookup_class\">org.hibernate."
-"transaction.JBossTransactionManagerLookup</property>\n"
-" <property name=\"transaction.factory_class\">org.hibernate.transaction."
-"JTATransactionFactory</property>\n"
-" <property name=\"connection.datasource\">java:/bookingDatasource</"
-"property>\n"
+" <property name=\"transaction.manager_lookup_class\">org.hibernate.transaction.JBossTransactionManagerLookup</property>\n"
+" <property name=\"transaction.factory_class\">org.hibernate.transaction.JTATransactionFactory</property>\n"
+" <property name=\"connection.datasource\">java:/bookingDatasource</property>\n"
" ...\n"
"</session-factory>]]>"
msgstr ""
"<![CDATA[<session-factory name=\"java:/bookingSessionFactory\">\n"
" <property name=\"transaction.flush_before_completion\">true</property>\n"
" <property name=\"connection.release_mode\">after_statement</property>\n"
-" <property name=\"transaction.manager_lookup_class\">org.hibernate."
-"transaction.JBossTransactionManagerLookup</property>\n"
-" <property name=\"transaction.factory_class\">org.hibernate.transaction."
-"JTATransactionFactory</property>\n"
-" <property name=\"connection.datasource\">java:/bookingDatasource</"
-"property>\n"
+" <property name=\"transaction.manager_lookup_class\">org.hibernate.transaction.JBossTransactionManagerLookup</property>\n"
+" <property name=\"transaction.factory_class\">org.hibernate.transaction.JTATransactionFactory</property>\n"
+" <property name=\"connection.datasource\">java:/bookingDatasource</property>\n"
" ...\n"
"</session-factory>]]>"
#. Tag: para
#: Persistence.xml:371
#, no-c-format
-msgid ""
-"Note that Seam does not flush the session, so you should always enable "
-"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
-"that the session is automatically flushed before the JTA transaction commits."
+msgid "Note that Seam does not flush the session, so you should always enable <literal>hibernate.transaction.flush_before_completion</literal> to ensure that the session is automatically flushed before the JTA transaction commits."
msgstr ""
#. Tag: para
#: Persistence.xml:378
#, no-c-format
-msgid ""
-"We can now have a managed Hibernate <literal>Session</literal> injected into "
-"our JavaBean components using the following code:"
+msgid "We can now have a managed Hibernate <literal>Session</literal> injected into our JavaBean components using the following code:"
msgstr ""
#. Tag: programlisting
@@ -650,51 +442,25 @@
#. Tag: para
#: Persistence.xml:389
#, no-c-format
-msgid ""
-"Persistence contexts scoped to the conversation allows you to program "
-"optimistic transactions that span multiple requests to the server without "
-"the need to use the <literal>merge()</literal> operation , without the need "
-"to re-load data at the beginning of each request, and without the need to "
-"wrestle with the <literal>LazyInitializationException</literal> or "
-"<literal>NonUniqueObjectException</literal>."
+msgid "Persistence contexts scoped to the conversation allows you to program optimistic transactions that span multiple requests to the server without the need to use the <literal>merge()</literal> operation , without the need to re-load data at the beginning of each request, and without the need to wrestle with the <literal>LazyInitializationException</literal> or <literal>NonUniqueObjectException</literal>."
msgstr ""
#. Tag: para
#: Persistence.xml:398
#, no-c-format
-msgid ""
-"As with any optimistic transaction management, transaction isolation and "
-"consistency can be achieved via use of optimistic locking. Fortunately, both "
-"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
-"providing the <literal>@Version</literal> annotation."
+msgid "As with any optimistic transaction management, transaction isolation and consistency can be achieved via use of optimistic locking. Fortunately, both Hibernate and EJB 3.0 make it very easy to use optimistic locking, by providing the <literal>@Version</literal> annotation."
msgstr ""
#. Tag: para
#: Persistence.xml:405
#, no-c-format
-msgid ""
-"By default, the persistence context is flushed (synchronized with the "
-"database) at the end of each transaction. This is sometimes the desired "
-"behavior. But very often, we would prefer that all changes are held in "
-"memory and only written to the database when the conversation ends "
-"successfully. This allows for truly atomic conversations. As the result of a "
-"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
-"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
-"usable and portable way to implement atomic conversations using EJB 3.0 "
-"persistence. However, Hibernate provides this feature as a vendor extension "
-"to the <literal>FlushModeType</literal>s defined by the specification, and "
-"it is our expectation that other vendors will soon provide a similar "
-"extension."
+msgid "By default, the persistence context is flushed (synchronized with the database) at the end of each transaction. This is sometimes the desired behavior. But very often, we would prefer that all changes are held in memory and only written to the database when the conversation ends successfully. This allows for truly atomic conversations. As the result of a truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-Sybase members of the EJB 3.0 expert group, there is currently no simple, usable and portable way to implement atomic conversations using EJB 3.0 persistence. However, Hibernate provides this feature as a vendor extension to the <literal>FlushModeType</literal>s defined by the specification, and it is our expectation that other vendors will soon provide a similar extension."
msgstr ""
#. Tag: para
#: Persistence.xml:419
#, no-c-format
-msgid ""
-"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
-"a conversation. Currently, this works only when Hibernate is the underlying "
-"persistence provider, but we plan to support other equivalent vendor "
-"extensions."
+msgid "Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning a conversation. Currently, this works only when Hibernate is the underlying persistence provider, but we plan to support other equivalent vendor extensions."
msgstr ""
#. Tag: programlisting
@@ -718,9 +484,7 @@
#. Tag: para
#: Persistence.xml:427
#, no-c-format
-msgid ""
-"Now, the <literal>claim</literal> object remains managed by the persistence "
-"context for the rest ot the conversation. We can make changes to the claim:"
+msgid "Now, the <literal>claim</literal> object remains managed by the persistence context for the rest ot the conversation. We can make changes to the claim:"
msgstr ""
#. Tag: programlisting
@@ -740,9 +504,7 @@
#. Tag: para
#: Persistence.xml:434
#, no-c-format
-msgid ""
-"But these changes will not be flushed to the database until we explicitly "
-"force the flush to occur:"
+msgid "But these changes will not be flushed to the database until we explicitly force the flush to occur:"
msgstr ""
#. Tag: programlisting
@@ -762,9 +524,7 @@
#. Tag: para
#: Persistence.xml:441
#, no-c-format
-msgid ""
-"Of course, you could set the <literal>flushMode</literal> to "
-"<literal>MANUAL</literal> from pages.xml, for example in a navigation rule:"
+msgid "Of course, you could set the <literal>flushMode</literal> to <literal>MANUAL</literal> from pages.xml, for example in a navigation rule:"
msgstr ""
#. Tag: programlisting
@@ -776,8 +536,7 @@
#. Tag: para
#: Persistence.xml:448
#, no-c-format
-msgid ""
-"You can set any Seam Managed Persistence Context to use manual flush mode:"
+msgid "You can set any Seam Managed Persistence Context to use manual flush mode:"
msgstr ""
#. Tag: programlisting
@@ -786,14 +545,12 @@
msgid ""
"<![CDATA[<components xmlns=\"http://jboss.com/products/seam/components\"\n"
" xmlns:core=\"http://jboss.com/products/seam/core\">\n"
-" <core:manager conversation-timeout=\"120000\" default-flush-mode=\"manual"
-"\" />\n"
+" <core:manager conversation-timeout=\"120000\" default-flush-mode=\"manual\" />\n"
"</components>]]>"
msgstr ""
"<![CDATA[<components xmlns=\"http://jboss.com/products/seam/components\"\n"
" xmlns:core=\"http://jboss.com/products/seam/core\">\n"
-" <core:manager conversation-timeout=\"120000\" default-flush-mode=\"manual"
-"\" />\n"
+" <core:manager conversation-timeout=\"120000\" default-flush-mode=\"manual\" />\n"
"</components>]]>"
#. Tag: title
@@ -805,24 +562,13 @@
#. Tag: para
#: Persistence.xml:462
#, no-c-format
-msgid ""
-"The <literal>EntityManager</literal> interface lets you access a vendor-"
-"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
-"most interesting vendor is Hibernate, and the most powerful delegate "
-"interface is <literal>org.hibernate.Session</literal>. You'd be nuts to use "
-"anything else. Trust me, I'm not biased at all. If you must use a different "
-"JPA provider see <link linkend=\"alt-jpa-providers\">Using Alternate JPA "
-"Providers</link>."
+msgid "The <literal>EntityManager</literal> interface lets you access a vendor-specific API via the <literal>getDelegate()</literal> method. Naturally, the most interesting vendor is Hibernate, and the most powerful delegate interface is <literal>org.hibernate.Session</literal>. You'd be nuts to use anything else. Trust me, I'm not biased at all. If you must use a different JPA provider see <link linkend=\"alt-jpa-providers\">Using Alternate JPA Providers</link>."
msgstr ""
#. Tag: para
#: Persistence.xml:471
#, no-c-format
-msgid ""
-"But regardless of whether you're using Hibernate (genius!) or something else "
-"(masochist, or just not very bright), you'll almost certainly want to use "
-"the delegate in your Seam components from time to time. One approach would "
-"be the following:"
+msgid "But regardless of whether you're using Hibernate (genius!) or something else (masochist, or just not very bright), you'll almost certainly want to use the delegate in your Seam components from time to time. One approach would be the following:"
msgstr ""
#. Tag: programlisting
@@ -833,26 +579,20 @@
"\n"
"@Create\n"
"public void init() {\n"
-" ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
-"\");\n"
+" ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions\");\n"
"}]]>"
msgstr ""
"<![CDATA[@In EntityManager entityManager;\n"
"\n"
"@Create\n"
"public void init() {\n"
-" ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
-"\");\n"
+" ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions\");\n"
"}]]>"
#. Tag: para
#: Persistence.xml:480
#, no-c-format
-msgid ""
-"But typecasts are unquestionably the ugliest syntax in the Java language, so "
-"most people avoid them whenever possible. Here's a different way to get at "
-"the delegate. First, add the following line to <literal>components.xml</"
-"literal>:"
+msgid "But typecasts are unquestionably the ugliest syntax in the Java language, so most people avoid them whenever possible. Here's a different way to get at the delegate. First, add the following line to <literal>components.xml</literal>:"
msgstr ""
#. Tag: programlisting
@@ -873,7 +613,7 @@
#: Persistence.xml:488
#, no-c-format
msgid "Now we can inject the session directly:"
-msgstr ""
+msgstr "Ora si può iniettare la sessione direttamente:"
#. Tag: programlisting
#: Persistence.xml:492
@@ -902,24 +642,17 @@
#. Tag: para
#: Persistence.xml:498
#, no-c-format
-msgid ""
-"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
-"literal> object whenever you use a Seam-managed persistence context or "
-"inject a container managed persistence context using "
-"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
-"your query strings, safely and efficiently. For example, this:"
+msgid "Seam proxies the <literal>EntityManager</literal> or <literal>Session</literal> object whenever you use a Seam-managed persistence context or inject a container managed persistence context using <literal>@PersistenceContext</literal>. This lets you use EL expressions in your query strings, safely and efficiently. For example, this:"
msgstr ""
#. Tag: programlisting
#: Persistence.xml:506
#, no-c-format
msgid ""
-"<![CDATA[User user = em.createQuery(\"from User where username=#{user."
-"username}\")\n"
+"<![CDATA[User user = em.createQuery(\"from User where username=#{user.username}\")\n"
" .getSingleResult();]]>"
msgstr ""
-"<![CDATA[User user = em.createQuery(\"from User where username=#{user."
-"username}\")\n"
+"<![CDATA[User user = em.createQuery(\"from User where username=#{user.username}\")\n"
" .getSingleResult();]]>"
#. Tag: para
@@ -950,12 +683,10 @@
#: Persistence.xml:516
#, no-c-format
msgid ""
-"<![CDATA[User user = em.createQuery(\"from User where username=\" + user."
-"getUsername()) //BAD!\n"
+"<![CDATA[User user = em.createQuery(\"from User where username=\" + user.getUsername()) //BAD!\n"
" .getSingleResult();]]>"
msgstr ""
-"<![CDATA[User user = em.createQuery(\"from User where username=\" + user."
-"getUsername()) //BAD!\n"
+"<![CDATA[User user = em.createQuery(\"from User where username=\" + user.getUsername()) //BAD!\n"
" .getSingleResult();]]>"
#. Tag: para
@@ -973,23 +704,13 @@
#. Tag: para
#: Persistence.xml:527
#, no-c-format
-msgid ""
-"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
-"emphasis>. Filters let you provide a restricted view of the data in the "
-"database. You can find out more about filters in the Hibernate "
-"documentation. But we thought we'd mention an easy way to incorporate "
-"filters into a Seam application, one that works especially well with the "
-"Seam Application Framework."
+msgid "The coolest, and most unique, feature of Hibernate is <emphasis>filters</emphasis>. Filters let you provide a restricted view of the data in the database. You can find out more about filters in the Hibernate documentation. But we thought we'd mention an easy way to incorporate filters into a Seam application, one that works especially well with the Seam Application Framework."
msgstr ""
#. Tag: para
#: Persistence.xml:535
#, no-c-format
-msgid ""
-"Seam-managed persistence contexts may have a list of filters defined, which "
-"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
-"<literal>Session</literal> is first created. (Of course, they may only be "
-"used when Hibernate is the underlying persistence provider.)"
+msgid "Seam-managed persistence contexts may have a list of filters defined, which will be enabled whenever an <literal>EntityManager</literal> or Hibernate <literal>Session</literal> is first created. (Of course, they may only be used when Hibernate is the underlying persistence provider.)"
msgstr ""
#. Tag: programlisting
@@ -1013,8 +734,7 @@
"</persistence:filter>\n"
"\n"
"<persistence:managed-persistence-context name=\"personDatabase\"\n"
-" persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
-"\">\n"
+" persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase\">\n"
" <persistence:filters>\n"
" <value>#{regionFilter}</value>\n"
" <value>#{currentFilter}</value>\n"
@@ -1038,10 +758,10 @@
"</persistence:filter>\n"
"\n"
"<persistence:managed-persistence-context name=\"personDatabase\"\n"
-" persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
-"\">\n"
+" persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase\">\n"
" <persistence:filters>\n"
" <value>#{regionFilter}</value>\n"
" <value>#{currentFilter}</value>\n"
" </persistence:filters>\n"
"</persistence:managed-persistence-context>]]>"
+
Modified: trunk/doc/Seam_Reference_Guide/it-IT/Remoting.po
===================================================================
--- trunk/doc/Seam_Reference_Guide/it-IT/Remoting.po 2009-02-06 17:43:34 UTC (rev 10016)
+++ trunk/doc/Seam_Reference_Guide/it-IT/Remoting.po 2009-02-06 17:45:07 UTC (rev 10017)
@@ -6,7 +6,7 @@
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2008-12-04 00:58+0000\n"
-"PO-Revision-Date: 2009-02-04 18:32+0100\n"
+"PO-Revision-Date: 2009-02-06 18:08+0100\n"
"Last-Translator: Nicola Benaglia <nico.benaz(a)gmail.com>\n"
"Language-Team: none\n"
"MIME-Version: 1.0\n"
@@ -134,7 +134,7 @@
#: Remoting.xml:50
#, no-c-format
msgid "Client-side interaction with your components is all performed via the <literal>Seam</literal> Javascript object. This object is defined in <literal>remote.js</literal>, and you'll be using it to make asynchronous calls against your component. It is split into two areas of functionality; <literal>Seam.Component</literal> contains methods for working with components and <literal>Seam.Remoting</literal> contains methods for executing remote requests. The easiest way to become familiar with this object is to start with a simple example."
-msgstr ""
+msgstr "L'interazione lato client con i componenti viene eseguita tutta tramite l'oggetto Javascript <literal>Seam</literal>. Quest'oggetti è definito in <literal>remote.js</literal>, e lo si userà per fare chiamate asincrone verso il componente. E' suddiviso in due aree di funzionalità; <literal>Seam.Component</literal> contiene metodi per lavorare con i componenti e <literal>Seam.Remoting</literal> contiene metodi per eseguire le richieste remote. La via più facile per diventare familiare con quest'oggetto è cominciare con un semplice esempio."
#. Tag: title
#: Remoting.xml:57
@@ -146,7 +146,7 @@
#: Remoting.xml:59
#, no-c-format
msgid "Let's step through a simple example to see how the <literal>Seam</literal> object works. First of all, let's create a new Seam component called <literal>helloAction</literal>."
-msgstr ""
+msgstr "Si cominci con un semplice esempio per vedere come funziona l'oggetto <literal>Seam</literal>"
#. Tag: programlisting
#: Remoting.xml:62
@@ -614,7 +614,7 @@
#: Remoting.xml:253
#, no-c-format
msgid "Setting and reading the Conversation ID"
-msgstr ""
+msgstr "Impostazione e lettura dell'ID di conversazione"
#. Tag: para
#: Remoting.xml:256
@@ -680,7 +680,7 @@
#: Remoting.xml:301
#, no-c-format
msgid "Working with Data types"
-msgstr ""
+msgstr "Lavorare con i tipi di dati"
#. Tag: title
#: Remoting.xml:304
@@ -912,7 +912,7 @@
#: Remoting.xml:428
#, no-c-format
msgid "Or configure it via components.xml:"
-msgstr ""
+msgstr "O lo si configuri via components.xml:"
#. Tag: programlisting
#: Remoting.xml:430
@@ -1000,7 +1000,7 @@
#: Remoting.xml:473
#, no-c-format
msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
-msgstr ""
+msgstr "Seam.Remoting.loadingMessage = \"Loading...\";"
#. Tag: title
#: Remoting.xml:477
@@ -1022,6 +1022,9 @@
"Seam.Remoting.displayLoadingMessage = function() {};\n"
"Seam.Remoting.hideLoadingMessage = function() {};"
msgstr ""
+"// non mostrare l'indicatore di caricamento\n"
+"Seam.Remoting.displayLoadingMessage = function() {};\n"
+"Seam.Remoting.hideLoadingMessage = function() {};"
#. Tag: title
#: Remoting.xml:487
15 years, 11 months
Seam SVN: r10016 - trunk/doc/Seam_Reference_Guide/en-US.
by seam-commits@lists.jboss.org
Author: nico.ben
Date: 2009-02-06 12:43:34 -0500 (Fri, 06 Feb 2009)
New Revision: 10016
Modified:
trunk/doc/Seam_Reference_Guide/en-US/Mail.xml
Log:
corrected error
Modified: trunk/doc/Seam_Reference_Guide/en-US/Mail.xml
===================================================================
--- trunk/doc/Seam_Reference_Guide/en-US/Mail.xml 2009-02-06 15:51:29 UTC (rev 10015)
+++ trunk/doc/Seam_Reference_Guide/en-US/Mail.xml 2009-02-06 17:43:34 UTC (rev 10016)
@@ -733,7 +733,7 @@
If this tag contains a <literal><p:document></literal>
tag, the document described will be generated and
attached to the email. A <literal>fileName</literal>
- should be specfied.
+ should be specified.
</para>
</listitem>
<listitem>
15 years, 11 months
Seam SVN: r10015 - trunk/build.
by seam-commits@lists.jboss.org
Author: manaRH
Date: 2009-02-06 10:51:29 -0500 (Fri, 06 Feb 2009)
New Revision: 10015
Modified:
trunk/build/ui.pom.xml
Log:
JBSEAM-3894 - added emma dependency to fix the hudson job
Modified: trunk/build/ui.pom.xml
===================================================================
--- trunk/build/ui.pom.xml 2009-02-06 10:37:11 UTC (rev 10014)
+++ trunk/build/ui.pom.xml 2009-02-06 15:51:29 UTC (rev 10015)
@@ -195,6 +195,13 @@
</exclusion>
</exclusions>
</dependency>
+
+ <dependency>
+ <groupId>emma</groupId>
+ <artifactId>emma</artifactId>
+ <version>2.0.5312</version>
+ <scope>optional</scope>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
15 years, 12 months
Seam SVN: r10014 - in trunk: src/test/ftest and 12 other directories.
by seam-commits@lists.jboss.org
Author: jharting
Date: 2009-02-06 05:37:11 -0500 (Fri, 06 Feb 2009)
New Revision: 10014
Added:
trunk/src/test/ftest/examples/jee5/
trunk/src/test/ftest/examples/jee5/booking/
trunk/src/test/ftest/examples/jee5/booking/build.xml
trunk/src/test/ftest/examples/jee5/booking/jboss.xml
trunk/src/test/ftest/examples/jee5/booking/src/
trunk/src/test/ftest/examples/jee5/booking/src/org/
trunk/src/test/ftest/examples/jee5/booking/src/org/jboss/
trunk/src/test/ftest/examples/jee5/booking/src/org/jboss/seam/
trunk/src/test/ftest/examples/jee5/booking/src/org/jboss/seam/example/
trunk/src/test/ftest/examples/jee5/booking/src/org/jboss/seam/example/jee5/
trunk/src/test/ftest/examples/jee5/booking/src/org/jboss/seam/example/jee5/booking/
trunk/src/test/ftest/examples/jee5/booking/src/org/jboss/seam/example/jee5/booking/test/
trunk/src/test/ftest/examples/jee5/booking/src/org/jboss/seam/example/jee5/booking/test/selenium/
trunk/src/test/ftest/examples/jee5/booking/src/org/jboss/seam/example/jee5/booking/test/selenium/jee5-booking.properties
Modified:
trunk/examples/jee5/booking/view/book.xhtml
trunk/examples/jee5/booking/view/conversations.xhtml
trunk/examples/jee5/booking/view/main.xhtml
trunk/examples/jee5/booking/view/password.xhtml
trunk/examples/jee5/booking/view/register.xhtml
trunk/src/test/ftest/build.xml
trunk/src/test/ftest/readme.txt
Log:
JBSEAM-3760
Modified: trunk/examples/jee5/booking/view/book.xhtml
===================================================================
--- trunk/examples/jee5/booking/view/book.xhtml 2009-02-05 17:03:47 UTC (rev 10013)
+++ trunk/examples/jee5/booking/view/book.xhtml 2009-02-06 10:37:11 UTC (rev 10014)
@@ -53,7 +53,7 @@
</f:facet>
<f:facet name="afterInvalidField">
<s:div styleClass="errors">
- <s:message/>
+ <s:message id="message"/>
</s:div>
</f:facet>
@@ -77,7 +77,7 @@
<div class="entry">
<div class="label"><h:outputLabel for="beds">Room Preference:</h:outputLabel></div>
<div class="input">
- <s:decorate>
+ <s:decorate id="bedsDecorate">
<h:selectOneMenu id="beds" value="#{booking.beds}">
<f:selectItem itemLabel="One king-size bed" itemValue="1"/>
<f:selectItem itemLabel="Two double beds" itemValue="2"/>
@@ -90,7 +90,7 @@
<div class="entry">
<div class="label"><h:outputLabel for="smoking">Smoking Preference:</h:outputLabel></div>
<div id="radio" class="input">
- <s:decorate>
+ <s:decorate id="smokingDecorate">
<h:selectOneRadio id="smoking" value="#{booking.smoking}" layout="pageDirection">
<f:selectItem itemLabel="Smoking" itemValue="true"/>
<f:selectItem itemLabel="Non Smoking" itemValue="false"/>
Modified: trunk/examples/jee5/booking/view/conversations.xhtml
===================================================================
--- trunk/examples/jee5/booking/view/conversations.xhtml 2009-02-05 17:03:47 UTC (rev 10013)
+++ trunk/examples/jee5/booking/view/conversations.xhtml 2009-02-06 10:37:11 UTC (rev 10014)
@@ -13,19 +13,19 @@
</div>
<div class="section">
- <h:form>
- <h:dataTable value="#{conversationList}" var="entry">
- <h:column>
- <h:commandLink action="#{entry.select}" value="#{entry.description}"/>
+ <h:form id="ConversationListForm">
+ <h:dataTable id="ConversationListDataTable" value="#{conversationList}" var="entry">
+ <h:column id="column1">
+ <h:commandLink id="EntryDescriptionLink" action="#{entry.select}" value="#{entry.description}"/>
 
- <h:outputText value="[current]" rendered="#{entry.current}"/>
+ <h:outputText id="CurrentEntry" value="[current]" rendered="#{entry.current}"/>
</h:column>
- <h:column>
- <h:outputText value="#{entry.startDatetime}">
+ <h:column id="column2">
+ <h:outputText id="EntryStartDateTime" value="#{entry.startDatetime}">
<s:convertDateTime type="time" pattern="hh:mm"/>
</h:outputText>
-
- <h:outputText value="#{entry.lastDatetime}">
+ <h:outputText id="EntryLastDateTime" value="#{entry.lastDatetime}">
<s:convertDateTime type="time" pattern="hh:mm"/>
</h:outputText>
</h:column>
Modified: trunk/examples/jee5/booking/view/main.xhtml
===================================================================
--- trunk/examples/jee5/booking/view/main.xhtml 2009-02-05 17:03:47 UTC (rev 10013)
+++ trunk/examples/jee5/booking/view/main.xhtml 2009-02-06 10:37:11 UTC (rev 10014)
@@ -14,7 +14,7 @@
<h:form id="main">
<span class="errors">
- <h:messages globalOnly="true"/>
+ <h:messages id="messages" globalOnly="true"/>
</span>
<h1>Search Hotels</h1>
@@ -29,7 +29,7 @@
 
<a:status>
<f:facet name="start">
- <h:graphicImage value="/img/spinner.gif"/>
+ <h:graphicImage id="SpinnerGif" value="/img/spinner.gif"/>
</f:facet>
</a:status>
<br/>
@@ -46,7 +46,7 @@
<a:outputPanel id="searchResults">
<div class="section">
- <h:outputText value="No Hotels Found" rendered="#{hotels != null and hotels.rowCount==0}"/>
+ <h:outputText id="NoHotelsFoundMessage" value="No Hotels Found" rendered="#{hotels != null and hotels.rowCount==0}"/>
<h:dataTable id="hotels" value="#{hotels}" var="hot" rendered="#{hotels.rowCount>0}">
<h:column>
<f:facet name="header">Name</f:facet>
Modified: trunk/examples/jee5/booking/view/password.xhtml
===================================================================
--- trunk/examples/jee5/booking/view/password.xhtml 2009-02-05 17:03:47 UTC (rev 10013)
+++ trunk/examples/jee5/booking/view/password.xhtml 2009-02-06 10:37:11 UTC (rev 10014)
@@ -19,7 +19,7 @@
</f:facet>
<f:facet name="afterInvalidField">
<s:div styleClass="errors">
- <s:message/>
+ <s:message id="message"/>
</s:div>
</f:facet>
@@ -28,7 +28,7 @@
<div class="entry">
<div class="label"><h:outputLabel for="password">Password:</h:outputLabel></div>
<div class="input">
- <s:decorate>
+ <s:decorate id="PasswordDecorate">
<h:inputSecret id="password" value="#{user.password}" required="true">
<s:validate/>
</h:inputSecret>
@@ -39,14 +39,14 @@
<div class="entry">
<div class="label"><h:outputLabel for="verify">Verify:</h:outputLabel></div>
<div class="input">
- <s:decorate>
+ <s:decorate id="VerifyDecorate">
<h:inputSecret id="verify" value="#{changePassword.verify}" required="true"/>
</s:decorate>
</div>
</div>
<div class="entry errors">
- <h:messages globalOnly="true"/>
+ <h:messages id="messages" globalOnly="true"/>
</div>
<div class="entry">
Modified: trunk/examples/jee5/booking/view/register.xhtml
===================================================================
--- trunk/examples/jee5/booking/view/register.xhtml 2009-02-05 17:03:47 UTC (rev 10013)
+++ trunk/examples/jee5/booking/view/register.xhtml 2009-02-06 10:37:11 UTC (rev 10014)
@@ -34,7 +34,7 @@
</f:facet>
<f:facet name="afterInvalidField">
<s:div styleClass="errors">
- <s:message/>
+ <s:message id="message"/>
</s:div>
</f:facet>
@@ -63,7 +63,7 @@
<div class="entry">
<div class="label"><h:outputLabel for="password">Password:</h:outputLabel></div>
<div class="input">
- <s:decorate>
+ <s:decorate id="passwordDecorate">
<h:inputSecret id="password" value="#{user.password}" required="true"/>
</s:decorate>
</div>
@@ -72,7 +72,7 @@
<div class="entry">
<div class="label"><h:outputLabel for="verify">Verify Password:</h:outputLabel></div>
<div class="input">
- <s:decorate>
+ <s:decorate id="verifyDecorate">
<h:inputSecret id="verify" value="#{register.verify}" required="true"/>
</s:decorate>
</div>
@@ -81,7 +81,7 @@
</s:validateAll>
<div class="entry errors">
- <h:messages globalOnly="true"/>
+ <h:messages id="messages" globalOnly="true"/>
</div>
<div class="entry">
Modified: trunk/src/test/ftest/build.xml
===================================================================
--- trunk/src/test/ftest/build.xml 2009-02-05 17:03:47 UTC (rev 10013)
+++ trunk/src/test/ftest/build.xml 2009-02-06 10:37:11 UTC (rev 10014)
@@ -139,6 +139,7 @@
<cleanexample name="groovybooking" />
<cleanexample name="hibernate" />
<cleanexample name="icefaces" />
+ <cleanexample name="jee5/booking" />
<cleanexample name="jpa" />
<cleanexample name="messages" />
<cleanexample name="nestedbooking" />
@@ -154,6 +155,7 @@
</target>
<target name="undeployall">
+ <property name="container" value="jboss" />
<undeployexample name="blog" />
<undeployexample name="booking" />
<undeployexample name="drools" />
@@ -162,6 +164,7 @@
<undeployexample name="groovybooking" />
<undeployexample name="hibernate" />
<undeployexample name="icefaces" />
+ <undeployexample name="jee5/booking" />
<undeployexample name="jpa" />
<undeployexample name="messages" />
<undeployexample name="nestedbooking" />
@@ -223,9 +226,7 @@
<macrodef name="undeployexample">
<attribute name="name" />
<attribute name="path" default="examples/@{name}" />
- <attribute name="message" default="Undeploying @{name} example from JBoss" />
<sequential>
- <echo>@{message}</echo>
<callExample path="@{path}" target="undeploy.example.jboss" />
</sequential>
</macrodef>
Added: trunk/src/test/ftest/examples/jee5/booking/build.xml
===================================================================
--- trunk/src/test/ftest/examples/jee5/booking/build.xml (rev 0)
+++ trunk/src/test/ftest/examples/jee5/booking/build.xml 2009-02-06 10:37:11 UTC (rev 10014)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<project name="booking.ftest.build" basedir="." default="build">
+ <property name="example.name" value="jee5/booking"/>
+ <property name="jboss.example.ready.check.url" value="seam-jee5-booking/home.seam"/>
+
+ <import file="../../build.xml" />
+</project>
Property changes on: trunk/src/test/ftest/examples/jee5/booking/build.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/test/ftest/examples/jee5/booking/jboss.xml
===================================================================
--- trunk/src/test/ftest/examples/jee5/booking/jboss.xml (rev 0)
+++ trunk/src/test/ftest/examples/jee5/booking/jboss.xml 2009-02-06 10:37:11 UTC (rev 10014)
@@ -0,0 +1,40 @@
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Booking example" verbose="2" parallel="false">
+ <test name="jee5-booking_jboss">
+ <parameter name="PROPERTY_FILE" value="/org/jboss/seam/example/jee5/booking/test/selenium/jee5-booking.properties" />
+ <parameter name="CONTEXT_PATH" value="/seam-jee5-booking" />
+ <classes>
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.RegistrationTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.ChangePasswordTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.BackButtonTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.SimpleBookingTest" />
+ <class
+ name="org.jboss.seam.example.common.test.booking.selenium.ConversationTest" />
+ </classes>
+ </test>
+</suite>
Property changes on: trunk/src/test/ftest/examples/jee5/booking/jboss.xml
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Added: trunk/src/test/ftest/examples/jee5/booking/src/org/jboss/seam/example/jee5/booking/test/selenium/jee5-booking.properties
===================================================================
--- trunk/src/test/ftest/examples/jee5/booking/src/org/jboss/seam/example/jee5/booking/test/selenium/jee5-booking.properties (rev 0)
+++ trunk/src/test/ftest/examples/jee5/booking/src/org/jboss/seam/example/jee5/booking/test/selenium/jee5-booking.properties 2009-02-06 10:37:11 UTC (rev 10014)
@@ -0,0 +1,84 @@
+ #
+ # JBoss, Home of Professional Open Source
+ # Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ # by the @authors tag. See the copyright.txt in the distribution for a
+ # full listing of individual contributors.
+ #
+ # This is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU Lesser General Public License as
+ # published by the Free Software Foundation; either version 2.1 of
+ # the License, or (at your option) any later version.
+ #
+ # This software is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ # Lesser General Public License for more details.
+ #
+ # You should have received a copy of the GNU Lesser General Public
+ # License along with this software; if not, write to the Free
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ #
+HOME_PAGE /home.seam
+MAIN_PAGE /main.seam
+PAGE_TITLE JBoss Suites: Seam Framework
+LOGIN_USERNAME_FIELD id=login:username
+LOGIN_PASSWORD_FIELD id=login:password
+LOGIN_SUBMIT id=login:login
+LOGOUT id=logout
+PASSWORD_UPDATED_MESSAGE Password updated
+PASSWORD_REENTER_MESSAGE verify
+PASSWORD_VALUE_REQUIRED_MESSAGE //span[@id = 'setpassword:message']
+PASSWORD_LENGTH_MESSAGE length must be between
+PASSWORD_PASSWORD id=setpassword:PasswordDecorate:password
+PASSWORD_VERIFY id=setpassword:VerifyDecorate:verify
+PASSWORD_SUBMIT id=setpassword:change
+SETTINGS id=settings
+SEARCH_STRING_FIELD id=main:searchString
+SEARCH_SUBMIT id=main:findHotels
+NO_HOTELS_FOUND id=NoHotelsFoundMessage
+SEARCH_RESULT_TABLE xpath=//table[@id = 'hotels']/tbody
+SEARCH_RESULT_TABLE_FIRST_ROW_LINK id=hotels:0:viewHotel
+BOOKING_BOOK id=hotel:bookHotel
+BOOKING_CANCEL id=hotel:cancel
+HOTEL_BED_FIELD id=booking:bedsDecorate:beds
+HOTEL_BED_FIELD_SELECT_CRITERIA value=
+HOTEL_CHECKIN_DATE_FIELD id=booking:checkinDateDecorate:checkinDateInputDate
+HOTEL_CHECKIN_DATE_MESSAGE id=booking:message
+HOTEL_CHECKOUT_DATE_FIELD id=booking:checkoutDateDecorate:checkoutDateInputDate
+HOTEL_CHECKOUT_DATE_MESSAGE id=booking:message
+HOTEL_SMOKING_1 id=booking:smokingDecorate:smoking:0
+HOTEL_SMOKING_2 id=booking:smokingDecorate:smoking:1
+HOTEL_CREDIT_CARD id=booking:creditCardDecorate:creditCard
+HOTEL_CREDIT_CARD_NAME id=booking:creditCardNameDecorate:creditCardName
+HOTEL_PROCEED id=booking:proceed
+HOTEL_CANCEL id=booking:cancel
+HOTEL_CONFIRM id=confirm:confirm
+HOTEL_MESSAGE xpath=//ul[@id='main:messages']/li
+REGISTRATION id=login:register
+REGISTRATION_USERNAME id=register:usernameDecorate:username
+REGISTRATION_USERNAME_MESSAGE id=register:usernameDecorate:message
+REGISTRATION_NAME id=register:nameDecorate:name
+REGISTRATION_NAME_MESSAGE id=register:nameDecorate:message
+REGISTRATION_PASSWORD id=register:passwordDecorate:password
+REGISTRATION_PASSWORD_MESSAGE id=register:passwordDecorate:message
+REGISTRATION_VERIFY id=register:verifyDecorate:verify
+REGISTRATION_VERIFY_MESSAGE id=register:verifyDecorate:message
+REGISTRATION_SUBMIT id=register:register
+REGISTRATION_REENTER_MESSAGE verify
+REGISTRATION_LENGTH_MESSAGE length must be between
+REGISTRATION_SUCCESSFUL_MESSAGE Successfully registered as {0}
+REGISTRATION_USER_EXISTS_MESSAGE Username {0} already exists
+NOT_LOGGED_IN_MESSAGE Please log in first
+CONVERSATION_TIMEOUT_MESSAGE The conversation ended, timed out or was processing another request
+BOOKING_TABLE_ITEM xpath\=//table[@id\="bookings\:bookings"]/tbody/tr[normalize-space(td[6]/text()) \= "{0}"][normalize-space(td[1]/text()) \= "{1}"]
+BOOKING_TABLE_ITEM_LINK xpath\=//table[@id\="bookings\:bookings"]/tbody/tr[normalize-space(td[6]/text()) \= "{0}"][normalize-space(td[1]/text()) \= "{1}"]/td[7]/a
+BOOKING_CANCELLED_MESSAGE Booking cancelled for confirmation number {0}
+BOOKING_CONFIRMATION_MESSAGE Thank you, {0}, your confimation number for {1} is \\d+
+BOOKING_INVALID_DATE_MESSAGE1 Check out date must be later than check in date
+BOOKING_INVALID_DATE_MESSAGE2 Check in date must be a future date
+WORKSPACE_BOOKING_TEXT Book hotel: {0}
+WORKSPACE_VIEW_TEXT View hotel: {0}
+WORKSPACE_TABLE_LINK_BY_ID id=ConversationListForm:ConversationListDataTable:{0}:EntryDescriptionLink
+WORKSPACE_TABLE_ROW_COUNT = //table[@id='ConversationListForm:ConversationListDataTable']/tbody/tr
+SPINNER id\=main\:SpinnerGif
\ No newline at end of file
Property changes on: trunk/src/test/ftest/examples/jee5/booking/src/org/jboss/seam/example/jee5/booking/test/selenium/jee5-booking.properties
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:mime-type
+ text/plain
Modified: trunk/src/test/ftest/readme.txt
===================================================================
--- trunk/src/test/ftest/readme.txt 2009-02-05 17:03:47 UTC (rev 10013)
+++ trunk/src/test/ftest/readme.txt 2009-02-06 10:37:11 UTC (rev 10014)
@@ -38,6 +38,12 @@
* "ant test -Dtest=example_name" for JBoss AS
* "ant test.jboss-embedded -Dtest=example_name" for Tomcat + JBoss Embedded
* "ant test.tomcat6 -Dtest=example_name" for Tomcat6
+
+* Note that testall suite is adjusted for JBoss AS 4.2
+* If you are testing examples on JBoss AS 5 you can use it but:
+ * jpa example tests will be skipped - you need to deploy example using "jboss5" target
+ and run selenium.test in /src/test/ftest/examples/jpa
+ * after the testall suite run tests for jee5-booking example with "ant test -Dtest=jee5/booking" in /src/test/ftest
Known Limitations:
---------------------
15 years, 12 months
Seam SVN: r10013 - trunk/src/main/org/jboss/seam/security/openid.
by seam-commits@lists.jboss.org
Author: norman.richards(a)jboss.com
Date: 2009-02-05 12:03:47 -0500 (Thu, 05 Feb 2009)
New Revision: 10013
Modified:
trunk/src/main/org/jboss/seam/security/openid/OpenId.java
Log:
JBSEAM-3891
Modified: trunk/src/main/org/jboss/seam/security/openid/OpenId.java
===================================================================
--- trunk/src/main/org/jboss/seam/security/openid/OpenId.java 2009-02-05 16:10:23 UTC (rev 10012)
+++ trunk/src/main/org/jboss/seam/security/openid/OpenId.java 2009-02-05 17:03:47 UTC (rev 10013)
@@ -2,6 +2,8 @@
import java.io.IOException;
import java.io.Serializable;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.util.List;
import javax.faces.context.ExternalContext;
@@ -65,12 +67,20 @@
}
- public String returnToUrl() {
+ public String returnToUrl() {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
- String returnToUrl = "http://" + request.getServerName() + ":" + request.getServerPort() +
- context.getApplication().getViewHandler().getActionURL(context, "/openid.xhtml");
- return returnToUrl;
+
+ try {
+ URL returnToUrl = new URL("http",
+ request.getServerName(),
+ request.getServerPort(),
+ context.getApplication().getViewHandler().getActionURL(context, "/openid.xhtml"));
+
+ return returnToUrl.toExternalForm();
+ } catch (MalformedURLException e) {
+ throw new RuntimeException(e);
+ }
}
public void login() throws IOException {
@@ -173,16 +183,16 @@
// examine the verification result and extract the verified identifier
Identifier verified = verification.getVerifiedId();
if (verified != null) {
- AuthSuccess authSuccess =
- (AuthSuccess) verification.getAuthResponse();
+// AuthSuccess authSuccess =
+// (AuthSuccess) verification.getAuthResponse();
- if (authSuccess.hasExtension(AxMessage.OPENID_NS_AX)) {
- FetchResponse fetchResp = (FetchResponse) authSuccess
- .getExtension(AxMessage.OPENID_NS_AX);
-
- List emails = fetchResp.getAttributeValues("email");
- String email = (String) emails.get(0);
- }
+// if (authSuccess.hasExtension(AxMessage.OPENID_NS_AX)) {
+// FetchResponse fetchResp = (FetchResponse) authSuccess
+// .getExtension(AxMessage.OPENID_NS_AX);
+//
+// List emails = fetchResp.getAttributeValues("email");
+// String email = (String) emails.get(0);
+// }
return verified.getIdentifier();
}
15 years, 12 months
Seam SVN: r10012 - in trunk/examples/jee5: booking/resources/META-INF and 1 other directory.
by seam-commits@lists.jboss.org
Author: norman.richards(a)jboss.com
Date: 2009-02-05 11:10:23 -0500 (Thu, 05 Feb 2009)
New Revision: 10012
Modified:
trunk/examples/jee5/booking/resources/META-INF/persistence.xml
trunk/examples/jee5/readme.txt
Log:
JBSEAM-3820
Modified: trunk/examples/jee5/booking/resources/META-INF/persistence.xml
===================================================================
--- trunk/examples/jee5/booking/resources/META-INF/persistence.xml 2009-02-05 14:11:37 UTC (rev 10011)
+++ trunk/examples/jee5/booking/resources/META-INF/persistence.xml 2009-02-05 16:10:23 UTC (rev 10012)
@@ -5,8 +5,11 @@
version="1.0">
<persistence-unit name="bookingDatabase">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
- <!-- Change to java:/DefaultDS when deploying to JBoss AS 5 -->
+ <!-- use this data source name for Glassfish -->
+ <!--
<jta-data-source>jdbc/__default</jta-data-source>
+ -->
+ <jta-data-source>java:/DefaultDS</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
<property name="hibernate.show_sql" value="true"/>
Modified: trunk/examples/jee5/readme.txt
===================================================================
--- trunk/examples/jee5/readme.txt 2009-02-05 14:11:37 UTC (rev 10011)
+++ trunk/examples/jee5/readme.txt 2009-02-05 16:10:23 UTC (rev 10012)
@@ -10,29 +10,34 @@
GlassFish V2
------------
-1. Build the demo app by running ANT. The build target is
- "dist/jboss-seam-jee5.ear"
+1. Modify the following files in the project.
-2. Download GlassFish V2 Final Build
+ * resources/META-INF/persistence.xml: Change the jta-persistence-provider to the commented
+ out Glassfish property
-3. Install it: java -Xmx256m -jar glassfish-installer-xxx.jar
+2. Build the demo app by running Ant. The build target is
+ "dist/jboss-seam-jee5.ear"
-4. Setup glassfish: cd glassfish; ant -f setup.xml;
+3. Download GlassFish V2 Final Build
-5. Start the GlassFish server: $GLASSFISH_HOME/bin/asadmin start-domain domain1
+4. Install it: java -Xmx256m -jar glassfish-installer-xxx.jar
-6. Start the embedded JavaDB: $GLASSFISH_HOME/bin/asadmin start-database
+5. Setup glassfish: cd glassfish; ant -f setup.xml;
-7. Load the admin console: http://localhost:4848/
+6. Start the GlassFish server: $GLASSFISH_HOME/bin/asadmin start-domain domain1
-8. Login using username/password: admin / adminadmin
+7. Start the embedded JavaDB: $GLASSFISH_HOME/bin/asadmin start-database
-9. Deploy the "Enterprise Application" in the admin console
+8. Load the admin console: http://localhost:4848/
+
+9. Login using username/password: admin / adminadmin
+
+10. Deploy the "Enterprise Application" in the admin console
or using the command $GLASSFISH_HOME/bin/asadmin deploy dist/jboss-seam-jee5.ear
-10. Checkout the app at: http://localhost:8080/seam-jee5/
+11. Checkout the app at: http://localhost:8080/seam-jee5/
-11. Stop the server and database:
+12. Stop the server and database:
$GLASSFISH_HOME/bin/asadmin stop-domain domain1; $GLASSFISH_HOME/bin/asadmin stop-database
@@ -42,8 +47,7 @@
1. Modify the following files in the project.
* build.xml: Un-comment the OC4J-related libraries
- * resources/META-INF/persistence.xml: Comment out the GlassFish properties
- and un-comment the OC4J properties
+ * resources/META-INF/persistence.xml: un-comment the OC4J properties
2. Build the demo app by running ANT. The build target is
"dist/jboss-seam-jee5.ear"
15 years, 12 months
Seam SVN: r10011 - trunk/build.
by seam-commits@lists.jboss.org
Author: manaRH
Date: 2009-02-05 09:11:37 -0500 (Thu, 05 Feb 2009)
New Revision: 10011
Modified:
trunk/build/root.pom.xml
Log:
JBSEAM-3894 - changed version for RF CDK
Modified: trunk/build/root.pom.xml
===================================================================
--- trunk/build/root.pom.xml 2009-02-05 01:29:46 UTC (rev 10010)
+++ trunk/build/root.pom.xml 2009-02-05 14:11:37 UTC (rev 10011)
@@ -1294,7 +1294,7 @@
<plugin>
<groupId>org.richfaces.cdk</groupId>
<artifactId>maven-cdk-plugin</artifactId>
- <version>3.2.1.CR4</version>
+ <version>${version.richfaces}</version>
</plugin>
<!-- Packaging -->
15 years, 12 months