Seam SVN: r11704 - in branches/enterprise/JBPAPP_4_2_CP01/src: test/misc/org/jboss/seam/test and 1 other directory.
by seam-commits@lists.jboss.org
Author: manaRH
Date: 2009-11-30 09:23:32 -0500 (Mon, 30 Nov 2009)
New Revision: 11704
Modified:
branches/enterprise/JBPAPP_4_2_CP01/src/remoting/org/jboss/seam/remoting/wrapper/MapWrapper.java
branches/enterprise/JBPAPP_4_2_CP01/src/test/misc/org/jboss/seam/test/RemotingTest.java
Log:
JBPAPP-3176
Modified: branches/enterprise/JBPAPP_4_2_CP01/src/remoting/org/jboss/seam/remoting/wrapper/MapWrapper.java
===================================================================
--- branches/enterprise/JBPAPP_4_2_CP01/src/remoting/org/jboss/seam/remoting/wrapper/MapWrapper.java 2009-11-30 03:55:25 UTC (rev 11703)
+++ branches/enterprise/JBPAPP_4_2_CP01/src/remoting/org/jboss/seam/remoting/wrapper/MapWrapper.java 2009-11-30 14:23:32 UTC (rev 11704)
@@ -54,6 +54,12 @@
public Object convert(Type type)
throws ConversionException
{
+
+ if (context == null)
+ {
+ throw new IllegalStateException("No call context has been set");
+ }
+
Class typeClass = null;
Type keyType = null;
Type valueType = null;
@@ -108,9 +114,8 @@
Element keyElement = (Element) e.element("k").elementIterator().next();
Element valueElement = (Element) e.element("v").elementIterator().next();
- ((Map) value).put(
- context.createWrapperFromElement(keyElement).convert(keyType),
- context.createWrapperFromElement(valueElement).convert(valueType));
+ ((Map) value).put(context.createWrapperFromElement(keyElement).convert(keyType),
+ context.createWrapperFromElement(valueElement).convert(valueType));
}
return value;
Modified: branches/enterprise/JBPAPP_4_2_CP01/src/test/misc/org/jboss/seam/test/RemotingTest.java
===================================================================
--- branches/enterprise/JBPAPP_4_2_CP01/src/test/misc/org/jboss/seam/test/RemotingTest.java 2009-11-30 03:55:25 UTC (rev 11703)
+++ branches/enterprise/JBPAPP_4_2_CP01/src/test/misc/org/jboss/seam/test/RemotingTest.java 2009-11-30 14:23:32 UTC (rev 11704)
@@ -8,6 +8,7 @@
import static org.testng.Assert.assertEquals;
+import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
@@ -597,13 +598,24 @@
{
}
- byte[] expected = ("<map><element><k><str>foo</str></k><v><str>aaaaa</str></v></element>"
- + "<element><k><str>bar</str></k><v><str>zzzzz</str></v></element></map>")
- .getBytes();
ByteArrayOutputStream out = new ByteArrayOutputStream();
wrapper.marshal(out);
- assertEquals(expected, out.toByteArray());
-
+
+ SAXReader xmlReader = new SAXReader();
+ Document doc = xmlReader.read( new ByteArrayInputStream(out.toByteArray()) );
+
+ Element root = doc.getRootElement();
+
+ MapWrapper other = new MapWrapper();
+ other.setCallContext(new CallContext());
+ other.setElement(root);
+
+ Map otherMap = (Map) other.convert(Map.class);
+ for (Object key : otherMap.keySet())
+ {
+ assert otherMap.get(key).equals(m.get(key));
+ }
+
// test conversionScore() method
assert ConversionScore.exact == wrapper.conversionScore(Map.class);
assert ConversionScore.exact == wrapper.conversionScore(HashMap.class);
15 years
Seam SVN: r11703 - in modules/trunk/remoting: examples/helloworld/src/main/webapp and 4 other directories.
by seam-commits@lists.jboss.org
Author: shane.bryzak(a)jboss.com
Date: 2009-11-29 22:55:25 -0500 (Sun, 29 Nov 2009)
New Revision: 11703
Added:
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/AnnotationParser.java
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/AnnotationParserConstants.java
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/AnnotationParserTokenManager.java
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/JavaCharStream.java
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/ParseException.java
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/Token.java
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/TokenMgrError.java
modules/trunk/remoting/src/main/javacc/
modules/trunk/remoting/src/main/javacc/AnnotationParser.jj
modules/trunk/remoting/src/main/javacc/readme.txt
Modified:
modules/trunk/remoting/examples/helloworld/src/main/java/org/jboss/seam/remoting/examples/helloworld/HelloAction.java
modules/trunk/remoting/examples/helloworld/src/main/java/org/jboss/seam/remoting/examples/helloworld/HelloQualifier.java
modules/trunk/remoting/examples/helloworld/src/main/webapp/helloworld.xhtml
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/Call.java
Log:
added annotation parsing stuff
Modified: modules/trunk/remoting/examples/helloworld/src/main/java/org/jboss/seam/remoting/examples/helloworld/HelloAction.java
===================================================================
--- modules/trunk/remoting/examples/helloworld/src/main/java/org/jboss/seam/remoting/examples/helloworld/HelloAction.java 2009-11-30 03:09:30 UTC (rev 11702)
+++ modules/trunk/remoting/examples/helloworld/src/main/java/org/jboss/seam/remoting/examples/helloworld/HelloAction.java 2009-11-30 03:55:25 UTC (rev 11703)
@@ -2,7 +2,7 @@
import org.jboss.seam.remoting.annotations.WebRemote;
-@HelloQualifier
+@HelloQualifier(foo = "abc")
public class HelloAction {
@WebRemote
public String sayHello(String name) {
Modified: modules/trunk/remoting/examples/helloworld/src/main/java/org/jboss/seam/remoting/examples/helloworld/HelloQualifier.java
===================================================================
--- modules/trunk/remoting/examples/helloworld/src/main/java/org/jboss/seam/remoting/examples/helloworld/HelloQualifier.java 2009-11-30 03:09:30 UTC (rev 11702)
+++ modules/trunk/remoting/examples/helloworld/src/main/java/org/jboss/seam/remoting/examples/helloworld/HelloQualifier.java 2009-11-30 03:55:25 UTC (rev 11703)
@@ -12,5 +12,5 @@
@Target(TYPE)
@Qualifier
public @interface HelloQualifier {
-
+ String foo() default "bar";
}
Modified: modules/trunk/remoting/examples/helloworld/src/main/webapp/helloworld.xhtml
===================================================================
--- modules/trunk/remoting/examples/helloworld/src/main/webapp/helloworld.xhtml 2009-11-30 03:09:30 UTC (rev 11702)
+++ modules/trunk/remoting/examples/helloworld/src/main/webapp/helloworld.xhtml 2009-11-30 03:55:25 UTC (rev 11703)
@@ -25,7 +25,7 @@
var name = prompt("What is your name?");
if (name == null) return;
var callback = function(result) { alert(result); };
- Seam.Component.create("org.jboss.seam.remoting.examples.helloworld.HelloAction", "org.jboss.seam.remoting.examples.helloworld.HelloQualifier").sayHello(name, callback);
+ Seam.Component.create("org.jboss.seam.remoting.examples.helloworld.HelloAction", "@org.jboss.seam.remoting.examples.helloworld.HelloQualifier(foo = \"abc\")").sayHello(name, callback);
}
</script>
Modified: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/Call.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/Call.java 2009-11-30 03:09:30 UTC (rev 11702)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/Call.java 2009-11-30 03:55:25 UTC (rev 11703)
@@ -62,6 +62,7 @@
/**
* Constructor.
*/
+ @SuppressWarnings("unchecked")
public Call(BeanManager beanManager, String id, String beanName,
String qualifiers, String methodName)
{
@@ -85,6 +86,7 @@
}
catch (ClassNotFoundException e)
{
+ // TODO improve this
e.printStackTrace();
}
}
Added: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/AnnotationParser.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/AnnotationParser.java (rev 0)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/AnnotationParser.java 2009-11-30 03:55:25 UTC (rev 11703)
@@ -0,0 +1,600 @@
+/* Generated By:JavaCC: Do not edit this line. AnnotationParser.java */
+package org.jboss.seam.remoting.annotationparser;
+
+import java.io.*;
+
+/**
+ * Grammar to parse Java 1.5 Annotations
+ * @author Shane Bryzak
+ */
+public class AnnotationParser implements AnnotationParserConstants {
+ public AnnotationParser(String fileName)
+ {
+ this(System.in);
+ try { ReInit(new FileInputStream(new File(fileName))); }
+ catch(Exception e) { e.printStackTrace(); }
+ }
+
+ public static void main(String args[]) {
+ AnnotationParser parser;
+ if (args.length == 0) {
+ System.out.println("AnnotationParser: Reading from standard input . . .");
+ parser = new AnnotationParser(System.in);
+ } else if (args.length == 1) {
+ System.out.println("AnnotationParser: Reading from file " + args[0] + " . . .");
+ try {
+ parser = new AnnotationParser(new java.io.FileInputStream(args[0]));
+ } catch (java.io.FileNotFoundException e) {
+ System.out.println("AnnotationParser: File " + args[0] + " not found.");
+ return;
+ }
+ } else {
+ System.out.println("AnnotationParser: Usage is one of:");
+ System.out.println(" java AnnotationParser < inputfile");
+ System.out.println("OR");
+ System.out.println(" java AnnotationParser inputfile");
+ return;
+ }
+ try {
+ parser.AnnotationsUnit();
+ System.out.println("AnnotationParser: Annotations parsed successfully.");
+ } catch (ParseException e) {
+ System.out.println(e.getMessage());
+ System.out.println("AnnotationParser: Encountered errors during parse.");
+ }
+ }
+
+/***********************************
+ * ANNOTATIONS GRAMMAR STARTS HERE *
+ ***********************************/
+
+/*
+ * Program structuring syntax follows.
+ */
+ final public void AnnotationsUnit() throws ParseException {
+ jj_consume_token(LPAREN);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case AT:
+ Annotation();
+ label_1:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ ;
+ break;
+ default:
+ break label_1;
+ }
+ jj_consume_token(COMMA);
+ Annotation();
+ }
+ break;
+ default:
+ ;
+ }
+ jj_consume_token(RPAREN);
+ }
+
+ final public void PrimitiveType() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case BOOLEAN:
+ jj_consume_token(BOOLEAN);
+ break;
+ case CHAR:
+ jj_consume_token(CHAR);
+ break;
+ case BYTE:
+ jj_consume_token(BYTE);
+ break;
+ case SHORT:
+ jj_consume_token(SHORT);
+ break;
+ case INT:
+ jj_consume_token(INT);
+ break;
+ case LONG:
+ jj_consume_token(LONG);
+ break;
+ case FLOAT:
+ jj_consume_token(FLOAT);
+ break;
+ case DOUBLE:
+ jj_consume_token(DOUBLE);
+ break;
+ default:
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ final public void Name() throws ParseException {
+ jj_consume_token(IDENTIFIER);
+ label_2:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DOT:
+ ;
+ break;
+ default:
+ break label_2;
+ }
+ jj_consume_token(DOT);
+ jj_consume_token(IDENTIFIER);
+ }
+ }
+
+ final public void Literal() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case INTEGER_LITERAL:
+ jj_consume_token(INTEGER_LITERAL);
+ break;
+ case FLOATING_POINT_LITERAL:
+ jj_consume_token(FLOATING_POINT_LITERAL);
+ break;
+ case CHARACTER_LITERAL:
+ jj_consume_token(CHARACTER_LITERAL);
+ break;
+ case STRING_LITERAL:
+ jj_consume_token(STRING_LITERAL);
+ break;
+ case FALSE:
+ case TRUE:
+ BooleanLiteral();
+ break;
+ case NULL:
+ NullLiteral();
+ break;
+ default:
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ final public void BooleanLiteral() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case TRUE:
+ jj_consume_token(TRUE);
+ break;
+ case FALSE:
+ jj_consume_token(FALSE);
+ break;
+ default:
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ final public void NullLiteral() throws ParseException {
+ jj_consume_token(NULL);
+ }
+
+/* Annotation syntax follows. */
+ final public void Annotation() throws ParseException {
+ if (jj_2_1(2147483647)) {
+ NormalAnnotation();
+ } else if (jj_2_2(2147483647)) {
+ SingleMemberAnnotation();
+ } else {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case AT:
+ MarkerAnnotation();
+ break;
+ default:
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ }
+
+ final public void NormalAnnotation() throws ParseException {
+ jj_consume_token(AT);
+ Name();
+ jj_consume_token(LPAREN);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case IDENTIFIER:
+ MemberValuePairs();
+ break;
+ default:
+ ;
+ }
+ jj_consume_token(RPAREN);
+ }
+
+ final public void MarkerAnnotation() throws ParseException {
+ jj_consume_token(AT);
+ Name();
+ }
+
+ final public void SingleMemberAnnotation() throws ParseException {
+ jj_consume_token(AT);
+ Name();
+ jj_consume_token(LPAREN);
+ MemberValue();
+ jj_consume_token(RPAREN);
+ }
+
+ final public void MemberValuePairs() throws ParseException {
+ MemberValuePair();
+ label_3:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ ;
+ break;
+ default:
+ break label_3;
+ }
+ jj_consume_token(COMMA);
+ MemberValuePair();
+ }
+ }
+
+ final public void MemberValuePair() throws ParseException {
+ jj_consume_token(IDENTIFIER);
+ jj_consume_token(ASSIGN);
+ MemberValue();
+ }
+
+ final public void MemberValue() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case AT:
+ Annotation();
+ break;
+ case LBRACE:
+ MemberValueArrayInitializer();
+ break;
+ case FALSE:
+ case NULL:
+ case TRUE:
+ case INTEGER_LITERAL:
+ case FLOATING_POINT_LITERAL:
+ case CHARACTER_LITERAL:
+ case STRING_LITERAL:
+ Literal();
+ break;
+ default:
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ final public void MemberValueArrayInitializer() throws ParseException {
+ jj_consume_token(LBRACE);
+ MemberValue();
+ label_4:
+ while (true) {
+ if (jj_2_3(2)) {
+ ;
+ } else {
+ break label_4;
+ }
+ jj_consume_token(COMMA);
+ MemberValue();
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ jj_consume_token(COMMA);
+ break;
+ default:
+ ;
+ }
+ jj_consume_token(RBRACE);
+ }
+
+ private boolean jj_2_1(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1(); }
+ catch(LookaheadSuccess ls) { return true; }
+ }
+
+ private boolean jj_2_2(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_2(); }
+ catch(LookaheadSuccess ls) { return true; }
+ }
+
+ private boolean jj_2_3(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_3(); }
+ catch(LookaheadSuccess ls) { return true; }
+ }
+
+ private boolean jj_3R_20() {
+ if (jj_scan_token(AT)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_18() {
+ if (jj_3R_22()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_21() {
+ if (jj_scan_token(AT)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_14() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_scan_token(66)) {
+ jj_scanpos = xsp;
+ if (jj_scan_token(70)) {
+ jj_scanpos = xsp;
+ if (jj_scan_token(72)) {
+ jj_scanpos = xsp;
+ if (jj_scan_token(73)) {
+ jj_scanpos = xsp;
+ if (jj_3R_18()) {
+ jj_scanpos = xsp;
+ if (jj_scan_token(45)) return true;
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ private boolean jj_3_2() {
+ if (jj_scan_token(AT)) return true;
+ if (jj_3R_5()) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_19() {
+ if (jj_scan_token(AT)) return true;
+ return false;
+ }
+
+ private boolean jj_3_1() {
+ if (jj_scan_token(AT)) return true;
+ if (jj_3R_5()) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_6()) {
+ jj_scanpos = xsp;
+ if (jj_scan_token(78)) return true;
+ }
+ return false;
+ }
+
+ private boolean jj_3R_8() {
+ if (jj_scan_token(DOT)) return true;
+ if (jj_scan_token(IDENTIFIER)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_5() {
+ if (jj_scan_token(IDENTIFIER)) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_8()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ private boolean jj_3R_17() {
+ if (jj_3R_21()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_13() {
+ if (jj_scan_token(LBRACE)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_16() {
+ if (jj_3R_20()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_12() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_15()) {
+ jj_scanpos = xsp;
+ if (jj_3R_16()) {
+ jj_scanpos = xsp;
+ if (jj_3R_17()) return true;
+ }
+ }
+ return false;
+ }
+
+ private boolean jj_3R_15() {
+ if (jj_3R_19()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_11() {
+ if (jj_3R_14()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_10() {
+ if (jj_3R_13()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_9() {
+ if (jj_3R_12()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_7() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_9()) {
+ jj_scanpos = xsp;
+ if (jj_3R_10()) {
+ jj_scanpos = xsp;
+ if (jj_3R_11()) return true;
+ }
+ }
+ return false;
+ }
+
+ private boolean jj_3R_22() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_scan_token(61)) {
+ jj_scanpos = xsp;
+ if (jj_scan_token(30)) return true;
+ }
+ return false;
+ }
+
+ private boolean jj_3R_6() {
+ if (jj_scan_token(IDENTIFIER)) return true;
+ if (jj_scan_token(ASSIGN)) return true;
+ return false;
+ }
+
+ private boolean jj_3_3() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_7()) return true;
+ return false;
+ }
+
+ /** Generated Token Manager. */
+ public AnnotationParserTokenManager token_source;
+ JavaCharStream jj_input_stream;
+ /** Current token. */
+ public Token token;
+ /** Next token. */
+ public Token jj_nt;
+ private int jj_ntk;
+ private Token jj_scanpos, jj_lastpos;
+ private int jj_la;
+
+ /** Constructor with InputStream. */
+ public AnnotationParser(java.io.InputStream stream) {
+ this(stream, null);
+ }
+ /** Constructor with InputStream and supplied encoding */
+ public AnnotationParser(java.io.InputStream stream, String encoding) {
+ try { jj_input_stream = new JavaCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+ token_source = new AnnotationParserTokenManager(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ }
+
+ /** Reinitialise. */
+ public void ReInit(java.io.InputStream stream) {
+ ReInit(stream, null);
+ }
+ /** Reinitialise. */
+ public void ReInit(java.io.InputStream stream, String encoding) {
+ try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+ token_source.ReInit(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ }
+
+ /** Constructor. */
+ public AnnotationParser(java.io.Reader stream) {
+ jj_input_stream = new JavaCharStream(stream, 1, 1);
+ token_source = new AnnotationParserTokenManager(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ }
+
+ /** Reinitialise. */
+ public void ReInit(java.io.Reader stream) {
+ jj_input_stream.ReInit(stream, 1, 1);
+ token_source.ReInit(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ }
+
+ /** Constructor with generated Token Manager. */
+ public AnnotationParser(AnnotationParserTokenManager tm) {
+ token_source = tm;
+ token = new Token();
+ jj_ntk = -1;
+ }
+
+ /** Reinitialise. */
+ public void ReInit(AnnotationParserTokenManager tm) {
+ token_source = tm;
+ token = new Token();
+ jj_ntk = -1;
+ }
+
+ private Token jj_consume_token(int kind) throws ParseException {
+ Token oldToken;
+ if ((oldToken = token).next != null) token = token.next;
+ else token = token.next = token_source.getNextToken();
+ jj_ntk = -1;
+ if (token.kind == kind) {
+ return token;
+ }
+ token = oldToken;
+ throw generateParseException();
+ }
+
+ static private final class LookaheadSuccess extends java.lang.Error { }
+ final private LookaheadSuccess jj_ls = new LookaheadSuccess();
+ private boolean jj_scan_token(int kind) {
+ if (jj_scanpos == jj_lastpos) {
+ jj_la--;
+ if (jj_scanpos.next == null) {
+ jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
+ } else {
+ jj_lastpos = jj_scanpos = jj_scanpos.next;
+ }
+ } else {
+ jj_scanpos = jj_scanpos.next;
+ }
+ if (jj_scanpos.kind != kind) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
+ return false;
+ }
+
+
+/** Get the next Token. */
+ final public Token getNextToken() {
+ if (token.next != null) token = token.next;
+ else token = token.next = token_source.getNextToken();
+ jj_ntk = -1;
+ return token;
+ }
+
+/** Get the specific Token. */
+ final public Token getToken(int index) {
+ Token t = token;
+ for (int i = 0; i < index; i++) {
+ if (t.next != null) t = t.next;
+ else t = t.next = token_source.getNextToken();
+ }
+ return t;
+ }
+
+ private int jj_ntk() {
+ if ((jj_nt=token.next) == null)
+ return (jj_ntk = (token.next=token_source.getNextToken()).kind);
+ else
+ return (jj_ntk = jj_nt.kind);
+ }
+
+ /** Generate ParseException. */
+ public ParseException generateParseException() {
+ Token errortok = token.next;
+ int line = errortok.beginLine, column = errortok.beginColumn;
+ String mess = (errortok.kind == 0) ? tokenImage[0] : errortok.image;
+ return new ParseException("Parse error at line " + line + ", column " + column + ". Encountered: " + mess);
+ }
+
+ /** Enable tracing. */
+ final public void enable_tracing() {
+ }
+
+ /** Disable tracing. */
+ final public void disable_tracing() {
+ }
+
+}
Added: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/AnnotationParserConstants.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/AnnotationParserConstants.java (rev 0)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/AnnotationParserConstants.java 2009-11-30 03:55:25 UTC (rev 11703)
@@ -0,0 +1,373 @@
+/* Generated By:JavaCC: Do not edit this line. AnnotationParserConstants.java */
+package org.jboss.seam.remoting.annotationparser;
+
+
+/**
+ * Token literal values and constants.
+ * Generated by org.javacc.parser.OtherFilesGen#start()
+ */
+public interface AnnotationParserConstants {
+
+ /** End of File. */
+ int EOF = 0;
+ /** RegularExpression Id. */
+ int SINGLE_LINE_COMMENT = 9;
+ /** RegularExpression Id. */
+ int FORMAL_COMMENT = 10;
+ /** RegularExpression Id. */
+ int MULTI_LINE_COMMENT = 11;
+ /** RegularExpression Id. */
+ int ABSTRACT = 13;
+ /** RegularExpression Id. */
+ int ASSERT = 14;
+ /** RegularExpression Id. */
+ int BOOLEAN = 15;
+ /** RegularExpression Id. */
+ int BREAK = 16;
+ /** RegularExpression Id. */
+ int BYTE = 17;
+ /** RegularExpression Id. */
+ int CASE = 18;
+ /** RegularExpression Id. */
+ int CATCH = 19;
+ /** RegularExpression Id. */
+ int CHAR = 20;
+ /** RegularExpression Id. */
+ int CLASS = 21;
+ /** RegularExpression Id. */
+ int CONST = 22;
+ /** RegularExpression Id. */
+ int CONTINUE = 23;
+ /** RegularExpression Id. */
+ int _DEFAULT = 24;
+ /** RegularExpression Id. */
+ int DO = 25;
+ /** RegularExpression Id. */
+ int DOUBLE = 26;
+ /** RegularExpression Id. */
+ int ELSE = 27;
+ /** RegularExpression Id. */
+ int ENUM = 28;
+ /** RegularExpression Id. */
+ int EXTENDS = 29;
+ /** RegularExpression Id. */
+ int FALSE = 30;
+ /** RegularExpression Id. */
+ int FINAL = 31;
+ /** RegularExpression Id. */
+ int FINALLY = 32;
+ /** RegularExpression Id. */
+ int FLOAT = 33;
+ /** RegularExpression Id. */
+ int FOR = 34;
+ /** RegularExpression Id. */
+ int GOTO = 35;
+ /** RegularExpression Id. */
+ int IF = 36;
+ /** RegularExpression Id. */
+ int IMPLEMENTS = 37;
+ /** RegularExpression Id. */
+ int IMPORT = 38;
+ /** RegularExpression Id. */
+ int INSTANCEOF = 39;
+ /** RegularExpression Id. */
+ int INT = 40;
+ /** RegularExpression Id. */
+ int INTERFACE = 41;
+ /** RegularExpression Id. */
+ int LONG = 42;
+ /** RegularExpression Id. */
+ int NATIVE = 43;
+ /** RegularExpression Id. */
+ int NEW = 44;
+ /** RegularExpression Id. */
+ int NULL = 45;
+ /** RegularExpression Id. */
+ int PACKAGE = 46;
+ /** RegularExpression Id. */
+ int PRIVATE = 47;
+ /** RegularExpression Id. */
+ int PROTECTED = 48;
+ /** RegularExpression Id. */
+ int PUBLIC = 49;
+ /** RegularExpression Id. */
+ int RETURN = 50;
+ /** RegularExpression Id. */
+ int SHORT = 51;
+ /** RegularExpression Id. */
+ int STATIC = 52;
+ /** RegularExpression Id. */
+ int STRICTFP = 53;
+ /** RegularExpression Id. */
+ int SUPER = 54;
+ /** RegularExpression Id. */
+ int SWITCH = 55;
+ /** RegularExpression Id. */
+ int SYNCHRONIZED = 56;
+ /** RegularExpression Id. */
+ int THIS = 57;
+ /** RegularExpression Id. */
+ int THROW = 58;
+ /** RegularExpression Id. */
+ int THROWS = 59;
+ /** RegularExpression Id. */
+ int TRANSIENT = 60;
+ /** RegularExpression Id. */
+ int TRUE = 61;
+ /** RegularExpression Id. */
+ int TRY = 62;
+ /** RegularExpression Id. */
+ int VOID = 63;
+ /** RegularExpression Id. */
+ int VOLATILE = 64;
+ /** RegularExpression Id. */
+ int WHILE = 65;
+ /** RegularExpression Id. */
+ int INTEGER_LITERAL = 66;
+ /** RegularExpression Id. */
+ int DECIMAL_LITERAL = 67;
+ /** RegularExpression Id. */
+ int HEX_LITERAL = 68;
+ /** RegularExpression Id. */
+ int OCTAL_LITERAL = 69;
+ /** RegularExpression Id. */
+ int FLOATING_POINT_LITERAL = 70;
+ /** RegularExpression Id. */
+ int EXPONENT = 71;
+ /** RegularExpression Id. */
+ int CHARACTER_LITERAL = 72;
+ /** RegularExpression Id. */
+ int STRING_LITERAL = 73;
+ /** RegularExpression Id. */
+ int IDENTIFIER = 74;
+ /** RegularExpression Id. */
+ int LETTER = 75;
+ /** RegularExpression Id. */
+ int DIGIT = 76;
+ /** RegularExpression Id. */
+ int LPAREN = 77;
+ /** RegularExpression Id. */
+ int RPAREN = 78;
+ /** RegularExpression Id. */
+ int LBRACE = 79;
+ /** RegularExpression Id. */
+ int RBRACE = 80;
+ /** RegularExpression Id. */
+ int LBRACKET = 81;
+ /** RegularExpression Id. */
+ int RBRACKET = 82;
+ /** RegularExpression Id. */
+ int SEMICOLON = 83;
+ /** RegularExpression Id. */
+ int COMMA = 84;
+ /** RegularExpression Id. */
+ int DOT = 85;
+ /** RegularExpression Id. */
+ int AT = 86;
+ /** RegularExpression Id. */
+ int ASSIGN = 87;
+ /** RegularExpression Id. */
+ int LT = 88;
+ /** RegularExpression Id. */
+ int BANG = 89;
+ /** RegularExpression Id. */
+ int TILDE = 90;
+ /** RegularExpression Id. */
+ int HOOK = 91;
+ /** RegularExpression Id. */
+ int COLON = 92;
+ /** RegularExpression Id. */
+ int EQ = 93;
+ /** RegularExpression Id. */
+ int LE = 94;
+ /** RegularExpression Id. */
+ int GE = 95;
+ /** RegularExpression Id. */
+ int NE = 96;
+ /** RegularExpression Id. */
+ int SC_OR = 97;
+ /** RegularExpression Id. */
+ int SC_AND = 98;
+ /** RegularExpression Id. */
+ int INCR = 99;
+ /** RegularExpression Id. */
+ int DECR = 100;
+ /** RegularExpression Id. */
+ int PLUS = 101;
+ /** RegularExpression Id. */
+ int MINUS = 102;
+ /** RegularExpression Id. */
+ int STAR = 103;
+ /** RegularExpression Id. */
+ int SLASH = 104;
+ /** RegularExpression Id. */
+ int BIT_AND = 105;
+ /** RegularExpression Id. */
+ int BIT_OR = 106;
+ /** RegularExpression Id. */
+ int XOR = 107;
+ /** RegularExpression Id. */
+ int REM = 108;
+ /** RegularExpression Id. */
+ int LSHIFT = 109;
+ /** RegularExpression Id. */
+ int PLUSASSIGN = 110;
+ /** RegularExpression Id. */
+ int MINUSASSIGN = 111;
+ /** RegularExpression Id. */
+ int STARASSIGN = 112;
+ /** RegularExpression Id. */
+ int SLASHASSIGN = 113;
+ /** RegularExpression Id. */
+ int ANDASSIGN = 114;
+ /** RegularExpression Id. */
+ int ORASSIGN = 115;
+ /** RegularExpression Id. */
+ int XORASSIGN = 116;
+ /** RegularExpression Id. */
+ int REMASSIGN = 117;
+ /** RegularExpression Id. */
+ int LSHIFTASSIGN = 118;
+ /** RegularExpression Id. */
+ int RSIGNEDSHIFTASSIGN = 119;
+ /** RegularExpression Id. */
+ int RUNSIGNEDSHIFTASSIGN = 120;
+ /** RegularExpression Id. */
+ int ELLIPSIS = 121;
+
+ /** Lexical state. */
+ int DEFAULT = 0;
+ /** Lexical state. */
+ int IN_SINGLE_LINE_COMMENT = 1;
+ /** Lexical state. */
+ int IN_FORMAL_COMMENT = 2;
+ /** Lexical state. */
+ int IN_MULTI_LINE_COMMENT = 3;
+
+ /** Literal token values. */
+ String[] tokenImage = {
+ "<EOF>",
+ "\" \"",
+ "\"\\t\"",
+ "\"\\n\"",
+ "\"\\r\"",
+ "\"\\f\"",
+ "\"//\"",
+ "<token of kind 7>",
+ "\"/*\"",
+ "<SINGLE_LINE_COMMENT>",
+ "\"*/\"",
+ "\"*/\"",
+ "<token of kind 12>",
+ "\"abstract\"",
+ "\"assert\"",
+ "\"boolean\"",
+ "\"break\"",
+ "\"byte\"",
+ "\"case\"",
+ "\"catch\"",
+ "\"char\"",
+ "\"class\"",
+ "\"const\"",
+ "\"continue\"",
+ "\"default\"",
+ "\"do\"",
+ "\"double\"",
+ "\"else\"",
+ "\"enum\"",
+ "\"extends\"",
+ "\"false\"",
+ "\"final\"",
+ "\"finally\"",
+ "\"float\"",
+ "\"for\"",
+ "\"goto\"",
+ "\"if\"",
+ "\"implements\"",
+ "\"import\"",
+ "\"instanceof\"",
+ "\"int\"",
+ "\"interface\"",
+ "\"long\"",
+ "\"native\"",
+ "\"new\"",
+ "\"null\"",
+ "\"package\"",
+ "\"private\"",
+ "\"protected\"",
+ "\"public\"",
+ "\"return\"",
+ "\"short\"",
+ "\"static\"",
+ "\"strictfp\"",
+ "\"super\"",
+ "\"switch\"",
+ "\"synchronized\"",
+ "\"this\"",
+ "\"throw\"",
+ "\"throws\"",
+ "\"transient\"",
+ "\"true\"",
+ "\"try\"",
+ "\"void\"",
+ "\"volatile\"",
+ "\"while\"",
+ "<INTEGER_LITERAL>",
+ "<DECIMAL_LITERAL>",
+ "<HEX_LITERAL>",
+ "<OCTAL_LITERAL>",
+ "<FLOATING_POINT_LITERAL>",
+ "<EXPONENT>",
+ "<CHARACTER_LITERAL>",
+ "<STRING_LITERAL>",
+ "<IDENTIFIER>",
+ "<LETTER>",
+ "<DIGIT>",
+ "\"(\"",
+ "\")\"",
+ "\"{\"",
+ "\"}\"",
+ "\"[\"",
+ "\"]\"",
+ "\";\"",
+ "\",\"",
+ "\".\"",
+ "\"@\"",
+ "\"=\"",
+ "\"<\"",
+ "\"!\"",
+ "\"~\"",
+ "\"?\"",
+ "\":\"",
+ "\"==\"",
+ "\"<=\"",
+ "\">=\"",
+ "\"!=\"",
+ "\"||\"",
+ "\"&&\"",
+ "\"++\"",
+ "\"--\"",
+ "\"+\"",
+ "\"-\"",
+ "\"*\"",
+ "\"/\"",
+ "\"&\"",
+ "\"|\"",
+ "\"^\"",
+ "\"%\"",
+ "\"<<\"",
+ "\"+=\"",
+ "\"-=\"",
+ "\"*=\"",
+ "\"/=\"",
+ "\"&=\"",
+ "\"|=\"",
+ "\"^=\"",
+ "\"%=\"",
+ "\"<<=\"",
+ "\">>=\"",
+ "\">>>=\"",
+ "\"...\"",
+ };
+
+}
Added: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/AnnotationParserTokenManager.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/AnnotationParserTokenManager.java (rev 0)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/AnnotationParserTokenManager.java 2009-11-30 03:55:25 UTC (rev 11703)
@@ -0,0 +1,1745 @@
+/* Generated By:JavaCC: Do not edit this line. AnnotationParserTokenManager.java */
+package org.jboss.seam.remoting.annotationparser;
+import java.io.*;
+
+/** Token Manager. */
+public class AnnotationParserTokenManager implements AnnotationParserConstants
+{
+
+ /** Debug output. */
+ public java.io.PrintStream debugStream = System.out;
+ /** Set debug output. */
+ public void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
+private final int jjStopStringLiteralDfa_0(int pos, long active0, long active1)
+{
+ switch (pos)
+ {
+ case 0:
+ if ((active0 & 0x140L) != 0L || (active1 & 0x2010000000000L) != 0L)
+ return 2;
+ if ((active1 & 0x200000000200000L) != 0L)
+ return 8;
+ if ((active0 & 0xffffffffffffe000L) != 0L || (active1 & 0x3L) != 0L)
+ {
+ jjmatchedKind = 74;
+ return 32;
+ }
+ return -1;
+ case 1:
+ if ((active0 & 0x100L) != 0L)
+ return 0;
+ if ((active0 & 0xffffffeff9ffe000L) != 0L || (active1 & 0x3L) != 0L)
+ {
+ if (jjmatchedPos != 1)
+ {
+ jjmatchedKind = 74;
+ jjmatchedPos = 1;
+ }
+ return 32;
+ }
+ if ((active0 & 0x1006000000L) != 0L)
+ return 32;
+ return -1;
+ case 2:
+ if ((active0 & 0xbfffecebfdffe000L) != 0L || (active1 & 0x3L) != 0L)
+ {
+ if (jjmatchedPos != 2)
+ {
+ jjmatchedKind = 74;
+ jjmatchedPos = 2;
+ }
+ return 32;
+ }
+ if ((active0 & 0x4000130400000000L) != 0L)
+ return 32;
+ return -1;
+ case 3:
+ if ((active0 & 0x1dffcae3e5e9e000L) != 0L || (active1 & 0x3L) != 0L)
+ {
+ jjmatchedKind = 74;
+ jjmatchedPos = 3;
+ return 32;
+ }
+ if ((active0 & 0xa200240818160000L) != 0L)
+ return 32;
+ return -1;
+ case 4:
+ if ((active0 & 0x11b7cae02580e000L) != 0L || (active1 & 0x1L) != 0L)
+ {
+ if (jjmatchedPos != 4)
+ {
+ jjmatchedKind = 74;
+ jjmatchedPos = 4;
+ }
+ return 32;
+ }
+ if ((active0 & 0xc480003c0690000L) != 0L || (active1 & 0x2L) != 0L)
+ return 32;
+ return -1;
+ case 5:
+ if ((active0 & 0x1121c2a12180a000L) != 0L || (active1 & 0x1L) != 0L)
+ {
+ jjmatchedKind = 74;
+ jjmatchedPos = 5;
+ return 32;
+ }
+ if ((active0 & 0x896084004004000L) != 0L)
+ return 32;
+ return -1;
+ case 6:
+ if ((active0 & 0x112102a000802000L) != 0L || (active1 & 0x1L) != 0L)
+ {
+ jjmatchedKind = 74;
+ jjmatchedPos = 6;
+ return 32;
+ }
+ if ((active0 & 0xc00121008000L) != 0L)
+ return 32;
+ return -1;
+ case 7:
+ if ((active0 & 0x110102a000000000L) != 0L)
+ {
+ jjmatchedKind = 74;
+ jjmatchedPos = 7;
+ return 32;
+ }
+ if ((active0 & 0x20000000802000L) != 0L || (active1 & 0x1L) != 0L)
+ return 32;
+ return -1;
+ case 8:
+ if ((active0 & 0x10000a000000000L) != 0L)
+ {
+ jjmatchedKind = 74;
+ jjmatchedPos = 8;
+ return 32;
+ }
+ if ((active0 & 0x1001020000000000L) != 0L)
+ return 32;
+ return -1;
+ case 9:
+ if ((active0 & 0x100000000000000L) != 0L)
+ {
+ jjmatchedKind = 74;
+ jjmatchedPos = 9;
+ return 32;
+ }
+ if ((active0 & 0xa000000000L) != 0L)
+ return 32;
+ return -1;
+ case 10:
+ if ((active0 & 0x100000000000000L) != 0L)
+ {
+ jjmatchedKind = 74;
+ jjmatchedPos = 10;
+ return 32;
+ }
+ return -1;
+ default :
+ return -1;
+ }
+}
+private final int jjStartNfa_0(int pos, long active0, long active1)
+{
+ return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0, active1), pos + 1);
+}
+private int jjStopAtPos(int pos, int kind)
+{
+ jjmatchedKind = kind;
+ jjmatchedPos = pos;
+ return pos + 1;
+}
+private int jjMoveStringLiteralDfa0_0()
+{
+ switch(curChar)
+ {
+ case 33:
+ jjmatchedKind = 89;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x100000000L);
+ case 37:
+ jjmatchedKind = 108;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x20000000000000L);
+ case 38:
+ jjmatchedKind = 105;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x4000400000000L);
+ case 40:
+ return jjStopAtPos(0, 77);
+ case 41:
+ return jjStopAtPos(0, 78);
+ case 42:
+ jjmatchedKind = 103;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x1000000000000L);
+ case 43:
+ jjmatchedKind = 101;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x400800000000L);
+ case 44:
+ return jjStopAtPos(0, 84);
+ case 45:
+ jjmatchedKind = 102;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x801000000000L);
+ case 46:
+ jjmatchedKind = 85;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x200000000000000L);
+ case 47:
+ jjmatchedKind = 104;
+ return jjMoveStringLiteralDfa1_0(0x140L, 0x2000000000000L);
+ case 58:
+ return jjStopAtPos(0, 92);
+ case 59:
+ return jjStopAtPos(0, 83);
+ case 60:
+ jjmatchedKind = 88;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x40200040000000L);
+ case 61:
+ jjmatchedKind = 87;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x20000000L);
+ case 62:
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x180000080000000L);
+ case 63:
+ return jjStopAtPos(0, 91);
+ case 64:
+ return jjStopAtPos(0, 86);
+ case 91:
+ return jjStopAtPos(0, 81);
+ case 93:
+ return jjStopAtPos(0, 82);
+ case 94:
+ jjmatchedKind = 107;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x10000000000000L);
+ case 97:
+ return jjMoveStringLiteralDfa1_0(0x6000L, 0x0L);
+ case 98:
+ return jjMoveStringLiteralDfa1_0(0x38000L, 0x0L);
+ case 99:
+ return jjMoveStringLiteralDfa1_0(0xfc0000L, 0x0L);
+ case 100:
+ return jjMoveStringLiteralDfa1_0(0x7000000L, 0x0L);
+ case 101:
+ return jjMoveStringLiteralDfa1_0(0x38000000L, 0x0L);
+ case 102:
+ return jjMoveStringLiteralDfa1_0(0x7c0000000L, 0x0L);
+ case 103:
+ return jjMoveStringLiteralDfa1_0(0x800000000L, 0x0L);
+ case 105:
+ return jjMoveStringLiteralDfa1_0(0x3f000000000L, 0x0L);
+ case 108:
+ return jjMoveStringLiteralDfa1_0(0x40000000000L, 0x0L);
+ case 110:
+ return jjMoveStringLiteralDfa1_0(0x380000000000L, 0x0L);
+ case 112:
+ return jjMoveStringLiteralDfa1_0(0x3c00000000000L, 0x0L);
+ case 114:
+ return jjMoveStringLiteralDfa1_0(0x4000000000000L, 0x0L);
+ case 115:
+ return jjMoveStringLiteralDfa1_0(0x1f8000000000000L, 0x0L);
+ case 116:
+ return jjMoveStringLiteralDfa1_0(0x7e00000000000000L, 0x0L);
+ case 118:
+ return jjMoveStringLiteralDfa1_0(0x8000000000000000L, 0x1L);
+ case 119:
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x2L);
+ case 123:
+ return jjStopAtPos(0, 79);
+ case 124:
+ jjmatchedKind = 106;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x8000200000000L);
+ case 125:
+ return jjStopAtPos(0, 80);
+ case 126:
+ return jjStopAtPos(0, 90);
+ default :
+ return jjMoveNfa_0(3, 0);
+ }
+}
+private int jjMoveStringLiteralDfa1_0(long active0, long active1)
+{
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_0(0, active0, active1);
+ return 1;
+ }
+ switch(curChar)
+ {
+ case 38:
+ if ((active1 & 0x400000000L) != 0L)
+ return jjStopAtPos(1, 98);
+ break;
+ case 42:
+ if ((active0 & 0x100L) != 0L)
+ return jjStartNfaWithStates_0(1, 8, 0);
+ break;
+ case 43:
+ if ((active1 & 0x800000000L) != 0L)
+ return jjStopAtPos(1, 99);
+ break;
+ case 45:
+ if ((active1 & 0x1000000000L) != 0L)
+ return jjStopAtPos(1, 100);
+ break;
+ case 46:
+ return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x200000000000000L);
+ case 47:
+ if ((active0 & 0x40L) != 0L)
+ return jjStopAtPos(1, 6);
+ break;
+ case 60:
+ if ((active1 & 0x200000000000L) != 0L)
+ {
+ jjmatchedKind = 109;
+ jjmatchedPos = 1;
+ }
+ return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x40000000000000L);
+ case 61:
+ if ((active1 & 0x20000000L) != 0L)
+ return jjStopAtPos(1, 93);
+ else if ((active1 & 0x40000000L) != 0L)
+ return jjStopAtPos(1, 94);
+ else if ((active1 & 0x80000000L) != 0L)
+ return jjStopAtPos(1, 95);
+ else if ((active1 & 0x100000000L) != 0L)
+ return jjStopAtPos(1, 96);
+ else if ((active1 & 0x400000000000L) != 0L)
+ return jjStopAtPos(1, 110);
+ else if ((active1 & 0x800000000000L) != 0L)
+ return jjStopAtPos(1, 111);
+ else if ((active1 & 0x1000000000000L) != 0L)
+ return jjStopAtPos(1, 112);
+ else if ((active1 & 0x2000000000000L) != 0L)
+ return jjStopAtPos(1, 113);
+ else if ((active1 & 0x4000000000000L) != 0L)
+ return jjStopAtPos(1, 114);
+ else if ((active1 & 0x8000000000000L) != 0L)
+ return jjStopAtPos(1, 115);
+ else if ((active1 & 0x10000000000000L) != 0L)
+ return jjStopAtPos(1, 116);
+ else if ((active1 & 0x20000000000000L) != 0L)
+ return jjStopAtPos(1, 117);
+ break;
+ case 62:
+ return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x180000000000000L);
+ case 97:
+ return jjMoveStringLiteralDfa2_0(active0, 0x4800400c0000L, active1, 0L);
+ case 98:
+ return jjMoveStringLiteralDfa2_0(active0, 0x2000L, active1, 0L);
+ case 101:
+ return jjMoveStringLiteralDfa2_0(active0, 0x4100001000000L, active1, 0L);
+ case 102:
+ if ((active0 & 0x1000000000L) != 0L)
+ return jjStartNfaWithStates_0(1, 36, 32);
+ break;
+ case 104:
+ return jjMoveStringLiteralDfa2_0(active0, 0xe08000000100000L, active1, 0x2L);
+ case 105:
+ return jjMoveStringLiteralDfa2_0(active0, 0x180000000L, active1, 0L);
+ case 108:
+ return jjMoveStringLiteralDfa2_0(active0, 0x208200000L, active1, 0L);
+ case 109:
+ return jjMoveStringLiteralDfa2_0(active0, 0x6000000000L, active1, 0L);
+ case 110:
+ return jjMoveStringLiteralDfa2_0(active0, 0x38010000000L, active1, 0L);
+ case 111:
+ if ((active0 & 0x2000000L) != 0L)
+ {
+ jjmatchedKind = 25;
+ jjmatchedPos = 1;
+ }
+ return jjMoveStringLiteralDfa2_0(active0, 0x8000040c04c08000L, active1, 0x1L);
+ case 114:
+ return jjMoveStringLiteralDfa2_0(active0, 0x7001800000010000L, active1, 0L);
+ case 115:
+ return jjMoveStringLiteralDfa2_0(active0, 0x4000L, active1, 0L);
+ case 116:
+ return jjMoveStringLiteralDfa2_0(active0, 0x30000000000000L, active1, 0L);
+ case 117:
+ return jjMoveStringLiteralDfa2_0(active0, 0x42200000000000L, active1, 0L);
+ case 119:
+ return jjMoveStringLiteralDfa2_0(active0, 0x80000000000000L, active1, 0L);
+ case 120:
+ return jjMoveStringLiteralDfa2_0(active0, 0x20000000L, active1, 0L);
+ case 121:
+ return jjMoveStringLiteralDfa2_0(active0, 0x100000000020000L, active1, 0L);
+ case 124:
+ if ((active1 & 0x200000000L) != 0L)
+ return jjStopAtPos(1, 97);
+ break;
+ default :
+ break;
+ }
+ return jjStartNfa_0(0, active0, active1);
+}
+private int jjMoveStringLiteralDfa2_0(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjStartNfa_0(0, old0, old1);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_0(1, active0, active1);
+ return 2;
+ }
+ switch(curChar)
+ {
+ case 46:
+ if ((active1 & 0x200000000000000L) != 0L)
+ return jjStopAtPos(2, 121);
+ break;
+ case 61:
+ if ((active1 & 0x40000000000000L) != 0L)
+ return jjStopAtPos(2, 118);
+ else if ((active1 & 0x80000000000000L) != 0L)
+ return jjStopAtPos(2, 119);
+ break;
+ case 62:
+ return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x100000000000000L);
+ case 97:
+ return jjMoveStringLiteralDfa3_0(active0, 0x1010000000300000L, active1, 0L);
+ case 98:
+ return jjMoveStringLiteralDfa3_0(active0, 0x2000000000000L, active1, 0L);
+ case 99:
+ return jjMoveStringLiteralDfa3_0(active0, 0x400000000000L, active1, 0L);
+ case 101:
+ return jjMoveStringLiteralDfa3_0(active0, 0x10000L, active1, 0L);
+ case 102:
+ return jjMoveStringLiteralDfa3_0(active0, 0x1000000L, active1, 0L);
+ case 105:
+ return jjMoveStringLiteralDfa3_0(active0, 0x8280800000000000L, active1, 0x2L);
+ case 108:
+ return jjMoveStringLiteralDfa3_0(active0, 0x200040000000L, active1, 0x1L);
+ case 110:
+ return jjMoveStringLiteralDfa3_0(active0, 0x100040180c00000L, active1, 0L);
+ case 111:
+ return jjMoveStringLiteralDfa3_0(active0, 0x9000200008000L, active1, 0L);
+ case 112:
+ return jjMoveStringLiteralDfa3_0(active0, 0x40006000000000L, active1, 0L);
+ case 114:
+ if ((active0 & 0x400000000L) != 0L)
+ return jjStartNfaWithStates_0(2, 34, 32);
+ return jjMoveStringLiteralDfa3_0(active0, 0xc20000000000000L, active1, 0L);
+ case 115:
+ return jjMoveStringLiteralDfa3_0(active0, 0x8008046000L, active1, 0L);
+ case 116:
+ if ((active0 & 0x10000000000L) != 0L)
+ {
+ jjmatchedKind = 40;
+ jjmatchedPos = 2;
+ }
+ return jjMoveStringLiteralDfa3_0(active0, 0x40a08200a0000L, active1, 0L);
+ case 117:
+ return jjMoveStringLiteralDfa3_0(active0, 0x2000000014000000L, active1, 0L);
+ case 119:
+ if ((active0 & 0x100000000000L) != 0L)
+ return jjStartNfaWithStates_0(2, 44, 32);
+ break;
+ case 121:
+ if ((active0 & 0x4000000000000000L) != 0L)
+ return jjStartNfaWithStates_0(2, 62, 32);
+ break;
+ default :
+ break;
+ }
+ return jjStartNfa_0(1, active0, active1);
+}
+private int jjMoveStringLiteralDfa3_0(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjStartNfa_0(1, old0, old1);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_0(2, active0, active1);
+ return 3;
+ }
+ switch(curChar)
+ {
+ case 61:
+ if ((active1 & 0x100000000000000L) != 0L)
+ return jjStopAtPos(3, 120);
+ break;
+ case 97:
+ return jjMoveStringLiteralDfa4_0(active0, 0x381010000L, active1, 0x1L);
+ case 98:
+ return jjMoveStringLiteralDfa4_0(active0, 0x4000000L, active1, 0L);
+ case 99:
+ return jjMoveStringLiteralDfa4_0(active0, 0x100000000080000L, active1, 0L);
+ case 100:
+ if ((active0 & 0x8000000000000000L) != 0L)
+ return jjStartNfaWithStates_0(3, 63, 32);
+ break;
+ case 101:
+ if ((active0 & 0x20000L) != 0L)
+ return jjStartNfaWithStates_0(3, 17, 32);
+ else if ((active0 & 0x40000L) != 0L)
+ return jjStartNfaWithStates_0(3, 18, 32);
+ else if ((active0 & 0x8000000L) != 0L)
+ return jjStartNfaWithStates_0(3, 27, 32);
+ else if ((active0 & 0x2000000000000000L) != 0L)
+ return jjStartNfaWithStates_0(3, 61, 32);
+ return jjMoveStringLiteralDfa4_0(active0, 0x40020020004000L, active1, 0L);
+ case 103:
+ if ((active0 & 0x40000000000L) != 0L)
+ return jjStartNfaWithStates_0(3, 42, 32);
+ break;
+ case 105:
+ return jjMoveStringLiteralDfa4_0(active0, 0x20080000000000L, active1, 0L);
+ case 107:
+ return jjMoveStringLiteralDfa4_0(active0, 0x400000000000L, active1, 0L);
+ case 108:
+ if ((active0 & 0x200000000000L) != 0L)
+ return jjStartNfaWithStates_0(3, 45, 32);
+ return jjMoveStringLiteralDfa4_0(active0, 0x2002000008000L, active1, 0x2L);
+ case 109:
+ if ((active0 & 0x10000000L) != 0L)
+ return jjStartNfaWithStates_0(3, 28, 32);
+ break;
+ case 110:
+ return jjMoveStringLiteralDfa4_0(active0, 0x1000000000000000L, active1, 0L);
+ case 111:
+ if ((active0 & 0x800000000L) != 0L)
+ return jjStartNfaWithStates_0(3, 35, 32);
+ return jjMoveStringLiteralDfa4_0(active0, 0xc00004000000000L, active1, 0L);
+ case 114:
+ if ((active0 & 0x100000L) != 0L)
+ return jjStartNfaWithStates_0(3, 20, 32);
+ return jjMoveStringLiteralDfa4_0(active0, 0x8000000000000L, active1, 0L);
+ case 115:
+ if ((active0 & 0x200000000000000L) != 0L)
+ return jjStartNfaWithStates_0(3, 57, 32);
+ return jjMoveStringLiteralDfa4_0(active0, 0x40600000L, active1, 0L);
+ case 116:
+ return jjMoveStringLiteralDfa4_0(active0, 0x91008000802000L, active1, 0L);
+ case 117:
+ return jjMoveStringLiteralDfa4_0(active0, 0x4000000000000L, active1, 0L);
+ case 118:
+ return jjMoveStringLiteralDfa4_0(active0, 0x800000000000L, active1, 0L);
+ default :
+ break;
+ }
+ return jjStartNfa_0(2, active0, active1);
+}
+private int jjMoveStringLiteralDfa4_0(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjStartNfa_0(2, old0, old1);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_0(3, active0, active1);
+ return 4;
+ }
+ switch(curChar)
+ {
+ case 97:
+ return jjMoveStringLiteralDfa5_0(active0, 0xc08000000000L, active1, 0L);
+ case 99:
+ return jjMoveStringLiteralDfa5_0(active0, 0xa0000000000000L, active1, 0L);
+ case 101:
+ if ((active0 & 0x40000000L) != 0L)
+ return jjStartNfaWithStates_0(4, 30, 32);
+ else if ((active1 & 0x2L) != 0L)
+ return jjStartNfaWithStates_0(4, 65, 32);
+ return jjMoveStringLiteralDfa5_0(active0, 0x1002000008000L, active1, 0L);
+ case 104:
+ if ((active0 & 0x80000L) != 0L)
+ return jjStartNfaWithStates_0(4, 19, 32);
+ return jjMoveStringLiteralDfa5_0(active0, 0x100000000000000L, active1, 0L);
+ case 105:
+ return jjMoveStringLiteralDfa5_0(active0, 0x12000000800000L, active1, 0L);
+ case 107:
+ if ((active0 & 0x10000L) != 0L)
+ return jjStartNfaWithStates_0(4, 16, 32);
+ break;
+ case 108:
+ if ((active0 & 0x80000000L) != 0L)
+ {
+ jjmatchedKind = 31;
+ jjmatchedPos = 4;
+ }
+ return jjMoveStringLiteralDfa5_0(active0, 0x104000000L, active1, 0L);
+ case 110:
+ return jjMoveStringLiteralDfa5_0(active0, 0x20000000L, active1, 0L);
+ case 114:
+ if ((active0 & 0x40000000000000L) != 0L)
+ return jjStartNfaWithStates_0(4, 54, 32);
+ return jjMoveStringLiteralDfa5_0(active0, 0x4024000006000L, active1, 0L);
+ case 115:
+ if ((active0 & 0x200000L) != 0L)
+ return jjStartNfaWithStates_0(4, 21, 32);
+ return jjMoveStringLiteralDfa5_0(active0, 0x1000000000000000L, active1, 0L);
+ case 116:
+ if ((active0 & 0x400000L) != 0L)
+ return jjStartNfaWithStates_0(4, 22, 32);
+ else if ((active0 & 0x200000000L) != 0L)
+ return jjStartNfaWithStates_0(4, 33, 32);
+ else if ((active0 & 0x8000000000000L) != 0L)
+ return jjStartNfaWithStates_0(4, 51, 32);
+ return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x1L);
+ case 117:
+ return jjMoveStringLiteralDfa5_0(active0, 0x1000000L, active1, 0L);
+ case 118:
+ return jjMoveStringLiteralDfa5_0(active0, 0x80000000000L, active1, 0L);
+ case 119:
+ if ((active0 & 0x400000000000000L) != 0L)
+ {
+ jjmatchedKind = 58;
+ jjmatchedPos = 4;
+ }
+ return jjMoveStringLiteralDfa5_0(active0, 0x800000000000000L, active1, 0L);
+ default :
+ break;
+ }
+ return jjStartNfa_0(3, active0, active1);
+}
+private int jjMoveStringLiteralDfa5_0(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjStartNfa_0(3, old0, old1);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_0(4, active0, active1);
+ return 5;
+ }
+ switch(curChar)
+ {
+ case 97:
+ return jjMoveStringLiteralDfa6_0(active0, 0xa000L, active1, 0L);
+ case 99:
+ if ((active0 & 0x2000000000000L) != 0L)
+ return jjStartNfaWithStates_0(5, 49, 32);
+ else if ((active0 & 0x10000000000000L) != 0L)
+ return jjStartNfaWithStates_0(5, 52, 32);
+ return jjMoveStringLiteralDfa6_0(active0, 0x1000000000000L, active1, 0L);
+ case 100:
+ return jjMoveStringLiteralDfa6_0(active0, 0x20000000L, active1, 0L);
+ case 101:
+ if ((active0 & 0x4000000L) != 0L)
+ return jjStartNfaWithStates_0(5, 26, 32);
+ else if ((active0 & 0x80000000000L) != 0L)
+ return jjStartNfaWithStates_0(5, 43, 32);
+ break;
+ case 102:
+ return jjMoveStringLiteralDfa6_0(active0, 0x20000000000L, active1, 0L);
+ case 103:
+ return jjMoveStringLiteralDfa6_0(active0, 0x400000000000L, active1, 0L);
+ case 104:
+ if ((active0 & 0x80000000000000L) != 0L)
+ return jjStartNfaWithStates_0(5, 55, 32);
+ break;
+ case 105:
+ return jjMoveStringLiteralDfa6_0(active0, 0x1000000000000000L, active1, 0x1L);
+ case 108:
+ return jjMoveStringLiteralDfa6_0(active0, 0x101000000L, active1, 0L);
+ case 109:
+ return jjMoveStringLiteralDfa6_0(active0, 0x2000000000L, active1, 0L);
+ case 110:
+ if ((active0 & 0x4000000000000L) != 0L)
+ return jjStartNfaWithStates_0(5, 50, 32);
+ return jjMoveStringLiteralDfa6_0(active0, 0x8000800000L, active1, 0L);
+ case 114:
+ return jjMoveStringLiteralDfa6_0(active0, 0x100000000000000L, active1, 0L);
+ case 115:
+ if ((active0 & 0x800000000000000L) != 0L)
+ return jjStartNfaWithStates_0(5, 59, 32);
+ break;
+ case 116:
+ if ((active0 & 0x4000L) != 0L)
+ return jjStartNfaWithStates_0(5, 14, 32);
+ else if ((active0 & 0x4000000000L) != 0L)
+ return jjStartNfaWithStates_0(5, 38, 32);
+ return jjMoveStringLiteralDfa6_0(active0, 0x20800000000000L, active1, 0L);
+ default :
+ break;
+ }
+ return jjStartNfa_0(4, active0, active1);
+}
+private int jjMoveStringLiteralDfa6_0(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjStartNfa_0(4, old0, old1);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_0(5, active0, active1);
+ return 6;
+ }
+ switch(curChar)
+ {
+ case 97:
+ return jjMoveStringLiteralDfa7_0(active0, 0x20000000000L, active1, 0L);
+ case 99:
+ return jjMoveStringLiteralDfa7_0(active0, 0x8000002000L, active1, 0L);
+ case 101:
+ if ((active0 & 0x400000000000L) != 0L)
+ return jjStartNfaWithStates_0(6, 46, 32);
+ else if ((active0 & 0x800000000000L) != 0L)
+ return jjStartNfaWithStates_0(6, 47, 32);
+ return jjMoveStringLiteralDfa7_0(active0, 0x1000002000000000L, active1, 0L);
+ case 102:
+ return jjMoveStringLiteralDfa7_0(active0, 0x20000000000000L, active1, 0L);
+ case 108:
+ return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x1L);
+ case 110:
+ if ((active0 & 0x8000L) != 0L)
+ return jjStartNfaWithStates_0(6, 15, 32);
+ break;
+ case 111:
+ return jjMoveStringLiteralDfa7_0(active0, 0x100000000000000L, active1, 0L);
+ case 115:
+ if ((active0 & 0x20000000L) != 0L)
+ return jjStartNfaWithStates_0(6, 29, 32);
+ break;
+ case 116:
+ if ((active0 & 0x1000000L) != 0L)
+ return jjStartNfaWithStates_0(6, 24, 32);
+ return jjMoveStringLiteralDfa7_0(active0, 0x1000000000000L, active1, 0L);
+ case 117:
+ return jjMoveStringLiteralDfa7_0(active0, 0x800000L, active1, 0L);
+ case 121:
+ if ((active0 & 0x100000000L) != 0L)
+ return jjStartNfaWithStates_0(6, 32, 32);
+ break;
+ default :
+ break;
+ }
+ return jjStartNfa_0(5, active0, active1);
+}
+private int jjMoveStringLiteralDfa7_0(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjStartNfa_0(5, old0, old1);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_0(6, active0, active1);
+ return 7;
+ }
+ switch(curChar)
+ {
+ case 99:
+ return jjMoveStringLiteralDfa8_0(active0, 0x20000000000L, active1, 0L);
+ case 101:
+ if ((active0 & 0x800000L) != 0L)
+ return jjStartNfaWithStates_0(7, 23, 32);
+ else if ((active1 & 0x1L) != 0L)
+ return jjStartNfaWithStates_0(7, 64, 32);
+ return jjMoveStringLiteralDfa8_0(active0, 0x1008000000000L, active1, 0L);
+ case 110:
+ return jjMoveStringLiteralDfa8_0(active0, 0x1100002000000000L, active1, 0L);
+ case 112:
+ if ((active0 & 0x20000000000000L) != 0L)
+ return jjStartNfaWithStates_0(7, 53, 32);
+ break;
+ case 116:
+ if ((active0 & 0x2000L) != 0L)
+ return jjStartNfaWithStates_0(7, 13, 32);
+ break;
+ default :
+ break;
+ }
+ return jjStartNfa_0(6, active0, active1);
+}
+private int jjMoveStringLiteralDfa8_0(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjStartNfa_0(6, old0, old1);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_0(7, active0, 0L);
+ return 8;
+ }
+ switch(curChar)
+ {
+ case 100:
+ if ((active0 & 0x1000000000000L) != 0L)
+ return jjStartNfaWithStates_0(8, 48, 32);
+ break;
+ case 101:
+ if ((active0 & 0x20000000000L) != 0L)
+ return jjStartNfaWithStates_0(8, 41, 32);
+ break;
+ case 105:
+ return jjMoveStringLiteralDfa9_0(active0, 0x100000000000000L);
+ case 111:
+ return jjMoveStringLiteralDfa9_0(active0, 0x8000000000L);
+ case 116:
+ if ((active0 & 0x1000000000000000L) != 0L)
+ return jjStartNfaWithStates_0(8, 60, 32);
+ return jjMoveStringLiteralDfa9_0(active0, 0x2000000000L);
+ default :
+ break;
+ }
+ return jjStartNfa_0(7, active0, 0L);
+}
+private int jjMoveStringLiteralDfa9_0(long old0, long active0)
+{
+ if (((active0 &= old0)) == 0L)
+ return jjStartNfa_0(7, old0, 0L);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_0(8, active0, 0L);
+ return 9;
+ }
+ switch(curChar)
+ {
+ case 102:
+ if ((active0 & 0x8000000000L) != 0L)
+ return jjStartNfaWithStates_0(9, 39, 32);
+ break;
+ case 115:
+ if ((active0 & 0x2000000000L) != 0L)
+ return jjStartNfaWithStates_0(9, 37, 32);
+ break;
+ case 122:
+ return jjMoveStringLiteralDfa10_0(active0, 0x100000000000000L);
+ default :
+ break;
+ }
+ return jjStartNfa_0(8, active0, 0L);
+}
+private int jjMoveStringLiteralDfa10_0(long old0, long active0)
+{
+ if (((active0 &= old0)) == 0L)
+ return jjStartNfa_0(8, old0, 0L);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_0(9, active0, 0L);
+ return 10;
+ }
+ switch(curChar)
+ {
+ case 101:
+ return jjMoveStringLiteralDfa11_0(active0, 0x100000000000000L);
+ default :
+ break;
+ }
+ return jjStartNfa_0(9, active0, 0L);
+}
+private int jjMoveStringLiteralDfa11_0(long old0, long active0)
+{
+ if (((active0 &= old0)) == 0L)
+ return jjStartNfa_0(9, old0, 0L);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_0(10, active0, 0L);
+ return 11;
+ }
+ switch(curChar)
+ {
+ case 100:
+ if ((active0 & 0x100000000000000L) != 0L)
+ return jjStartNfaWithStates_0(11, 56, 32);
+ break;
+ default :
+ break;
+ }
+ return jjStartNfa_0(10, active0, 0L);
+}
+private int jjStartNfaWithStates_0(int pos, int kind, int state)
+{
+ jjmatchedKind = kind;
+ jjmatchedPos = pos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return pos + 1; }
+ return jjMoveNfa_0(state, pos + 1);
+}
+static final long[] jjbitVec0 = {
+ 0xfffffffffffffffeL, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL
+};
+static final long[] jjbitVec2 = {
+ 0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
+};
+static final long[] jjbitVec3 = {
+ 0x1ff00000fffffffeL, 0xffffffffffffc000L, 0xffffffffL, 0x600000000000000L
+};
+static final long[] jjbitVec4 = {
+ 0x0L, 0x0L, 0x0L, 0xff7fffffff7fffffL
+};
+static final long[] jjbitVec5 = {
+ 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL
+};
+static final long[] jjbitVec6 = {
+ 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffL, 0x0L
+};
+static final long[] jjbitVec7 = {
+ 0xffffffffffffffffL, 0xffffffffffffffffL, 0x0L, 0x0L
+};
+static final long[] jjbitVec8 = {
+ 0x3fffffffffffL, 0x0L, 0x0L, 0x0L
+};
+private int jjMoveNfa_0(int startState, int curPos)
+{
+ int startsAt = 0;
+ jjnewStateCnt = 52;
+ int i = 1;
+ jjstateSet[0] = startState;
+ int kind = 0x7fffffff;
+ for (;;)
+ {
+ if (++jjround == 0x7fffffff)
+ ReInitRounds();
+ if (curChar < 64)
+ {
+ long l = 1L << curChar;
+ do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 3:
+ if ((0x3ff000000000000L & l) != 0L)
+ jjCheckNAddStates(0, 6);
+ else if (curChar == 36)
+ {
+ if (kind > 74)
+ kind = 74;
+ jjCheckNAdd(32);
+ }
+ else if (curChar == 34)
+ jjCheckNAddStates(7, 9);
+ else if (curChar == 39)
+ jjAddStates(10, 11);
+ else if (curChar == 46)
+ jjCheckNAdd(8);
+ else if (curChar == 47)
+ jjstateSet[jjnewStateCnt++] = 2;
+ if ((0x3fe000000000000L & l) != 0L)
+ {
+ if (kind > 66)
+ kind = 66;
+ jjCheckNAddTwoStates(5, 6);
+ }
+ else if (curChar == 48)
+ {
+ if (kind > 66)
+ kind = 66;
+ jjCheckNAddStates(12, 14);
+ }
+ break;
+ case 0:
+ if (curChar == 42)
+ jjstateSet[jjnewStateCnt++] = 1;
+ break;
+ case 1:
+ if ((0xffff7fffffffffffL & l) != 0L && kind > 7)
+ kind = 7;
+ break;
+ case 2:
+ if (curChar == 42)
+ jjstateSet[jjnewStateCnt++] = 0;
+ break;
+ case 4:
+ if ((0x3fe000000000000L & l) == 0L)
+ break;
+ if (kind > 66)
+ kind = 66;
+ jjCheckNAddTwoStates(5, 6);
+ break;
+ case 5:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 66)
+ kind = 66;
+ jjCheckNAddTwoStates(5, 6);
+ break;
+ case 7:
+ if (curChar == 46)
+ jjCheckNAdd(8);
+ break;
+ case 8:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 70)
+ kind = 70;
+ jjCheckNAddStates(15, 17);
+ break;
+ case 10:
+ if ((0x280000000000L & l) != 0L)
+ jjCheckNAdd(11);
+ break;
+ case 11:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 70)
+ kind = 70;
+ jjCheckNAddTwoStates(11, 12);
+ break;
+ case 13:
+ if (curChar == 39)
+ jjAddStates(10, 11);
+ break;
+ case 14:
+ if ((0xffffff7fffffdbffL & l) != 0L)
+ jjCheckNAdd(15);
+ break;
+ case 15:
+ if (curChar == 39 && kind > 72)
+ kind = 72;
+ break;
+ case 17:
+ if ((0x8400000000L & l) != 0L)
+ jjCheckNAdd(15);
+ break;
+ case 18:
+ if ((0xff000000000000L & l) != 0L)
+ jjCheckNAddTwoStates(19, 15);
+ break;
+ case 19:
+ if ((0xff000000000000L & l) != 0L)
+ jjCheckNAdd(15);
+ break;
+ case 20:
+ if ((0xf000000000000L & l) != 0L)
+ jjstateSet[jjnewStateCnt++] = 21;
+ break;
+ case 21:
+ if ((0xff000000000000L & l) != 0L)
+ jjCheckNAdd(19);
+ break;
+ case 22:
+ if (curChar == 34)
+ jjCheckNAddStates(7, 9);
+ break;
+ case 23:
+ if ((0xfffffffbffffdbffL & l) != 0L)
+ jjCheckNAddStates(7, 9);
+ break;
+ case 25:
+ if ((0x8400000000L & l) != 0L)
+ jjCheckNAddStates(7, 9);
+ break;
+ case 26:
+ if (curChar == 34 && kind > 73)
+ kind = 73;
+ break;
+ case 27:
+ if ((0xff000000000000L & l) != 0L)
+ jjCheckNAddStates(18, 21);
+ break;
+ case 28:
+ if ((0xff000000000000L & l) != 0L)
+ jjCheckNAddStates(7, 9);
+ break;
+ case 29:
+ if ((0xf000000000000L & l) != 0L)
+ jjstateSet[jjnewStateCnt++] = 30;
+ break;
+ case 30:
+ if ((0xff000000000000L & l) != 0L)
+ jjCheckNAdd(28);
+ break;
+ case 31:
+ if (curChar != 36)
+ break;
+ if (kind > 74)
+ kind = 74;
+ jjCheckNAdd(32);
+ break;
+ case 32:
+ if ((0x3ff001000000000L & l) == 0L)
+ break;
+ if (kind > 74)
+ kind = 74;
+ jjCheckNAdd(32);
+ break;
+ case 33:
+ if ((0x3ff000000000000L & l) != 0L)
+ jjCheckNAddStates(0, 6);
+ break;
+ case 34:
+ if ((0x3ff000000000000L & l) != 0L)
+ jjCheckNAddTwoStates(34, 35);
+ break;
+ case 35:
+ if (curChar != 46)
+ break;
+ if (kind > 70)
+ kind = 70;
+ jjCheckNAddStates(22, 24);
+ break;
+ case 36:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 70)
+ kind = 70;
+ jjCheckNAddStates(22, 24);
+ break;
+ case 38:
+ if ((0x280000000000L & l) != 0L)
+ jjCheckNAdd(39);
+ break;
+ case 39:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 70)
+ kind = 70;
+ jjCheckNAddTwoStates(39, 12);
+ break;
+ case 40:
+ if ((0x3ff000000000000L & l) != 0L)
+ jjCheckNAddTwoStates(40, 41);
+ break;
+ case 42:
+ if ((0x280000000000L & l) != 0L)
+ jjCheckNAdd(43);
+ break;
+ case 43:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 70)
+ kind = 70;
+ jjCheckNAddTwoStates(43, 12);
+ break;
+ case 44:
+ if ((0x3ff000000000000L & l) != 0L)
+ jjCheckNAddStates(25, 27);
+ break;
+ case 46:
+ if ((0x280000000000L & l) != 0L)
+ jjCheckNAdd(47);
+ break;
+ case 47:
+ if ((0x3ff000000000000L & l) != 0L)
+ jjCheckNAddTwoStates(47, 12);
+ break;
+ case 48:
+ if (curChar != 48)
+ break;
+ if (kind > 66)
+ kind = 66;
+ jjCheckNAddStates(12, 14);
+ break;
+ case 50:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 66)
+ kind = 66;
+ jjCheckNAddTwoStates(50, 6);
+ break;
+ case 51:
+ if ((0xff000000000000L & l) == 0L)
+ break;
+ if (kind > 66)
+ kind = 66;
+ jjCheckNAddTwoStates(51, 6);
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else if (curChar < 128)
+ {
+ long l = 1L << (curChar & 077);
+ do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 3:
+ case 32:
+ if ((0x7fffffe87fffffeL & l) == 0L)
+ break;
+ if (kind > 74)
+ kind = 74;
+ jjCheckNAdd(32);
+ break;
+ case 1:
+ if (kind > 7)
+ kind = 7;
+ break;
+ case 6:
+ if ((0x100000001000L & l) != 0L && kind > 66)
+ kind = 66;
+ break;
+ case 9:
+ if ((0x2000000020L & l) != 0L)
+ jjAddStates(28, 29);
+ break;
+ case 12:
+ if ((0x5000000050L & l) != 0L && kind > 70)
+ kind = 70;
+ break;
+ case 14:
+ if ((0xffffffffefffffffL & l) != 0L)
+ jjCheckNAdd(15);
+ break;
+ case 16:
+ if (curChar == 92)
+ jjAddStates(30, 32);
+ break;
+ case 17:
+ if ((0x14404410000000L & l) != 0L)
+ jjCheckNAdd(15);
+ break;
+ case 23:
+ if ((0xffffffffefffffffL & l) != 0L)
+ jjCheckNAddStates(7, 9);
+ break;
+ case 24:
+ if (curChar == 92)
+ jjAddStates(33, 35);
+ break;
+ case 25:
+ if ((0x14404410000000L & l) != 0L)
+ jjCheckNAddStates(7, 9);
+ break;
+ case 37:
+ if ((0x2000000020L & l) != 0L)
+ jjAddStates(36, 37);
+ break;
+ case 41:
+ if ((0x2000000020L & l) != 0L)
+ jjAddStates(38, 39);
+ break;
+ case 45:
+ if ((0x2000000020L & l) != 0L)
+ jjAddStates(40, 41);
+ break;
+ case 49:
+ if ((0x100000001000000L & l) != 0L)
+ jjCheckNAdd(50);
+ break;
+ case 50:
+ if ((0x7e0000007eL & l) == 0L)
+ break;
+ if (kind > 66)
+ kind = 66;
+ jjCheckNAddTwoStates(50, 6);
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else
+ {
+ int hiByte = (int)(curChar >> 8);
+ int i1 = hiByte >> 6;
+ long l1 = 1L << (hiByte & 077);
+ int i2 = (curChar & 0xff) >> 6;
+ long l2 = 1L << (curChar & 077);
+ do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 3:
+ case 32:
+ if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
+ break;
+ if (kind > 74)
+ kind = 74;
+ jjCheckNAdd(32);
+ break;
+ case 1:
+ if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 7)
+ kind = 7;
+ break;
+ case 14:
+ if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+ jjstateSet[jjnewStateCnt++] = 15;
+ break;
+ case 23:
+ if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+ jjAddStates(7, 9);
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ if (kind != 0x7fffffff)
+ {
+ jjmatchedKind = kind;
+ jjmatchedPos = curPos;
+ kind = 0x7fffffff;
+ }
+ ++curPos;
+ if ((i = jjnewStateCnt) == (startsAt = 52 - (jjnewStateCnt = startsAt)))
+ return curPos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return curPos; }
+ }
+}
+private int jjMoveStringLiteralDfa0_3()
+{
+ switch(curChar)
+ {
+ case 42:
+ return jjMoveStringLiteralDfa1_3(0x800L);
+ default :
+ return 1;
+ }
+}
+private int jjMoveStringLiteralDfa1_3(long active0)
+{
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return 1;
+ }
+ switch(curChar)
+ {
+ case 47:
+ if ((active0 & 0x800L) != 0L)
+ return jjStopAtPos(1, 11);
+ break;
+ default :
+ return 2;
+ }
+ return 2;
+}
+private int jjMoveStringLiteralDfa0_1()
+{
+ return jjMoveNfa_1(0, 0);
+}
+private int jjMoveNfa_1(int startState, int curPos)
+{
+ int startsAt = 0;
+ jjnewStateCnt = 3;
+ int i = 1;
+ jjstateSet[0] = startState;
+ int kind = 0x7fffffff;
+ for (;;)
+ {
+ if (++jjround == 0x7fffffff)
+ ReInitRounds();
+ if (curChar < 64)
+ {
+ long l = 1L << curChar;
+ do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 0:
+ if ((0x2400L & l) != 0L)
+ {
+ if (kind > 9)
+ kind = 9;
+ }
+ if (curChar == 13)
+ jjstateSet[jjnewStateCnt++] = 1;
+ break;
+ case 1:
+ if (curChar == 10 && kind > 9)
+ kind = 9;
+ break;
+ case 2:
+ if (curChar == 13)
+ jjstateSet[jjnewStateCnt++] = 1;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else if (curChar < 128)
+ {
+ long l = 1L << (curChar & 077);
+ do
+ {
+ switch(jjstateSet[--i])
+ {
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else
+ {
+ int hiByte = (int)(curChar >> 8);
+ int i1 = hiByte >> 6;
+ long l1 = 1L << (hiByte & 077);
+ int i2 = (curChar & 0xff) >> 6;
+ long l2 = 1L << (curChar & 077);
+ do
+ {
+ switch(jjstateSet[--i])
+ {
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ if (kind != 0x7fffffff)
+ {
+ jjmatchedKind = kind;
+ jjmatchedPos = curPos;
+ kind = 0x7fffffff;
+ }
+ ++curPos;
+ if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
+ return curPos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return curPos; }
+ }
+}
+private int jjMoveStringLiteralDfa0_2()
+{
+ switch(curChar)
+ {
+ case 42:
+ return jjMoveStringLiteralDfa1_2(0x400L);
+ default :
+ return 1;
+ }
+}
+private int jjMoveStringLiteralDfa1_2(long active0)
+{
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return 1;
+ }
+ switch(curChar)
+ {
+ case 47:
+ if ((active0 & 0x400L) != 0L)
+ return jjStopAtPos(1, 10);
+ break;
+ default :
+ return 2;
+ }
+ return 2;
+}
+static final int[] jjnextStates = {
+ 34, 35, 40, 41, 44, 45, 12, 23, 24, 26, 14, 16, 49, 51, 6, 8,
+ 9, 12, 23, 24, 28, 26, 36, 37, 12, 44, 45, 12, 10, 11, 17, 18,
+ 20, 25, 27, 29, 38, 39, 42, 43, 46, 47,
+};
+private static final boolean jjCanMove_0(int hiByte, int i1, int i2, long l1, long l2)
+{
+ switch(hiByte)
+ {
+ case 0:
+ return ((jjbitVec2[i2] & l2) != 0L);
+ default :
+ if ((jjbitVec0[i1] & l1) != 0L)
+ return true;
+ return false;
+ }
+}
+private static final boolean jjCanMove_1(int hiByte, int i1, int i2, long l1, long l2)
+{
+ switch(hiByte)
+ {
+ case 0:
+ return ((jjbitVec4[i2] & l2) != 0L);
+ case 48:
+ return ((jjbitVec5[i2] & l2) != 0L);
+ case 49:
+ return ((jjbitVec6[i2] & l2) != 0L);
+ case 51:
+ return ((jjbitVec7[i2] & l2) != 0L);
+ case 61:
+ return ((jjbitVec8[i2] & l2) != 0L);
+ default :
+ if ((jjbitVec3[i1] & l1) != 0L)
+ return true;
+ return false;
+ }
+}
+
+/** Token literal values. */
+public static final String[] jjstrLiteralImages = {
+"", null, null, null, null, null, null, null, null, null, null, null, null,
+"\141\142\163\164\162\141\143\164", "\141\163\163\145\162\164", "\142\157\157\154\145\141\156",
+"\142\162\145\141\153", "\142\171\164\145", "\143\141\163\145", "\143\141\164\143\150",
+"\143\150\141\162", "\143\154\141\163\163", "\143\157\156\163\164",
+"\143\157\156\164\151\156\165\145", "\144\145\146\141\165\154\164", "\144\157", "\144\157\165\142\154\145",
+"\145\154\163\145", "\145\156\165\155", "\145\170\164\145\156\144\163", "\146\141\154\163\145",
+"\146\151\156\141\154", "\146\151\156\141\154\154\171", "\146\154\157\141\164", "\146\157\162",
+"\147\157\164\157", "\151\146", "\151\155\160\154\145\155\145\156\164\163",
+"\151\155\160\157\162\164", "\151\156\163\164\141\156\143\145\157\146", "\151\156\164",
+"\151\156\164\145\162\146\141\143\145", "\154\157\156\147", "\156\141\164\151\166\145", "\156\145\167",
+"\156\165\154\154", "\160\141\143\153\141\147\145", "\160\162\151\166\141\164\145",
+"\160\162\157\164\145\143\164\145\144", "\160\165\142\154\151\143", "\162\145\164\165\162\156",
+"\163\150\157\162\164", "\163\164\141\164\151\143", "\163\164\162\151\143\164\146\160",
+"\163\165\160\145\162", "\163\167\151\164\143\150",
+"\163\171\156\143\150\162\157\156\151\172\145\144", "\164\150\151\163", "\164\150\162\157\167", "\164\150\162\157\167\163",
+"\164\162\141\156\163\151\145\156\164", "\164\162\165\145", "\164\162\171", "\166\157\151\144",
+"\166\157\154\141\164\151\154\145", "\167\150\151\154\145", null, null, null, null, null, null, null, null, null,
+null, null, "\50", "\51", "\173", "\175", "\133", "\135", "\73", "\54", "\56",
+"\100", "\75", "\74", "\41", "\176", "\77", "\72", "\75\75", "\74\75", "\76\75",
+"\41\75", "\174\174", "\46\46", "\53\53", "\55\55", "\53", "\55", "\52", "\57", "\46",
+"\174", "\136", "\45", "\74\74", "\53\75", "\55\75", "\52\75", "\57\75", "\46\75",
+"\174\75", "\136\75", "\45\75", "\74\74\75", "\76\76\75", "\76\76\76\75", "\56\56\56", };
+
+/** Lexer state names. */
+public static final String[] lexStateNames = {
+ "DEFAULT",
+ "IN_SINGLE_LINE_COMMENT",
+ "IN_FORMAL_COMMENT",
+ "IN_MULTI_LINE_COMMENT",
+};
+
+/** Lex State array. */
+public static final int[] jjnewLexState = {
+ -1, -1, -1, -1, -1, -1, 1, 2, 3, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+};
+static final long[] jjtoToken = {
+ 0xffffffffffffe001L, 0x3ffffffffffe747L,
+};
+static final long[] jjtoSkip = {
+ 0xe3eL, 0x0L,
+};
+static final long[] jjtoSpecial = {
+ 0xe00L, 0x0L,
+};
+static final long[] jjtoMore = {
+ 0x11c0L, 0x0L,
+};
+protected JavaCharStream input_stream;
+private final int[] jjrounds = new int[52];
+private final int[] jjstateSet = new int[104];
+private final StringBuilder jjimage = new StringBuilder();
+private StringBuilder image = jjimage;
+private int jjimageLen;
+private int lengthOfMatch;
+protected char curChar;
+/** Constructor. */
+public AnnotationParserTokenManager(JavaCharStream stream){
+ if (JavaCharStream.staticFlag)
+ throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
+ input_stream = stream;
+}
+
+/** Constructor. */
+public AnnotationParserTokenManager(JavaCharStream stream, int lexState){
+ this(stream);
+ SwitchTo(lexState);
+}
+
+/** Reinitialise parser. */
+public void ReInit(JavaCharStream stream)
+{
+ jjmatchedPos = jjnewStateCnt = 0;
+ curLexState = defaultLexState;
+ input_stream = stream;
+ ReInitRounds();
+}
+private void ReInitRounds()
+{
+ int i;
+ jjround = 0x80000001;
+ for (i = 52; i-- > 0;)
+ jjrounds[i] = 0x80000000;
+}
+
+/** Reinitialise parser. */
+public void ReInit(JavaCharStream stream, int lexState)
+{
+ ReInit(stream);
+ SwitchTo(lexState);
+}
+
+/** Switch to specified lex state. */
+public void SwitchTo(int lexState)
+{
+ if (lexState >= 4 || lexState < 0)
+ throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
+ else
+ curLexState = lexState;
+}
+
+protected Token jjFillToken()
+{
+ final Token t;
+ final String curTokenImage;
+ final int beginLine;
+ final int endLine;
+ final int beginColumn;
+ final int endColumn;
+ String im = jjstrLiteralImages[jjmatchedKind];
+ curTokenImage = (im == null) ? input_stream.GetImage() : im;
+ beginLine = input_stream.getBeginLine();
+ beginColumn = input_stream.getBeginColumn();
+ endLine = input_stream.getEndLine();
+ endColumn = input_stream.getEndColumn();
+ t = Token.newToken(jjmatchedKind, curTokenImage);
+
+ t.beginLine = beginLine;
+ t.endLine = endLine;
+ t.beginColumn = beginColumn;
+ t.endColumn = endColumn;
+
+ return t;
+}
+
+int curLexState = 0;
+int defaultLexState = 0;
+int jjnewStateCnt;
+int jjround;
+int jjmatchedPos;
+int jjmatchedKind;
+
+/** Get the next Token. */
+public Token getNextToken()
+{
+ Token specialToken = null;
+ Token matchedToken;
+ int curPos = 0;
+
+ EOFLoop :
+ for (;;)
+ {
+ try
+ {
+ curChar = input_stream.BeginToken();
+ }
+ catch(java.io.IOException e)
+ {
+ jjmatchedKind = 0;
+ matchedToken = jjFillToken();
+ matchedToken.specialToken = specialToken;
+ return matchedToken;
+ }
+ image = jjimage;
+ image.setLength(0);
+ jjimageLen = 0;
+
+ for (;;)
+ {
+ switch(curLexState)
+ {
+ case 0:
+ try { input_stream.backup(0);
+ while (curChar <= 32 && (0x100003600L & (1L << curChar)) != 0L)
+ curChar = input_stream.BeginToken();
+ }
+ catch (java.io.IOException e1) { continue EOFLoop; }
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_0();
+ break;
+ case 1:
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_1();
+ if (jjmatchedPos == 0 && jjmatchedKind > 12)
+ {
+ jjmatchedKind = 12;
+ }
+ break;
+ case 2:
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_2();
+ if (jjmatchedPos == 0 && jjmatchedKind > 12)
+ {
+ jjmatchedKind = 12;
+ }
+ break;
+ case 3:
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_3();
+ if (jjmatchedPos == 0 && jjmatchedKind > 12)
+ {
+ jjmatchedKind = 12;
+ }
+ break;
+ }
+ if (jjmatchedKind != 0x7fffffff)
+ {
+ if (jjmatchedPos + 1 < curPos)
+ input_stream.backup(curPos - jjmatchedPos - 1);
+ if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
+ {
+ matchedToken = jjFillToken();
+ matchedToken.specialToken = specialToken;
+ if (jjnewLexState[jjmatchedKind] != -1)
+ curLexState = jjnewLexState[jjmatchedKind];
+ return matchedToken;
+ }
+ else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
+ {
+ if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
+ {
+ matchedToken = jjFillToken();
+ if (specialToken == null)
+ specialToken = matchedToken;
+ else
+ {
+ matchedToken.specialToken = specialToken;
+ specialToken = (specialToken.next = matchedToken);
+ }
+ SkipLexicalActions(matchedToken);
+ }
+ else
+ SkipLexicalActions(null);
+ if (jjnewLexState[jjmatchedKind] != -1)
+ curLexState = jjnewLexState[jjmatchedKind];
+ continue EOFLoop;
+ }
+ MoreLexicalActions();
+ if (jjnewLexState[jjmatchedKind] != -1)
+ curLexState = jjnewLexState[jjmatchedKind];
+ curPos = 0;
+ jjmatchedKind = 0x7fffffff;
+ try {
+ curChar = input_stream.readChar();
+ continue;
+ }
+ catch (java.io.IOException e1) { }
+ }
+ int error_line = input_stream.getEndLine();
+ int error_column = input_stream.getEndColumn();
+ String error_after = null;
+ boolean EOFSeen = false;
+ try { input_stream.readChar(); input_stream.backup(1); }
+ catch (java.io.IOException e1) {
+ EOFSeen = true;
+ error_after = curPos <= 1 ? "" : input_stream.GetImage();
+ if (curChar == '\n' || curChar == '\r') {
+ error_line++;
+ error_column = 0;
+ }
+ else
+ error_column++;
+ }
+ if (!EOFSeen) {
+ input_stream.backup(1);
+ error_after = curPos <= 1 ? "" : input_stream.GetImage();
+ }
+ throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);
+ }
+ }
+}
+
+void SkipLexicalActions(Token matchedToken)
+{
+ switch(jjmatchedKind)
+ {
+ default :
+ break;
+ }
+}
+void MoreLexicalActions()
+{
+ jjimageLen += (lengthOfMatch = jjmatchedPos + 1);
+ switch(jjmatchedKind)
+ {
+ case 7 :
+ image.append(input_stream.GetSuffix(jjimageLen));
+ jjimageLen = 0;
+ input_stream.backup(1);
+ break;
+ default :
+ break;
+ }
+}
+private void jjCheckNAdd(int state)
+{
+ if (jjrounds[state] != jjround)
+ {
+ jjstateSet[jjnewStateCnt++] = state;
+ jjrounds[state] = jjround;
+ }
+}
+private void jjAddStates(int start, int end)
+{
+ do {
+ jjstateSet[jjnewStateCnt++] = jjnextStates[start];
+ } while (start++ != end);
+}
+private void jjCheckNAddTwoStates(int state1, int state2)
+{
+ jjCheckNAdd(state1);
+ jjCheckNAdd(state2);
+}
+
+private void jjCheckNAddStates(int start, int end)
+{
+ do {
+ jjCheckNAdd(jjnextStates[start]);
+ } while (start++ != end);
+}
+
+}
Added: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/JavaCharStream.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/JavaCharStream.java (rev 0)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/JavaCharStream.java 2009-11-30 03:55:25 UTC (rev 11703)
@@ -0,0 +1,617 @@
+/* Generated By:JavaCC: Do not edit this line. JavaCharStream.java Version 5.0 */
+/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
+package org.jboss.seam.remoting.annotationparser;
+
+/**
+ * An implementation of interface CharStream, where the stream is assumed to
+ * contain only ASCII characters (with java-like unicode escape processing).
+ */
+
+public
+class JavaCharStream
+{
+ /** Whether parser is static. */
+ public static final boolean staticFlag = false;
+
+ static final int hexval(char c) throws java.io.IOException {
+ switch(c)
+ {
+ case '0' :
+ return 0;
+ case '1' :
+ return 1;
+ case '2' :
+ return 2;
+ case '3' :
+ return 3;
+ case '4' :
+ return 4;
+ case '5' :
+ return 5;
+ case '6' :
+ return 6;
+ case '7' :
+ return 7;
+ case '8' :
+ return 8;
+ case '9' :
+ return 9;
+
+ case 'a' :
+ case 'A' :
+ return 10;
+ case 'b' :
+ case 'B' :
+ return 11;
+ case 'c' :
+ case 'C' :
+ return 12;
+ case 'd' :
+ case 'D' :
+ return 13;
+ case 'e' :
+ case 'E' :
+ return 14;
+ case 'f' :
+ case 'F' :
+ return 15;
+ }
+
+ throw new java.io.IOException(); // Should never come here
+ }
+
+/** Position in buffer. */
+ public int bufpos = -1;
+ int bufsize;
+ int available;
+ int tokenBegin;
+ protected int bufline[];
+ protected int bufcolumn[];
+
+ protected int column = 0;
+ protected int line = 1;
+
+ protected boolean prevCharIsCR = false;
+ protected boolean prevCharIsLF = false;
+
+ protected java.io.Reader inputStream;
+
+ protected char[] nextCharBuf;
+ protected char[] buffer;
+ protected int maxNextCharInd = 0;
+ protected int nextCharInd = -1;
+ protected int inBuf = 0;
+ protected int tabSize = 8;
+
+ protected void setTabSize(int i) { tabSize = i; }
+ protected int getTabSize(int i) { return tabSize; }
+
+ protected void ExpandBuff(boolean wrapAround)
+ {
+ char[] newbuffer = new char[bufsize + 2048];
+ int newbufline[] = new int[bufsize + 2048];
+ int newbufcolumn[] = new int[bufsize + 2048];
+
+ try
+ {
+ if (wrapAround)
+ {
+ System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
+ System.arraycopy(buffer, 0, newbuffer, bufsize - tokenBegin, bufpos);
+ buffer = newbuffer;
+
+ System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
+ System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
+ bufline = newbufline;
+
+ System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
+ System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
+ bufcolumn = newbufcolumn;
+
+ bufpos += (bufsize - tokenBegin);
+ }
+ else
+ {
+ System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
+ buffer = newbuffer;
+
+ System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
+ bufline = newbufline;
+
+ System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
+ bufcolumn = newbufcolumn;
+
+ bufpos -= tokenBegin;
+ }
+ }
+ catch (Throwable t)
+ {
+ throw new Error(t.getMessage());
+ }
+
+ available = (bufsize += 2048);
+ tokenBegin = 0;
+ }
+
+ protected void FillBuff() throws java.io.IOException
+ {
+ int i;
+ if (maxNextCharInd == 4096)
+ maxNextCharInd = nextCharInd = 0;
+
+ try {
+ if ((i = inputStream.read(nextCharBuf, maxNextCharInd,
+ 4096 - maxNextCharInd)) == -1)
+ {
+ inputStream.close();
+ throw new java.io.IOException();
+ }
+ else
+ maxNextCharInd += i;
+ return;
+ }
+ catch(java.io.IOException e) {
+ if (bufpos != 0)
+ {
+ --bufpos;
+ backup(0);
+ }
+ else
+ {
+ bufline[bufpos] = line;
+ bufcolumn[bufpos] = column;
+ }
+ throw e;
+ }
+ }
+
+ protected char ReadByte() throws java.io.IOException
+ {
+ if (++nextCharInd >= maxNextCharInd)
+ FillBuff();
+
+ return nextCharBuf[nextCharInd];
+ }
+
+/** @return starting character for token. */
+ public char BeginToken() throws java.io.IOException
+ {
+ if (inBuf > 0)
+ {
+ --inBuf;
+
+ if (++bufpos == bufsize)
+ bufpos = 0;
+
+ tokenBegin = bufpos;
+ return buffer[bufpos];
+ }
+
+ tokenBegin = 0;
+ bufpos = -1;
+
+ return readChar();
+ }
+
+ protected void AdjustBuffSize()
+ {
+ if (available == bufsize)
+ {
+ if (tokenBegin > 2048)
+ {
+ bufpos = 0;
+ available = tokenBegin;
+ }
+ else
+ ExpandBuff(false);
+ }
+ else if (available > tokenBegin)
+ available = bufsize;
+ else if ((tokenBegin - available) < 2048)
+ ExpandBuff(true);
+ else
+ available = tokenBegin;
+ }
+
+ protected void UpdateLineColumn(char c)
+ {
+ column++;
+
+ if (prevCharIsLF)
+ {
+ prevCharIsLF = false;
+ line += (column = 1);
+ }
+ else if (prevCharIsCR)
+ {
+ prevCharIsCR = false;
+ if (c == '\n')
+ {
+ prevCharIsLF = true;
+ }
+ else
+ line += (column = 1);
+ }
+
+ switch (c)
+ {
+ case '\r' :
+ prevCharIsCR = true;
+ break;
+ case '\n' :
+ prevCharIsLF = true;
+ break;
+ case '\t' :
+ column--;
+ column += (tabSize - (column % tabSize));
+ break;
+ default :
+ break;
+ }
+
+ bufline[bufpos] = line;
+ bufcolumn[bufpos] = column;
+ }
+
+/** Read a character. */
+ public char readChar() throws java.io.IOException
+ {
+ if (inBuf > 0)
+ {
+ --inBuf;
+
+ if (++bufpos == bufsize)
+ bufpos = 0;
+
+ return buffer[bufpos];
+ }
+
+ char c;
+
+ if (++bufpos == available)
+ AdjustBuffSize();
+
+ if ((buffer[bufpos] = c = ReadByte()) == '\\')
+ {
+ UpdateLineColumn(c);
+
+ int backSlashCnt = 1;
+
+ for (;;) // Read all the backslashes
+ {
+ if (++bufpos == available)
+ AdjustBuffSize();
+
+ try
+ {
+ if ((buffer[bufpos] = c = ReadByte()) != '\\')
+ {
+ UpdateLineColumn(c);
+ // found a non-backslash char.
+ if ((c == 'u') && ((backSlashCnt & 1) == 1))
+ {
+ if (--bufpos < 0)
+ bufpos = bufsize - 1;
+
+ break;
+ }
+
+ backup(backSlashCnt);
+ return '\\';
+ }
+ }
+ catch(java.io.IOException e)
+ {
+ // We are returning one backslash so we should only backup (count-1)
+ if (backSlashCnt > 1)
+ backup(backSlashCnt-1);
+
+ return '\\';
+ }
+
+ UpdateLineColumn(c);
+ backSlashCnt++;
+ }
+
+ // Here, we have seen an odd number of backslash's followed by a 'u'
+ try
+ {
+ while ((c = ReadByte()) == 'u')
+ ++column;
+
+ buffer[bufpos] = c = (char)(hexval(c) << 12 |
+ hexval(ReadByte()) << 8 |
+ hexval(ReadByte()) << 4 |
+ hexval(ReadByte()));
+
+ column += 4;
+ }
+ catch(java.io.IOException e)
+ {
+ throw new Error("Invalid escape character at line " + line +
+ " column " + column + ".");
+ }
+
+ if (backSlashCnt == 1)
+ return c;
+ else
+ {
+ backup(backSlashCnt - 1);
+ return '\\';
+ }
+ }
+ else
+ {
+ UpdateLineColumn(c);
+ return c;
+ }
+ }
+
+ @Deprecated
+ /**
+ * @deprecated
+ * @see #getEndColumn
+ */
+ public int getColumn() {
+ return bufcolumn[bufpos];
+ }
+
+ @Deprecated
+ /**
+ * @deprecated
+ * @see #getEndLine
+ */
+ public int getLine() {
+ return bufline[bufpos];
+ }
+
+/** Get end column. */
+ public int getEndColumn() {
+ return bufcolumn[bufpos];
+ }
+
+/** Get end line. */
+ public int getEndLine() {
+ return bufline[bufpos];
+ }
+
+/** @return column of token start */
+ public int getBeginColumn() {
+ return bufcolumn[tokenBegin];
+ }
+
+/** @return line number of token start */
+ public int getBeginLine() {
+ return bufline[tokenBegin];
+ }
+
+/** Retreat. */
+ public void backup(int amount) {
+
+ inBuf += amount;
+ if ((bufpos -= amount) < 0)
+ bufpos += bufsize;
+ }
+
+/** Constructor. */
+ public JavaCharStream(java.io.Reader dstream,
+ int startline, int startcolumn, int buffersize)
+ {
+ inputStream = dstream;
+ line = startline;
+ column = startcolumn - 1;
+
+ available = bufsize = buffersize;
+ buffer = new char[buffersize];
+ bufline = new int[buffersize];
+ bufcolumn = new int[buffersize];
+ nextCharBuf = new char[4096];
+ }
+
+/** Constructor. */
+ public JavaCharStream(java.io.Reader dstream,
+ int startline, int startcolumn)
+ {
+ this(dstream, startline, startcolumn, 4096);
+ }
+
+/** Constructor. */
+ public JavaCharStream(java.io.Reader dstream)
+ {
+ this(dstream, 1, 1, 4096);
+ }
+/** Reinitialise. */
+ public void ReInit(java.io.Reader dstream,
+ int startline, int startcolumn, int buffersize)
+ {
+ inputStream = dstream;
+ line = startline;
+ column = startcolumn - 1;
+
+ if (buffer == null || buffersize != buffer.length)
+ {
+ available = bufsize = buffersize;
+ buffer = new char[buffersize];
+ bufline = new int[buffersize];
+ bufcolumn = new int[buffersize];
+ nextCharBuf = new char[4096];
+ }
+ prevCharIsLF = prevCharIsCR = false;
+ tokenBegin = inBuf = maxNextCharInd = 0;
+ nextCharInd = bufpos = -1;
+ }
+
+/** Reinitialise. */
+ public void ReInit(java.io.Reader dstream,
+ int startline, int startcolumn)
+ {
+ ReInit(dstream, startline, startcolumn, 4096);
+ }
+
+/** Reinitialise. */
+ public void ReInit(java.io.Reader dstream)
+ {
+ ReInit(dstream, 1, 1, 4096);
+ }
+/** Constructor. */
+ public JavaCharStream(java.io.InputStream dstream, String encoding, int startline,
+ int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
+ {
+ this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
+ }
+
+/** Constructor. */
+ public JavaCharStream(java.io.InputStream dstream, int startline,
+ int startcolumn, int buffersize)
+ {
+ this(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
+ }
+
+/** Constructor. */
+ public JavaCharStream(java.io.InputStream dstream, String encoding, int startline,
+ int startcolumn) throws java.io.UnsupportedEncodingException
+ {
+ this(dstream, encoding, startline, startcolumn, 4096);
+ }
+
+/** Constructor. */
+ public JavaCharStream(java.io.InputStream dstream, int startline,
+ int startcolumn)
+ {
+ this(dstream, startline, startcolumn, 4096);
+ }
+
+/** Constructor. */
+ public JavaCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
+ {
+ this(dstream, encoding, 1, 1, 4096);
+ }
+
+/** Constructor. */
+ public JavaCharStream(java.io.InputStream dstream)
+ {
+ this(dstream, 1, 1, 4096);
+ }
+
+/** Reinitialise. */
+ public void ReInit(java.io.InputStream dstream, String encoding, int startline,
+ int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
+ {
+ ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
+ }
+
+/** Reinitialise. */
+ public void ReInit(java.io.InputStream dstream, int startline,
+ int startcolumn, int buffersize)
+ {
+ ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
+ }
+/** Reinitialise. */
+ public void ReInit(java.io.InputStream dstream, String encoding, int startline,
+ int startcolumn) throws java.io.UnsupportedEncodingException
+ {
+ ReInit(dstream, encoding, startline, startcolumn, 4096);
+ }
+/** Reinitialise. */
+ public void ReInit(java.io.InputStream dstream, int startline,
+ int startcolumn)
+ {
+ ReInit(dstream, startline, startcolumn, 4096);
+ }
+/** Reinitialise. */
+ public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
+ {
+ ReInit(dstream, encoding, 1, 1, 4096);
+ }
+
+/** Reinitialise. */
+ public void ReInit(java.io.InputStream dstream)
+ {
+ ReInit(dstream, 1, 1, 4096);
+ }
+
+ /** @return token image as String */
+ public String GetImage()
+ {
+ if (bufpos >= tokenBegin)
+ return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
+ else
+ return new String(buffer, tokenBegin, bufsize - tokenBegin) +
+ new String(buffer, 0, bufpos + 1);
+ }
+
+ /** @return suffix */
+ public char[] GetSuffix(int len)
+ {
+ char[] ret = new char[len];
+
+ if ((bufpos + 1) >= len)
+ System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
+ else
+ {
+ System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
+ len - bufpos - 1);
+ System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
+ }
+
+ return ret;
+ }
+
+ /** Set buffers back to null when finished. */
+ public void Done()
+ {
+ nextCharBuf = null;
+ buffer = null;
+ bufline = null;
+ bufcolumn = null;
+ }
+
+ /**
+ * Method to adjust line and column numbers for the start of a token.
+ */
+ public void adjustBeginLineColumn(int newLine, int newCol)
+ {
+ int start = tokenBegin;
+ int len;
+
+ if (bufpos >= tokenBegin)
+ {
+ len = bufpos - tokenBegin + inBuf + 1;
+ }
+ else
+ {
+ len = bufsize - tokenBegin + bufpos + 1 + inBuf;
+ }
+
+ int i = 0, j = 0, k = 0;
+ int nextColDiff = 0, columnDiff = 0;
+
+ while (i < len && bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
+ {
+ bufline[j] = newLine;
+ nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
+ bufcolumn[j] = newCol + columnDiff;
+ columnDiff = nextColDiff;
+ i++;
+ }
+
+ if (i < len)
+ {
+ bufline[j] = newLine++;
+ bufcolumn[j] = newCol + columnDiff;
+
+ while (i++ < len)
+ {
+ if (bufline[j = start % bufsize] != bufline[++start % bufsize])
+ bufline[j] = newLine++;
+ else
+ bufline[j] = newLine;
+ }
+ }
+
+ line = bufline[j];
+ column = bufcolumn[j];
+ }
+
+}
+/* JavaCC - OriginalChecksum=182365e3286b47c28748722cabea6f07 (do not edit this line) */
Added: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/ParseException.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/ParseException.java (rev 0)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/ParseException.java 2009-11-30 03:55:25 UTC (rev 11703)
@@ -0,0 +1,187 @@
+/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 5.0 */
+/* JavaCCOptions:KEEP_LINE_COL=null */
+package org.jboss.seam.remoting.annotationparser;
+
+/**
+ * This exception is thrown when parse errors are encountered.
+ * You can explicitly create objects of this exception type by
+ * calling the method generateParseException in the generated
+ * parser.
+ *
+ * You can modify this class to customize your error reporting
+ * mechanisms so long as you retain the public fields.
+ */
+public class ParseException extends Exception {
+
+ /**
+ * The version identifier for this Serializable class.
+ * Increment only if the <i>serialized</i> form of the
+ * class changes.
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * This constructor is used by the method "generateParseException"
+ * in the generated parser. Calling this constructor generates
+ * a new object of this type with the fields "currentToken",
+ * "expectedTokenSequences", and "tokenImage" set.
+ */
+ public ParseException(Token currentTokenVal,
+ int[][] expectedTokenSequencesVal,
+ String[] tokenImageVal
+ )
+ {
+ super(initialise(currentTokenVal, expectedTokenSequencesVal, tokenImageVal));
+ currentToken = currentTokenVal;
+ expectedTokenSequences = expectedTokenSequencesVal;
+ tokenImage = tokenImageVal;
+ }
+
+ /**
+ * The following constructors are for use by you for whatever
+ * purpose you can think of. Constructing the exception in this
+ * manner makes the exception behave in the normal way - i.e., as
+ * documented in the class "Throwable". The fields "errorToken",
+ * "expectedTokenSequences", and "tokenImage" do not contain
+ * relevant information. The JavaCC generated code does not use
+ * these constructors.
+ */
+
+ public ParseException() {
+ super();
+ }
+
+ /** Constructor with message. */
+ public ParseException(String message) {
+ super(message);
+ }
+
+
+ /**
+ * This is the last token that has been consumed successfully. If
+ * this object has been created due to a parse error, the token
+ * followng this token will (therefore) be the first error token.
+ */
+ public Token currentToken;
+
+ /**
+ * Each entry in this array is an array of integers. Each array
+ * of integers represents a sequence of tokens (by their ordinal
+ * values) that is expected at this point of the parse.
+ */
+ public int[][] expectedTokenSequences;
+
+ /**
+ * This is a reference to the "tokenImage" array of the generated
+ * parser within which the parse error occurred. This array is
+ * defined in the generated ...Constants interface.
+ */
+ public String[] tokenImage;
+
+ /**
+ * It uses "currentToken" and "expectedTokenSequences" to generate a parse
+ * error message and returns it. If this object has been created
+ * due to a parse error, and you do not catch it (it gets thrown
+ * from the parser) the correct error message
+ * gets displayed.
+ */
+ private static String initialise(Token currentToken,
+ int[][] expectedTokenSequences,
+ String[] tokenImage) {
+ String eol = System.getProperty("line.separator", "\n");
+ StringBuffer expected = new StringBuffer();
+ int maxSize = 0;
+ for (int i = 0; i < expectedTokenSequences.length; i++) {
+ if (maxSize < expectedTokenSequences[i].length) {
+ maxSize = expectedTokenSequences[i].length;
+ }
+ for (int j = 0; j < expectedTokenSequences[i].length; j++) {
+ expected.append(tokenImage[expectedTokenSequences[i][j]]).append(' ');
+ }
+ if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
+ expected.append("...");
+ }
+ expected.append(eol).append(" ");
+ }
+ String retval = "Encountered \"";
+ Token tok = currentToken.next;
+ for (int i = 0; i < maxSize; i++) {
+ if (i != 0) retval += " ";
+ if (tok.kind == 0) {
+ retval += tokenImage[0];
+ break;
+ }
+ retval += " " + tokenImage[tok.kind];
+ retval += " \"";
+ retval += add_escapes(tok.image);
+ retval += " \"";
+ tok = tok.next;
+ }
+ retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
+ retval += "." + eol;
+ if (expectedTokenSequences.length == 1) {
+ retval += "Was expecting:" + eol + " ";
+ } else {
+ retval += "Was expecting one of:" + eol + " ";
+ }
+ retval += expected.toString();
+ return retval;
+ }
+
+ /**
+ * The end of line string for this machine.
+ */
+ protected String eol = System.getProperty("line.separator", "\n");
+
+ /**
+ * Used to convert raw characters to their escaped version
+ * when these raw version cannot be used as part of an ASCII
+ * string literal.
+ */
+ static String add_escapes(String str) {
+ StringBuffer retval = new StringBuffer();
+ char ch;
+ for (int i = 0; i < str.length(); i++) {
+ switch (str.charAt(i))
+ {
+ case 0 :
+ continue;
+ case '\b':
+ retval.append("\\b");
+ continue;
+ case '\t':
+ retval.append("\\t");
+ continue;
+ case '\n':
+ retval.append("\\n");
+ continue;
+ case '\f':
+ retval.append("\\f");
+ continue;
+ case '\r':
+ retval.append("\\r");
+ continue;
+ case '\"':
+ retval.append("\\\"");
+ continue;
+ case '\'':
+ retval.append("\\\'");
+ continue;
+ case '\\':
+ retval.append("\\\\");
+ continue;
+ default:
+ if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
+ String s = "0000" + Integer.toString(ch, 16);
+ retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+ } else {
+ retval.append(ch);
+ }
+ continue;
+ }
+ }
+ return retval.toString();
+ }
+
+}
+/* JavaCC - OriginalChecksum=3df005c67535972cf450c73c35562a92 (do not edit this line) */
Added: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/Token.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/Token.java (rev 0)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/Token.java 2009-11-30 03:55:25 UTC (rev 11703)
@@ -0,0 +1,131 @@
+/* Generated By:JavaCC: Do not edit this line. Token.java Version 5.0 */
+/* JavaCCOptions:TOKEN_EXTENDS=,KEEP_LINE_COL=null,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
+package org.jboss.seam.remoting.annotationparser;
+
+/**
+ * Describes the input token stream.
+ */
+
+public class Token implements java.io.Serializable {
+
+ /**
+ * The version identifier for this Serializable class.
+ * Increment only if the <i>serialized</i> form of the
+ * class changes.
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * An integer that describes the kind of this token. This numbering
+ * system is determined by JavaCCParser, and a table of these numbers is
+ * stored in the file ...Constants.java.
+ */
+ public int kind;
+
+ /** The line number of the first character of this Token. */
+ public int beginLine;
+ /** The column number of the first character of this Token. */
+ public int beginColumn;
+ /** The line number of the last character of this Token. */
+ public int endLine;
+ /** The column number of the last character of this Token. */
+ public int endColumn;
+
+ /**
+ * The string image of the token.
+ */
+ public String image;
+
+ /**
+ * A reference to the next regular (non-special) token from the input
+ * stream. If this is the last token from the input stream, or if the
+ * token manager has not read tokens beyond this one, this field is
+ * set to null. This is true only if this token is also a regular
+ * token. Otherwise, see below for a description of the contents of
+ * this field.
+ */
+ public Token next;
+
+ /**
+ * This field is used to access special tokens that occur prior to this
+ * token, but after the immediately preceding regular (non-special) token.
+ * If there are no such special tokens, this field is set to null.
+ * When there are more than one such special token, this field refers
+ * to the last of these special tokens, which in turn refers to the next
+ * previous special token through its specialToken field, and so on
+ * until the first special token (whose specialToken field is null).
+ * The next fields of special tokens refer to other special tokens that
+ * immediately follow it (without an intervening regular token). If there
+ * is no such token, this field is null.
+ */
+ public Token specialToken;
+
+ /**
+ * An optional attribute value of the Token.
+ * Tokens which are not used as syntactic sugar will often contain
+ * meaningful values that will be used later on by the compiler or
+ * interpreter. This attribute value is often different from the image.
+ * Any subclass of Token that actually wants to return a non-null value can
+ * override this method as appropriate.
+ */
+ public Object getValue() {
+ return null;
+ }
+
+ /**
+ * No-argument constructor
+ */
+ public Token() {}
+
+ /**
+ * Constructs a new token for the specified Image.
+ */
+ public Token(int kind)
+ {
+ this(kind, null);
+ }
+
+ /**
+ * Constructs a new token for the specified Image and Kind.
+ */
+ public Token(int kind, String image)
+ {
+ this.kind = kind;
+ this.image = image;
+ }
+
+ /**
+ * Returns the image.
+ */
+ public String toString()
+ {
+ return image;
+ }
+
+ /**
+ * Returns a new Token object, by default. However, if you want, you
+ * can create and return subclass objects based on the value of ofKind.
+ * Simply add the cases to the switch for all those special cases.
+ * For example, if you have a subclass of Token called IDToken that
+ * you want to create if ofKind is ID, simply add something like :
+ *
+ * case MyParserConstants.ID : return new IDToken(ofKind, image);
+ *
+ * to the following switch statement. Then you can cast matchedToken
+ * variable to the appropriate type and use sit in your lexical actions.
+ */
+ public static Token newToken(int ofKind, String image)
+ {
+ switch(ofKind)
+ {
+ default : return new Token(ofKind, image);
+ }
+ }
+
+ public static Token newToken(int ofKind)
+ {
+ return newToken(ofKind, null);
+ }
+
+}
+/* JavaCC - OriginalChecksum=49fd782c1d30df051e10a1c1f0160383 (do not edit this line) */
Added: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/TokenMgrError.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/TokenMgrError.java (rev 0)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/annotationparser/TokenMgrError.java 2009-11-30 03:55:25 UTC (rev 11703)
@@ -0,0 +1,147 @@
+/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 5.0 */
+/* JavaCCOptions: */
+package org.jboss.seam.remoting.annotationparser;
+
+/** Token Manager Error. */
+public class TokenMgrError extends Error
+{
+
+ /**
+ * The version identifier for this Serializable class.
+ * Increment only if the <i>serialized</i> form of the
+ * class changes.
+ */
+ private static final long serialVersionUID = 1L;
+
+ /*
+ * Ordinals for various reasons why an Error of this type can be thrown.
+ */
+
+ /**
+ * Lexical error occurred.
+ */
+ static final int LEXICAL_ERROR = 0;
+
+ /**
+ * An attempt was made to create a second instance of a static token manager.
+ */
+ static final int STATIC_LEXER_ERROR = 1;
+
+ /**
+ * Tried to change to an invalid lexical state.
+ */
+ static final int INVALID_LEXICAL_STATE = 2;
+
+ /**
+ * Detected (and bailed out of) an infinite loop in the token manager.
+ */
+ static final int LOOP_DETECTED = 3;
+
+ /**
+ * Indicates the reason why the exception is thrown. It will have
+ * one of the above 4 values.
+ */
+ int errorCode;
+
+ /**
+ * Replaces unprintable characters by their escaped (or unicode escaped)
+ * equivalents in the given string
+ */
+ protected static final String addEscapes(String str) {
+ StringBuffer retval = new StringBuffer();
+ char ch;
+ for (int i = 0; i < str.length(); i++) {
+ switch (str.charAt(i))
+ {
+ case 0 :
+ continue;
+ case '\b':
+ retval.append("\\b");
+ continue;
+ case '\t':
+ retval.append("\\t");
+ continue;
+ case '\n':
+ retval.append("\\n");
+ continue;
+ case '\f':
+ retval.append("\\f");
+ continue;
+ case '\r':
+ retval.append("\\r");
+ continue;
+ case '\"':
+ retval.append("\\\"");
+ continue;
+ case '\'':
+ retval.append("\\\'");
+ continue;
+ case '\\':
+ retval.append("\\\\");
+ continue;
+ default:
+ if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
+ String s = "0000" + Integer.toString(ch, 16);
+ retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+ } else {
+ retval.append(ch);
+ }
+ continue;
+ }
+ }
+ return retval.toString();
+ }
+
+ /**
+ * Returns a detailed message for the Error when it is thrown by the
+ * token manager to indicate a lexical error.
+ * Parameters :
+ * EOFSeen : indicates if EOF caused the lexical error
+ * curLexState : lexical state in which this error occurred
+ * errorLine : line number when the error occurred
+ * errorColumn : column number when the error occurred
+ * errorAfter : prefix that was seen before this error occurred
+ * curchar : the offending character
+ * Note: You can customize the lexical error message by modifying this method.
+ */
+ protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
+ return("Lexical error at line " +
+ errorLine + ", column " +
+ errorColumn + ". Encountered: " +
+ (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
+ "after : \"" + addEscapes(errorAfter) + "\"");
+ }
+
+ /**
+ * You can also modify the body of this method to customize your error messages.
+ * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
+ * of end-users concern, so you can return something like :
+ *
+ * "Internal Error : Please file a bug report .... "
+ *
+ * from this method for such cases in the release version of your parser.
+ */
+ public String getMessage() {
+ return super.getMessage();
+ }
+
+ /*
+ * Constructors of various flavors follow.
+ */
+
+ /** No arg constructor. */
+ public TokenMgrError() {
+ }
+
+ /** Constructor with message and reason. */
+ public TokenMgrError(String message, int reason) {
+ super(message);
+ errorCode = reason;
+ }
+
+ /** Full Constructor. */
+ public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
+ this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
+ }
+}
+/* JavaCC - OriginalChecksum=cf2bd704a56c55788afc36f823025214 (do not edit this line) */
Added: modules/trunk/remoting/src/main/javacc/AnnotationParser.jj
===================================================================
--- modules/trunk/remoting/src/main/javacc/AnnotationParser.jj (rev 0)
+++ modules/trunk/remoting/src/main/javacc/AnnotationParser.jj 2009-11-30 03:55:25 UTC (rev 11703)
@@ -0,0 +1,467 @@
+options {
+ JAVA_UNICODE_ESCAPE = true;
+ ERROR_REPORTING = false;
+ STATIC = false;
+}
+
+PARSER_BEGIN(AnnotationParser)
+package org.jboss.seam.remoting.annotationparser;
+
+import java.io.*;
+
+/**
+ * Grammar to parse Java 1.5 Annotations
+ * @author Shane Bryzak
+ */
+public class AnnotationParser
+{
+ public AnnotationParser(String fileName)
+ {
+ this(System.in);
+ try { ReInit(new FileInputStream(new File(fileName))); }
+ catch(Exception e) { e.printStackTrace(); }
+ }
+
+ public static void main(String args[]) {
+ AnnotationParser parser;
+ if (args.length == 0) {
+ System.out.println("AnnotationParser: Reading from standard input . . .");
+ parser = new AnnotationParser(System.in);
+ } else if (args.length == 1) {
+ System.out.println("AnnotationParser: Reading from file " + args[0] + " . . .");
+ try {
+ parser = new AnnotationParser(new java.io.FileInputStream(args[0]));
+ } catch (java.io.FileNotFoundException e) {
+ System.out.println("AnnotationParser: File " + args[0] + " not found.");
+ return;
+ }
+ } else {
+ System.out.println("AnnotationParser: Usage is one of:");
+ System.out.println(" java AnnotationParser < inputfile");
+ System.out.println("OR");
+ System.out.println(" java AnnotationParser inputfile");
+ return;
+ }
+ try {
+ parser.AnnotationsUnit();
+ System.out.println("AnnotationParser: Annotations parsed successfully.");
+ } catch (ParseException e) {
+ System.out.println(e.getMessage());
+ System.out.println("AnnotationParser: Encountered errors during parse.");
+ }
+ }
+
+}
+
+PARSER_END(AnnotationParser)
+
+/* WHITE SPACE */
+
+SKIP :
+{
+ " "
+| "\t"
+| "\n"
+| "\r"
+| "\f"
+}
+
+/* COMMENTS */
+
+MORE :
+{
+ "//" : IN_SINGLE_LINE_COMMENT
+|
+ <"/**" ~["/"]> { input_stream.backup(1); } : IN_FORMAL_COMMENT
+|
+ "/*" : IN_MULTI_LINE_COMMENT
+}
+
+<IN_SINGLE_LINE_COMMENT>
+SPECIAL_TOKEN :
+{
+ <SINGLE_LINE_COMMENT: "\n" | "\r" | "\r\n" > : DEFAULT
+}
+
+<IN_FORMAL_COMMENT>
+SPECIAL_TOKEN :
+{
+ <FORMAL_COMMENT: "*/" > : DEFAULT
+}
+
+<IN_MULTI_LINE_COMMENT>
+SPECIAL_TOKEN :
+{
+ <MULTI_LINE_COMMENT: "*/" > : DEFAULT
+}
+
+<IN_SINGLE_LINE_COMMENT,IN_FORMAL_COMMENT,IN_MULTI_LINE_COMMENT>
+MORE :
+{
+ < ~[] >
+}
+
+/* RESERVED WORDS AND LITERALS */
+
+TOKEN :
+{
+ < ABSTRACT: "abstract" >
+| < ASSERT: "assert" >
+| < BOOLEAN: "boolean" >
+| < BREAK: "break" >
+| < BYTE: "byte" >
+| < CASE: "case" >
+| < CATCH: "catch" >
+| < CHAR: "char" >
+| < CLASS: "class" >
+| < CONST: "const" >
+| < CONTINUE: "continue" >
+| < _DEFAULT: "default" >
+| < DO: "do" >
+| < DOUBLE: "double" >
+| < ELSE: "else" >
+| < ENUM: "enum" >
+| < EXTENDS: "extends" >
+| < FALSE: "false" >
+| < FINAL: "final" >
+| < FINALLY: "finally" >
+| < FLOAT: "float" >
+| < FOR: "for" >
+| < GOTO: "goto" >
+| < IF: "if" >
+| < IMPLEMENTS: "implements" >
+| < IMPORT: "import" >
+| < INSTANCEOF: "instanceof" >
+| < INT: "int" >
+| < INTERFACE: "interface" >
+| < LONG: "long" >
+| < NATIVE: "native" >
+| < NEW: "new" >
+| < NULL: "null" >
+| < PACKAGE: "package">
+| < PRIVATE: "private" >
+| < PROTECTED: "protected" >
+| < PUBLIC: "public" >
+| < RETURN: "return" >
+| < SHORT: "short" >
+| < STATIC: "static" >
+| < STRICTFP: "strictfp" >
+| < SUPER: "super" >
+| < SWITCH: "switch" >
+| < SYNCHRONIZED: "synchronized" >
+| < THIS: "this" >
+| < THROW: "throw" >
+| < THROWS: "throws" >
+| < TRANSIENT: "transient" >
+| < TRUE: "true" >
+| < TRY: "try" >
+| < VOID: "void" >
+| < VOLATILE: "volatile" >
+| < WHILE: "while" >
+}
+
+/* LITERALS */
+
+TOKEN :
+{
+ < INTEGER_LITERAL:
+ <DECIMAL_LITERAL> (["l","L"])?
+ | <HEX_LITERAL> (["l","L"])?
+ | <OCTAL_LITERAL> (["l","L"])?
+ >
+|
+ < #DECIMAL_LITERAL: ["1"-"9"] (["0"-"9"])* >
+|
+ < #HEX_LITERAL: "0" ["x","X"] (["0"-"9","a"-"f","A"-"F"])+ >
+|
+ < #OCTAL_LITERAL: "0" (["0"-"7"])* >
+|
+ < FLOATING_POINT_LITERAL:
+ (["0"-"9"])+ "." (["0"-"9"])* (<EXPONENT>)? (["f","F","d","D"])?
+ | "." (["0"-"9"])+ (<EXPONENT>)? (["f","F","d","D"])?
+ | (["0"-"9"])+ <EXPONENT> (["f","F","d","D"])?
+ | (["0"-"9"])+ (<EXPONENT>)? ["f","F","d","D"]
+ >
+|
+ < #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ >
+|
+ < CHARACTER_LITERAL:
+ "'"
+ ( (~["'","\\","\n","\r"])
+ | ("\\"
+ ( ["n","t","b","r","f","\\","'","\""]
+ | ["0"-"7"] ( ["0"-"7"] )?
+ | ["0"-"3"] ["0"-"7"] ["0"-"7"]
+ )
+ )
+ )
+ "'"
+ >
+|
+ < STRING_LITERAL:
+ "\""
+ ( (~["\"","\\","\n","\r"])
+ | ("\\"
+ ( ["n","t","b","r","f","\\","'","\""]
+ | ["0"-"7"] ( ["0"-"7"] )?
+ | ["0"-"3"] ["0"-"7"] ["0"-"7"]
+ )
+ )
+ )*
+ "\""
+ >
+}
+
+/* IDENTIFIERS */
+
+TOKEN :
+{
+ < IDENTIFIER: <LETTER> (<LETTER>|<DIGIT>)* >
+|
+ < #LETTER:
+ [
+ "\u0024",
+ "\u0041"-"\u005a",
+ "\u005f",
+ "\u0061"-"\u007a",
+ "\u00c0"-"\u00d6",
+ "\u00d8"-"\u00f6",
+ "\u00f8"-"\u00ff",
+ "\u0100"-"\u1fff",
+ "\u3040"-"\u318f",
+ "\u3300"-"\u337f",
+ "\u3400"-"\u3d2d",
+ "\u4e00"-"\u9fff",
+ "\uf900"-"\ufaff"
+ ]
+ >
+|
+ < #DIGIT:
+ [
+ "\u0030"-"\u0039",
+ "\u0660"-"\u0669",
+ "\u06f0"-"\u06f9",
+ "\u0966"-"\u096f",
+ "\u09e6"-"\u09ef",
+ "\u0a66"-"\u0a6f",
+ "\u0ae6"-"\u0aef",
+ "\u0b66"-"\u0b6f",
+ "\u0be7"-"\u0bef",
+ "\u0c66"-"\u0c6f",
+ "\u0ce6"-"\u0cef",
+ "\u0d66"-"\u0d6f",
+ "\u0e50"-"\u0e59",
+ "\u0ed0"-"\u0ed9",
+ "\u1040"-"\u1049"
+ ]
+ >
+}
+
+/* SEPARATORS */
+
+TOKEN :
+{
+ < LPAREN: "(" >
+| < RPAREN: ")" >
+| < LBRACE: "{" >
+| < RBRACE: "}" >
+| < LBRACKET: "[" >
+| < RBRACKET: "]" >
+| < SEMICOLON: ";" >
+| < COMMA: "," >
+| < DOT: "." >
+| < AT: "@" >
+}
+
+/* OPERATORS */
+
+TOKEN :
+{
+ < ASSIGN: "=" >
+| < LT: "<" >
+| < BANG: "!" >
+| < TILDE: "~" >
+| < HOOK: "?" >
+| < COLON: ":" >
+| < EQ: "==" >
+| < LE: "<=" >
+| < GE: ">=" >
+| < NE: "!=" >
+| < SC_OR: "||" >
+| < SC_AND: "&&" >
+| < INCR: "++" >
+| < DECR: "--" >
+| < PLUS: "+" >
+| < MINUS: "-" >
+| < STAR: "*" >
+| < SLASH: "/" >
+| < BIT_AND: "&" >
+| < BIT_OR: "|" >
+| < XOR: "^" >
+| < REM: "%" >
+| < LSHIFT: "<<" >
+| < PLUSASSIGN: "+=" >
+| < MINUSASSIGN: "-=" >
+| < STARASSIGN: "*=" >
+| < SLASHASSIGN: "/=" >
+| < ANDASSIGN: "&=" >
+| < ORASSIGN: "|=" >
+| < XORASSIGN: "^=" >
+| < REMASSIGN: "%=" >
+| < LSHIFTASSIGN: "<<=" >
+| < RSIGNEDSHIFTASSIGN: ">>=" >
+| < RUNSIGNEDSHIFTASSIGN: ">>>=" >
+| < ELLIPSIS: "..." >
+}
+
+/* >'s need special attention due to generics syntax. */
+TOKEN :
+{
+ < RUNSIGNEDSHIFT: ">>>" >
+ {
+ matchedToken.kind = GT;
+ ((Token.GTToken)matchedToken).realKind = RUNSIGNEDSHIFT;
+ input_stream.backup(2);
+ }
+| < RSIGNEDSHIFT: ">>" >
+ {
+ matchedToken.kind = GT;
+ ((Token.GTToken)matchedToken).realKind = RSIGNEDSHIFT;
+ input_stream.backup(1);
+ }
+| < GT: ">" >
+}
+
+
+/***********************************
+ * ANNOTATIONS GRAMMAR STARTS HERE *
+ ***********************************/
+
+/*
+ * Program structuring syntax follows.
+ */
+
+void AnnotationsUnit():
+{}
+{
+ "(" [ Annotation() ( "," Annotation() )* ] ")"
+}
+
+void PrimitiveType():
+{}
+{
+ "boolean"
+|
+ "char"
+|
+ "byte"
+|
+ "short"
+|
+ "int"
+|
+ "long"
+|
+ "float"
+|
+ "double"
+}
+
+void Name():
+{}
+{
+ <IDENTIFIER>
+ ( "." <IDENTIFIER>
+ )*
+}
+
+void Literal():
+{}
+{
+ <INTEGER_LITERAL>
+|
+ <FLOATING_POINT_LITERAL>
+|
+ <CHARACTER_LITERAL>
+|
+ <STRING_LITERAL>
+|
+ BooleanLiteral()
+|
+ NullLiteral()
+}
+
+void BooleanLiteral():
+{}
+{
+ "true"
+|
+ "false"
+}
+
+void NullLiteral():
+{}
+{
+ "null"
+}
+
+/* Annotation syntax follows. */
+
+void Annotation():
+{}
+{
+ LOOKAHEAD( "@" Name() "(" ( <IDENTIFIER> "=" | ")" ))
+ NormalAnnotation()
+ |
+ LOOKAHEAD( "@" Name() "(" )
+ SingleMemberAnnotation()
+ |
+ MarkerAnnotation()
+}
+
+void NormalAnnotation():
+{}
+{
+ "@" Name() "(" [ MemberValuePairs() ] ")"
+}
+
+void MarkerAnnotation():
+{}
+{
+ "@" Name()
+}
+
+void SingleMemberAnnotation():
+{}
+{
+ "@" Name() "(" MemberValue() ")"
+}
+
+void MemberValuePairs():
+{}
+{
+ MemberValuePair() ( "," MemberValuePair() )*
+}
+
+void MemberValuePair():
+{}
+{
+ <IDENTIFIER> "=" MemberValue()
+}
+
+void MemberValue():
+{}
+{
+ Annotation()
+ |
+ MemberValueArrayInitializer()
+ |
+ Literal()
+}
+
+void MemberValueArrayInitializer():
+{}
+{
+ "{" MemberValue() ( LOOKAHEAD(2) "," MemberValue() )* [ "," ] "}"
+}
+
Added: modules/trunk/remoting/src/main/javacc/readme.txt
===================================================================
--- modules/trunk/remoting/src/main/javacc/readme.txt (rev 0)
+++ modules/trunk/remoting/src/main/javacc/readme.txt 2009-11-30 03:55:25 UTC (rev 11703)
@@ -0,0 +1,5 @@
+JavaCC grammar file for parsing annotation expressions.
+
+JavaCC can be downloaded from https://javacc.dev.java.net/.
+
+Usage: /path/to/javacc AnnotationParser.jj
15 years
Seam SVN: r11702 - modules/trunk/persistence.
by seam-commits@lists.jboss.org
Author: sboscarine
Date: 2009-11-29 22:09:30 -0500 (Sun, 29 Nov 2009)
New Revision: 11702
Modified:
modules/trunk/persistence/
Log:
updated svn:ignore
Property changes on: modules/trunk/persistence
___________________________________________________________________
Name: svn:ignore
- .classpath
.project
.settings
target
+ .classpath
.project
.settings
target
test-output
temp-testng-customsuite.xml
15 years
Seam SVN: r11701 - in modules/trunk/persistence: src and 5 other directories.
by seam-commits@lists.jboss.org
Author: sboscarine
Date: 2009-11-29 20:42:53 -0500 (Sun, 29 Nov 2009)
New Revision: 11701
Added:
modules/trunk/persistence/src/test/
modules/trunk/persistence/src/test/java/
modules/trunk/persistence/src/test/java/org/
modules/trunk/persistence/src/test/java/org/seamframework/
modules/trunk/persistence/src/test/java/org/seamframework/persistence/
modules/trunk/persistence/src/test/java/org/seamframework/persistence/PersistenceContextExtensionTest.java
modules/trunk/persistence/src/test/resources/
Modified:
modules/trunk/persistence/pom.xml
Log:
Added Test placeholder
Modified: modules/trunk/persistence/pom.xml
===================================================================
--- modules/trunk/persistence/pom.xml 2009-11-29 23:37:38 UTC (rev 11700)
+++ modules/trunk/persistence/pom.xml 2009-11-30 01:42:53 UTC (rev 11701)
@@ -35,7 +35,5 @@
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
</dependency>
-
</dependencies>
-
-</project>
+</project>
\ No newline at end of file
Added: modules/trunk/persistence/src/test/java/org/seamframework/persistence/PersistenceContextExtensionTest.java
===================================================================
--- modules/trunk/persistence/src/test/java/org/seamframework/persistence/PersistenceContextExtensionTest.java (rev 0)
+++ modules/trunk/persistence/src/test/java/org/seamframework/persistence/PersistenceContextExtensionTest.java 2009-11-30 01:42:53 UTC (rev 11701)
@@ -0,0 +1,14 @@
+package org.seamframework.persistence;
+
+import org.jboss.weld.test.AbstractWeldTest;
+import org.testng.annotations.Test;
+/**
+ * Presently, this is just a placeholder.
+ */
+@Test
+public class PersistenceContextExtensionTest extends AbstractWeldTest
+{
+ public void helloWorld(){
+// System.out.println("hello world");
+ }
+}
15 years
Seam SVN: r11700 - branches/community/Seam_2_2/doc/Seam_Reference_Guide/fr-FR.
by seam-commits@lists.jboss.org
Author: essaidetest
Date: 2009-11-29 18:37:38 -0500 (Sun, 29 Nov 2009)
New Revision: 11700
Modified:
branches/community/Seam_2_2/doc/Seam_Reference_Guide/fr-FR/Jbpm.po
Log:
Modified: branches/community/Seam_2_2/doc/Seam_Reference_Guide/fr-FR/Jbpm.po
===================================================================
--- branches/community/Seam_2_2/doc/Seam_Reference_Guide/fr-FR/Jbpm.po 2009-11-29 22:52:50 UTC (rev 11699)
+++ branches/community/Seam_2_2/doc/Seam_Reference_Guide/fr-FR/Jbpm.po 2009-11-29 23:37:38 UTC (rev 11700)
@@ -6,8 +6,8 @@
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2009-03-31 09:07+0000\n"
-"PO-Revision-Date: 2008-04-04 01:24+0000\n"
-"Last-Translator: Automatically generated\n"
+"PO-Revision-Date: 2009-11-30 00:37+0100\n"
+"Last-Translator: P.J <essaidetest(a)yahoo.fr>\n"
"Language-Team: none\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -17,131 +17,91 @@
#: Jbpm.xml:2
#, no-c-format
msgid "Pageflows and business processes"
-msgstr ""
+msgstr "L'enchainement des pages et les processus métiers"
#. Tag: para
#: Jbpm.xml:4
#, no-c-format
-msgid ""
-"JBoss jBPM is a business process management engine for any Java SE or EE "
-"environment. jBPM lets you represent a business process or user interaction "
-"as a graph of nodes representing wait states, decisions, tasks, web pages, "
-"etc. The graph is defined using a simple, very readable, XML dialect called "
-"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
-"jPDL is an extensible language, and is suitable for a range of problems, "
-"from defining web application page flow, to traditional workflow management, "
-"all the way up to orchestration of services in a SOA environment."
-msgstr ""
+msgid "JBoss jBPM is a business process management engine for any Java SE or EE environment. jBPM lets you represent a business process or user interaction as a graph of nodes representing wait states, decisions, tasks, web pages, etc. The graph is defined using a simple, very readable, XML dialect called jPDL, and may be edited and visualised graphically using an eclipse plugin. jPDL is an extensible language, and is suitable for a range of problems, from defining web application page flow, to traditional workflow management, all the way up to orchestration of services in a SOA environment."
+msgstr "JBoss jBPM est un moteur de gestion du processus métier pour tout environement Java SE ou EE. jBPM vous permet de vous représenter un processus métier ou une intéraction utilisateur comme un graphe de noeud représentant les états d'attente, les décisions, les tâches, les pages web, etc. Le graphe est défini en utilisant un simple et facile à lire dialecte XML appelé jPDL, et peut être édité et visualisé graphiquement en utilisant un plugin d'Eclipse. jPDL est un language extensible et il est adapté pour une grande variété de problème, depuis la définition de l'enchainement de page d'une application web jusqu'à la gestion des traditionnels enchainement de tâches, tout cela dans un esprit d'orchestration des services dans un environnement SOA. "
#. Tag: para
#: Jbpm.xml:16
#, no-c-format
msgid "Seam applications use jBPM for two different problems:"
-msgstr ""
+msgstr "Les applications Seam utilise jBPM pour deux types de problèmes différents: "
#. Tag: para
#: Jbpm.xml:22
#, no-c-format
-msgid ""
-"Defining the pageflow involved in complex user interactions. A jPDL process "
-"definition defines the page flow for a single conversation. A Seam "
-"conversation is considered to be a relatively short-running interaction with "
-"a single user."
-msgstr ""
+msgid "Defining the pageflow involved in complex user interactions. A jPDL process definition defines the page flow for a single conversation. A Seam conversation is considered to be a relatively short-running interaction with a single user."
+msgstr "Définition d'un enchainement de page inclus dans de complexes intéractions de l'utilisateur. Une définition de processus jPDL définie l'enchainement de page pour une seule conversation. Une conversation Seam est considérée pour être une intérraction à relativement courte exécution avec un seul utilisateur. "
#. Tag: para
#: Jbpm.xml:30
#, no-c-format
-msgid ""
-"Defining the overarching business process. The business process may span "
-"multiple conversations with multiple users. Its state is persistent in the "
-"jBPM database, so it is considered long-running. Coordination of the "
-"activities of multiple users is a much more complex problem than scripting "
-"an interaction with a single user, so jBPM offers sophisticated facilities "
-"for task management and dealing with multiple concurrent paths of execution."
-msgstr ""
+msgid "Defining the overarching business process. The business process may span multiple conversations with multiple users. Its state is persistent in the jBPM database, so it is considered long-running. Coordination of the activities of multiple users is a much more complex problem than scripting an interaction with a single user, so jBPM offers sophisticated facilities for task management and dealing with multiple concurrent paths of execution."
+msgstr "Définition d'un processus métier hypercintré. Le processus métier peu s'étendre sur de multiples conversations avec de multiples utilisateurs. Son état est persistant dans la base de données jBPM, donc il est considéré comme à longue exécution. La coordination des activités de multiples utilisateurs est un problème beaucoup plus complexe que l'écriture d'une intéraction avec un seul utilisateur, donc jBPM offre des fonctionnalités sophistiquées pour la gestion des tâches et la considération de multiples chemins d'éxécutions concurents. "
#. Tag: para
#: Jbpm.xml:42
#, no-c-format
-msgid ""
-"Don't get these two things confused! They operate at very different levels "
-"or granularity. <emphasis>Pageflow</emphasis>, <emphasis>conversation</"
-"emphasis> and <emphasis>task</emphasis> all refer to a single interaction "
-"with a single user. A business process spans many tasks. Futhermore, the two "
-"applications of jBPM are totally orthogonal. You can use them together or "
-"independently or not at all."
-msgstr ""
+msgid "Don't get these two things confused! They operate at very different levels or granularity. <emphasis>Pageflow</emphasis>, <emphasis>conversation</emphasis> and <emphasis>task</emphasis> all refer to a single interaction with a single user. A business process spans many tasks. Futhermore, the two applications of jBPM are totally orthogonal. You can use them together or independently or not at all."
+msgstr "Ne vous laisser pas embrouillés par ces deux choses ! Elle fonctionne à des niveaux ou de granularité très différents. <emphasis>L'enchainement de page /emphasis>, <emphasis>de conversation</emphasis> et des <emphasis>tâches</emphasis> toutes ce réfèrent à une seule intéraction avec un seul utilisateur. Un processus métier s'étends sur plusieurs tâches. En outre, les deux applications de jBPM sont totalement ortogonales. Vous pouvez les utiliser ensemble ou indépendamment ou pas du tout. "
#. Tag: para
#: Jbpm.xml:51
#, no-c-format
-msgid ""
-"You don't have to know jDPL to use Seam. If you're perfectly happy defining "
-"pageflow using JSF or Seam navigation rules, and if your application is more "
-"data-driven that process-driven, you probably don't need jBPM. But we're "
-"finding that thinking of user interaction in terms of a well-defined "
-"graphical representation is helping us build more robust applications."
-msgstr ""
+msgid "You don't have to know jDPL to use Seam. If you're perfectly happy defining pageflow using JSF or Seam navigation rules, and if your application is more data-driven that process-driven, you probably don't need jBPM. But we're finding that thinking of user interaction in terms of a well-defined graphical representation is helping us build more robust applications."
+msgstr "Vous n'avez pas besoin de connaitre jDPL pour utiliser Seam. Si vous êtes parfaitement heureux de définir l'enchainement de page en utilisant JSF ou les règles de navigation de Seam, et si votre application est plus à connatation données qu'à connotation processus, vous n'avez probablement pas besoin de jBPM. Mais nous allons trouver que penser l'interaction utilisateur en terme de représentation graphique bien définie nous aide à construire des applications plus robustes. "
#. Tag: title
#: Jbpm.xml:60
#, no-c-format
msgid "Pageflow in Seam"
-msgstr ""
+msgstr "L'enchainement de page dans Seam"
#. Tag: para
#: Jbpm.xml:61
#, no-c-format
msgid "There are two ways to define pageflow in Seam:"
-msgstr ""
+msgstr "Il y a deux façon de définir un enchainement de page dans Seam: "
#. Tag: para
#: Jbpm.xml:67
#, no-c-format
-msgid ""
-"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
-"model</emphasis>"
-msgstr ""
+msgid "Using JSF or Seam navigation rules - the <emphasis>stateless navigation model</emphasis>"
+msgstr "Utiliser les règles de navigation de JSF ou de Seam - le <emphasis>modèle de navigation sans état</emphasis>"
#. Tag: para
#: Jbpm.xml:73
#, no-c-format
msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
-msgstr ""
+msgstr "Utiliser le jPDL - le <emphasis>modèle de navigation avec état</emphasis>"
#. Tag: para
#: Jbpm.xml:79
#, no-c-format
-msgid ""
-"Very simple applications will only need the stateless navigation model. Very "
-"complex applications will use both models in different places. Each model "
-"has its strengths and weaknesses!"
-msgstr ""
+msgid "Very simple applications will only need the stateless navigation model. Very complex applications will use both models in different places. Each model has its strengths and weaknesses!"
+msgstr "De très simple applications n'ont seulement besoin que du modèle de navigation sans état. Des applications très complexes auront besoins des deux modèles à des endroits différents. Chaque modèle a ses forces et ses faiblesses! "
#. Tag: title
#: Jbpm.xml:86
#, no-c-format
msgid "The two navigation models"
-msgstr ""
+msgstr "Les deux modèles de navigation"
#. Tag: para
#: Jbpm.xml:88
#, no-c-format
-msgid ""
-"The stateless model defines a mapping from a set of named, logical outcomes "
-"of an event directly to the resulting page of the view. The navigation rules "
-"are entirely oblivious to any state held by the application other than what "
-"page was the source of the event. This means that your action listener "
-"methods must sometimes make decisions about the page flow, since only they "
-"have access to the current state of the application."
-msgstr ""
+msgid "The stateless model defines a mapping from a set of named, logical outcomes of an event directly to the resulting page of the view. The navigation rules are entirely oblivious to any state held by the application other than what page was the source of the event. This means that your action listener methods must sometimes make decisions about the page flow, since only they have access to the current state of the application."
+msgstr "Le modèle sans état défini une relation depuis un groupe de résultat nomé et la logique d'un évènement directement dans la page résultat de la vue. Les règles de navigation sont entièrement inconnues des autres états inclus dans l'application à part de la page qui a été la source de l'évènement. Cela signifie que les méthodes d'écoute de l'action doivent parfois prendre la décicsion à propos de l'enchainement de page, alors qu'elles n'ont accès qu'à l'état courrant de l'application. "
#. Tag: para
#: Jbpm.xml:98
#, no-c-format
msgid "Here is an example page flow definition using JSF navigation rules:"
-msgstr ""
+msgstr "Voici un exemple de définition d'un enchainement de page en utilisant les règles de navigation de JSF: "
#. Tag: programlisting
#: Jbpm.xml:103
@@ -170,13 +130,34 @@
"\n"
"</navigation-rule>]]>"
msgstr ""
+"<![CDATA[<navigation-rule>\n"
+" <from-view-id>/numberGuess.jsp</from-view-id>\n"
+" \n"
+" <navigation-case>\n"
+" <from-outcome>guess</from-outcome>\n"
+" <to-view-id>/numberGuess.jsp</to-view-id>\n"
+" <redirect/>\n"
+" </navigation-case>\n"
+"\n"
+" <navigation-case>\n"
+" <from-outcome>win</from-outcome>\n"
+" <to-view-id>/win.jsp</to-view-id>\n"
+" <redirect/>\n"
+" </navigation-case>\n"
+" \n"
+" <navigation-case>\n"
+" <from-outcome>lose</from-outcome>\n"
+" <to-view-id>/lose.jsp</to-view-id>\n"
+" <redirect/>\n"
+" </navigation-case>\n"
+"\n"
+"</navigation-rule>]]>"
#. Tag: para
#: Jbpm.xml:105
#, no-c-format
-msgid ""
-"Here is the same example page flow definition using Seam navigation rules:"
-msgstr ""
+msgid "Here is the same example page flow definition using Seam navigation rules:"
+msgstr "Voici un exemple de définition d'un enchainement de page en utilisant les règles de navigation de Seam: "
#. Tag: programlisting
#: Jbpm.xml:110
@@ -198,14 +179,27 @@
"\n"
"</page>]]>"
msgstr ""
+"<![CDATA[<page view-id=\"/numberGuess.jsp\">\n"
+" \n"
+" <navigation>\n"
+" <rule if-outcome=\"guess\">\n"
+" <redirect view-id=\"/numberGuess.jsp\"/>\n"
+" </rule>\n"
+" <rule if-outcome=\"win\">\n"
+" <redirect view-id=\"/win.jsp\"/>\n"
+" </rule>\n"
+" <rule if-outcome=\"lose\">\n"
+" <redirect view-id=\"/lose.jsp\"/>\n"
+" </rule>\n"
+" </navigation>\n"
+"\n"
+"</page>]]>"
#. Tag: para
#: Jbpm.xml:112
#, no-c-format
-msgid ""
-"If you find navigation rules overly verbose, you can return view ids "
-"directly from your action listener methods:"
-msgstr ""
+msgid "If you find navigation rules overly verbose, you can return view ids directly from your action listener methods:"
+msgstr "Si vous trouvez que les règles de navigation beaucoup trop verbeuses, vous pouvez retourner l'identifiant de la vue directement depuis la méthode d'écouteur d'action: "
#. Tag: programlisting
#: Jbpm.xml:117
@@ -217,41 +211,41 @@
" return null;\n"
"}]]>"
msgstr ""
+"<![CDATA[public String guess() {\n"
+" if (guess==randomNumber) return \"/win.jsp\";\n"
+" if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+" return null;\n"
+"}]]>"
#. Tag: para
#: Jbpm.xml:119
#, no-c-format
-msgid ""
-"Note that this results in a redirect. You can even specify parameters to be "
-"used in the redirect:"
-msgstr ""
+msgid "Note that this results in a redirect. You can even specify parameters to be used in the redirect:"
+msgstr "Notez que cela résulte dans une redirection. Vous pouvez même spécifier les paramètres à utiliser pour la redirection: "
#. Tag: programlisting
#: Jbpm.xml:124
#, no-c-format
msgid ""
"<![CDATA[public String search() {\n"
-" return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
-"\";\n"
+" return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}\";\n"
"}]]>"
msgstr ""
+"<![CDATA[public String search() {\n"
+" return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}\";\n"
+"}]]>"
#. Tag: para
#: Jbpm.xml:126
#, no-c-format
-msgid ""
-"The stateful model defines a set of transitions between a set of named, "
-"logical application states. In this model, it is possible to express the "
-"flow of any user interaction entirely in the jPDL pageflow definition, and "
-"write action listener methods that are completely unaware of the flow of the "
-"interaction."
-msgstr ""
+msgid "The stateful model defines a set of transitions between a set of named, logical application states. In this model, it is possible to express the flow of any user interaction entirely in the jPDL pageflow definition, and write action listener methods that are completely unaware of the flow of the interaction."
+msgstr "Le modèle avec état défini un groupe de transition entre un groupe d'état de l'application logique et nomé. Dans ce modèle, il est possible d'exprimer l'enchainement des interactions utilisateur entièrement dans une définition d'enchainement de page en jPDL et écrire les méthode d'écouteur d'action qui sont complètement ignare du flot d'interaction. "
#. Tag: para
#: Jbpm.xml:134
#, no-c-format
msgid "Here is an example page flow definition using jPDL:"
-msgstr ""
+msgstr "Voici un exemple de définition du flot de page en utilisant jPDL: "
#. Tag: programlisting
#: Jbpm.xml:138
@@ -266,14 +260,12 @@
" </transition>\n"
" </start-page>\n"
" \n"
-" <decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
-"\">\n"
+" <decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}\">\n"
" <transition name=\"true\" to=\"win\"/>\n"
" <transition name=\"false\" to=\"evaluateRemainingGuesses\"/>\n"
" </decision>\n"
" \n"
-" <decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
-"lastGuess}\">\n"
+" <decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess.lastGuess}\">\n"
" <transition name=\"true\" to=\"lose\"/>\n"
" <transition name=\"false\" to=\"displayGuess\"/>\n"
" </decision>\n"
@@ -290,98 +282,90 @@
" \n"
"</pageflow-definition>]]>"
msgstr ""
+"<![CDATA[<pageflow-definition name=\"numberGuess\">\n"
+" \n"
+" <start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\">\n"
+" <redirect/>\n"
+" <transition name=\"guess\" to=\"evaluateGuess\">\n"
+" <action expression=\"#{numberGuess.guess}\" />\n"
+" </transition>\n"
+" </start-page>\n"
+" \n"
+" <decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}\">\n"
+" <transition name=\"true\" to=\"win\"/>\n"
+" <transition name=\"false\" to=\"evaluateRemainingGuesses\"/>\n"
+" </decision>\n"
+" \n"
+" <decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess.lastGuess}\">\n"
+" <transition name=\"true\" to=\"lose\"/>\n"
+" <transition name=\"false\" to=\"displayGuess\"/>\n"
+" </decision>\n"
+" \n"
+" <page name=\"win\" view-id=\"/win.jsp\">\n"
+" <redirect/>\n"
+" <end-conversation />\n"
+" </page>\n"
+" \n"
+" <page name=\"lose\" view-id=\"/lose.jsp\">\n"
+" <redirect/>\n"
+" <end-conversation />\n"
+" </page>\n"
+" \n"
+"</pageflow-definition>]]>"
#. Tag: para
#: Jbpm.xml:149
#, no-c-format
msgid "There are two things we notice immediately here:"
-msgstr ""
+msgstr "Il y a deux choses que nous pouvons noter immédiatement ici: "
#. Tag: para
#: Jbpm.xml:155
#, no-c-format
-msgid ""
-"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
-"(However, this obscures the fact that the underlying Java code is more "
-"complex.)"
-msgstr ""
+msgid "The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. (However, this obscures the fact that the underlying Java code is more complex.)"
+msgstr "Les règles de navigation JSF/Seam sont beaucoup <emphasis>plus</emphasis> simples. (Néanmoins, cela masque le fait que le code Java sous-entendu est plus complexe.) "
#. Tag: para
#: Jbpm.xml:162
#, no-c-format
-msgid ""
-"The jPDL makes the user interaction immediately understandable, without us "
-"needing to even look at the JSP or Java code."
-msgstr ""
+msgid "The jPDL makes the user interaction immediately understandable, without us needing to even look at the JSP or Java code."
+msgstr "Le jPDL rend les interactions utilisateurs immédiatement compréhensible, sans qu'il soit même nécéssaire de lire le code JSP ou Java. "
#. Tag: para
#: Jbpm.xml:169
#, no-c-format
-msgid ""
-"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
-"For each logical state (each step in the page flow), there are a constrained "
-"set of possible transitions to other states. The stateless model is an "
-"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
-"unconstrained, freeform navigation where the user decides where he/she wants "
-"to go next, not the application."
-msgstr ""
+msgid "In addition, the stateful model is more <emphasis>constrained</emphasis>. For each logical state (each step in the page flow), there are a constrained set of possible transitions to other states. The stateless model is an <emphasis>ad hoc</emphasis> model which is suitable to relatively unconstrained, freeform navigation where the user decides where he/she wants to go next, not the application."
+msgstr "En plus, le modèle à état est plus <emphasis>constraint</emphasis>. Pour chaque état logique (chaque étape dans l'enchainement de page), il y a un contrainte sur un groupe de transition possible vers les autres états. Le modèle sans état est un modèle <emphasis>ad hoc</emphasis> qui est efficace pour la navigation relativement sans contrainte, libre de formulaire quand l'utilisateur décide là ou il/elle veux aller ensuite, pas l'application. "
#. Tag: para
#: Jbpm.xml:178
#, no-c-format
-msgid ""
-"The stateful/stateless navigation distinction is quite similar to the "
-"traditional view of modal/modeless interaction. Now, Seam applications are "
-"not usually modal in the simple sense of the word - indeed, avoiding "
-"application modal behavior is one of the main reasons for having "
-"conversations! However, Seam applications can be, and often are, modal at "
-"the level of a particular conversation. It is well-known that modal behavior "
-"is something to avoid as much as possible; it is very difficult to predict "
-"the order in which your users are going to want to do things! However, there "
-"is no doubt that the stateful model has its place."
-msgstr ""
+msgid "The stateful/stateless navigation distinction is quite similar to the traditional view of modal/modeless interaction. Now, Seam applications are not usually modal in the simple sense of the word - indeed, avoiding application modal behavior is one of the main reasons for having conversations! However, Seam applications can be, and often are, modal at the level of a particular conversation. It is well-known that modal behavior is something to avoid as much as possible; it is very difficult to predict the order in which your users are going to want to do things! However, there is no doubt that the stateful model has its place."
+msgstr "La distinction entre navigation avec/sans état est assez similaire à la traditionnel vue de l'intération avec/sans modèle. Maintenant, les applications de Seam ne sont pas en général modale au sens strict de ce mot - en fait, éviter la fonctionnalité modal de l'application est une des raisons principale pour avoir les conversations! Malgré tout, les applications Seam peuvent être, et souvent le sont, modale au niveau de conversation particulière. Il est bien connu que la fonctionnalité modale est quelquechose à éviter autant que possible; il est très difficile de prédire dans quel ordre vos utilisateurs vont vouloir faire les choses! Ainsi, il n'y a pas de doutes que le modèle avec état a sa place. "
#. Tag: para
#: Jbpm.xml:191
#, no-c-format
-msgid ""
-"The biggest contrast between the two models is the back-button behavior."
-msgstr ""
+msgid "The biggest contrast between the two models is the back-button behavior."
+msgstr "Le plus grand contraste entre les deux modèles est la fonction du bouton-précédent. "
#. Tag: title
#: Jbpm.xml:199
#, no-c-format
msgid "Seam and the back button"
-msgstr ""
+msgstr "Seam et le bouton précédent"
#. Tag: para
#: Jbpm.xml:201
#, no-c-format
-msgid ""
-"When JSF or Seam navigation rules are used, Seam lets the user freely "
-"navigate via the back, forward and refresh buttons. It is the responsibility "
-"of the application to ensure that conversational state remains internally "
-"consistent when this occurs. Experience with the combination of web "
-"application frameworks like Struts or WebWork - that do not support a "
-"conversational model - and stateless component models like EJB stateless "
-"session beans or the Spring framework has taught many developers that this "
-"is close to impossible to do! However, our experience is that in the context "
-"of Seam, where there is a well-defined conversational model, backed by "
-"stateful session beans, it is actually quite straightforward. Usually it is "
-"as simple as combining the use of <literal>no-conversation-view-id</literal> "
-"with null checks at the beginning of action listener methods. We consider "
-"support for freeform navigation to be almost always desirable."
-msgstr ""
+msgid "When JSF or Seam navigation rules are used, Seam lets the user freely navigate via the back, forward and refresh buttons. It is the responsibility of the application to ensure that conversational state remains internally consistent when this occurs. Experience with the combination of web application frameworks like Struts or WebWork - that do not support a conversational model - and stateless component models like EJB stateless session beans or the Spring framework has taught many developers that this is close to impossible to do! However, our experience is that in the context of Seam, where there is a well-defined conversational model, backed by stateful session beans, it is actually quite straightforward. Usually it is as simple as combining the use of <literal>no-conversation-view-id</literal> with null checks at the beginning of action listener methods. We consider support for freeform navigation to be almost always desirable."
+msgstr "Quand les règles de navigation JSF et Seam sont utilisées, Seam laisse l'utilisateur naviger librement avec les boutons précédent, suivant et rafraichir. Il est de la responsabilité de l'application de s'assurer que l'état conversationnel reste en interne consistant quand cela arrive. L'experience avec la combinaisond'application web comme Struts ou WebWork - qui ne supporte pas le modèle conversationnel - et les modèles de composants sans état comme les beans de session sans état EJB ou le serveur d'application Spring a appris à beaucoup de développers qu'il est presque impossible de le faire! Ainsi, notre expérience est que c'est dans le contexte de Seam qu'il y a un modèle conversaionnel bien définie, soutenu par les beans de de sessions avec état, il est actuellement presque prêt. Habituellement, il est presque aussi simple de combiner l'utilisation <literal>no-conversation-view-id</literal> avec la vérification de null au démarrage des métho!
des d'écouteur d'action. Nous considerons le support de la navigation libre de formulaire presque aussi souhaitable. "
#. Tag: para
#: Jbpm.xml:219
#, no-c-format
-msgid ""
-"In this case, the <literal>no-conversation-view-id</literal> declaration "
-"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
-"different page if a request originates from a page rendered during a "
-"conversation, and that conversation no longer exists:"
-msgstr ""
+msgid "In this case, the <literal>no-conversation-view-id</literal> declaration goes in <literal>pages.xml</literal>. It tells Seam to redirect to a different page if a request originates from a page rendered during a conversation, and that conversation no longer exists:"
+msgstr "Dans ce cas, la déclaration de <literal>no-conversation-view-id</literal> va dans <literal>pages.xml</literal>. Il indique a Seam de rediriger vers une page différente si une requête originaire d'une page rendue pendant une conversation et que cette conversation n'existe plus: "
#. Tag: programlisting
#: Jbpm.xml:227
@@ -390,23 +374,14 @@
"<![CDATA[<page view-id=\"/checkout.xhtml\" \n"
" no-conversation-view-id=\"/main.xhtml\"/>]]>"
msgstr ""
+"<![CDATA[<page view-id=\"/checkout.xhtml\" \n"
+" no-conversation-view-id=\"/main.xhtml\"/>]]>"
#. Tag: para
#: Jbpm.xml:229
#, no-c-format
-msgid ""
-"On the other hand, in the stateful model, using the back button is "
-"interpreted as an undefined transition back to a previous state. Since the "
-"stateful model enforces a defined set of transitions from the current state, "
-"the back button is not permitted by default in the stateful model! Seam "
-"transparently detects the use of the back button, and blocks any attempt to "
-"perform an action from a previous, \"stale\" page, and simply redirects the "
-"user to the \"current\" page (and displays a faces message). Whether you "
-"consider this a feature or a limitation of the stateful model depends upon "
-"your point of view: as an application developer, it is a feature; as a user, "
-"it might be frustrating! You can enable backbutton navigation from a "
-"particular page node by setting <literal>back=\"enabled\"</literal>."
-msgstr ""
+msgid "On the other hand, in the stateful model, using the back button is interpreted as an undefined transition back to a previous state. Since the stateful model enforces a defined set of transitions from the current state, the back button is not permitted by default in the stateful model! Seam transparently detects the use of the back button, and blocks any attempt to perform an action from a previous, \"stale\" page, and simply redirects the user to the \"current\" page (and displays a faces message). Whether you consider this a feature or a limitation of the stateful model depends upon your point of view: as an application developer, it is a feature; as a user, it might be frustrating! You can enable backbutton navigation from a particular page node by setting <literal>back=\"enabled\"</literal>."
+msgstr "D'un autre côté, dans le modèle avec état, le bouton \"précédent\" est interprété comme un retour de transition non-définie vers l'état précédent. Depuis que le modèle avec état se renforce comme un groupe définie de transition depuis l'état courrant, le bouton \"précédent\" est par défaut interdit dans le modèle avec état! Seam de manière transparent détecte l'utilisation du bouton précédent et bloque toute tentative de réaliser une action depuis une page précédente \"périmée\" et redirige simplement l'utilisateur vers la page \"courante\" (et affiche un message faces). Que vous considériez comme une fonctionnalité ou une limitation le modèle sans état cela dépend de votre point de vue: comme un développeur d'application, c'est une fonctionnalité, comme un utilisateur, cela peut être frustrant. Vous pouvez activer la navigation avec le bouton \"précédent\" depuis un noeud de page particulier en indiquant <literal>back=\"enab!
led\"</literal>."
#. Tag: programlisting
#: Jbpm.xml:245
@@ -420,36 +395,31 @@
" <transition name=\"complete\" to=\"complete\"/>\n"
"</page>]]>"
msgstr ""
+"<![CDATA[<page name=\"checkout\" \n"
+" view-id=\"/checkout.xhtml\" \n"
+" back=\"enabled\">\n"
+" <redirect/>\n"
+" <transition to=\"checkout\"/>\n"
+" <transition name=\"complete\" to=\"complete\"/>\n"
+"</page>]]>"
#. Tag: para
#: Jbpm.xml:247
#, no-c-format
-msgid ""
-"This allows navigation via the back button <emphasis>from</emphasis> the "
-"<literal>checkout</literal> state to <emphasis>any previous state!</emphasis>"
-msgstr ""
+msgid "This allows navigation via the back button <emphasis>from</emphasis> the <literal>checkout</literal> state to <emphasis>any previous state!</emphasis>"
+msgstr "Cela autorise le bouton \"précédent\" <emphasis>depuis</emphasis> l'état checkout vers <emphasis>tout état précédent!</emphasis>"
#. Tag: note
#: Jbpm.xml:253
#, no-c-format
-msgid ""
-"If a page is set to redirect after a transition, it is not possible to use "
-"the back button to return to that page even when back is enabled on a page "
-"later in the flow. The reason is because Seam stores information about the "
-"pageflow in the page scope and the back button must result in a POST for "
-"that information to be restored (i.e., a Faces request). A redirect severs "
-"this linkage."
-msgstr ""
+msgid "If a page is set to redirect after a transition, it is not possible to use the back button to return to that page even when back is enabled on a page later in the flow. The reason is because Seam stores information about the pageflow in the page scope and the back button must result in a POST for that information to be restored (i.e., a Faces request). A redirect severs this linkage."
+msgstr "Si une page est définie pour rediriger après une transition, il n'est pas possible d'utiliser le bouton précédent pour retourner à la page même quand le bouton précédent est sur une page plus tard dans l'enchainement. La raison est que parce que Seam stocke les informations à propos de l'enchainement de page dans l'étendue page donc le bouton précédent doit résulter dans une requête POST pour que l'information soit restorée (autrement dit, une requête Faces). Une redirection fournie ce type de liaison."
#. Tag: para
#: Jbpm.xml:262
#, no-c-format
-msgid ""
-"Of course, we still need to define what happens if a request originates from "
-"a page rendered during a pageflow, and the conversation with the pageflow no "
-"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
-"declaration goes into the pageflow definition:"
-msgstr ""
+msgid "Of course, we still need to define what happens if a request originates from a page rendered during a pageflow, and the conversation with the pageflow no longer exists. In this case, the <literal>no-conversation-view-id</literal> declaration goes into the pageflow definition:"
+msgstr "Bien sûr, nous avons toujours besoin de définir ce qu'il arrive si une requête originiaire d'une page rendue pendant l'enchainement de page, et la conversation ave l'enchainement de page n'existe plus. Dans ce cas, la déclaration <literal>no-conversation-view-id</literal> va dans la définition d'enchainement de page: "
#. Tag: programlisting
#: Jbpm.xml:270
@@ -464,50 +434,50 @@
" <transition name=\"complete\" to=\"complete\"/>\n"
"</page>]]>"
msgstr ""
+"<![CDATA[<page name=\"checkout\" \n"
+" view-id=\"/checkout.xhtml\" \n"
+" back=\"enabled\" \n"
+" no-conversation-view-id=\"/main.xhtml\">\n"
+" <redirect/>\n"
+" <transition to=\"checkout\"/>\n"
+" <transition name=\"complete\" to=\"complete\"/>\n"
+"</page>]]>"
#. Tag: para
#: Jbpm.xml:273
#, no-c-format
-msgid ""
-"In practice, both navigation models have their place, and you'll quickly "
-"learn to recognize when to prefer one model over the other."
-msgstr ""
+msgid "In practice, both navigation models have their place, and you'll quickly learn to recognize when to prefer one model over the other."
+msgstr "En pratique, les deux modèles de navigation ont leur spécificité et vous allez rapidement apprendre à les reconnaitre quand vous préférerez un modèle plutôt que l'autre."
#. Tag: title
#: Jbpm.xml:282
#, no-c-format
msgid "Using jPDL pageflows"
-msgstr ""
+msgstr "Utilisation des enchainements de page jPDL"
#. Tag: title
#: Jbpm.xml:285
#, no-c-format
msgid "Installing pageflows"
-msgstr ""
+msgstr "Installation des enchainements de page"
#. Tag: para
#: Jbpm.xml:287
#, no-c-format
-msgid ""
-"We need to install the Seam jBPM-related components, and place the pageflow "
-"definitions (using the standard <literal>.jpdl.xml</literal> extension) "
-"inside a Seam archive (an archive which contains a <literal>seam.properties</"
-"literal> file):"
-msgstr ""
+msgid "We need to install the Seam jBPM-related components, and place the pageflow definitions (using the standard <literal>.jpdl.xml</literal> extension) inside a Seam archive (an archive which contains a <literal>seam.properties</literal> file):"
+msgstr "Nous avons besoin d'installer les composants jBPM-style de Seam et leurs dirent où ils vont trouver la définition de l'enchainement de page. Nous pouvons spécifier cette configuration de Seam dans components.xml. "
#. Tag: programlisting
#: Jbpm.xml:294
#, no-c-format
msgid "<![CDATA[<bpm:jbpm />]]>"
-msgstr ""
+msgstr "<![CDATA[<bpm:jbpm />]]>"
#. Tag: para
#: Jbpm.xml:296
#, no-c-format
-msgid ""
-"We can also explicitly tell Seam where to find our pageflow definition. We "
-"specify this in <literal>components.xml</literal>:"
-msgstr ""
+msgid "We can also explicitly tell Seam where to find our pageflow definition. We specify this in <literal>components.xml</literal>:"
+msgstr "Vous pouvez aussi explicitement indiquer à Seam où trouver la définition d'enchainement de page. Nous spécifions ceci dans <literal>components.xml</literal>:"
#. Tag: programlisting
#: Jbpm.xml:301
@@ -519,21 +489,23 @@
" </bpm:pageflow-definitions>\n"
"</bpm:jbpm>]]>"
msgstr ""
+"<![CDATA[<bpm:jbpm>\n"
+" <bpm:pageflow-definitions>\n"
+" <value>pageflow.jpdl.xml</value>\n"
+" </bpm:pageflow-definitions>\n"
+"</bpm:jbpm>]]>"
#. Tag: title
#: Jbpm.xml:306
#, no-c-format
msgid "Starting pageflows"
-msgstr ""
+msgstr "Démarrage des enchainements de pages"
#. Tag: para
#: Jbpm.xml:308
#, no-c-format
-msgid ""
-"We \"start\" a jPDL-based pageflow by specifying the name of the process "
-"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
-"or <literal>@StartTask</literal> annotation:"
-msgstr ""
+msgid "We \"start\" a jPDL-based pageflow by specifying the name of the process definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> or <literal>@StartTask</literal> annotation:"
+msgstr "Nous \"démarrons\" un enchainement de pages jPDL-style en indiquant le nom de la définition du processus en utilisation une annotation <literal>@Begin</literal>, <literal>@BeginTask</literal> ou <literal>@StartTask</literal>:"
#. Tag: programlisting
#: Jbpm.xml:315
@@ -542,12 +514,14 @@
"<![CDATA[@Begin(pageflow=\"numberguess\")\n"
"public void begin() { ... }]]>"
msgstr ""
+"<![CDATA[@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }]]>"
#. Tag: para
#: Jbpm.xml:317
#, no-c-format
msgid "Alternatively we can start a pageflow using pages.xml:"
-msgstr ""
+msgstr "De manière alternative, nous pouvons démarrer un enchainement de page en utilisant pages.xml:"
#. Tag: programlisting
#: Jbpm.xml:319
@@ -557,29 +531,21 @@
" <begin-conversation pageflow=\"numberguess\"/>\n"
" </page>]]>"
msgstr ""
+"<![CDATA[<page>\n"
+" <begin-conversation pageflow=\"numberguess\"/>\n"
+" </page>]]>"
#. Tag: para
#: Jbpm.xml:321
#, no-c-format
-msgid ""
-"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
-"literal> phase — during a <literal>@Factory</literal> or "
-"<literal>@Create</literal> method, for example — we consider ourselves "
-"to be already at the page being rendered, and use a <literal><start-"
-"page></literal> node as the first node in the pageflow, as in the example "
-"above."
-msgstr ""
+msgid "If we are beginning the pageflow during the <literal>RENDER_RESPONSE</literal> phase — during a <literal>@Factory</literal> or <literal>@Create</literal> method, for example — we consider ourselves to be already at the page being rendered, and use a <literal><start-page></literal> node as the first node in the pageflow, as in the example above."
+msgstr "Si nous commençons un enchainement de page pendant la phase R<literal>RENDER_RESPONSE</literal> — pendant qu'une méthode literal>@Factory</literal> ou <literal>@Create</literal>, par exemple — nous considerons nous même être à la page qui doit être rendue, et utilisons un noeud <literal><start-page></literal> comme premier noeud dans l'enchainement de page, comme le montre l'exemple ci dessous. "
#. Tag: para
#: Jbpm.xml:329
#, no-c-format
-msgid ""
-"But if the pageflow is begun as the result of an action listener invocation, "
-"the outcome of the action listener determines which is the first page to be "
-"rendered. In this case, we use a <literal><start-state></literal> as "
-"the first node in the pageflow, and declare a transition for each possible "
-"outcome:"
-msgstr ""
+msgid "But if the pageflow is begun as the result of an action listener invocation, the outcome of the action listener determines which is the first page to be rendered. In this case, we use a <literal><start-state></literal> as the first node in the pageflow, and declare a transition for each possible outcome:"
+msgstr "Mais si l'enchainement de page a commencé comme le resulteat de l'invocation d'un écouteur d'action, le retour de lécouteur d'action détermine quel est la première page à être rendue. Dans ca cas, nous utilisons un <literal><start-state></literal> comme premier noeud de l'enchainement de page et déclarons une transition pour chaque sortie possible: "
#. Tag: programlisting
#: Jbpm.xml:337
@@ -605,20 +571,37 @@
" \n"
"</pageflow-definition>]]>"
msgstr ""
+"<![CDATA[<pageflow-definition name=\"viewEditDocument\">\n"
+"\n"
+" <start-state name=\"start\">\n"
+" <transition name=\"documentFound\" to=\"displayDocument\"/>\n"
+" <transition name=\"documentNotFound\" to=\"notFound\"/>\n"
+" </start-state>\n"
+" \n"
+" <page name=\"displayDocument\" view-id=\"/document.jsp\">\n"
+" <transition name=\"edit\" to=\"editDocument\"/>\n"
+" <transition name=\"done\" to=\"main\"/>\n"
+" </page>\n"
+" \n"
+" ...\n"
+" \n"
+" <page name=\"notFound\" view-id=\"/404.jsp\">\n"
+" <end-conversation/>\n"
+" </page>\n"
+" \n"
+"</pageflow-definition>]]>"
#. Tag: title
#: Jbpm.xml:342
#, no-c-format
msgid "Page nodes and transitions"
-msgstr ""
+msgstr "Les noeuds de page et transitions"
#. Tag: para
#: Jbpm.xml:344
#, no-c-format
-msgid ""
-"Each <literal><page></literal> node represents a state where the "
-"system is waiting for user input:"
-msgstr ""
+msgid "Each <literal><page></literal> node represents a state where the system is waiting for user input:"
+msgstr "Chaque noeud <literal><page></literal> représente un état où le système est en train d'attendre une saisie de l'utilisateur: "
#. Tag: programlisting
#: Jbpm.xml:349
@@ -631,71 +614,54 @@
" </transition>\n"
"</page>]]>"
msgstr ""
+"<![CDATA[<page name=\"displayGuess\" view-id=\"/numberGuess.jsp\">\n"
+" <redirect/>\n"
+" <transition name=\"guess\" to=\"evaluateGuess\">\n"
+" <action expression=\"#{numberGuess.guess}\" />\n"
+" </transition>\n"
+"</page>]]>"
#. Tag: para
#: Jbpm.xml:351
#, no-c-format
-msgid ""
-"The <literal>view-id</literal> is the JSF view id. The <literal><redirect/"
-"></literal> element has the same effect as <literal><redirect/></"
-"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
-"overcome problems with the browser's refresh button. (Note that Seam "
-"propagates conversation contexts over these browser redirects. So there is "
-"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
-msgstr ""
+msgid "The <literal>view-id</literal> is the JSF view id. The <literal><redirect/></literal> element has the same effect as <literal><redirect/></literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to overcome problems with the browser's refresh button. (Note that Seam propagates conversation contexts over these browser redirects. So there is no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr "Le <literal>view-id</literal> est l'identifiant de la vue JSF. L'élément <literal><redirect/></literal> a le même effet que <literal><redirect/></literal> dans une règle de navigation : à savoir, une fonctionnalité poster-puis-rediriger, pour contourner les problème avec le bouton rafraichir du navigateur. (Notez que Seam propage les contextes de conversation au travers de ces redirection de navigateur. Il n'y a donc pas besoin d'un fabrique de style Ruby on Rails \"flash\" dans Seam!) "
#. Tag: para
#: Jbpm.xml:360
#, no-c-format
-msgid ""
-"The transition name is the name of a JSF outcome triggered by clicking a "
-"command button or command link in <literal>numberGuess.jsp</literal>."
-msgstr ""
+msgid "The transition name is the name of a JSF outcome triggered by clicking a command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr "Le nom de transition est le nom de la sortie JSF déclenché en cliquant sur le bouton de commande ou le lien de commande dans <literal>numberGuess.jsp</literal>."
#. Tag: programlisting
#: Jbpm.xml:365
#, no-c-format
-msgid ""
-"<![CDATA[<h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/"
-">]]>"
-msgstr ""
+msgid "<![CDATA[<h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/>]]>"
+msgstr "<![CDATA[<h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/>]]>"
#. Tag: para
#: Jbpm.xml:367
#, no-c-format
-msgid ""
-"When the transition is triggered by clicking this button, jBPM will activate "
-"the transition action by calling the <literal>guess()</literal> method of "
-"the <literal>numberGuess</literal> component. Notice that the syntax used "
-"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
-"that the transition action handler is just a method of a Seam component in "
-"the current Seam contexts. So we have exactly the same event model for jBPM "
-"events that we already have for JSF events! (The <emphasis>One Kind of "
-"Stuff</emphasis> principle.)"
-msgstr ""
+msgid "When the transition is triggered by clicking this button, jBPM will activate the transition action by calling the <literal>guess()</literal> method of the <literal>numberGuess</literal> component. Notice that the syntax used for specifying actions in the jPDL is just a familiar JSF EL expression, and that the transition action handler is just a method of a Seam component in the current Seam contexts. So we have exactly the same event model for jBPM events that we already have for JSF events! (The <emphasis>One Kind of Stuff</emphasis> principle.)"
+msgstr "Quand la transition est déclenchée par le clic sur le bouton, jBPM ira activer l'action de transition en appelant la méthode <emphasis>guess()</emphasis> du composant <emphasis>numberGuess</emphasis>. Notez que la syntaxe utilisée pour spécifier les actions dans le jPDL est juste une expression familière JSF EL, et que l'action de transation est juste une méthode d'une composant Seam dans le contexte courrant de Seam. Donc, nous avons exactement le même modèle d'évènement pour jBPM que nous avons déjà pour les évènements JSF! (Le principe <emphasis>d'Un Seul Genre de Truc.</emphasis>) "
#. Tag: para
#: Jbpm.xml:378
#, no-c-format
-msgid ""
-"In the case of a null outcome (for example, a command button with no "
-"<literal>action</literal> defined), Seam will signal the transition with no "
-"name if one exists, or else simply redisplay the page if all transitions "
-"have names. So we could slightly simplify our example pageflow and this "
-"button:"
-msgstr ""
+msgid "In the case of a null outcome (for example, a command button with no <literal>action</literal> defined), Seam will signal the transition with no name if one exists, or else simply redisplay the page if all transitions have names. So we could slightly simplify our example pageflow and this button:"
+msgstr "Dans le cas d'un résultat null (par exemple, un bouton de command sans aucune action définie), Seam ira signaler la transition sans aucun nom si une existe, ou sinon simplement réaffiche la page si toutes les transition ont un nom. Donc nous pourrions légèrement simplifier notre exemple d'enchainement de page et ce bouton: "
#. Tag: programlisting
#: Jbpm.xml:385
#, no-c-format
msgid "<![CDATA[<h:commandButton type=\"submit\" value=\"Guess\"/>]]>"
-msgstr ""
+msgstr "<![CDATA[<h:commandButton type=\"submit\" value=\"Guess\"/>]]>"
#. Tag: para
#: Jbpm.xml:387
#, no-c-format
msgid "Would fire the following un-named transition:"
-msgstr ""
+msgstr "Qui va déclencher la transition sans-nom suivante: "
#. Tag: programlisting
#: Jbpm.xml:391
@@ -708,22 +674,24 @@
" </transition>\n"
"</page>]]>"
msgstr ""
+"<![CDATA[<page name=\"displayGuess\" view-id=\"/numberGuess.jsp\">\n"
+" <redirect/>\n"
+" <transition to=\"evaluateGuess\">\n"
+" <action expression=\"#{numberGuess.guess}\" />\n"
+" </transition>\n"
+"</page>]]>"
#. Tag: para
#: Jbpm.xml:393
#, no-c-format
-msgid ""
-"It is even possible to have the button call an action method, in which case "
-"the action outcome will determine the transition to be taken:"
-msgstr ""
+msgid "It is even possible to have the button call an action method, in which case the action outcome will determine the transition to be taken:"
+msgstr "Il est même possible d'avoir un bouton qui appele une méthode d'action, dans ce cas le résultat de l'action va déterminer la tranistion qui doit être prise: "
#. Tag: programlisting
#: Jbpm.xml:398
#, no-c-format
-msgid ""
-"<![CDATA[<h:commandButton type=\"submit\" value=\"Guess\" action=\"#"
-"{numberGuess.guess}\"/>]]>"
-msgstr ""
+msgid "<![CDATA[<h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess.guess}\"/>]]>"
+msgstr "<![CDATA[<h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess.guess}\"/>]]>"
#. Tag: programlisting
#: Jbpm.xml:400
@@ -734,63 +702,60 @@
" <transition name=\"incorrectGuess\" to=\"evaluateGuess\"/>\n"
"</page>]]>"
msgstr ""
+"<![CDATA[<page name=\"displayGuess\" view-id=\"/numberGuess.jsp\">\n"
+" <transition name=\"correctGuess\" to=\"win\"/>\n"
+" <transition name=\"incorrectGuess\" to=\"evaluateGuess\"/>\n"
+"</page>]]>"
#. Tag: para
#: Jbpm.xml:402
#, no-c-format
-msgid ""
-"However, this is considered an inferior style, since it moves responsibility "
-"for controlling the flow out of the pageflow definition and back into the "
-"other components. It is much better to centralize this concern in the "
-"pageflow itself."
-msgstr ""
+msgid "However, this is considered an inferior style, since it moves responsibility for controlling the flow out of the pageflow definition and back into the other components. It is much better to centralize this concern in the pageflow itself."
+msgstr "Malgré cela, il est est à considérer comme un style inférieur, car il déplace la responsabilité du contrôl du flot à l'extérieur de la définition de l'enchainement de page et le place dans un autre composants. Il est franchement meilleur de centraliser ce qui s'y rapporte dans l'enchainement de pages lui même. "
#. Tag: title
#: Jbpm.xml:411
#, no-c-format
msgid "Controlling the flow"
-msgstr ""
+msgstr "Controler le flot"
#. Tag: para
#: Jbpm.xml:413
#, no-c-format
-msgid ""
-"Usually, we don't need the more powerful features of jPDL when defining "
-"pageflows. We do need the <literal><decision></literal> node, however:"
-msgstr ""
+msgid "Usually, we don't need the more powerful features of jPDL when defining pageflows. We do need the <literal><decision></literal> node, however:"
+msgstr "Habituellement, nous n'avons pas besoin des fonctionnalités les plus puissantes de jPDL pendant la définition des enchainements de pages. Nous avons besoin du noeud <literal><decision></literal>, malgré tout: "
#. Tag: programlisting
#: Jbpm.xml:418
#, no-c-format
msgid ""
-"<![CDATA[<decision name=\"evaluateGuess\" expression=\"#{numberGuess."
-"correctGuess}\">\n"
+"<![CDATA[<decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}\">\n"
" <transition name=\"true\" to=\"win\"/>\n"
" <transition name=\"false\" to=\"evaluateRemainingGuesses\"/>\n"
"</decision>]]>"
msgstr ""
+"<![CDATA[<decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}\">\n"
+" <transition name=\"true\" to=\"win\"/>\n"
+" <transition name=\"false\" to=\"evaluateRemainingGuesses\"/>\n"
+"</decision>]]>"
#. Tag: para
#: Jbpm.xml:420
#, no-c-format
-msgid ""
-"A decision is made by evaluating a JSF EL expression in the Seam contexts."
-msgstr ""
+msgid "A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr "Une décision est faite en évaluant une expression JSF EL dans les contextes de Seam. "
#. Tag: title
#: Jbpm.xml:427
#, no-c-format
msgid "Ending the flow"
-msgstr ""
+msgstr "Terminer le flot"
#. Tag: para
#: Jbpm.xml:429
#, no-c-format
-msgid ""
-"We end the conversation using <literal><end-conversation></literal> or "
-"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
-"emphasis> is encouraged.)"
-msgstr ""
+msgid "We end the conversation using <literal><end-conversation></literal> or <literal>@End</literal>. (In fact, for readability, use of <emphasis>both</emphasis> is encouraged.)"
+msgstr "Nous finissons la conversation en utilisant <literal><end-conversation></literal> ou <literal>@End</literal>. (Dans les faits, pour la lisibilité, l'utilisation des deux est encouragé.) "
#. Tag: programlisting
#: Jbpm.xml:435
@@ -801,15 +766,16 @@
" <end-conversation/>\n"
"</page>]]>"
msgstr ""
+"<![CDATA[<page name=\"win\" view-id=\"/win.jsp\">\n"
+" <redirect/>\n"
+" <end-conversation/>\n"
+"</page>]]>"
#. Tag: para
#: Jbpm.xml:437
#, no-c-format
-msgid ""
-"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
-"name. In this case, Seam will signal the end of the current task in the "
-"overarching business process."
-msgstr ""
+msgid "Optionally, we can end a task, specify a jBPM <literal>transition</literal> name. In this case, Seam will signal the end of the current task in the overarching business process."
+msgstr "De manière optionnel, nous pouvons finir une tâche, spécifiant un nom de <literal>transition</literal> jBPM. Dans ce cas, Seam va signaler la fin de la tâche courrante dans le processus métier hypercintré. "
#. Tag: programlisting
#: Jbpm.xml:443
@@ -820,21 +786,22 @@
" <end-task transition=\"success\"/>\n"
"</page>]]>"
msgstr ""
+"<![CDATA[<page name=\"win\" view-id=\"/win.jsp\">\n"
+" <redirect/>\n"
+" <end-task transition=\"success\"/>\n"
+"</page>]]>"
#. Tag: title
#: Jbpm.xml:448
#, no-c-format
msgid "Pageflow composition"
-msgstr ""
+msgstr "La composition de l'enchainement de page"
#. Tag: para
#: Jbpm.xml:449
#, no-c-format
-msgid ""
-"It is possible to compose pageflows and have one pageflow pause pause while "
-"another pageflow executes. The <literal><process-state></literal> node "
-"pauses the outer pageflow, and begins execution of a named pageflow:"
-msgstr ""
+msgid "It is possible to compose pageflows and have one pageflow pause pause while another pageflow executes. The <literal><process-state></literal> node pauses the outer pageflow, and begins execution of a named pageflow:"
+msgstr "Il ets possible de composer des enchainements de page et d'avoir une pause dans l'enchainement de page alors qu'un autre enchainement s'exécute. Le noeud <literal><process-state></literal> met en pausse l'enchainement de page indiqué et comme l'exécution de l'enchainement de page appelé:"
#. Tag: programlisting
#: Jbpm.xml:456
@@ -845,48 +812,34 @@
" <transition to=\"displayGuess\"/>\n"
"</process-state>]]>"
msgstr ""
+"<![CDATA[<process-state name=\"cheat\">\n"
+" <sub-process name=\"cheat\"/>\n"
+" <transition to=\"displayGuess\"/>\n"
+"</process-state>]]>"
#. Tag: para
#: Jbpm.xml:458
#, no-c-format
-msgid ""
-"The inner flow begins executing at a <literal><start-state></literal> "
-"node. When it reaches an <literal><end-state></literal> node, "
-"execution of the inner flow ends, and execution of the outer flow resumes "
-"with the transition defined by the <literal><process-state></literal> "
-"element."
-msgstr ""
+msgid "The inner flow begins executing at a <literal><start-state></literal> node. When it reaches an <literal><end-state></literal> node, execution of the inner flow ends, and execution of the outer flow resumes with the transition defined by the <literal><process-state></literal> element."
+msgstr "Le flot inclus commence en exécutant un noeud <literal><start-state></literal>. Quand il atteind un noeud <literal><end-state></literal>, l'exécution du flot inclus s'arrête et l'exécution du flot englobant recommence avec la transition définie dans l'élement <literal><process-state></literal>."
#. Tag: title
#: Jbpm.xml:471
#, no-c-format
msgid "Business process management in Seam"
-msgstr ""
+msgstr "La gestion des processus métier dans Seam"
#. Tag: para
#: Jbpm.xml:472
#, no-c-format
-msgid ""
-"A business process is a well-defined set of tasks that must be performed by "
-"users or software systems according to well-defined rules about "
-"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
-"it should be performed. Seam's jBPM integration makes it easy to display "
-"lists of tasks to users and let them manage their tasks. Seam also lets the "
-"application store state associated with the business process in the "
-"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
-"persistent via jBPM variables."
-msgstr ""
+msgid "A business process is a well-defined set of tasks that must be performed by users or software systems according to well-defined rules about <emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> it should be performed. Seam's jBPM integration makes it easy to display lists of tasks to users and let them manage their tasks. Seam also lets the application store state associated with the business process in the <literal>BUSINESS_PROCESS</literal> context, and have that state made persistent via jBPM variables."
+msgstr "Un processus métier est un groupe de tâche bien définis qui doivent être réaliser par des utilisateurs ou des systèmes logiciels en accord avec des règles bien définies à propos de <emphasis>qui</emphasis> peut réaliser une tâche, et <emphasis>quand</emphasis> elle devrait être réalisée. L'intégration de JBPM dans Seam rend facile d'afficher la liste des tâches des utilisateurs et les laisser gérer leurs tâches. Seam permet aussi à l'application stocker l'état associé avec le processus métier dans le contexte <literal>BUSINESS_PROCESS</literal> et avoir cet état qui soit persistant via les variables du jBPM. "
#. Tag: para
#: Jbpm.xml:484
#, no-c-format
-msgid ""
-"A simple business process definition looks much the same as a page flow "
-"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
-"<literal><page></literal> nodes, we have <literal><task-node></"
-"literal> nodes. In a long-running business process, the wait states are "
-"where the system is waiting for some user to log in and perform a task."
-msgstr ""
+msgid "A simple business process definition looks much the same as a page flow definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of <literal><page></literal> nodes, we have <literal><task-node></literal> nodes. In a long-running business process, the wait states are where the system is waiting for some user to log in and perform a task."
+msgstr "Une simple définition de processus métier ressemble assez à la définition de l'enchainement de page (<emphasis>Un Seul Genre de Truc</emphasis>), exception sauf qu'au lieu d'un noeud <literal><page></literal> , nous avons des noeuds <literal><task-node></literal>. Dans un procéssus métier à exécution longue, les état d'atente sont là où le système est en attente qu'un utilisateur se connecte pour réaliser une tâche. "
#. Tag: programlisting
#: Jbpm.xml:493
@@ -909,37 +862,46 @@
" \n"
"</process-definition>]]>"
msgstr ""
+"<![CDATA[<process-definition name=\"todo\">\n"
+" \n"
+" <start-state name=\"start\">\n"
+" <transition to=\"todo\"/>\n"
+" </start-state>\n"
+" \n"
+" <task-node name=\"todo\">\n"
+" <task name=\"todo\" description=\"#{todoList.description}\">\n"
+" <assignment actor-id=\"#{actor.id}\"/>\n"
+" </task>\n"
+" <transition to=\"done\"/>\n"
+" </task-node>\n"
+" \n"
+" <end-state name=\"done\"/>\n"
+" \n"
+"</process-definition>]]>"
#. Tag: para
#: Jbpm.xml:505
#, no-c-format
-msgid ""
-"It is perfectly possible that we might have both jPDL business process "
-"definitions and jPDL pageflow definitions in the same project. If so, the "
-"relationship between the two is that a single <literal><task></"
-"literal> in a business process corresponds to a whole pageflow <literal><"
-"pageflow-definition></literal>"
-msgstr ""
+msgid "It is perfectly possible that we might have both jPDL business process definitions and jPDL pageflow definitions in the same project. If so, the relationship between the two is that a single <literal><task></literal> in a business process corresponds to a whole pageflow <literal><pageflow-definition></literal>"
+msgstr "Il est parfaitement possible que nous ayons à la fois des définition de processus métier en jPDL et des définitions d'enchainements de pages en jPDL dans le même projet. Et donc, la relation entre les deux est qu'un seul <literal><task></literal> dans un processus métier correspond à l'ensemble d'un enchainement de page <literal><pageflow-definition></literal>"
#. Tag: title
#: Jbpm.xml:516
#, no-c-format
msgid "Using jPDL business process definitions"
-msgstr ""
+msgstr "Utilisation des définitions de processus métier jPDL"
#. Tag: title
#: Jbpm.xml:519
#, no-c-format
msgid "Installing process definitions"
-msgstr ""
+msgstr "Installation des définition de processus"
#. Tag: para
#: Jbpm.xml:521
#, no-c-format
-msgid ""
-"We need to install jBPM, and tell it where to find the business process "
-"definitions:"
-msgstr ""
+msgid "We need to install jBPM, and tell it where to find the business process definitions:"
+msgstr "Nous avons besoin d'installer un jBPM, et de lui dire où trouver les définition de processus métier : "
#. Tag: programlisting
#: Jbpm.xml:526
@@ -951,34 +913,29 @@
" </bpm:process-definitions>\n"
"</bpm:jbpm>]]>"
msgstr ""
+"<![CDATA[<bpm:jbpm>\n"
+" <bpm:process-definitions>\n"
+" <value>todo.jpdl.xml</value>\n"
+" </bpm:process-definitions>\n"
+"</bpm:jbpm>]]>"
#. Tag: para
#: Jbpm.xml:528
#, no-c-format
-msgid ""
-"As jBPM processes are persistent across application restarts, when using "
-"Seam in a production environment you won't want to install the process "
-"definition every time the application starts. Therefore, in a production "
-"environment, you'll need to deploy the process to jBPM outside of Seam. In "
-"other words, only install process definitions from <literal>components.xml</"
-"literal> when developing your application."
-msgstr ""
+msgid "As jBPM processes are persistent across application restarts, when using Seam in a production environment you won't want to install the process definition every time the application starts. Therefore, in a production environment, you'll need to deploy the process to jBPM outside of Seam. In other words, only install process definitions from <literal>components.xml</literal> when developing your application."
+msgstr "Les processus jBPM sont persistant au travers du redémarrage de l'application, avec l'utilisation de Seam dans un environement de production vous ne voudriez pas avoir à installer la définition de processus à chaque fois que l'application démarre. Cependant, dans un environement de production vous allez avoir besoin de détruire le processus jBPM à l'extérieur de Seam. En d'autres termes, installez seulement le processus de définitions dans <literal>components.xml</literal> pendant le développement de votre application."
#. Tag: title
#: Jbpm.xml:541
#, no-c-format
msgid "Initializing actor ids"
-msgstr ""
+msgstr "Initialisation des identifiants des acteurs"
#. Tag: para
#: Jbpm.xml:543
#, no-c-format
-msgid ""
-"We always need to know what user is currently logged in. jBPM \"knows\" "
-"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
-"emphasis>. We specify the current actor ids using the built in Seam "
-"component named <literal>actor</literal>:"
-msgstr ""
+msgid "We always need to know what user is currently logged in. jBPM \"knows\" users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</emphasis>. We specify the current actor ids using the built in Seam component named <literal>actor</literal>:"
+msgstr "Nous avons toujours besoin de connaitre quel utilisateur est actuellement connecté. jBPM \"connait\" les utilisateur par <emphasis>leur identifiant d'acteur</emphasis> et par <emphasis>leurs identifiants de groupe d'acteur</emphasis>. Nous spécifions les identifiant d'acteur courrant en utilisant le composant livré dans Seam nommé <literal>actor</literal>: "
#. Tag: programlisting
#: Jbpm.xml:551
@@ -993,20 +950,26 @@
" ...\n"
"}]]>"
msgstr ""
+"<![CDATA[@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+" ...\n"
+" actor.setId( user.getUserName() );\n"
+" actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+" ...\n"
+"}]]>"
#. Tag: title
#: Jbpm.xml:556
#, no-c-format
msgid "Initiating a business process"
-msgstr ""
+msgstr "Initialisation d'un processus métier"
#. Tag: para
#: Jbpm.xml:558
#, no-c-format
-msgid ""
-"To initiate a business process instance, we use the <literal>@CreateProcess</"
-"literal> annotation:"
-msgstr ""
+msgid "To initiate a business process instance, we use the <literal>@CreateProcess</literal> annotation:"
+msgstr "Pour initialiser une instance d'un processus métier, nous utilisons l'annotation literal>@CreateProcess</literal>: "
#. Tag: programlisting
#: Jbpm.xml:563
@@ -1015,12 +978,14 @@
"<![CDATA[@CreateProcess(definition=\"todo\")\n"
"public void createTodo() { ... }]]>"
msgstr ""
+"<![CDATA[@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }]]>"
#. Tag: para
#: Jbpm.xml:565
#, no-c-format
msgid "Alternatively we can initiate a business process using pages.xml:"
-msgstr ""
+msgstr "Autre alternative, nous pouvons initialiser un processus métier en utilisant pages.xml:"
#. Tag: programlisting
#: Jbpm.xml:567
@@ -1030,21 +995,21 @@
" <create-process definition=\"todo\" />\n"
"</page>]]>"
msgstr ""
+"<![CDATA[<page>\n"
+" <create-process definition=\"todo\" />\n"
+"</page>]]>"
#. Tag: title
#: Jbpm.xml:572
#, no-c-format
msgid "Task assignment"
-msgstr ""
+msgstr "Assigner une tâche"
#. Tag: para
#: Jbpm.xml:574
#, no-c-format
-msgid ""
-"When a process reaches a task node, task instances are created. These must "
-"be assigned to users or user groups. We can either hardcode our actor ids, "
-"or delegate to a Seam component:"
-msgstr ""
+msgid "When a process reaches a task node, task instances are created. These must be assigned to users or user groups. We can either hardcode our actor ids, or delegate to a Seam component:"
+msgstr "Quand un processus démarre, les instances de tâches sont créés. Ils doivent être assignés aux utilisateurs et aux groupes d'utilisateurs. Nous pouvons coder en durs les idenfiants d'acteur ou le déléguer à un composant de Seam: "
#. Tag: programlisting
#: Jbpm.xml:580
@@ -1054,14 +1019,15 @@
" <assignment actor-id=\"#{actor.id}\"/>\n"
"</task>]]>"
msgstr ""
+"<![CDATA[<task name=\"todo\" description=\"#{todoList.description}\">\n"
+" <assignment actor-id=\"#{actor.id}\"/>\n"
+"</task>]]>"
#. Tag: para
#: Jbpm.xml:582
#, no-c-format
-msgid ""
-"In this case, we have simply assigned the task to the current user. We can "
-"also assign tasks to a pool:"
-msgstr ""
+msgid "In this case, we have simply assigned the task to the current user. We can also assign tasks to a pool:"
+msgstr "Dans ce cas, nous avons simplement assigné la tâche à l'utilisateur courrant. Nous pouvons aussi assigné les tâches à un groupement: "
#. Tag: programlisting
#: Jbpm.xml:587
@@ -1071,21 +1037,21 @@
" <assignment pooled-actors=\"employees\"/>\n"
"</task>]]>"
msgstr ""
+"<![CDATA[<task name=\"todo\" description=\"#{todoList.description}\">\n"
+" <assignment pooled-actors=\"employees\"/>\n"
+"</task>]]>"
#. Tag: title
#: Jbpm.xml:592
#, no-c-format
msgid "Task lists"
-msgstr ""
+msgstr "Liste des tâches"
#. Tag: para
#: Jbpm.xml:594
#, no-c-format
-msgid ""
-"Several built-in Seam components make it easy to display task lists. The "
-"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
-"users may assign to themselves:"
-msgstr ""
+msgid "Several built-in Seam components make it easy to display task lists. The <literal>pooledTaskInstanceList</literal> is a list of pooled tasks that users may assign to themselves:"
+msgstr "Plusieurs composant livrés dans Seam rendent facile l'affichage de listes de tâches. Le <literal>pooledTaskInstanceList</literal> est une liste de tâches en groupement que les utilisateurs peuvent assigner à eux-même: "
#. Tag: programlisting
#: Jbpm.xml:600
@@ -1097,19 +1063,25 @@
" <h:outputText value=\"#{task.description}\"/>\n"
" </h:column>\n"
" <h:column>\n"
-" <s:link action=\"#{pooledTask.assignToCurrentActor}\" value=\"Assign"
-"\" taskInstance=\"#{task}\"/>\n"
+" <s:link action=\"#{pooledTask.assignToCurrentActor}\" value=\"Assign\" taskInstance=\"#{task}\"/>\n"
" </h:column> \n"
"</h:dataTable>]]>"
msgstr ""
+"<![CDATA[<h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\">\n"
+" <h:column>\n"
+" <f:facet name=\"header\">Description</f:facet>\n"
+" <h:outputText value=\"#{task.description}\"/>\n"
+" </h:column>\n"
+" <h:column>\n"
+" <s:link action=\"#{pooledTask.assignToCurrentActor}\" value=\"Assign\" taskInstance=\"#{task}\"/>\n"
+" </h:column> \n"
+"</h:dataTable>]]>"
#. Tag: para
#: Jbpm.xml:602
#, no-c-format
-msgid ""
-"Note that instead of <literal><s:link></literal> we could have used a "
-"plain JSF <literal><h:commandLink></literal>:"
-msgstr ""
+msgid "Note that instead of <literal><s:link></literal> we could have used a plain JSF <literal><h:commandLink></literal>:"
+msgstr "Notez qu'au lieu de <literal><s:link></literal> nous pouvons utiliser un <literal><h:commandLink></literal> en pur JSF : "
#. Tag: programlisting
#: Jbpm.xml:607
@@ -1119,53 +1091,57 @@
" <f:param name=\"taskId\" value=\"#{task.id}\"/>\n"
"</h:commandLink>]]>"
msgstr ""
+"<![CDATA[<h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"> \n"
+" <f:param name=\"taskId\" value=\"#{task.id}\"/>\n"
+"</h:commandLink>]]>"
#. Tag: para
#: Jbpm.xml:609
#, no-c-format
-msgid ""
-"The <literal>pooledTask</literal> component is a built-in component that "
-"simply assigns the task to the current user."
-msgstr ""
+msgid "The <literal>pooledTask</literal> component is a built-in component that simply assigns the task to the current user."
+msgstr "Le composant <literal>pooledTask</literal> est un composant livré qui assigne simplement la tâche à l'utilisateur courrant. "
#. Tag: para
#: Jbpm.xml:614
#, no-c-format
-msgid ""
-"The <literal>taskInstanceListForType</literal> component includes tasks of a "
-"particular type that are assigned to the current user:"
-msgstr ""
+msgid "The <literal>taskInstanceListForType</literal> component includes tasks of a particular type that are assigned to the current user:"
+msgstr "Le composant <literal>taskInstanceListForType</literal> inclus les tâches d'un type particulier qui sont assigné à l'utilisateur courrant: "
#. Tag: programlisting
#: Jbpm.xml:619
#, no-c-format
msgid ""
-"<![CDATA[<h:dataTable value=\"#{taskInstanceListForType['todo']}\" var=\"task"
-"\">\n"
+"<![CDATA[<h:dataTable value=\"#{taskInstanceListForType['todo']}\" var=\"task\">\n"
" <h:column>\n"
" <f:facet name=\"header\">Description</f:facet>\n"
" <h:outputText value=\"#{task.description}\"/>\n"
" </h:column>\n"
" <h:column>\n"
-" <s:link action=\"#{todoList.start}\" value=\"Start Work\" "
-"taskInstance=\"#{task}\"/>\n"
+" <s:link action=\"#{todoList.start}\" value=\"Start Work\" taskInstance=\"#{task}\"/>\n"
" </h:column> \n"
"</h:dataTable>]]>"
msgstr ""
+"<![CDATA[<h:dataTable value=\"#{taskInstanceListForType['todo']}\" var=\"task\">\n"
+" <h:column>\n"
+" <f:facet name=\"header\">Description</f:facet>\n"
+" <h:outputText value=\"#{task.description}\"/>\n"
+" </h:column>\n"
+" <h:column>\n"
+" <s:link action=\"#{todoList.start}\" value=\"Start Work\" taskInstance=\"#{task}\"/>\n"
+" </h:column> \n"
+"</h:dataTable>]]>"
#. Tag: title
#: Jbpm.xml:624
#, no-c-format
msgid "Performing a task"
-msgstr ""
+msgstr "Réalisation d'une tâche"
#. Tag: para
#: Jbpm.xml:626
#, no-c-format
-msgid ""
-"To begin work on a task, we use either <literal>@StartTask</literal> or "
-"<literal>@BeginTask</literal> on the listener method:"
-msgstr ""
+msgid "To begin work on a task, we use either <literal>@StartTask</literal> or <literal>@BeginTask</literal> on the listener method:"
+msgstr "Pour commencer le travail sur une tâche, nous utilisons aussi bien <literal>@StartTask</literal> ou <literal>@BeginTask</literal> sur la méthode d'écoute: "
#. Tag: programlisting
#: Jbpm.xml:631
@@ -1174,12 +1150,14 @@
"<![CDATA[@StartTask\n"
"public String start() { ... }]]>"
msgstr ""
+"<![CDATA[@StartTask\n"
+"public String start() { ... }]]>"
#. Tag: para
#: Jbpm.xml:633
#, no-c-format
msgid "Alternatively we can begin work on a task using pages.xml:"
-msgstr ""
+msgstr "Autre alternative, nous pouvons commencer le travail sur une tâche en utilisant pages.xml:"
#. Tag: programlisting
#: Jbpm.xml:635
@@ -1189,23 +1167,21 @@
" <start-task />\n"
"</page>]]>"
msgstr ""
+"<![CDATA[<page>\n"
+" <start-task />\n"
+"</page>]]>"
#. Tag: para
#: Jbpm.xml:637
#, no-c-format
-msgid ""
-"These annotations begin a special kind of conversation that has significance "
-"in terms of the overarching business process. Work done by this conversation "
-"has access to state held in the business process context."
-msgstr ""
+msgid "These annotations begin a special kind of conversation that has significance in terms of the overarching business process. Work done by this conversation has access to state held in the business process context."
+msgstr "Ces annotations commencent une type spécial de conversation qui ont de l'importance en terme de processus métier hypercintré. Le travail fait par cette conversation à accès à l'état contenue dans le processus métier dans le contexte de processus métier. "
#. Tag: para
#: Jbpm.xml:644
#, no-c-format
-msgid ""
-"If we end the conversation using <literal>@EndTask</literal>, Seam will "
-"signal the completion of the task:"
-msgstr ""
+msgid "If we end the conversation using <literal>@EndTask</literal>, Seam will signal the completion of the task:"
+msgstr "Si nous finisons la conversation en utilisant <literal>@EndTask</literal>, Seam va signaler la réalisation de la tâche: "
#. Tag: programlisting
#: Jbpm.xml:649
@@ -1214,12 +1190,14 @@
"<![CDATA[@EndTask(transition=\"completed\")\n"
"public String completed() { ... }]]>"
msgstr ""
+"<![CDATA[@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }]]>"
#. Tag: para
#: Jbpm.xml:651
#, no-c-format
msgid "Alternatively we can use pages.xml:"
-msgstr ""
+msgstr "Autre alternative, nous pouvons utiliser pages.xml:"
#. Tag: programlisting
#: Jbpm.xml:653
@@ -1229,27 +1207,25 @@
" <end-task transition=\"completed\" />\n"
"</page>]]>"
msgstr ""
+"<![CDATA[<page>\n"
+" <end-task transition=\"completed\" />\n"
+"</page>]]>"
#. Tag: para
#: Jbpm.xml:655
#, no-c-format
msgid "You can also use EL to specify the transition in pages.xml."
-msgstr ""
+msgstr "Vous pouvez aussi utiliser une EL pour spécifier la transition dans pages.xml."
#. Tag: para
#: Jbpm.xml:659
#, no-c-format
-msgid ""
-"At this point, jBPM takes over and continues executing the business process "
-"definition. (In more complex processes, several tasks might need to be "
-"completed before process execution can resume.)"
-msgstr ""
+msgid "At this point, jBPM takes over and continues executing the business process definition. (In more complex processes, several tasks might need to be completed before process execution can resume.)"
+msgstr "A ce moment, jBPM prends le contrôle et continue l'exécution de la définition du processus métier. (Dans des processus plus complexes, plusieurs tâches peuvent avoir besoin d'être réalisés avant que l'exécution du processus ne puisse reprendre.) "
#. Tag: para
#: Jbpm.xml:665
#, no-c-format
-msgid ""
-"Please refer to the jBPM documentation for a more thorough overview of the "
-"sophisticated features that jBPM provides for managing complex business "
-"processes."
-msgstr ""
+msgid "Please refer to the jBPM documentation for a more thorough overview of the sophisticated features that jBPM provides for managing complex business processes."
+msgstr "Merci de vous référer à la document de jBPM pour un apperçu plus détaillé des fonctionnalités sophistiquées que le jBPM fournir pour la gestion des processus métier complexes. "
+
15 years
Seam SVN: r11699 - branches/community/Seam_2_2/doc/Seam_Reference_Guide/fr-FR.
by seam-commits@lists.jboss.org
Author: essaidetest
Date: 2009-11-29 17:52:50 -0500 (Sun, 29 Nov 2009)
New Revision: 11699
Modified:
branches/community/Seam_2_2/doc/Seam_Reference_Guide/fr-FR/Itext.po
Log:
Modified: branches/community/Seam_2_2/doc/Seam_Reference_Guide/fr-FR/Itext.po
===================================================================
--- branches/community/Seam_2_2/doc/Seam_Reference_Guide/fr-FR/Itext.po 2009-11-29 18:01:34 UTC (rev 11698)
+++ branches/community/Seam_2_2/doc/Seam_Reference_Guide/fr-FR/Itext.po 2009-11-29 22:52:50 UTC (rev 11699)
@@ -6,8 +6,8 @@
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2009-06-11 07:43+0000\n"
-"PO-Revision-Date: 2008-04-04 01:24+0000\n"
-"Last-Translator: Automatically generated\n"
+"PO-Revision-Date: 2009-11-29 23:52+0100\n"
+"Last-Translator: P.J <essaidetest(a)yahoo.fr>\n"
"Language-Team: none\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -17,314 +17,325 @@
#: Itext.xml:2
#, no-c-format
msgid "iText PDF generation"
-msgstr ""
+msgstr "Génération iText PDF"
#. Tag: para
#: Itext.xml:3
#, no-c-format
-msgid ""
-"Seam now includes a component set for generating documents using iText. The "
-"primary focus of Seam's iText document support is for the generation of PDF "
-"documents, but Seam also offers basic support for RTF document generation."
-msgstr ""
+msgid "Seam now includes a component set for generating documents using iText. The primary focus of Seam's iText document support is for the generation of PDF documents, but Seam also offers basic support for RTF document generation."
+msgstr "Seam inclus maintenant un groupe de composant pour la génération de documents en utilisant iText. le premier but du support de document iText de Seam est pour la génération de documents PDF, mais Seam offre aussi un support basique pour la génération de document RTF."
#. Tag: title
#: Itext.xml:8
#, no-c-format
msgid "Using PDF Support"
-msgstr ""
+msgstr "Utilisation du support PDF"
#. Tag: para
#: Itext.xml:9
#, no-c-format
-msgid ""
-"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
-"contains the iText JSF controls, which are used to construct views that can "
-"render to PDF, and the DocumentStore component, which serves the rendered "
-"documents to the user. To include PDF support in your application, put "
-"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
-"directory along with the iText JAR file. There is no further configuration "
-"needed to use Seam's iText support."
-msgstr ""
+msgid "iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR contains the iText JSF controls, which are used to construct views that can render to PDF, and the DocumentStore component, which serves the rendered documents to the user. To include PDF support in your application, put <literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> directory along with the iText JAR file. There is no further configuration needed to use Seam's iText support."
+msgstr "Le support de iText est fournie par <literal>jboss-seam-pdf.jar</literal>. Ce JAR contient les contrôles iText JSF, qui sont utilisés pour construire les vues qui peuvent être rendues vers le PDF et le composant DocumentStore qui servent pour rendre les documents à l'utilisateur. Pour inclure le support PDF dans votre application, il faut inclure<literal>jboss-seam-pdf.jar</literal> dans votre dossier <literal>WEB-INF/lib</literal> avec le fichier iText JAR. Il n'y a pas plus comme configuration nécéssaire pour le support de iText de Seam. "
#. Tag: para
#: Itext.xml:14
#, no-c-format
-msgid ""
-"The Seam iText module requires the use of Facelets as the view technology. "
-"Future versions of the library may also support the use of JSP. "
-"Additionally, it requires the use of the seam-ui package."
-msgstr ""
+msgid "The Seam iText module requires the use of Facelets as the view technology. Future versions of the library may also support the use of JSP. Additionally, it requires the use of the seam-ui package."
+msgstr "Le module de Seam iText requière l'utilisation de Facelets comme technologie d'affichage. Les versions futures de la bibliothèque pourrons aussi supporter l'utilisation de JSP. En plus, il faut utiliser le paquet seam-ui."
#. Tag: para
#: Itext.xml:17
#, no-c-format
-msgid ""
-"The <literal>examples/itext</literal> project contains an example of the PDF "
-"support in action. It demonstrates proper deployment packaging, and it "
-"contains a number examples that demonstrate the key PDF generation features "
-"current supported."
-msgstr ""
+msgid "The <literal>examples/itext</literal> project contains an example of the PDF support in action. It demonstrates proper deployment packaging, and it contains a number examples that demonstrate the key PDF generation features current supported."
+msgstr "Le projet <literal>examples/itext</literal> contient un exemple du support de PDF en action. Il démontre comment est fait le déploiement propre des paquets et il contient de nombreux exemples qui montre les fonctionnalités clef de la génération de PDF actuellement supportées. "
#. Tag: title
#: Itext.xml:22
#, no-c-format
msgid "Creating a document"
-msgstr ""
+msgstr "La création d'un document"
#. Tag: literal
#: Itext.xml:34
#, no-c-format
msgid "<p:document>"
-msgstr ""
+msgstr "<p:document>"
#. Tag: emphasis
-#: Itext.xml:39 Itext.xml:181 Itext.xml:253 Itext.xml:288 Itext.xml:321
-#: Itext.xml:375 Itext.xml:398 Itext.xml:535 Itext.xml:599 Itext.xml:661
-#: Itext.xml:701 Itext.xml:756 Itext.xml:859 Itext.xml:946 Itext.xml:1087
-#: Itext.xml:1324 Itext.xml:1365 Itext.xml:1585 Itext.xml:1804 Itext.xml:1962
-#: Itext.xml:2033 Itext.xml:2094 Itext.xml:2141 Itext.xml:2223 Itext.xml:2335
-#: Itext.xml:2385 Itext.xml:2445
+#: Itext.xml:39
+#: Itext.xml:181
+#: Itext.xml:253
+#: Itext.xml:288
+#: Itext.xml:321
+#: Itext.xml:375
+#: Itext.xml:398
+#: Itext.xml:535
+#: Itext.xml:599
+#: Itext.xml:661
+#: Itext.xml:701
+#: Itext.xml:756
+#: Itext.xml:859
+#: Itext.xml:946
+#: Itext.xml:1087
+#: Itext.xml:1324
+#: Itext.xml:1365
+#: Itext.xml:1585
+#: Itext.xml:1804
+#: Itext.xml:1962
+#: Itext.xml:2033
+#: Itext.xml:2094
+#: Itext.xml:2141
+#: Itext.xml:2223
+#: Itext.xml:2335
+#: Itext.xml:2385
+#: Itext.xml:2445
#, no-c-format
msgid "Description"
-msgstr ""
+msgstr "Description"
#. Tag: para
#: Itext.xml:41
#, no-c-format
-msgid ""
-"Documents are generated by facelet XHTML files using tags in the "
-"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
-"should always have the <literal>document</literal> tag at the root of the "
-"document. The <literal>document</literal> tag prepares Seam to generate a "
-"document into the DocumentStore and renders an HTML redirect to that stored "
-"content."
-msgstr ""
+msgid "Documents are generated by facelet XHTML files using tags in the <literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents should always have the <literal>document</literal> tag at the root of the document. The <literal>document</literal> tag prepares Seam to generate a document into the DocumentStore and renders an HTML redirect to that stored content."
+msgstr "Les documents sont générés par les documents facelets en utilisant les tags dans l'espace de nom <literal>http://jboss.com/products/seam/pdf</literal>. Les documents devraient toujours avoir le tag <literal>document</literal> comme racine du document. Le tag <literal>document</literal> prépare Seam pour générer un document dans le DocumentStore et à le rendre en HTML en redirigeant le contenu stocké."
#. Tag: emphasis
-#: Itext.xml:48 Itext.xml:187 Itext.xml:261 Itext.xml:295 Itext.xml:327
-#: Itext.xml:416 Itext.xml:542 Itext.xml:606 Itext.xml:711 Itext.xml:803
-#: Itext.xml:864 Itext.xml:951 Itext.xml:1092 Itext.xml:1328 Itext.xml:1369
-#: Itext.xml:1589 Itext.xml:1808 Itext.xml:1967 Itext.xml:2037 Itext.xml:2099
-#: Itext.xml:2145 Itext.xml:2228 Itext.xml:2340 Itext.xml:2390 Itext.xml:2450
+#: Itext.xml:48
+#: Itext.xml:187
+#: Itext.xml:261
+#: Itext.xml:295
+#: Itext.xml:327
+#: Itext.xml:416
+#: Itext.xml:542
+#: Itext.xml:606
+#: Itext.xml:711
+#: Itext.xml:803
+#: Itext.xml:864
+#: Itext.xml:951
+#: Itext.xml:1092
+#: Itext.xml:1328
+#: Itext.xml:1369
+#: Itext.xml:1589
+#: Itext.xml:1808
+#: Itext.xml:1967
+#: Itext.xml:2037
+#: Itext.xml:2099
+#: Itext.xml:2145
+#: Itext.xml:2228
+#: Itext.xml:2340
+#: Itext.xml:2390
+#: Itext.xml:2450
#, no-c-format
msgid "Attributes"
-msgstr ""
+msgstr "Attribues"
#. Tag: para
#: Itext.xml:53
#, no-c-format
-msgid ""
-"<literal>type</literal> — The type of the document to be produced. "
-"Valid values are <literal>PDF</literal>, <literal>RTF</literal> and "
-"<literal>HTML</literal> modes. Seam defaults to PDF generation, and many of "
-"the features only work correctly when generating PDF documents."
-msgstr ""
+msgid "<literal>type</literal> — The type of the document to be produced. Valid values are <literal>PDF</literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam defaults to PDF generation, and many of the features only work correctly when generating PDF documents."
+msgstr "<literal>type</literal> — Le type de document qui doit être produit. Les valeurs valides sont les modes <literal>PDF</literal>, <literal>RTF</literal> et <literal>HTML</literal> . Seam prends par défaut une génération PDF et beaucoup de fonctionnalités ne fonctionnent correctement qu'en génération des documents PDF."
#. Tag: para
#: Itext.xml:62
#, no-c-format
-msgid ""
-"<literal>pageSize</literal> — The size of the page to be generate. The "
-"most commonly used values would be <literal>LETTER</literal> and "
-"<literal>A4</literal>. A full list of supported pages sizes can be found in "
-"<literal>com.lowagie.text.PageSize</literal> class. Alternatively, pageSize "
-"can provide the width and height of the page directly. The value \"612 792"
-"\", for example, is equivalent to the LETTER page size."
-msgstr ""
+msgid "<literal>pageSize</literal> — The size of the page to be generate. The most commonly used values would be <literal>LETTER</literal> and <literal>A4</literal>. A full list of supported pages sizes can be found in <literal>com.lowagie.text.PageSize</literal> class. Alternatively, pageSize can provide the width and height of the page directly. The value \"612 792\", for example, is equivalent to the LETTER page size."
+msgstr "<literal>pageSize</literal> — La taille de page à générer. Les valeurs utilisées de manière classiques devraient être <literal>LETTER</literal> et <literal>A4</literal>. Une pleine liste de tailles de pages supportées peut être trouvée dans la classe <literal>com.lowagie.text.PageSize</literal>. Autrement, pageSize peut fournir une largeur et une hauteur de page directement. La valeur \"612 792\", par exemple, est équivalent à une taille de page de type LETTER."
#. Tag: para
#: Itext.xml:71
#, no-c-format
-msgid ""
-"<literal>orientation</literal> — The orientation of the page. Valid "
-"values are <literal>portrait</literal> and <literal>landscape</literal>. In "
-"landscape mode, the height and width page size values are reversed."
-msgstr ""
+msgid "<literal>orientation</literal> — The orientation of the page. Valid values are <literal>portrait</literal> and <literal>landscape</literal>. In landscape mode, the height and width page size values are reversed."
+msgstr "<literal>orientation</literal> — L'orientation de la page. Les valeurs valides sont <literal>portrait</literal> et <literal>landscape</literal>. En mode paysage, la les valeurs de largeur et la hauteur de la page sont inversées."
#. Tag: para
#: Itext.xml:80
#, no-c-format
-msgid ""
-"<literal>margins</literal> — The left, right, top and bottom margin "
-"values."
-msgstr ""
+msgid "<literal>margins</literal> — The left, right, top and bottom margin values."
+msgstr "<literal>margins</literal> — Les valeurs de marges haute, basse , droite et gauche."
#. Tag: para
#: Itext.xml:85
#, no-c-format
-msgid ""
-"<literal>marginMirroring</literal> — Indicates that margin settings "
-"should be reversed an alternating pages."
-msgstr ""
+msgid "<literal>marginMirroring</literal> — Indicates that margin settings should be reversed an alternating pages."
+msgstr "<literal>marginMirroring</literal> — Indique si les valeurs des marges doivent être inversées sur la page suivante."
#. Tag: para
#: Itext.xml:91
#, no-c-format
-msgid ""
-"<literal>disposition</literal> — When generating PDFs in a web "
-"browser, this determines the HTTP <literal>Content-Disposition</literal> of "
-"the document. Valid values are <literal>inline</literal>, which indicates "
-"the document should be displayed in the browser window if possible, and "
-"<literal>attachment</literal>, which indicates that the document should be "
-"treated as a download. The default value is <literal>inline</literal>."
-msgstr ""
+msgid "<literal>disposition</literal> — When generating PDFs in a web browser, this determines the HTTP <literal>Content-Disposition</literal> of the document. Valid values are <literal>inline</literal>, which indicates the document should be displayed in the browser window if possible, and <literal>attachment</literal>, which indicates that the document should be treated as a download. The default value is <literal>inline</literal>."
+msgstr "<literal>disposition</literal> — Avec la génération de PDF dans un navigateur web ceci détermine le <literal>Content-Disposition</literal> HTTP du docment. Les valeurs valides sont <literal>inline</literal>, qui indique que le document devrait ête affiché dans la fenêtre du navigateur si c'est possible, et <literal>attachment</literal>, qui indique le document devrait être traité comme téléchargeable. La valeur par défaut est <literal>inline</literal>."
#. Tag: para
#: Itext.xml:99
#, no-c-format
-msgid ""
-"<literal>fileName</literal> — For attachments, this value overrides "
-"the downloaded file name."
-msgstr ""
+msgid "<literal>fileName</literal> — For attachments, this value overrides the downloaded file name."
+msgstr "<literal>fileName</literal> — Pour les pièces jointes, cette valeur surcharge le nom du fichier téléchargé."
#. Tag: emphasis
#: Itext.xml:108
#, no-c-format
msgid "Metadata Attributes"
-msgstr ""
+msgstr "Metadata Attributes"
#. Tag: literal
#: Itext.xml:115
#, no-c-format
msgid "title"
-msgstr ""
+msgstr "title"
#. Tag: literal
#: Itext.xml:120
#, no-c-format
msgid "subject"
-msgstr ""
+msgstr "subject"
#. Tag: literal
#: Itext.xml:125
#, no-c-format
msgid "keywords"
-msgstr ""
+msgstr "keywords"
#. Tag: literal
#: Itext.xml:130
#, no-c-format
msgid "author"
-msgstr ""
+msgstr "author"
#. Tag: literal
#: Itext.xml:135
#, no-c-format
msgid "creator"
-msgstr ""
+msgstr "creator"
#. Tag: emphasis
-#: Itext.xml:140 Itext.xml:239 Itext.xml:273 Itext.xml:306 Itext.xml:360
-#: Itext.xml:383 Itext.xml:517 Itext.xml:565 Itext.xml:647 Itext.xml:667
-#: Itext.xml:740 Itext.xml:845 Itext.xml:906 Itext.xml:1072 Itext.xml:1248
-#: Itext.xml:1349 Itext.xml:1571 Itext.xml:1790 Itext.xml:1945 Itext.xml:2019
-#: Itext.xml:2077 Itext.xml:2127 Itext.xml:2187 Itext.xml:2303 Itext.xml:2470
+#: Itext.xml:140
+#: Itext.xml:239
+#: Itext.xml:273
+#: Itext.xml:306
+#: Itext.xml:360
+#: Itext.xml:383
+#: Itext.xml:517
+#: Itext.xml:565
+#: Itext.xml:647
+#: Itext.xml:667
+#: Itext.xml:740
+#: Itext.xml:845
+#: Itext.xml:906
+#: Itext.xml:1072
+#: Itext.xml:1248
+#: Itext.xml:1349
+#: Itext.xml:1571
+#: Itext.xml:1790
+#: Itext.xml:1945
+#: Itext.xml:2019
+#: Itext.xml:2077
+#: Itext.xml:2127
+#: Itext.xml:2187
+#: Itext.xml:2303
+#: Itext.xml:2470
#, no-c-format
msgid "Usage"
-msgstr ""
+msgstr "Usage"
#. Tag: programlisting
#: Itext.xml:142
#, no-c-format
msgid ""
-"<![CDATA[<p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
-"\"> \n"
-" The document goes "
-"here. \n"
+"<![CDATA[<p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"> \n"
+" The document goes here. \n"
"</p:document>]]>"
msgstr ""
+"<![CDATA[<p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"> \n"
+" The document goes here. \n"
+"</p:document>]]>"
#. Tag: title
#: Itext.xml:155
#, no-c-format
msgid "Basic Text Elements"
-msgstr ""
+msgstr "Les éléments d textes basiques "
#. Tag: para
#: Itext.xml:157
#, no-c-format
-msgid ""
-"Useful documents will need to contain more than just text; however, the "
-"standard UI components are geared towards HTML generation and are not useful "
-"for generating PDF content. Instead, Seam provides a special UI components "
-"for generating suitable PDF content. Tags like <literal><p:image></"
-"literal> and <literal><p:paragraph></literal> are the basic "
-"foundations of simple documents. Tags like <literal><p:font></literal> "
-"provide style information to all the content surrounding them."
-msgstr ""
+msgid "Useful documents will need to contain more than just text; however, the standard UI components are geared towards HTML generation and are not useful for generating PDF content. Instead, Seam provides a special UI components for generating suitable PDF content. Tags like <literal><p:image></literal> and <literal><p:paragraph></literal> are the basic foundations of simple documents. Tags like <literal><p:font></literal> provide style information to all the content surrounding them."
+msgstr "Les documents courrants ont besoin de contenir bien plus que seulement du texte; cependant, les composants UI standards sont prévue pour la génération HTML et pas très utile pour la génération de contenu PDF. Ainis, Seam fourni des composants UI spéciaux pour la génération de parfait contenu PDF. Les balises comme <literal><p:image></literal> et <literal><p:paragraph></literal> sont les fondations de bases de simples documents. Les balises comme <literal><p:font></literal> fournissent des informations sur le style de tous les contenues autour d'elles."
#. Tag: literal
#: Itext.xml:174
#, no-c-format
msgid "<p:paragraph>"
-msgstr ""
+msgstr "<p:paragraph>"
#. Tag: para
#: Itext.xml:183
#, no-c-format
-msgid ""
-"Most uses of text should be sectioned into paragraphs so that text fragments "
-"can be flowed, formatted and styled in logical groups."
-msgstr ""
+msgid "Most uses of text should be sectioned into paragraphs so that text fragments can be flowed, formatted and styled in logical groups."
+msgstr "La plus part des textes doivent pouvoir être divisés en paragraphes donc les fragments de texte peuvent être enchainnées, formatés et disposant d'un style en groupes logiques. "
#. Tag: literal
#: Itext.xml:193
#, no-c-format
msgid "firstLineIndent"
-msgstr ""
+msgstr "firstLineIndent"
#. Tag: literal
-#: Itext.xml:198 Itext.xml:1167
+#: Itext.xml:198
+#: Itext.xml:1167
#, no-c-format
msgid "extraParagraphSpace"
-msgstr ""
+msgstr "extraParagraphSpace"
#. Tag: literal
-#: Itext.xml:203 Itext.xml:1139
+#: Itext.xml:203
+#: Itext.xml:1139
#, no-c-format
msgid "leading"
-msgstr ""
+msgstr "leading"
#. Tag: literal
-#: Itext.xml:208 Itext.xml:1147
+#: Itext.xml:208
+#: Itext.xml:1147
#, no-c-format
msgid "multipliedLeading"
-msgstr ""
+msgstr "multipliedLeading"
#. Tag: para
-#: Itext.xml:212 Itext.xml:463 Itext.xml:1032
+#: Itext.xml:212
+#: Itext.xml:463
+#: Itext.xml:1032
#, no-c-format
-msgid ""
-"<literal>spacingBefore</literal> — The blank space to be inserted "
-"before the element."
-msgstr ""
+msgid "<literal>spacingBefore</literal> — The blank space to be inserted before the element."
+msgstr "<literal>spacingBefore</literal> — Un espace doit être inséré avant l'élément."
#. Tag: para
-#: Itext.xml:217 Itext.xml:468 Itext.xml:1038
+#: Itext.xml:217
+#: Itext.xml:468
+#: Itext.xml:1038
#, no-c-format
-msgid ""
-"<literal>spacingAfter</literal> — The blank space to be inserted after "
-"the element."
-msgstr ""
+msgid "<literal>spacingAfter</literal> — The blank space to be inserted after the element."
+msgstr "<literal>spacingAfter</literal> — Un espace doit être inséré après l'élément."
#. Tag: literal
-#: Itext.xml:223 Itext.xml:454
+#: Itext.xml:223
+#: Itext.xml:454
#, no-c-format
msgid "indentationLeft"
-msgstr ""
+msgstr "indentationLeft"
#. Tag: literal
-#: Itext.xml:228 Itext.xml:459
+#: Itext.xml:228
+#: Itext.xml:459
#, no-c-format
msgid "indentationRight"
-msgstr ""
+msgstr "indentationRight"
#. Tag: literal
-#: Itext.xml:233 Itext.xml:1066
+#: Itext.xml:233
+#: Itext.xml:1066
#, no-c-format
msgid "keepTogether"
-msgstr ""
+msgstr "keepTogether"
#. Tag: programlisting
#: Itext.xml:241
@@ -334,29 +345,27 @@
" This is a simple document. It isn't very fancy.\n"
"</p:paragraph>]]>"
msgstr ""
+"<![CDATA[<p:paragraph alignment=\"justify\">\n"
+" This is a simple document. It isn't very fancy.\n"
+"</p:paragraph>]]>"
#. Tag: literal
#: Itext.xml:248
#, no-c-format
msgid "<p:text>"
-msgstr ""
+msgstr "<p:text>"
#. Tag: para
#: Itext.xml:256
#, no-c-format
-msgid ""
-"The <literal>text</literal> tag allows text fragments to be produced from "
-"application data using normal JSF converter mechanisms. It is very similar "
-"to the <literal>outputText</literal> tag used when rendering HTML documents."
-msgstr ""
+msgid "The <literal>text</literal> tag allows text fragments to be produced from application data using normal JSF converter mechanisms. It is very similar to the <literal>outputText</literal> tag used when rendering HTML documents."
+msgstr "La balise <literal>text</literal> permet aux fragments de textes d'être produit depuis des donnnées de l'application en utilisant les méchanisme de conversation JSF classique. De manière similaire à la balise <literal>outputText</literal> utilisé pour rendre les documents en HTML."
#. Tag: para
#: Itext.xml:267
#, no-c-format
-msgid ""
-"<literal>value</literal> — The value to be displayed. This will "
-"typically be a value binding expression."
-msgstr ""
+msgid "<literal>value</literal> — The value to be displayed. This will typically be a value binding expression."
+msgstr "<literal>value</literal> — La valeur a affiché. Ceci sera typiquement une expression liée à une valeur."
#. Tag: programlisting
#: Itext.xml:276
@@ -368,24 +377,29 @@
" </p:text>\n"
"</p:paragraph>]]>"
msgstr ""
+"<![CDATA[<p:paragraph>\n"
+" The item costs <p:text value=\"#{product.price}\">\n"
+" <f:convertNumber type=\"currency\" currencySymbol=\"$\"/>\n"
+" </p:text>\n"
+"</p:paragraph>]]>"
#. Tag: literal
#: Itext.xml:283
#, no-c-format
msgid "<p:html>"
-msgstr ""
+msgstr "<p:html>"
#. Tag: para
#: Itext.xml:291
#, no-c-format
msgid "The <literal>html</literal> tag renders HTML content into the PDF."
-msgstr ""
+msgstr "La balise <literal>html</literal> rends le contenu Html en PDF."
#. Tag: para
#: Itext.xml:301
#, no-c-format
msgid "<literal>value</literal> — The text to be displayed."
-msgstr ""
+msgstr "<literal>value</literal> — Le texte à afficher."
#. Tag: programlisting
#: Itext.xml:309
@@ -403,64 +417,67 @@
"</p:html>\n"
"\n"
"<p:html>\n"
-" <s:formattedText value=\"*This* is |Seam Text| as HTML. It's very^cool^."
-"\" />\n"
+" <s:formattedText value=\"*This* is |Seam Text| as HTML. It's very^cool^.\" />\n"
"</p:html> \n"
"]]>"
msgstr ""
+"<![CDATA[\n"
+"<p:html value=\"This is HTML with <b>some markup</b>.\" />\n"
+"<p:html>\n"
+" <h1>This is more complex HTML</h1>\n"
+" <ul>\n"
+" <li>one</li>\n"
+" <li>two</li>\n"
+" <li>three</li>\n"
+" </ul>\n"
+"</p:html>\n"
+"\n"
+"<p:html>\n"
+" <s:formattedText value=\"*This* is |Seam Text| as HTML. It's very^cool^.\" />\n"
+"</p:html> \n"
+"]]>"
#. Tag: literal
#: Itext.xml:316
#, no-c-format
msgid "<p:font>"
-msgstr ""
+msgstr "<p:font>"
#. Tag: para
#: Itext.xml:324
#, no-c-format
-msgid ""
-"The font tag defines the default font to be used for all text inside of it."
-msgstr ""
+msgid "The font tag defines the default font to be used for all text inside of it."
+msgstr "La balise de police de la police par défauit à utiliser pour tous les textes qu'elle englobe."
#. Tag: para
#: Itext.xml:333
#, no-c-format
-msgid ""
-"<literal>name</literal> — The font name, for example: "
-"<literal>COURIER</literal>, <literal>HELVETICA</literal>, <literal>TIMES-"
-"ROMAN</literal>, <literal>SYMBOL</literal> or <literal>ZAPFDINGBATS</"
-"literal>."
-msgstr ""
+msgid "<literal>name</literal> — The font name, for example: <literal>COURIER</literal>, <literal>HELVETICA</literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or <literal>ZAPFDINGBATS</literal>."
+msgstr "<literal>name</literal> — Le nom de la police, par exemple: <literal>COURIER</literal>, <literal>HELVETICA</literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> ou <literal>ZAPFDINGBATS</literal>."
#. Tag: para
#: Itext.xml:340
#, no-c-format
msgid "<literal>size</literal> — The point size of the font."
-msgstr ""
+msgstr "<literal>size</literal> — La taille en point de la police."
#. Tag: para
#: Itext.xml:344
#, no-c-format
-msgid ""
-"<literal>style</literal> — The font styles. Any combination of : "
-"<literal>NORMAL</literal>, <literal>BOLD</literal>, <literal>ITALIC</"
-"literal>, <literal>OBLIQUE</literal>, <literal>UNDERLINE</literal>, "
-"<literal>LINE-THROUGH</literal>"
-msgstr ""
+msgid "<literal>style</literal> — The font styles. Any combination of : <literal>NORMAL</literal>, <literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr "<literal>style</literal> — Le style de la police. Toute combinaison de : <literal>NORMAL</literal>, <literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
#. Tag: para
#: Itext.xml:352
#, no-c-format
-msgid ""
-"<literal>color</literal> — The font color. (see <xref linkend=\"itext."
-"colors\"/> for color values)"
-msgstr ""
+msgid "<literal>color</literal> — The font color. (see <xref linkend=\"itext.colors\"/> for color values)"
+msgstr "<literal>color</literal> — La couleur de la police. (voir <xref linkend=\"itext.colors\"/> pour les valeurs des couleurs)"
#. Tag: para
#: Itext.xml:356
#, no-c-format
msgid "<literal>encoding</literal> — The character set encoding."
-msgstr ""
+msgstr "<literal>encoding</literal> — Le groupe d'encodage de caractères."
#. Tag: programlisting
#: Itext.xml:363
@@ -470,262 +487,228 @@
" <p:paragraph>My Title</p:paragraph>\n"
"</p:font>]]>"
msgstr ""
+"<![CDATA[<p:font name=\"courier\" style=\"bold\" size=\"24\">\n"
+" <p:paragraph>My Title</p:paragraph>\n"
+"</p:font>]]>"
#. Tag: literal
#: Itext.xml:370
#, no-c-format
msgid "<p:newPage>"
-msgstr ""
+msgstr "<p:newPage>"
#. Tag: para
#: Itext.xml:379
#, no-c-format
msgid "<literal>p:newPage</literal> inserts a page break."
-msgstr ""
+msgstr "<literal>p:newPage</literal> insère un saut de page."
#. Tag: programlisting
#: Itext.xml:386
#, no-c-format
msgid "<![CDATA[<p:newPage />]]>"
-msgstr ""
+msgstr "<![CDATA[<p:newPage />]]>"
#. Tag: literal
#: Itext.xml:393
#, no-c-format
msgid "<p:image>"
-msgstr ""
+msgstr "<p:image>"
#. Tag: para
#: Itext.xml:402
#, no-c-format
-msgid ""
-"<literal>p:image</literal> inserts an image into the document. Images can be "
-"loaded from the classpath or from the web application context using the "
-"<literal>value</literal> attribute."
-msgstr ""
+msgid "<literal>p:image</literal> inserts an image into the document. Images can be loaded from the classpath or from the web application context using the <literal>value</literal> attribute."
+msgstr "<literal>p:image</literal> insère une image dans le document. Les images peuvent être chargées depuis le classpath ou depuis le contexte de l'applicationw web en utilisant l'attribut <literal>value</literal>."
#. Tag: para
#: Itext.xml:408
#, no-c-format
-msgid ""
-"Resources can also be dynamically generated by application code. The "
-"<literal>imageData</literal> attribute can specify a value binding "
-"expression whose value is a <literal>java.awt.Image</literal> object."
-msgstr ""
+msgid "Resources can also be dynamically generated by application code. The <literal>imageData</literal> attribute can specify a value binding expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr "Les resources peuvent aussi être générée dynamiquement par le code de l'application. L'attribut <literal>imageData</literal> peut spécifier une expression en liaison avec une valeur cette valeur est un objet <literal>java.awt.Image</literal>."
#. Tag: para
#: Itext.xml:421
#, no-c-format
-msgid ""
-"<literal>value</literal> — A resource name or a method expression "
-"binding to an application-generated image."
-msgstr ""
+msgid "<literal>value</literal> — A resource name or a method expression binding to an application-generated image."
+msgstr "<literal>value</literal> — Un nom de ressource ou une relation avec une expression d'une méthode pour l'imagé générée de l'application."
#. Tag: para
#: Itext.xml:427
#, no-c-format
-msgid ""
-"<literal>rotation</literal> — The rotation of the image in degrees."
-msgstr ""
+msgid "<literal>rotation</literal> — The rotation of the image in degrees."
+msgstr "<literal>rotation</literal> — La rotation de l'image en degrée."
#. Tag: para
#: Itext.xml:433
#, no-c-format
msgid "<literal>height</literal> — The height of the image."
-msgstr ""
+msgstr "<literal>height</literal> — La hauteur de l'image ."
#. Tag: para
#: Itext.xml:437
#, no-c-format
msgid "<literal>width</literal> — The width of the image."
-msgstr ""
+msgstr "<literal>width</literal> — La largeur de l'image."
#. Tag: para
#: Itext.xml:441
#, no-c-format
-msgid ""
-"<literal>alignment</literal>— The alignment of the image. (see <xref "
-"linkend=\"itext.alignment\"/> for possible values)"
-msgstr ""
+msgid "<literal>alignment</literal>— The alignment of the image. (see <xref linkend=\"itext.alignment\"/> for possible values)"
+msgstr "<literal>alignment</literal>— L'alignement de l'image (voir <xref linkend=\"itext.alignment\"/> pour les valeurs possibles)"
#. Tag: para
#: Itext.xml:448
#, no-c-format
-msgid ""
-"<literal>alt</literal> — Alternative text representation for the image."
-msgstr ""
+msgid "<literal>alt</literal> — Alternative text representation for the image."
+msgstr "<literal>alt</literal> — Texte alternatif pour la représentation de l'image."
#. Tag: literal
#: Itext.xml:476
#, no-c-format
msgid "widthPercentage"
-msgstr ""
+msgstr "widthPercentage"
#. Tag: literal
#: Itext.xml:482
#, no-c-format
msgid "initialRotation"
-msgstr ""
+msgstr "initialRotation"
#. Tag: literal
#: Itext.xml:488
#, no-c-format
msgid "<literal>dpi</literal>"
-msgstr ""
+msgstr "<literal>dpi</literal>"
#. Tag: para
#: Itext.xml:492
#, no-c-format
-msgid ""
-"<literal>scalePercent</literal> — The scaling factor (as a percentage) "
-"to use for the image. This can be expressed as a single percentage value or "
-"as two percentage values representing separate x and y scaling percentages."
-msgstr ""
+msgid "<literal>scalePercent</literal> — The scaling factor (as a percentage) to use for the image. This can be expressed as a single percentage value or as two percentage values representing separate x and y scaling percentages."
+msgstr "<literal>scalePercent</literal> — La facteur de mise à l'échelle (en pourcentage) à utiliser pour l'image. Ceci peut être exprimée comme un seul pourcentage ou par deux valeurs représentant des pourcentages différents sur l'échelle de x et de y."
#. Tag: para
#: Itext.xml:499
#, no-c-format
-msgid ""
-"<literal>scaleToFit</literal> — Specifies the X any Y size to scale "
-"the image to. The image will be scale to fit those dimensions as closely as "
-"possible while preserving the XY ratio of the image."
-msgstr ""
+msgid "<literal>scaleToFit</literal> — Specifies the X any Y size to scale the image to. The image will be scale to fit those dimensions as closely as possible while preserving the XY ratio of the image."
+msgstr "<literal>scaleToFit</literal> — Indique la taille en X et la taille Y sera calculé pour mettre à l'échelle l'image. L'image sera mise à l'échelle pour faire correspondre à ces dimnesions de manière aussi proche que possible pour préserver le ratio XY de l'image."
#. Tag: literal
#: Itext.xml:506
#, no-c-format
msgid "wrap"
-msgstr ""
+msgstr "wrap"
#. Tag: literal
#: Itext.xml:511
#, no-c-format
msgid "underlying"
-msgstr ""
+msgstr "underlying"
#. Tag: programlisting
#: Itext.xml:521
#, no-c-format
msgid "<![CDATA[<p:image value=\"/jboss.jpg\" />]]>"
-msgstr ""
+msgstr "<![CDATA[<p:image value=\"/jboss.jpg\" />]]>"
#. Tag: programlisting
#: Itext.xml:522
#, no-c-format
msgid "<![CDATA[<p:image value=\"#{images.chart}\" />]]>"
-msgstr ""
+msgstr "<![CDATA[<p:image value=\"#{images.chart}\" />]]>"
#. Tag: literal
#: Itext.xml:530
#, no-c-format
msgid "<p:anchor>"
-msgstr ""
+msgstr "<p:anchor>"
#. Tag: para
#: Itext.xml:537
#, no-c-format
-msgid ""
-"<literal>p:anchor</literal> defines clickable links from a document. It "
-"supports the following attributes:"
-msgstr ""
+msgid "<literal>p:anchor</literal> defines clickable links from a document. It supports the following attributes:"
+msgstr "<literal>p:anchor</literal> défini des liens cliquables pour un document. Il supporte les attributs suivants:"
#. Tag: para
#: Itext.xml:548
#, no-c-format
-msgid ""
-"<literal>name</literal> — The name of an in-document anchor "
-"destination."
-msgstr ""
+msgid "<literal>name</literal> — The name of an in-document anchor destination."
+msgstr "<literal>name</literal> — Le nom du point d'ancrage dans le document de destination."
#. Tag: para
#: Itext.xml:555
#, no-c-format
-msgid ""
-"<literal>reference</literal> — The destination the link refers to. "
-"Links to other points in the document should begin with a \"#\". For "
-"example, \"#link1\" to refer to an anchor position with a <literal>name</"
-"literal> of <literal>link1</literal>. Links may also be a full URL to point "
-"to a resource outside of the document."
-msgstr ""
+msgid "<literal>reference</literal> — The destination the link refers to. Links to other points in the document should begin with a \"#\". For example, \"#link1\" to refer to an anchor position with a <literal>name</literal> of <literal>link1</literal>. Links may also be a full URL to point to a resource outside of the document."
+msgstr "<literal>reference</literal> — La destination du lien référé par. Les liens vers des autres points dans le document devraient commencer par un \"#\". Par exemple, \"#link1\" pour indiquer une position d'ancrage avec un <literal>name</literal> à <literal>link1</literal>. Les liens peuvent aussi avoir un URL complète pour indiquer une ressource à l'extérieure du document."
#. Tag: programlisting
#: Itext.xml:567
#, no-c-format
msgid ""
-"<![CDATA[<p:listItem><p:anchor reference=\"#reason1\">Reason 1</p:anchor></p:"
-"listItem> \n"
+"<![CDATA[<p:listItem><p:anchor reference=\"#reason1\">Reason 1</p:anchor></p:listItem> \n"
"...\n"
"<p:paragraph>\n"
-" <p:anchor name=\"reason1\">It's the quickest way to get \"rich\"</p:"
-"anchor> \n"
+" <p:anchor name=\"reason1\">It's the quickest way to get \"rich\"</p:anchor> \n"
" ... \n"
"</p:paragraph>]]>"
msgstr ""
+"<![CDATA[<p:listItem><p:anchor reference=\"#reason1\">Reason 1</p:anchor></p:listItem> \n"
+"...\n"
+"<p:paragraph>\n"
+" <p:anchor name=\"reason1\">It's the quickest way to get \"rich\"</p:anchor> \n"
+" ... \n"
+"</p:paragraph>]]>"
#. Tag: title
#: Itext.xml:578
#, no-c-format
msgid "Headers and Footers"
-msgstr ""
+msgstr "Entêtes et pieds de page"
#. Tag: literal
-#: Itext.xml:591 Itext.xml:751
+#: Itext.xml:591
+#: Itext.xml:751
#, no-c-format
msgid "<p:header>"
-msgstr ""
+msgstr "<p:header>"
#. Tag: literal
#: Itext.xml:594
#, no-c-format
msgid "<p:footer>"
-msgstr ""
+msgstr "<p:footer>"
#. Tag: para
#: Itext.xml:601
#, no-c-format
-msgid ""
-"The <literal>p:header</literal> and <literal>p:footer</literal> components "
-"provide the ability to place header and footer text on each page of a "
-"generated document. Header and footer declarations should appear at the "
-"beginning of a document."
-msgstr ""
+msgid "The <literal>p:header</literal> and <literal>p:footer</literal> components provide the ability to place header and footer text on each page of a generated document. Header and footer declarations should appear at the beginning of a document."
+msgstr "Les composants <literal>p:header</literal> et <literal>p:footer</literal> fournissent la capacité de placer des textes en entêtes et en pieds de pages sur chaque page du document généré. Les déclarations d'entêtes et de pieds de pages devrait apparaitrent au début du document."
#. Tag: para
-#: Itext.xml:614 Itext.xml:719 Itext.xml:872
+#: Itext.xml:614
+#: Itext.xml:719
+#: Itext.xml:872
#, no-c-format
-msgid ""
-"<literal>alignment</literal> — The alignment of the header/footer box "
-"section. (see <xref linkend=\"itext.alignment\"/> for alignment values)"
-msgstr ""
+msgid "<literal>alignment</literal> — The alignment of the header/footer box section. (see <xref linkend=\"itext.alignment\"/> for alignment values)"
+msgstr "<literal>alignment</literal> — L'alignement de la section de la boite d'entête ou de pied de page. (voir <xref linkend=\"itext.alignment\"/> pour les valeurs d'alignements)"
#. Tag: para
#: Itext.xml:621
#, no-c-format
-msgid ""
-"<literal>backgroundColor</literal> — The background color of the "
-"header/footer box. (see <xref linkend=\"itext.colors\"/> for color values)"
-msgstr ""
+msgid "<literal>backgroundColor</literal> — The background color of the header/footer box. (see <xref linkend=\"itext.colors\"/> for color values)"
+msgstr "<literal>backgroundColor</literal> — La couleur d'arrière plan de la boite d'entête ou de pied de page. (voir <xref linkend=\"itext.colors\"/> pour les valeurs des couleurs)"
#. Tag: para
#: Itext.xml:630
#, no-c-format
-msgid ""
-"<literal>borderColor</literal> — The border color of the header/footer "
-"box. Individual border sides can be set using <literal>borderColorLeft</"
-"literal>, <literal>borderColorRight</literal>, <literal>borderColorTop</"
-"literal> and <literal>borderColorBottom</literal>.(see <xref linkend=\"itext."
-"colors\"/> for color values)"
-msgstr ""
+msgid "<literal>borderColor</literal> — The border color of the header/footer box. Individual border sides can be set using <literal>borderColorLeft</literal>, <literal>borderColorRight</literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</literal>.(see <xref linkend=\"itext.colors\"/> for color values)"
+msgstr "<literal>borderColor</literal> — La couleur de la bordure de la boit d'entête oude pied de page. Les traits de bordures peuvent être définis individuellement en utilisant <literal>borderColorLeft</literal>, <literal>borderColorRight</literal>, <literal>borderColorTop</literal> et <literal>borderColorBottom</literal>.(voir <xref linkend=\"itext.colors\"/> pour les valeurs des couleurs)"
#. Tag: para
#: Itext.xml:638
#, no-c-format
-msgid ""
-"<literal>borderWidth</literal> — The width of the border. Individual "
-"border sides can be specified using <literal>borderWidthLeft</literal>, "
-"<literal>borderWidthRight</literal>, <literal>borderWidthTop</literal> and "
-"<literal>borderWidthBottom</literal>."
-msgstr ""
+msgid "<literal>borderWidth</literal> — The width of the border. Individual border sides can be specified using <literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, <literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr "<literal>borderWidth</literal> — La largeur de la bordure. Les traits de bordures peuvent être définie individuellement en utilisant <literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, <literal>borderWidthTop</literal> et <literal>borderWidthBottom</literal>."
#. Tag: programlisting
#: Itext.xml:649
@@ -740,21 +723,26 @@
" </p:font>\n"
"</f:facet>]]>"
msgstr ""
+"<![CDATA[<f:facet name=\"header\">\n"
+" <p:font size=\"12\">\n"
+" <p:footer borderWidthTop=\"1\" borderColorTop=\"blue\" \n"
+" borderWidthBottom=\"0\" alignment=\"center\">\n"
+" Why Seam? [<p:pageNumber />]\n"
+" </p:footer>\n"
+" </p:font>\n"
+"</f:facet>]]>"
#. Tag: literal
#: Itext.xml:656
#, no-c-format
msgid "<p:pageNumber>"
-msgstr ""
+msgstr "<p:pageNumber>"
#. Tag: para
#: Itext.xml:663
#, no-c-format
-msgid ""
-"The current page number can be placed inside of a header or footer using the "
-"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
-"the context of a header or footer and can only be used once."
-msgstr ""
+msgid "The current page number can be placed inside of a header or footer using the <literal>p:pageNumber</literal> tag. The page number tag can only be used in the context of a header or footer and can only be used once."
+msgstr "Le numéro de page courrant peut être placé dans l'entête ou le pied de page en utilisant la balise <literal>p:pageNumber</literal>. La balise de numéro de page peut seulement être utilisé dans le contexte d'une entête ou d'un pied de page et ne peut être utilisé qu'une fois."
#. Tag: programlisting
#: Itext.xml:669
@@ -765,55 +753,46 @@
" Why Seam? [<p:pageNumber />]\n"
"</p:footer>"
msgstr ""
+"<p:footer borderWidthTop="1" borderColorTop="blue" \n"
+" borderWidthBottom="0" alignment="center">\n"
+" Why Seam? [<p:pageNumber />]\n"
+"</p:footer>"
#. Tag: title
#: Itext.xml:682
#, no-c-format
msgid "Chapters and Sections"
-msgstr ""
+msgstr "Les chapitres et les sections"
#. Tag: literal
#: Itext.xml:693
#, no-c-format
msgid "<p:chapter>"
-msgstr ""
+msgstr "<p:chapter>"
#. Tag: literal
#: Itext.xml:696
#, no-c-format
msgid "<p:section>"
-msgstr ""
+msgstr "<p:section>"
#. Tag: para
#: Itext.xml:704
#, no-c-format
-msgid ""
-"If the generated document follows a book/article structure, the <literal>p:"
-"chapter</literal> and <literal>p:section</literal> tags can be used to "
-"provide the necessary structure. Sections can only be used inside of "
-"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
-"easy navigation between chapters and sections in a document."
-msgstr ""
+msgid "If the generated document follows a book/article structure, the <literal>p:chapter</literal> and <literal>p:section</literal> tags can be used to provide the necessary structure. Sections can only be used inside of chapters, but they may be nested arbitrarily deep. Most PDF viewers provide easy navigation between chapters and sections in a document."
+msgstr "Si le document généré suit la structure d'un livre ou d'un article, les balises <literal>p:chapter</literal> et <literal>p:section</literal> peuvent être utilisés pour fournir la structure nécéssaire. Les sections peuvent seulement être utilisé dans des chapitres mais peuvent être englobé de manière arbitraire quelquesoit la profondeur de leur encapsulation. La plus part des visualisateurs de PDF fournissent une navigation facilitée entre les chapitres et les sections dans un document."
#. Tag: para
#: Itext.xml:726
#, no-c-format
-msgid ""
-"<literal>number</literal> — The chapter number. Every chapter should "
-"be assigned a chapter number."
-msgstr ""
+msgid "<literal>number</literal> — The chapter number. Every chapter should be assigned a chapter number."
+msgstr "<literal>number</literal> — Le numéro de chapitre. Chaque chapitre devrait avoir un numérod e chapitre assigné."
#. Tag: para
#: Itext.xml:731
#, no-c-format
-msgid ""
-"<literal>numberDepth</literal> — The depth of numbering for section. "
-"All sections are numbered relative to their surrounding chapter/sections. "
-"The fourth section of the first section of chapter three would be section "
-"3.1.4, if displayed at the default number depth of three. To omit the "
-"chapter number, a number depth of 2 should be used. In that case, the "
-"section number would be displayed as 1.4."
-msgstr ""
+msgid "<literal>numberDepth</literal> — The depth of numbering for section. All sections are numbered relative to their surrounding chapter/sections. The fourth section of the first section of chapter three would be section 3.1.4, if displayed at the default number depth of three. To omit the chapter number, a number depth of 2 should be used. In that case, the section number would be displayed as 1.4."
+msgstr "<literal>numberDepth</literal> — La profondeur de la numérotation de la section. Toutes les sections ont un numéro relatif au chapitre/section les englobant. La quatrième section de la première section du chapitre trois devrait être la section 3.1.4, si on affiche la profondeur par défaut à 3 nombres. Pour masquer le numéro de chapitre, une profondeur de 2 devrait être utilisé. Dans ce cas, la section sera affiché comme 1.4."
#. Tag: programlisting
#: Itext.xml:743
@@ -834,32 +813,38 @@
"\n"
"</p:document> ]]>"
msgstr ""
+"<![CDATA[<p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+" title=\"Hello\">\n"
+"\n"
+" <p:chapter number=\"1\">\n"
+" <p:title><p:paragraph>Hello</p:paragraph></p:title>\n"
+" <p:paragraph>Hello #{user.name}!</p:paragraph>\n"
+" </p:chapter>\n"
+"\n"
+" <p:chapter number=\"2\">\n"
+" <p:title><p:paragraph>Goodbye</p:paragraph></p:title>\n"
+" <p:paragraph>Goodbye #{user.name}.</p:paragraph>\n"
+" </p:chapter>\n"
+"\n"
+"</p:document> ]]>"
#. Tag: para
#: Itext.xml:759
#, no-c-format
-msgid ""
-"Any chapter or section can contain a <literal>p:title</literal>. The title "
-"will be displayed next to the chapter/section number. The body of the title "
-"may contain raw text or may be a <literal>p:paragraph</literal>."
-msgstr ""
+msgid "Any chapter or section can contain a <literal>p:title</literal>. The title will be displayed next to the chapter/section number. The body of the title may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr "Tout chapitre ou section devrait contenur un <literal>p:title</literal>. Le titre sera affiché à côté du numéro de chapitre ou de section. Le corps du titre peut contenir un texte but ou peut être un <literal>p:paragraph</literal>."
#. Tag: title
#: Itext.xml:772
#, no-c-format
msgid "Lists"
-msgstr ""
+msgstr "Les listes"
#. Tag: para
#: Itext.xml:774
#, no-c-format
-msgid ""
-"List structures can be displayed using the <literal>p:list</literal> and "
-"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
-"sublists. List items may not be used outside of a list. The following "
-"document uses the <literal>ui:repeat</literal> tag to to display a list of "
-"values retrieved from a Seam component."
-msgstr ""
+msgid "List structures can be displayed using the <literal>p:list</literal> and <literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested sublists. List items may not be used outside of a list. The following document uses the <literal>ui:repeat</literal> tag to to display a list of values retrieved from a Seam component."
+msgstr "Les structures de listes peuvent être affiché en utilisant les balises <literal>p:list</literal> et <literal>p:listItem</literal>. Les listes peuvent contenir des sous-listes englobées arbitrairement. Les éléments de la liste ne devraient pas être utilisés à l'extérieur de la liste. Le document suivant utilise la balise <literal>ui:repeat</literal> pour afficher une liste des valeurs extraites depuis un composant de Seam."
#. Tag: programlisting
#: Itext.xml:779
@@ -875,61 +860,57 @@
" </p:list>\n"
"</p:document>]]>"
msgstr ""
+"<![CDATA[<p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+" xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+" title=\"Hello\">\n"
+" <p:list style=\"numbered\">\n"
+" <ui:repeat value=\"#{documents}\" var=\"doc\">\n"
+" <p:listItem>#{doc.name}</p:listItem>\n"
+" </ui:repeat>\n"
+" </p:list>\n"
+"</p:document>]]>"
#. Tag: literal
#: Itext.xml:792
#, no-c-format
msgid "<p:list>"
-msgstr ""
+msgstr "<p:list>"
#. Tag: para
#: Itext.xml:809
#, no-c-format
-msgid ""
-"<literal>style</literal> — The ordering/bulleting style of list. One "
-"of: <literal>NUMBERED</literal>, <literal>LETTERED</literal>, "
-"<literal>GREEK</literal>, <literal>ROMAN</literal>, <literal>ZAPFDINGBATS</"
-"literal>, <literal>ZAPFDINGBATS_NUMBER</literal>. If no style is given, the "
-"list items are bulleted."
-msgstr ""
+msgid "<literal>style</literal> — The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, <literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</literal>. If no style is given, the list items are bulleted."
+msgstr "<literal>style</literal> — Les styles de listes de type ordonnées/numérotées. Une parmis: <literal>NUMBERED</literal>, <literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</literal>. Si aucun style n'est données, les éléments de la listes sont précédés d'un rond."
#. Tag: para
#: Itext.xml:816
#, no-c-format
-msgid ""
-"<literal>listSymbol</literal> — For bulleted lists, specifies the "
-"bullet symbol."
-msgstr ""
+msgid "<literal>listSymbol</literal> — For bulleted lists, specifies the bullet symbol."
+msgstr "<literal>listSymbol</literal> — Pour les listes avec symboles, indique le type de symbole."
#. Tag: para
#: Itext.xml:821
#, no-c-format
msgid "<literal>indent</literal> — The indentation level of the list."
-msgstr ""
+msgstr "<literal>indent</literal> — Le niveau d'indentation de la liste."
#. Tag: para
#: Itext.xml:827
#, no-c-format
-msgid ""
-"<literal>lowerCase</literal> — For list styles using letters, "
-"indicates whether the letters should be lower case."
-msgstr ""
+msgid "<literal>lowerCase</literal> — For list styles using letters, indicates whether the letters should be lower case."
+msgstr "<literal>lowerCase</literal> — Pour les styles de listes utilisant les lettres, indique si les lettres doivent être en minuscules."
#. Tag: para
#: Itext.xml:833
#, no-c-format
-msgid ""
-"<literal>charNumber</literal> — For ZAPFDINGBATS, indicates the "
-"character code of the bullet character."
-msgstr ""
+msgid "<literal>charNumber</literal> — For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr "<literal>charNumber</literal> — Pour le style ZAPFDINGBATS, indique si le code du caractères précédant l'élément de la liste."
#. Tag: para
#: Itext.xml:839
#, no-c-format
-msgid ""
-"<literal>numberType</literal> — For ZAPFDINGBATS_NUMBER, indicates the "
-"numbering style."
-msgstr ""
+msgid "<literal>numberType</literal> — For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr "<literal>numberType</literal> — Pour le style ZAPFDINGBATS_NUMBER, indique le style de numérotation."
#. Tag: programlisting
#: Itext.xml:847
@@ -941,179 +922,156 @@
" </ui:repeat>\n"
"</p:list>]]>"
msgstr ""
+"<![CDATA[<p:list style=\"numbered\">\n"
+" <ui:repeat value=\"#{documents}\" var=\"doc\">\n"
+" <p:listItem>#{doc.name}</p:listItem>\n"
+" </ui:repeat>\n"
+"</p:list>]]>"
#. Tag: literal
#: Itext.xml:854
#, no-c-format
msgid "<p:listItem>"
-msgstr ""
+msgstr "<p:listItem>"
#. Tag: para
#: Itext.xml:861
#, no-c-format
msgid "<literal>p:listItem</literal> supports the following attributes:"
-msgstr ""
+msgstr "<literal>p:listItem</literal> dispose des attributs suivant:"
#. Tag: para
#: Itext.xml:879
#, no-c-format
-msgid ""
-"<literal>alignment</literal> — The alignment of the list item. (See "
-"<xref linkend=\"itext.alignment\"/> for possible values)"
-msgstr ""
+msgid "<literal>alignment</literal> — The alignment of the list item. (See <xref linkend=\"itext.alignment\"/> for possible values)"
+msgstr "<literal>alignment</literal> — L'alignement de l'élément de la liste. (Voir <xref linkend=\"itext.alignment\"/> pour les valeurs possibles)"
#. Tag: para
#: Itext.xml:885
#, no-c-format
msgid "<literal>indentationLeft</literal> — The left indentation amount."
-msgstr ""
+msgstr "<literal>indentationLeft</literal> — La quantité d'indentation à gauche."
#. Tag: para
#: Itext.xml:892
#, no-c-format
-msgid ""
-"<literal>indentationRight</literal> — The right indentation amount."
-msgstr ""
+msgid "<literal>indentationRight</literal> — The right indentation amount."
+msgstr "<literal>indentationRight</literal> — La quantité d'indentation à droite."
#. Tag: para
#: Itext.xml:899
#, no-c-format
-msgid ""
-"<literal>listSymbol</literal> — Overrides the default list symbol for "
-"this list item."
-msgstr ""
+msgid "<literal>listSymbol</literal> — Overrides the default list symbol for this list item."
+msgstr "<literal>listSymbol</literal> — Remplace le symbole de la liste par défaut pour cet élement de la liste."
#. Tag: programlisting
#: Itext.xml:908
#, no-c-format
msgid "<programlisting>...</programlisting>"
-msgstr ""
+msgstr "<programlisting>...</programlisting>"
#. Tag: title
#: Itext.xml:922
#, no-c-format
msgid "Tables"
-msgstr ""
+msgstr "Les tableaux"
#. Tag: para
#: Itext.xml:924
#, no-c-format
-msgid ""
-"Table structures can be created using the <literal>p:table</literal> and "
-"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
-"explicit row declaration. If a table has 3 columns, then every 3 cells will "
-"automatically form a row. Header and footer rows can be declared, and the "
-"headers and footers will be repeated in the event a table structure spans "
-"multiple pages."
-msgstr ""
+msgid "Table structures can be created using the <literal>p:table</literal> and <literal>p:cell</literal> tags. Unlike many table structures, there is no explicit row declaration. If a table has 3 columns, then every 3 cells will automatically form a row. Header and footer rows can be declared, and the headers and footers will be repeated in the event a table structure spans multiple pages."
+msgstr "Les structures d'un tableau peuvent être créés en uutilisant les balises <literal>p:table</literal> et <literal>p:cell</literal>. A l'inverse de beaucoup de structures de tableaux, il n'y a pas de déclaration explicite de ligne. Si un tableau a 3 colonnes, alors chacune des trois cellules devront automatiquement former une ligne. Les lignes d'entêtes et de pieds de pages peuvent être déclarées et seront répétées dans le cas ou la structure du tableau s'étallerait sur plusieurs pages."
#. Tag: literal
#: Itext.xml:941
#, no-c-format
msgid "<p:table>"
-msgstr ""
+msgstr "<p:table>"
#. Tag: para
#: Itext.xml:948
#, no-c-format
msgid "<literal>p:table</literal> supports the following attributes."
-msgstr ""
+msgstr "<literal>p:table</literal> dispose des attributs suivants."
#. Tag: para
#: Itext.xml:958
#, no-c-format
-msgid ""
-"<literal>columns</literal> — The number of columns (cells) that make "
-"up a table row."
-msgstr ""
+msgid "<literal>columns</literal> — The number of columns (cells) that make up a table row."
+msgstr "<literal>columns</literal> — Le nombre de colonnes (cellules) qui font une ligne de tableau."
#. Tag: para
#: Itext.xml:965
#, no-c-format
-msgid ""
-"<literal>widths</literal> — The relative widths of each column. There "
-"should be one value for each column. For example: widths=\"2 1 1\" would "
-"indicate that there are 3 columns and the first column should be twice the "
-"size of the second and third column."
-msgstr ""
+msgid "<literal>widths</literal> — The relative widths of each column. There should be one value for each column. For example: widths=\"2 1 1\" would indicate that there are 3 columns and the first column should be twice the size of the second and third column."
+msgstr "<literal>widths</literal> — La largeur relative de chaque colonne. Il faudrait une valeur pour chacune des colonnes. Par exemple: widths=\"2 1 1\" devrait indiquer qu'il y a 3 colonnes, et que la première colonne devrait être deux fois plus grande que la seconde et la troisième."
#. Tag: para
#: Itext.xml:974
#, no-c-format
-msgid ""
-"<literal>headerRows</literal> — The initial number of rows which are "
-"considered to be headers or footer rows and should be repeated if the table "
-"spans multiple pages."
-msgstr ""
+msgid "<literal>headerRows</literal> — The initial number of rows which are considered to be headers or footer rows and should be repeated if the table spans multiple pages."
+msgstr "<literal>headerRows</literal> — Le nombre initial de ligne qui seront considérés comme des lignes d'entêtes ou des bas de tableau et devrait être répétés si le tableau s'étalle sur plusieurs pages."
#. Tag: para
#: Itext.xml:982
#, no-c-format
-msgid ""
-"<literal>footerRows</literal> — The number of rows that are considered "
-"to be footer rows. This value is subtracted from the <literal>headerRows</"
-"literal> value. If document has 2 rows which make up the header and one row "
-"that makes up the footer, <literal>headerRows</literal> should be set to 3 "
-"and <literal>footerRows</literal> should be set to 1"
-msgstr ""
+msgid "<literal>footerRows</literal> — The number of rows that are considered to be footer rows. This value is subtracted from the <literal>headerRows</literal> value. If document has 2 rows which make up the header and one row that makes up the footer, <literal>headerRows</literal> should be set to 3 and <literal>footerRows</literal> should be set to 1"
+msgstr "<literal>footerRows</literal> — Le nombre de ligne qui sont à considérées comme des lignes de bas de tableaux. Cette valeur est soustraite de la valeur<literal>headerRows</literal>. Si le document a 2 lignes qui constituent un entête et une ligne qui constitut le bas du tableau, <literal>headerRows</literal> devrait être défini à 3 et <literal>footerRows</literal> devrait être définie à 1"
#. Tag: para
#: Itext.xml:993
#, no-c-format
-msgid ""
-"<literal>widthPercentage</literal> — The percentage of the page width "
-"that the table spans."
-msgstr ""
+msgid "<literal>widthPercentage</literal> — The percentage of the page width that the table spans."
+msgstr "<literal>widthPercentage</literal> — Le pourcentage de la largeur de page que le tableau occupe."
#. Tag: para
#: Itext.xml:998
#, no-c-format
-msgid ""
-"<literal>horizontalAlignment</literal> — The horizontal alignment of "
-"the table. (See <xref linkend=\"itext.alignment\"/> for possible values)"
-msgstr ""
+msgid "<literal>horizontalAlignment</literal> — The horizontal alignment of the table. (See <xref linkend=\"itext.alignment\"/> for possible values)"
+msgstr "<literal>horizontalAlignment</literal> — L'alignement horizontal du tableau. (Voir <xref linkend=\"itext.alignment\"/> pour les valeurs possibles)"
#. Tag: literal
#: Itext.xml:1005
#, no-c-format
msgid "skipFirstHeader"
-msgstr ""
+msgstr "skipFirstHeader"
#. Tag: literal
-#: Itext.xml:1011 Itext.xml:1215
+#: Itext.xml:1011
+#: Itext.xml:1215
#, no-c-format
msgid "runDirection"
-msgstr ""
+msgstr "runDirection"
#. Tag: literal
#: Itext.xml:1017
#, no-c-format
msgid "lockedWidth"
-msgstr ""
+msgstr "lockedWidth"
#. Tag: literal
#: Itext.xml:1025
#, no-c-format
msgid "splitRows"
-msgstr ""
+msgstr "splitRows"
#. Tag: literal
#: Itext.xml:1043
#, no-c-format
msgid "extendLastRow"
-msgstr ""
+msgstr "extendLastRow"
#. Tag: literal
#: Itext.xml:1051
#, no-c-format
msgid "headersInEvent"
-msgstr ""
+msgstr "headersInEvent"
#. Tag: literal
#: Itext.xml:1058
#, no-c-format
msgid "splitLate"
-msgstr ""
+msgstr "splitLate"
#. Tag: programlisting
#: Itext.xml:1074
@@ -1130,505 +1088,451 @@
" </ui:repeat>\n"
"</p:table>]]>"
msgstr ""
+"<![CDATA[<p:table columns=\"3\" headerRows=\"1\">\n"
+" <p:cell>name</p:cell>\n"
+" <p:cell>owner</p:cell>\n"
+" <p:cell>size</p:cell>\n"
+" <ui:repeat value=\"#{documents}\" var=\"doc\">\n"
+" <p:cell>#{doc.name}</p:cell>\n"
+" <p:cell>#{doc.user.name}</p:cell>\n"
+" <p:cell>#{doc.size}</p:cell>\n"
+" </ui:repeat>\n"
+"</p:table>]]>"
#. Tag: literal
#: Itext.xml:1082
#, no-c-format
msgid "<p:cell>"
-msgstr ""
+msgstr "<p:cell>"
#. Tag: para
#: Itext.xml:1089
#, no-c-format
msgid "<literal>p:cell</literal> supports the following attributes."
-msgstr ""
+msgstr "<literal>p:cell</literal> dispose des attributs suivants."
#. Tag: para
#: Itext.xml:1099
#, no-c-format
-msgid ""
-"<literal>colspan</literal> — Cells can span more than one column by "
-"declaring a <literal>colspan</literal> greater than 1. Tables do not have "
-"the ability to span across multiple rows."
-msgstr ""
+msgid "<literal>colspan</literal> — Cells can span more than one column by declaring a <literal>colspan</literal> greater than 1. Tables do not have the ability to span across multiple rows."
+msgstr "<literal>colspan</literal> — Les cellules peuvent s'étendre sur plus d'une colonne en déclarant un <literal>colspan</literal> suppérieur à 1. Les tableaux ne n'ont pas la possibilité de s'étendre sur plusieurs lignes."
#. Tag: para
#: Itext.xml:1108
#, no-c-format
-msgid ""
-"<literal>horizontalAlignment</literal> — The horizontal alignment of "
-"the cell. (see <xref linkend=\"itext.alignment\"/> for possible values)"
-msgstr ""
+msgid "<literal>horizontalAlignment</literal> — The horizontal alignment of the cell. (see <xref linkend=\"itext.alignment\"/> for possible values)"
+msgstr "<literal>horizontalAlignment</literal> — L'alignement horizontal de la cellule. (voir <xref linkend=\"itext.alignment\"/> pour les valeurs possibles)"
#. Tag: para
#: Itext.xml:1116
#, no-c-format
-msgid ""
-"<literal>verticalAlignment</literal> — The vertical alignment of the "
-"cell. (see <xref linkend=\"itext.alignment\"/> for possible values)"
-msgstr ""
+msgid "<literal>verticalAlignment</literal> — The vertical alignment of the cell. (see <xref linkend=\"itext.alignment\"/> for possible values)"
+msgstr "<literal>verticalAlignment</literal> — L'alignement vertical de la cellule. (voir <xref linkend=\"itext.alignment\"/> pour les valeurs possibles)"
#. Tag: para
#: Itext.xml:1123
#, no-c-format
-msgid ""
-"<literal>padding</literal> — Padding on a given side can also be "
-"specified using <literal>paddingLeft</literal>, <literal>paddingRight</"
-"literal>, <literal>paddingTop</literal> and <literal>paddingBottom</literal>."
-msgstr ""
+msgid "<literal>padding</literal> — Padding on a given side can also be specified using <literal>paddingLeft</literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and <literal>paddingBottom</literal>."
+msgstr "<literal>padding</literal> — L'encadrement d'un côté donné peut être spécifiés en utilisant <literal>paddingLeft</literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> et <literal>paddingBottom</literal>."
#. Tag: literal
#: Itext.xml:1133
#, no-c-format
msgid "useBorderPadding"
-msgstr ""
+msgstr "useBorderPadding"
#. Tag: literal
#: Itext.xml:1155
#, no-c-format
msgid "indent"
-msgstr ""
+msgstr "indent"
#. Tag: literal
#: Itext.xml:1161
#, no-c-format
msgid "verticalAlignment"
-msgstr ""
+msgstr "verticalAlignment"
#. Tag: literal
#: Itext.xml:1175
#, no-c-format
msgid "fixedHeight"
-msgstr ""
+msgstr "fixedHeight"
#. Tag: literal
#: Itext.xml:1182
#, no-c-format
msgid "noWrap"
-msgstr ""
+msgstr "noWrap"
#. Tag: literal
#: Itext.xml:1188
#, no-c-format
msgid "minimumHeight"
-msgstr ""
+msgstr "minimumHeight"
#. Tag: literal
#: Itext.xml:1195
#, no-c-format
msgid "followingIndent"
-msgstr ""
+msgstr "followingIndent"
#. Tag: literal
#: Itext.xml:1203
#, no-c-format
msgid "rightIndent"
-msgstr ""
+msgstr "rightIndent"
#. Tag: literal
#: Itext.xml:1209
#, no-c-format
msgid "spaceCharRatio"
-msgstr ""
+msgstr "spaceCharRatio"
#. Tag: literal
#: Itext.xml:1221
#, no-c-format
msgid "arabicOptions"
-msgstr ""
+msgstr "arabicOptions"
#. Tag: literal
#: Itext.xml:1228
#, no-c-format
msgid "useAscender"
-msgstr ""
+msgstr "useAscender"
#. Tag: literal
#: Itext.xml:1236
#, no-c-format
msgid "grayFill"
-msgstr ""
+msgstr "grayFill"
#. Tag: literal
#: Itext.xml:1242
#, no-c-format
msgid "rotation"
-msgstr ""
+msgstr "rotation"
#. Tag: programlisting
#: Itext.xml:1250
#, no-c-format
msgid "<![CDATA[<p:cell>...</p:cell>]]>"
-msgstr ""
+msgstr "<![CDATA[<p:cell>...</p:cell>]]>"
#. Tag: title
#: Itext.xml:1262
#, no-c-format
msgid "Document Constants"
-msgstr ""
+msgstr "Les constantes du document "
#. Tag: para
#: Itext.xml:1264
#, no-c-format
-msgid ""
-"This section documents some of the constants shared by attributes on "
-"multiple tags."
-msgstr ""
+msgid "This section documents some of the constants shared by attributes on multiple tags."
+msgstr "Cette section documente quelques unes des constantes partagées par de multiples balises."
#. Tag: title
#: Itext.xml:1267
#, no-c-format
msgid "Color Values"
-msgstr ""
+msgstr "Les valeurs des couleurs"
#. Tag: para
#: Itext.xml:1268
#, no-c-format
-msgid ""
-"Several ways of specifying colors are provided. A limited number of colors "
-"are supported by name. They are: <literal>white</literal>, <literal>gray</"
-"literal>, <literal>lightgray</literal>, <literal>darkgray</literal>, "
-"<literal>black</literal>, <literal>red</literal>, <literal>pink</literal>, "
-"<literal>yellow</literal>, <literal>green</literal>, <literal>magenta</"
-"literal>, <literal>cyan</literal> and <literal>blue</literal>. Colors can be "
-"specified as an integer value, as definied by <literal>java.awt.Color</"
-"literal>. Finally a color value may be specified as <literal>rgb(r,g,b)</"
-"literal> or <literal>rgb(r,g,b,a)</literal> with the red, green, blue alpha "
-"values specified as an integer between 0 and 255 or as a floating point "
-"percentages followed by a '%' sign."
-msgstr ""
+msgid "Several ways of specifying colors are provided. A limited number of colors are supported by name. They are: <literal>white</literal>, <literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</literal>, <literal>yellow</literal>, <literal>green</literal>, <literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</literal>. Colors can be specified as an integer value, as definied by <literal>java.awt.Color</literal>. Finally a color value may be specified as <literal>rgb(r,g,b)</literal> or <literal>rgb(r,g,b,a)</literal> with the red, green, blue alpha values specified as an integer between 0 and 255 or as a floating point percentages followed by a '%' sign."
+msgstr "Plusieurs façons de spécifier les coleurs sont proposées. Un nombre limité de couleurs sont disponibles par leur nom. Il y a : <literal>white</literal>, <literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</literal>, <literal>yellow</literal>, <literal>green</literal>, <literal>magenta</literal>, <literal>cyan</literal> et <literal>blue</literal>. Les couleurs peuvent être\" spécifiées comme une valeur intière, tout comme défini par <literal>java.awt.Color</literal>. Enfin, une valeur de couleur peut être spécifiée par <literal>rgb(r,g,b)</literal> ou <literal>rgb(r,g,b,a)</literal> avec les valeurs de rouge, vert, blue et alpha indiqué par un entier entre 0 et 255 ou comme un pourcentage avec un nombre à virgule suivi du signe '%'."
#. Tag: title
#: Itext.xml:1283
#, no-c-format
msgid "Alignment Values"
-msgstr ""
+msgstr "Les valeurs des aignments"
#. Tag: para
#: Itext.xml:1284
#, no-c-format
-msgid ""
-"Where alignment values are used, the Seam PDF supports the following "
-"horizontal alignment values: <literal>left</literal>, <literal>right</"
-"literal>, <literal>center</literal>, <literal>justify</literal> and "
-"<literal>justifyall</literal>. The vertical alignment values are "
-"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
-"literal>, and <literal>baseline</literal>."
-msgstr ""
+msgid "Where alignment values are used, the Seam PDF supports the following horizontal alignment values: <literal>left</literal>, <literal>right</literal>, <literal>center</literal>, <literal>justify</literal> and <literal>justifyall</literal>. The vertical alignment values are <literal>top</literal>, <literal>middle</literal>, <literal>bottom</literal>, and <literal>baseline</literal>."
+msgstr "Quand les valeurs des alignements sont utilisées, le PDF de Seam permet d'avoir les valeurs d'alignement horizontales suivants: <literal>left</literal>, <literal>right</literal>, <literal>center</literal>, <literal>justify</literal> et <literal>justifyall</literal>. Les valeurs d'alignement verticales sont <literal>top</literal>, <literal>middle</literal>, <literal>bottom</literal>, et <literal>baseline</literal>."
#. Tag: title
#: Itext.xml:1298
#, no-c-format
msgid "Charting"
-msgstr ""
+msgstr "Diagrammes"
#. Tag: para
#: Itext.xml:1300
#, no-c-format
-msgid ""
-"Charting support is also provided with <literal>jboss-seam-pdf.jar</"
-"literal>. Charts can be used in PDF documents or can be used as images in an "
-"HTML page. Charting requires the JFreeChart library (<literal>jfreechart."
-"jar</literal> and <literal>jcommon.jar</literal>) to be added to the "
-"<literal>WEB-INF/lib</literal> directory. Four types of charts are currently "
-"supported: pie charts, bar charts and line charts. Where greater variety or "
-"control is needed, it is possible to construct charts using Java code."
-msgstr ""
+msgid "Charting support is also provided with <literal>jboss-seam-pdf.jar</literal>. Charts can be used in PDF documents or can be used as images in an HTML page. Charting requires the JFreeChart library (<literal>jfreechart.jar</literal> and <literal>jcommon.jar</literal>) to be added to the <literal>WEB-INF/lib</literal> directory. Four types of charts are currently supported: pie charts, bar charts and line charts. Where greater variety or control is needed, it is possible to construct charts using Java code."
+msgstr "Le support des diagrammes est aussi fourni avec <literal>jboss-seam-pdf.jar</literal>. Les diagrammes peuvent être utilisé dans des documents PDF pi peuvent être utilisés comme des images dans une page HTML. Faire des diagrammes nécéssite que la bibliothèque JFreeChart (<literal>jfreechart.jar</literal> et<literal>jcommon.jar</literal>) soit ajouté au dossier <literal>WEB-INF/lib</literal>. Quatres types de diagrammes sont actuellement diponibles: diagramme en camenbert, diagramme en baton et diagramme avec des courbes. Avec beaucoup de variantes ou de controles selon les besoin, il est possible de contruire des diagrammes en utilisant du code Java."
#. Tag: literal
#: Itext.xml:1319
#, no-c-format
msgid "<p:chart>"
-msgstr ""
+msgstr "<p:chart>"
#. Tag: para
#: Itext.xml:1326
#, no-c-format
msgid "Displays a chart created in Java by a Seam component."
-msgstr ""
+msgstr "L'affichage d'une diagramme créé en Java par un composant de Seam."
#. Tag: para
#: Itext.xml:1333
#, no-c-format
msgid "<literal>chart</literal> — The chart object to display."
-msgstr ""
+msgstr "<literal>chart</literal> — L'objet diagramme à afficher."
#. Tag: para
-#: Itext.xml:1338 Itext.xml:1447 Itext.xml:1666
+#: Itext.xml:1338
+#: Itext.xml:1447
+#: Itext.xml:1666
#, no-c-format
msgid "<literal>height</literal> — The height of the chart."
-msgstr ""
+msgstr "<literal>height</literal> — La hauteur du diagramme."
#. Tag: para
-#: Itext.xml:1343 Itext.xml:1452 Itext.xml:1565 Itext.xml:1671 Itext.xml:1784
+#: Itext.xml:1343
+#: Itext.xml:1452
+#: Itext.xml:1565
+#: Itext.xml:1671
+#: Itext.xml:1784
#, no-c-format
msgid "<literal>width</literal> — The width of the chart."
-msgstr ""
+msgstr "<literal>width</literal> — La largeur du diagramme."
#. Tag: programlisting
#: Itext.xml:1351
#, no-c-format
msgid ""
-"<![CDATA[<p:chart chart=\"#{mycomponent.chart}\" width=\"500\" height=\"500"
-"\" />\n"
+"<![CDATA[<p:chart chart=\"#{mycomponent.chart}\" width=\"500\" height=\"500\" />\n"
" ]]>"
msgstr ""
+"<![CDATA[<p:chart chart=\"#{mycomponent.chart}\" width=\"500\" height=\"500\" />\n"
+" ]]>"
#. Tag: literal
#: Itext.xml:1360
#, no-c-format
msgid "<p:barchart>"
-msgstr ""
+msgstr "<p:barchart>"
#. Tag: para
#: Itext.xml:1367
#, no-c-format
msgid "Displays a bar chart."
-msgstr ""
+msgstr "L'affichage d'une diagramme en baton."
#. Tag: para
-#: Itext.xml:1374 Itext.xml:1594 Itext.xml:1818
+#: Itext.xml:1374
+#: Itext.xml:1594
+#: Itext.xml:1818
#, no-c-format
-msgid ""
-"<literal>chart</literal> — The chart object to display, if "
-"programmatic chart creation is being used."
-msgstr ""
+msgid "<literal>chart</literal> — The chart object to display, if programmatic chart creation is being used."
+msgstr "<literal>chart</literal> — L'objet diagramme à afficher, si la création du diagramme via la programmation est utilisée."
#. Tag: para
-#: Itext.xml:1380 Itext.xml:1600 Itext.xml:1824
+#: Itext.xml:1380
+#: Itext.xml:1600
+#: Itext.xml:1824
#, no-c-format
-msgid ""
-"<literal>dataset</literal> — The dataset to be displayed, if "
-"programmatic dataset is being used."
-msgstr ""
+msgid "<literal>dataset</literal> — The dataset to be displayed, if programmatic dataset is being used."
+msgstr "<literal>dataset</literal> — Le groupe de données à afficher, si le groupe de données via la programmation est utilisé."
#. Tag: para
-#: Itext.xml:1387 Itext.xml:1607
+#: Itext.xml:1387
+#: Itext.xml:1607
#, no-c-format
-msgid ""
-"<literal>borderVisible</literal> — Controls whether or not a border is "
-"displayed around the entire chart."
-msgstr ""
+msgid "<literal>borderVisible</literal> — Controls whether or not a border is displayed around the entire chart."
+msgstr "<literal>borderVisible</literal> — Controle si oui ou non la bordure doit être affichée autour de tout le diagramme."
#. Tag: para
-#: Itext.xml:1393 Itext.xml:1613
+#: Itext.xml:1393
+#: Itext.xml:1613
#, no-c-format
-msgid ""
-"<literal>borderPaint</literal> — The color of the border, if visible;"
-msgstr ""
+msgid "<literal>borderPaint</literal> — The color of the border, if visible;"
+msgstr "<literal>borderPaint</literal> — La couleur de la bordure, si elle est visible;"
#. Tag: para
-#: Itext.xml:1398 Itext.xml:1618
+#: Itext.xml:1398
+#: Itext.xml:1618
#, no-c-format
-msgid ""
-"<literal>borderBackgroundPaint</literal> — The default background "
-"color of the chart."
-msgstr ""
+msgid "<literal>borderBackgroundPaint</literal> — The default background color of the chart."
+msgstr "<literal>borderBackgroundPaint</literal> — La couleur d'arrière plan par défaut du diagramme."
#. Tag: para
-#: Itext.xml:1403 Itext.xml:1623
+#: Itext.xml:1403
+#: Itext.xml:1623
#, no-c-format
msgid "<literal>borderStroke</literal> —"
-msgstr ""
+msgstr "<literal>borderStroke</literal> —"
#. Tag: para
-#: Itext.xml:1409 Itext.xml:1629
+#: Itext.xml:1409
+#: Itext.xml:1629
#, no-c-format
-msgid ""
-"<literal>domainAxisLabel</literal> — The text label for the domain "
-"axis."
-msgstr ""
+msgid "<literal>domainAxisLabel</literal> — The text label for the domain axis."
+msgstr "<literal>domainAxisLabel</literal> — Le label du texte pour l'axe du domaine."
#. Tag: para
-#: Itext.xml:1416 Itext.xml:1635
+#: Itext.xml:1416
+#: Itext.xml:1635
#, no-c-format
-msgid ""
-"<literal>domainLabelPosition</literal> — The angle of the domain axis "
-"category labels. Valid values are <literal>STANDARD</literal>, "
-"<literal>UP_45</literal>, <literal>UP_90</literal>, <literal>DOWN_45</"
-"literal> and <literal>DOWN_90</literal>. Alternatively, the value can the "
-"positive or negative angle in radians."
-msgstr ""
+msgid "<literal>domainLabelPosition</literal> — The angle of the domain axis category labels. Valid values are <literal>STANDARD</literal>, <literal>UP_45</literal>, <literal>UP_90</literal>, <literal>DOWN_45</literal> and <literal>DOWN_90</literal>. Alternatively, the value can the positive or negative angle in radians."
+msgstr "<literal>domainLabelPosition</literal> — L'angle pour les labels de categorie de l'axe du domaine. les valeurs valident sont <literal>STANDARD</literal>, <literal>UP_45</literal>, <literal>UP_90</literal>, <literal>DOWN_45</literal> et <literal>DOWN_90</literal>. Autrement, la valeur peut être une valeur dangle postive ou négative en radians."
#. Tag: para
-#: Itext.xml:1425 Itext.xml:1644
+#: Itext.xml:1425
+#: Itext.xml:1644
#, no-c-format
-msgid ""
-"<literal>domainAxisPaint</literal> — The color of the domain axis "
-"label."
-msgstr ""
+msgid "<literal>domainAxisPaint</literal> — The color of the domain axis label."
+msgstr "<literal>domainAxisPaint</literal> — La couleur du label de l'axe du domaine."
#. Tag: para
-#: Itext.xml:1431 Itext.xml:1650
+#: Itext.xml:1431
+#: Itext.xml:1650
#, no-c-format
-msgid ""
-"<literal>domainGridlinesVisible</literal>— Controls whether or not "
-"gridlines for the domain axis are shown on the chart."
-msgstr ""
+msgid "<literal>domainGridlinesVisible</literal>— Controls whether or not gridlines for the domain axis are shown on the chart."
+msgstr "<literal>domainGridlinesVisible</literal>— Les contrôles que les lignes d'arrière plan pour les axes du domaines soient visibles ou non dans le diagramme."
#. Tag: para
-#: Itext.xml:1436 Itext.xml:1655
+#: Itext.xml:1436
+#: Itext.xml:1655
#, no-c-format
-msgid ""
-"<literal>domainGridlinePaint</literal>— The color of the domain "
-"gridlines, if visible."
-msgstr ""
+msgid "<literal>domainGridlinePaint</literal>— The color of the domain gridlines, if visible."
+msgstr "<literal>domainGridlinePaint</literal>— La couleur des lignes d'arrière plan, si visible."
#. Tag: para
-#: Itext.xml:1441 Itext.xml:1660
+#: Itext.xml:1441
+#: Itext.xml:1660
#, no-c-format
-msgid ""
-"<literal>domainGridlineStroke</literal> — The stroke style of the "
-"domain gridlines, if visible."
-msgstr ""
+msgid "<literal>domainGridlineStroke</literal> — The stroke style of the domain gridlines, if visible."
+msgstr "<literal>domainGridlineStroke</literal> — Le style de ligne pour les lignes d'arrière plan du domaine, si visible."
#. Tag: para
-#: Itext.xml:1457 Itext.xml:1676
+#: Itext.xml:1457
+#: Itext.xml:1676
#, no-c-format
-msgid ""
-"<literal>is3D</literal> — A boolean value indicating that the chart "
-"should be rendered in 3D instead of 2D."
-msgstr ""
+msgid "<literal>is3D</literal> — A boolean value indicating that the chart should be rendered in 3D instead of 2D."
+msgstr "<literal>is3D</literal> — Une valeur booléenne indiquant qe le diagramme devrait être rendu en 3D au lieu d'être en 2D."
#. Tag: para
-#: Itext.xml:1463 Itext.xml:1682
+#: Itext.xml:1463
+#: Itext.xml:1682
#, no-c-format
-msgid ""
-"<literal>legend</literal> — A boolean value indicating whether or not "
-"the chart should include a legend."
-msgstr ""
+msgid "<literal>legend</literal> — A boolean value indicating whether or not the chart should include a legend."
+msgstr "<literal>legend</literal> — Une valeur booléenne indiquant s'il faut ou non que le diagramme doit inclure une legende."
#. Tag: para
#: Itext.xml:1469
#, no-c-format
-msgid ""
-"<literal>legendItemPaint</literal>— The default color of the text "
-"labels in the legend."
-msgstr ""
+msgid "<literal>legendItemPaint</literal>— The default color of the text labels in the legend."
+msgstr "<literal>legendItemPaint</literal>— La couleur par défaut pour les labels de texte dans la légende."
#. Tag: para
#: Itext.xml:1475
#, no-c-format
-msgid ""
-"<literal>legendItemBackgoundPaint</literal>— The background color for "
-"the legend, if different from the chart background color."
-msgstr ""
+msgid "<literal>legendItemBackgoundPaint</literal>— The background color for the legend, if different from the chart background color."
+msgstr "<literal>legendItemBackgoundPaint</literal>— La couleur d'arrière plan pour la légende, si différente de la couleur d'arrière plan du diagramme."
#. Tag: para
#: Itext.xml:1481
#, no-c-format
-msgid ""
-"<literal>legendOutlinePaint</literal>— The color of the border around "
-"the legend."
-msgstr ""
+msgid "<literal>legendOutlinePaint</literal>— The color of the border around the legend."
+msgstr "<literal>legendOutlinePaint</literal>— La couleur de la bordure autour de la légende."
#. Tag: para
-#: Itext.xml:1487 Itext.xml:1706
+#: Itext.xml:1487
+#: Itext.xml:1706
#, no-c-format
-msgid ""
-"<literal>orientation</literal> — The orientation of the plot, either "
-"<code>vertical</code> (the default) or <code>horizontal</code>."
-msgstr ""
+msgid "<literal>orientation</literal> — The orientation of the plot, either <code>vertical</code> (the default) or <code>horizontal</code>."
+msgstr "<literal>orientation</literal> — L'orientation du point , soit <code>vertical</code> (par défaut) ou <code>horizontal</code>."
#. Tag: para
#: Itext.xml:1493
#, no-c-format
-msgid ""
-"<literal>plotBackgroundPaint</literal>— The color of the plot "
-"background."
-msgstr ""
+msgid "<literal>plotBackgroundPaint</literal>— The color of the plot background."
+msgstr "<literal>plotBackgroundPaint</literal>— La couleur de l'arrière plan du point."
#. Tag: para
#: Itext.xml:1499
#, no-c-format
-msgid ""
-"<literal>plotBackgroundAlpha</literal>— The alpha (transparency) level "
-"of the plot background. It should be a number between 0 (completely "
-"transparent) and 1 (completely opaque)."
-msgstr ""
+msgid "<literal>plotBackgroundAlpha</literal>— The alpha (transparency) level of the plot background. It should be a number between 0 (completely transparent) and 1 (completely opaque)."
+msgstr "<literal>plotBackgroundAlpha</literal>— Le niveau alpha (transparence) de l'arrière plan du point. Il devrait être entre 0 (complètement transparant) et 1 (complètement opaque)."
#. Tag: para
#: Itext.xml:1506
#, no-c-format
-msgid ""
-"<literal>plotForegroundAlpha</literal>— The alpha (transparency) level "
-"of the plot. It should be a number between 0 (completely transparent) and 1 "
-"(completely opaque)."
-msgstr ""
+msgid "<literal>plotForegroundAlpha</literal>— The alpha (transparency) level of the plot. It should be a number between 0 (completely transparent) and 1 (completely opaque)."
+msgstr "<literal>plotForegroundAlpha</literal>— Le niveau alpha (transparence) du point. Il devrait être entre 0 (complètement transparant) et 1 (complètement opaque)."
#. Tag: para
#: Itext.xml:1513
#, no-c-format
-msgid ""
-"<literal>plotOutlinePaint</literal>— The color of the range gridlines, "
-"if visible."
-msgstr ""
+msgid "<literal>plotOutlinePaint</literal>— The color of the range gridlines, if visible."
+msgstr "<literal>plotOutlinePaint</literal>— La couleur du dégradé des lignes de grilles d'arrière plan, si visible."
#. Tag: para
-#: Itext.xml:1518 Itext.xml:1737
+#: Itext.xml:1518
+#: Itext.xml:1737
#, no-c-format
-msgid ""
-"<literal>plotOutlineStroke</literal> — The stroke style of the range "
-"gridlines, if visible."
-msgstr ""
+msgid "<literal>plotOutlineStroke</literal> — The stroke style of the range gridlines, if visible."
+msgstr "<literal>plotOutlineStroke</literal> — Le style de trait pour le dégradé des lignes de grilles d'arrière plan, si visible."
#. Tag: para
-#: Itext.xml:1524 Itext.xml:1743
+#: Itext.xml:1524
+#: Itext.xml:1743
#, no-c-format
-msgid ""
-"<literal>rangeAxisLabel</literal> — The text label for the range axis."
-msgstr ""
+msgid "<literal>rangeAxisLabel</literal> — The text label for the range axis."
+msgstr "<literal>rangeAxisLabel</literal> — Le label du texte de l'axe vertical ."
#. Tag: para
-#: Itext.xml:1529 Itext.xml:1748
+#: Itext.xml:1529
+#: Itext.xml:1748
#, no-c-format
-msgid ""
-"<literal>rangeAxisPaint</literal> — The color of the range axis label."
-msgstr ""
+msgid "<literal>rangeAxisPaint</literal> — The color of the range axis label."
+msgstr "<literal>rangeAxisPaint</literal> — La couleur du label de l'axe vertical."
#. Tag: para
#: Itext.xml:1535
#, no-c-format
-msgid ""
-"<literal>rangeGridlinesVisible</literal>— Controls whether or not "
-"gridlines for the range axis are shown on the chart."
-msgstr ""
+msgid "<literal>rangeGridlinesVisible</literal>— Controls whether or not gridlines for the range axis are shown on the chart."
+msgstr "<literal>rangeGridlinesVisible</literal>— Controle si les lignes de grilles darrière plan sont visibles ou non dans le diagramme."
#. Tag: para
#: Itext.xml:1540
#, no-c-format
-msgid ""
-"<literal>rangeGridlinePaint</literal>— The color of the range "
-"gridlines, if visible."
-msgstr ""
+msgid "<literal>rangeGridlinePaint</literal>— The color of the range gridlines, if visible."
+msgstr "<literal>rangeGridlinePaint</literal>— La couleur des lignes de grille d'arrière plan verticales, si visibles."
#. Tag: para
-#: Itext.xml:1545 Itext.xml:1764
+#: Itext.xml:1545
+#: Itext.xml:1764
#, no-c-format
-msgid ""
-"<literal>rangeGridlineStroke</literal> — The stroke style of the range "
-"gridlines, if visible."
-msgstr ""
+msgid "<literal>rangeGridlineStroke</literal> — The stroke style of the range gridlines, if visible."
+msgstr "<literal>rangeGridlineStroke</literal> — La style de lignes pour les lignes d'arrières plan verticales, si visible."
#. Tag: para
-#: Itext.xml:1551 Itext.xml:1770 Itext.xml:1814
+#: Itext.xml:1551
+#: Itext.xml:1770
+#: Itext.xml:1814
#, no-c-format
msgid "<literal>title</literal> — The chart title text."
-msgstr ""
+msgstr "<literal>title</literal> — Le texte du titre du diagramme."
#. Tag: para
#: Itext.xml:1555
#, no-c-format
msgid "<literal>titlePaint</literal>— The color of the chart title text."
-msgstr ""
+msgstr "<literal>titlePaint</literal>— La couleur du texte du titre du diagramme."
#. Tag: para
#: Itext.xml:1560
#, no-c-format
-msgid ""
-"<literal>titleBackgroundPaint</literal>— The background color around "
-"the chart title."
-msgstr ""
+msgid "<literal>titleBackgroundPaint</literal>— The background color around the chart title."
+msgstr "<literal>titleBackgroundPaint</literal>— La couleur d'arrière plan autour du titre du diagramme."
#. Tag: programlisting
#: Itext.xml:1573
@@ -1645,107 +1549,94 @@
" </p:series>\n"
"</p:barchart>]]>"
msgstr ""
+"<![CDATA[<p:barchart title=\"Bar Chart\" legend=\"true\"\n"
+" width=\"500\" height=\"500\">\n"
+" <p:series key=\"Last Year\">\n"
+" <p:data columnKey=\"Joe\" value=\"100\" />\n"
+" <p:data columnKey=\"Bob\" value=\"120\" />\n"
+" </p:series> <p:series key=\"This Year\">\n"
+" <p:data columnKey=\"Joe\" value=\"125\" />\n"
+" <p:data columnKey=\"Bob\" value=\"115\" />\n"
+" </p:series>\n"
+"</p:barchart>]]>"
#. Tag: literal
#: Itext.xml:1580
#, no-c-format
msgid "<p:linechart>"
-msgstr ""
+msgstr "<p:linechart>"
#. Tag: para
#: Itext.xml:1587
#, no-c-format
msgid "Displays a line chart."
-msgstr ""
+msgstr "Affichage d'une diagramme avec des courbes."
#. Tag: para
#: Itext.xml:1688
#, no-c-format
-msgid ""
-"<literal>legendItemPaint</literal> — The default color of the text "
-"labels in the legend."
-msgstr ""
+msgid "<literal>legendItemPaint</literal> — The default color of the text labels in the legend."
+msgstr "<literal>legendItemPaint</literal> — La couleur par défaut pour les labels de texte dans la légende."
#. Tag: para
#: Itext.xml:1694
#, no-c-format
-msgid ""
-"<literal>legendItemBackgoundPaint</literal> — The background color for "
-"the legend, if different from the chart background color."
-msgstr ""
+msgid "<literal>legendItemBackgoundPaint</literal> — The background color for the legend, if different from the chart background color."
+msgstr "<literal>legendItemBackgoundPaint</literal> — La couleur d'arrière plan pour la légende, si différent de la couleur d'arrière plan du diagramme."
#. Tag: para
#: Itext.xml:1700
#, no-c-format
-msgid ""
-"<literal>legendOutlinePaint</literal> — The color of the border around "
-"the legend."
-msgstr ""
+msgid "<literal>legendOutlinePaint</literal> — The color of the border around the legend."
+msgstr "<literal>legendOutlinePaint</literal> — La couleur de la bordure autour de la légende."
#. Tag: para
#: Itext.xml:1712
#, no-c-format
-msgid ""
-"<literal>plotBackgroundPaint</literal> — The color of the plot "
-"background."
-msgstr ""
+msgid "<literal>plotBackgroundPaint</literal> — The color of the plot background."
+msgstr "<literal>plotBackgroundPaint</literal> — La couleur de l'arrière plan du point."
#. Tag: para
#: Itext.xml:1718
#, no-c-format
-msgid ""
-"<literal>plotBackgroundAlpha</literal> — The alpha (transparency) "
-"level of the plot background. It should be a number between 0 (completely "
-"transparent) and 1 (completely opaque)."
-msgstr ""
+msgid "<literal>plotBackgroundAlpha</literal> — The alpha (transparency) level of the plot background. It should be a number between 0 (completely transparent) and 1 (completely opaque)."
+msgstr "<literal>plotBackgroundAlpha</literal> — Le niveau alpha (transparence) pour l'arrière plan du point. Il devrait être un nombre entre 0 (complètement transparant) et 1 (complètement opaque)."
#. Tag: para
#: Itext.xml:1725
#, no-c-format
-msgid ""
-"<literal>plotForegroundAlpha</literal> — The alpha (transparency) "
-"level of the plot. It should be a number between 0 (completely transparent) "
-"and 1 (completely opaque)."
-msgstr ""
+msgid "<literal>plotForegroundAlpha</literal> — The alpha (transparency) level of the plot. It should be a number between 0 (completely transparent) and 1 (completely opaque)."
+msgstr "<literal>plotForegroundAlpha</literal> — Le niveau alpha (transparent) du point. Il devrait être un nombre entre 0 (complètement transparant) et 1 (complètement opaque)."
#. Tag: para
#: Itext.xml:1732
#, no-c-format
-msgid ""
-"<literal>plotOutlinePaint</literal> — The color of the range "
-"gridlines, if visible."
-msgstr ""
+msgid "<literal>plotOutlinePaint</literal> — The color of the range gridlines, if visible."
+msgstr "<literal>plotOutlinePaint</literal> — La couleur des lignes de grilles d'arrièreplans verticales, si visible."
#. Tag: para
#: Itext.xml:1754
#, no-c-format
-msgid ""
-"<literal>rangeGridlinesVisible</literal> — Controls whether or not "
-"gridlines for the range axis are shown on the chart."
-msgstr ""
+msgid "<literal>rangeGridlinesVisible</literal> — Controls whether or not gridlines for the range axis are shown on the chart."
+msgstr "<literal>rangeGridlinesVisible</literal> — Controle si les lignes d'arrière plans pour l'axe vertical doivent être visibles sur le diagramme."
#. Tag: para
#: Itext.xml:1759
#, no-c-format
-msgid ""
-"<literal>rangeGridlinePaint</literal> — The color of the range "
-"gridlines, if visible."
-msgstr ""
+msgid "<literal>rangeGridlinePaint</literal> — The color of the range gridlines, if visible."
+msgstr "<literal>rangeGridlinePaint</literal> — La couleur des lignes d'arrière plan, si visible."
#. Tag: para
#: Itext.xml:1774
#, no-c-format
-msgid ""
-"<literal>titlePaint</literal> — The color of the chart title text."
-msgstr ""
+msgid "<literal>titlePaint</literal> — The color of the chart title text."
+msgstr "<literal>titlePaint</literal> — La couleur du texte du titre du diagramme."
#. Tag: para
#: Itext.xml:1779
#, no-c-format
-msgid ""
-"<literal>titleBackgroundPaint</literal> — The background color around "
-"the chart title."
-msgstr ""
+msgid "<literal>titleBackgroundPaint</literal> — The background color around the chart title."
+msgstr "<literal>titleBackgroundPaint</literal> — La couleur d'arrière plan aaout du titre du diagramme."
#. Tag: programlisting
#: Itext.xml:1792
@@ -1762,199 +1653,166 @@
" </p:series>\n"
"</p:linechart>]]>"
msgstr ""
+"<![CDATA[<p:linechart title=\"Line Chart\"\n"
+" width=\"500\" height=\"500\">\n"
+" <p:series key=\"Prices\">\n"
+" <p:data columnKey=\"2003\" value=\"7.36\" />\n"
+" <p:data columnKey=\"2004\" value=\"11.50\" />\n"
+" <p:data columnKey=\"2005\" value=\"34.625\" />\n"
+" <p:data columnKey=\"2006\" value=\"76.30\" />\n"
+" <p:data columnKey=\"2007\" value=\"85.05\" />\n"
+" </p:series>\n"
+"</p:linechart>]]>"
#. Tag: literal
#: Itext.xml:1799
#, no-c-format
msgid "<p:piechart>"
-msgstr ""
+msgstr "<p:piechart>"
#. Tag: para
#: Itext.xml:1806
#, no-c-format
msgid "Displays a pie chart."
-msgstr ""
+msgstr "Affichage d'un diagramme en cammenbert."
#. Tag: para
#: Itext.xml:1830
#, no-c-format
-msgid ""
-"<literal>label</literal> — The default label text for pie sections."
-msgstr ""
+msgid "<literal>label</literal> — The default label text for pie sections."
+msgstr "<literal>label</literal> — Le texte du label par défaut pour les sections de camembert."
#. Tag: para
#: Itext.xml:1835
#, no-c-format
-msgid ""
-"<literal>legend</literal> — A boolean value indicating whether or not "
-"the chart should include a legend. Default value is true"
-msgstr ""
+msgid "<literal>legend</literal> — A boolean value indicating whether or not the chart should include a legend. Default value is true"
+msgstr "<literal>legend</literal> — Une valeur booléenne indiquant si le diagramme devrait inclure une legende ou pas. Par défaut la valeur est à vrai."
#. Tag: para
#: Itext.xml:1840
#, no-c-format
-msgid ""
-"<literal>is3D</literal> —A boolean value indicating that the chart "
-"should be rendered in 3D instead of 2D."
-msgstr ""
+msgid "<literal>is3D</literal> —A boolean value indicating that the chart should be rendered in 3D instead of 2D."
+msgstr "<literal>is3D</literal> —Une valeur booléenne indiquant que le diagramme devrait êtrere rendue en 3D au lieu d'en 2D."
#. Tag: para
#: Itext.xml:1845
#, no-c-format
msgid "<literal>labelLinkMargin</literal> — The link margin for labels."
-msgstr ""
+msgstr "<literal>labelLinkMargin</literal> — La marge de lien pour les labels."
#. Tag: para
#: Itext.xml:1850
#, no-c-format
-msgid ""
-"<literal>labelLinkPaint</literal> — The paint used for the label "
-"linking lines."
-msgstr ""
+msgid "<literal>labelLinkPaint</literal> — The paint used for the label linking lines."
+msgstr "<literal>labelLinkPaint</literal> — La couleur utilisé pour les lignes de liens des labels."
#. Tag: para
#: Itext.xml:1855
#, no-c-format
-msgid ""
-"<literal>labelLinkStroke</literal> — he stroke used for the label "
-"linking lines."
-msgstr ""
+msgid "<literal>labelLinkStroke</literal> — he stroke used for the label linking lines."
+msgstr "<literal>labelLinkStroke</literal> — le type de bordure utilisé pour les lignes liant les labels."
#. Tag: para
#: Itext.xml:1861
#, no-c-format
-msgid ""
-"<literal>labelLinksVisible</literal> — A flag that controls whether or "
-"not the label links are drawn."
-msgstr ""
+msgid "<literal>labelLinksVisible</literal> — A flag that controls whether or not the label links are drawn."
+msgstr "<literal>labelLinksVisible</literal> — Un drapeau qui controle si les liens vers les labels sont déssinés."
#. Tag: para
#: Itext.xml:1866
#, no-c-format
-msgid ""
-"<literal>labelOutlinePaint</literal> — The paint used to draw the "
-"outline of the section labels."
-msgstr ""
+msgid "<literal>labelOutlinePaint</literal> — The paint used to draw the outline of the section labels."
+msgstr "<literal>labelOutlinePaint</literal> — La couleur utilisé pour déssiner les bordure des labels de sections."
#. Tag: para
#: Itext.xml:1871
#, no-c-format
-msgid ""
-"<literal>labelOutlineStroke</literal> — The stroke used to draw the "
-"outline of the section labels."
-msgstr ""
+msgid "<literal>labelOutlineStroke</literal> — The stroke used to draw the outline of the section labels."
+msgstr "<literal>labelOutlineStroke</literal> — Le type de bordure utilisé pour dessiner les bordures des labels des sections."
#. Tag: para
#: Itext.xml:1876
#, no-c-format
-msgid ""
-"<literal>labelShadowPaint</literal> — The paint used to draw the "
-"shadow for the section labels."
-msgstr ""
+msgid "<literal>labelShadowPaint</literal> — The paint used to draw the shadow for the section labels."
+msgstr "<literal>labelShadowPaint</literal> — La couleur utilisée pour dessiner l'ombrée sur les labels des sections."
#. Tag: para
#: Itext.xml:1881
#, no-c-format
-msgid ""
-"<literal>labelPaint</literal> — The color used to draw the section "
-"labels"
-msgstr ""
+msgid "<literal>labelPaint</literal> — The color used to draw the section labels"
+msgstr "<literal>labelPaint</literal> — La couleur utilisé pour dessiner les labels des sections."
#. Tag: para
#: Itext.xml:1886
#, no-c-format
-msgid ""
-"<literal>labelGap</literal> — The gap between the labels and the plot "
-"as a percentage of the plot width."
-msgstr ""
+msgid "<literal>labelGap</literal> — The gap between the labels and the plot as a percentage of the plot width."
+msgstr "<literal>labelGap</literal> — La distance entre les labels et les points comme un pourcentage de la largeur du point."
#. Tag: para
#: Itext.xml:1891
#, no-c-format
-msgid ""
-"<literal>labelBackgroundPaint</literal> — The color used to draw the "
-"background of the section labels. If this is null, the background is not "
-"filled."
-msgstr ""
+msgid "<literal>labelBackgroundPaint</literal> — The color used to draw the background of the section labels. If this is null, the background is not filled."
+msgstr "<literal>labelBackgroundPaint</literal> — La couleur utilisée pour dessiner l'arrière plan des labels de sections. Si null, l'arrière plan n'est pas rempli."
#. Tag: para
#: Itext.xml:1898
#, no-c-format
-msgid ""
-"<literal>startAngle</literal> — The starting angle of the first "
-"section."
-msgstr ""
+msgid "<literal>startAngle</literal> — The starting angle of the first section."
+msgstr "<literal>startAngle</literal> — L'angle de départ de la première section."
#. Tag: para
#: Itext.xml:1903
#, no-c-format
-msgid ""
-"<literal>circular</literal> — A boolean value indicating that the "
-"chart should be drawn as a circle. If false, the chart is drawn as an "
-"ellipse. The default is true."
-msgstr ""
+msgid "<literal>circular</literal> — A boolean value indicating that the chart should be drawn as a circle. If false, the chart is drawn as an ellipse. The default is true."
+msgstr "<literal>circular</literal> — Une valeur boolléenne indicant que le diagramme devrait être dessiné comme un cercle. Si faux, le driagramme est déssiné comme une elipse. Par défaut à vrai."
#. Tag: para
#: Itext.xml:1909
#, no-c-format
-msgid ""
-"<literal>direction</literal> — The direction the pie section are "
-"drawn. One of: <literal>clockwise</literal> or <literal>anticlockwise</"
-"literal>. The default is <literal>clockwise</literal>."
-msgstr ""
+msgid "<literal>direction</literal> — The direction the pie section are drawn. One of: <literal>clockwise</literal> or <literal>anticlockwise</literal>. The default is <literal>clockwise</literal>."
+msgstr "<literal>direction</literal> — La direction dont la section du camembert est dessinée. Soit: <literal>clockwise</literal> ou <literal>anticlockwise</literal>. Par défaut a <literal>clockwise</literal>."
#. Tag: para
#: Itext.xml:1915
#, no-c-format
-msgid ""
-"<literal>sectionOutlinePaint</literal> — The outline paint for all "
-"sections."
-msgstr ""
+msgid "<literal>sectionOutlinePaint</literal> — The outline paint for all sections."
+msgstr "<literal>sectionOutlinePaint</literal> — La couleur de bordure pour toutes les sections."
#. Tag: para
#: Itext.xml:1920
#, no-c-format
-msgid ""
-"<literal>sectionOutlineStroke</literal> — The outline stroke for all "
-"sections"
-msgstr ""
+msgid "<literal>sectionOutlineStroke</literal> — The outline stroke for all sections"
+msgstr "<literal>sectionOutlineStroke</literal> — Le type de bordure pour toutes les sections"
#. Tag: para
#: Itext.xml:1925
#, no-c-format
-msgid ""
-"<literal>sectionOutlinesVisible</literal> — Indicates whether an "
-"outline is drawn for each section in the plot."
-msgstr ""
+msgid "<literal>sectionOutlinesVisible</literal> — Indicates whether an outline is drawn for each section in the plot."
+msgstr "<literal>sectionOutlinesVisible</literal> — Indique si une bordure est dessinée pour chaque section du point."
#. Tag: para
#: Itext.xml:1930
#, no-c-format
-msgid ""
-"<literal>baseSectionOutlinePaint</literal> — The base section outline "
-"paint."
-msgstr ""
+msgid "<literal>baseSectionOutlinePaint</literal> — The base section outline paint."
+msgstr "<literal>baseSectionOutlinePaint</literal> — La bordure de la section de base à dessiner."
#. Tag: para
#: Itext.xml:1935
#, no-c-format
msgid "<literal>baseSectionPaint</literal> — The base section paint."
-msgstr ""
+msgstr "<literal>baseSectionPaint</literal> — Le dessin de la section de base."
#. Tag: para
#: Itext.xml:1939
#, no-c-format
-msgid ""
-"<literal>baseSectionOutlineStroke</literal> — The base section outline "
-"stroke."
-msgstr ""
+msgid "<literal>baseSectionOutlineStroke</literal> — The base section outline stroke."
+msgstr "<literal>baseSectionOutlineStroke</literal> — Le style de trait pour la bordure extérieure ."
#. Tag: programlisting
#: Itext.xml:1947
#, no-c-format
msgid ""
-"<![CDATA[<p:piechart title=\"Pie Chart\" circular=\"false\" direction="
-"\"anticlockwise\" \n"
+"<![CDATA[<p:piechart title=\"Pie Chart\" circular=\"false\" direction=\"anticlockwise\" \n"
" startAngle=\"30\" labelGap=\"0.1\" labelLinkPaint=\"red\"> \n"
" <p:series key=\"Prices\"> \n"
" <p:data key=\"2003\" columnKey=\"2003\" value=\"7.36\" /> \n"
@@ -1965,66 +1823,64 @@
" </p:series> \n"
"</p:piechart>]]>"
msgstr ""
+"<![CDATA[<p:piechart title=\"Pie Chart\" circular=\"false\" direction=\"anticlockwise\" \n"
+" startAngle=\"30\" labelGap=\"0.1\" labelLinkPaint=\"red\"> \n"
+" <p:series key=\"Prices\"> \n"
+" <p:data key=\"2003\" columnKey=\"2003\" value=\"7.36\" /> \n"
+" <p:data key=\"2004\" columnKey=\"2004\" value=\"11.50\" /> \n"
+" <p:data key=\"2005\" columnKey=\"2005\" value=\"34.625\" /> \n"
+" <p:data key=\"2006\" columnKey=\"2006\" value=\"76.30\" /> \n"
+" <p:data key=\"2007\" columnKey=\"2007\" value=\"85.05\" /> \n"
+" </p:series> \n"
+"</p:piechart>]]>"
#. Tag: literal
#: Itext.xml:1957
#, no-c-format
msgid "<p:series>"
-msgstr ""
+msgstr "<p:series>"
#. Tag: para
#: Itext.xml:1964
#, no-c-format
-msgid ""
-"Category data can be broken down into series. The series tag is used to "
-"categorize a set of data with a series and apply styling to the entire "
-"series."
-msgstr ""
+msgid "Category data can be broken down into series. The series tag is used to categorize a set of data with a series and apply styling to the entire series."
+msgstr "Les données de catégories peuvent être divisées en séries. La balise de la série est utilisée pour catégoriser un groupe de données et lui appliquer un style sur toute la série."
#. Tag: para
#: Itext.xml:1973
#, no-c-format
msgid "<literal>key</literal> — The series name."
-msgstr ""
+msgstr "<literal>key</literal> — Le nom de la série."
#. Tag: para
#: Itext.xml:1984
#, no-c-format
-msgid ""
-"<literal>seriesPaint</literal> — The color of each item in the series"
-msgstr ""
+msgid "<literal>seriesPaint</literal> — The color of each item in the series"
+msgstr "<literal>seriesPaint</literal> — La couleur de chaque élément de la série"
#. Tag: para
#: Itext.xml:1990
#, no-c-format
-msgid ""
-"<literal>seriesOutlinePaint</literal> — The outline color for each "
-"item in the series."
-msgstr ""
+msgid "<literal>seriesOutlinePaint</literal> — The outline color for each item in the series."
+msgstr "<literal>seriesOutlinePaint</literal> — La couleur pour chaque élément de la série."
#. Tag: para
#: Itext.xml:1995
#, no-c-format
-msgid ""
-"<literal>seriesOutlineStroke</literal> — The stroke used to draw each "
-"item in the series."
-msgstr ""
+msgid "<literal>seriesOutlineStroke</literal> — The stroke used to draw each item in the series."
+msgstr "<literal>seriesOutlineStroke</literal> — Le style de bordure à utiliser pour chaque élément de la série."
#. Tag: para
#: Itext.xml:2007
#, no-c-format
-msgid ""
-"<literal>seriesVisible</literal> — A boolean indicating if the series "
-"should be displayed."
-msgstr ""
+msgid "<literal>seriesVisible</literal> — A boolean indicating if the series should be displayed."
+msgstr "<literal>seriesVisible</literal> — Un booléen indiquant si la série doit ête affichée."
#. Tag: para
#: Itext.xml:2012
#, no-c-format
-msgid ""
-"<literal>seriesVisibleInLegend</literal> — A boolean indicating if the "
-"series should be listed in the legend."
-msgstr ""
+msgid "<literal>seriesVisibleInLegend</literal> — A boolean indicating if the series should be listed in the legend."
+msgstr "<literal>seriesVisibleInLegend</literal> — Un booléen indiquant si la serie doit être listé dans la légende."
#. Tag: programlisting
#: Itext.xml:2021
@@ -2036,70 +1892,65 @@
" </ui:repeat>\n"
"</p:series>]]>"
msgstr ""
+"<![CDATA[<p:series key=\"data1\">\n"
+" <ui:repeat value=\"#{data.pieData1}\" var=\"item\">\n"
+" <p:data columnKey=\"#{item.name}\" value=\"#{item.value}\" />\n"
+" </ui:repeat>\n"
+"</p:series>]]>"
#. Tag: literal
#: Itext.xml:2028
#, no-c-format
msgid "<p:data>"
-msgstr ""
+msgstr "<p:data>"
#. Tag: para
#: Itext.xml:2035
#, no-c-format
msgid "The data tag describes each data point to be displayed in the graph."
-msgstr ""
+msgstr "La balise data décrit chaque point à afficher pour le graphe."
#. Tag: para
#: Itext.xml:2042
#, no-c-format
msgid "<literal>key</literal> — The name of the data item."
-msgstr ""
+msgstr "<literal>key</literal> — Le nom d'élément donnée."
#. Tag: para
#: Itext.xml:2046
#, no-c-format
-msgid ""
-"<literal>series</literal> — The series name, when not embedded inside "
-"a <code><p:series></code>."
-msgstr ""
+msgid "<literal>series</literal> — The series name, when not embedded inside a <code><p:series></code>."
+msgstr "<literal>series</literal> — Le nom de la série, quand elle n'est pas embarquée dans un <code><p:series></code>."
#. Tag: para
#: Itext.xml:2051
#, no-c-format
msgid "<literal>value</literal> — The numeric data value."
-msgstr ""
+msgstr "<literal>value</literal> — La donnée en valeur numéique."
#. Tag: para
#: Itext.xml:2055
#, no-c-format
-msgid ""
-"<literal>explodedPercent</literal> — For pie charts, indicates how "
-"exploded a from the pie a piece is."
-msgstr ""
+msgid "<literal>explodedPercent</literal> — For pie charts, indicates how exploded a from the pie a piece is."
+msgstr "<literal>explodedPercent</literal> — Pour les diagramme en camembert, indique comme éclater les parts du camembert."
#. Tag: para
#: Itext.xml:2061
#, no-c-format
-msgid ""
-"<literal>sectionOutlinePaint</literal> — For bar charts, the color of "
-"the section outline."
-msgstr ""
+msgid "<literal>sectionOutlinePaint</literal> — For bar charts, the color of the section outline."
+msgstr "<literal>sectionOutlinePaint</literal> — Pour les diagrammes en baton, la couleur de la bordure de la section."
#. Tag: para
#: Itext.xml:2066
#, no-c-format
-msgid ""
-"<literal>sectionOutlineStroke</literal> — For bar charts, the stroke "
-"type for the section outline."
-msgstr ""
+msgid "<literal>sectionOutlineStroke</literal> — For bar charts, the stroke type for the section outline."
+msgstr "<literal>sectionOutlineStroke</literal> — Pour les diagrammes en baton, le type de bordure pour la section."
#. Tag: para
#: Itext.xml:2071
#, no-c-format
-msgid ""
-"<literal>sectionPaint</literal> — For bar charts, the color of the "
-"section."
-msgstr ""
+msgid "<literal>sectionPaint</literal> — For bar charts, the color of the section."
+msgstr "<literal>sectionPaint</literal> — Pour les diagramme en baton, la couleur de la section."
#. Tag: programlisting
#: Itext.xml:2082
@@ -2111,52 +1962,47 @@
"<p:data key=\"baz\" value=\"40\" sectionPaint=\"#555555\" \n"
" sectionOutlineStroke=\"my-dot-style\" />]]>"
msgstr ""
+"<![CDATA[<p:data key=\"foo\" value=\"20\" sectionPaint=\"#111111\" \n"
+" explodedPercent=\".2\" />\n"
+"<p:data key=\"bar\" value=\"30\" sectionPaint=\"#333333\" />\n"
+"<p:data key=\"baz\" value=\"40\" sectionPaint=\"#555555\" \n"
+" sectionOutlineStroke=\"my-dot-style\" />]]>"
#. Tag: literal
#: Itext.xml:2089
#, no-c-format
msgid "<p:color>"
-msgstr ""
+msgstr "<p:color>"
#. Tag: para
#: Itext.xml:2096
#, no-c-format
-msgid ""
-"The color component declares a color or gradient than can be referenced when "
-"drawing filled shapes."
-msgstr ""
+msgid "The color component declares a color or gradient than can be referenced when drawing filled shapes."
+msgstr "Le composant couleur déclare une couleur ou un dégradé qui peut être utilisé quand on dessine des formes géométriques pleines."
#. Tag: para
#: Itext.xml:2105
#, no-c-format
-msgid ""
-"<literal>color</literal> — The color value. For gradient colors, this "
-"the starting color."
-msgstr ""
+msgid "<literal>color</literal> — The color value. For gradient colors, this the starting color."
+msgstr "<literal>color</literal> — La valeur de la couleur. Pour un dégradé, ceci ets la couleur de départ."
#. Tag: para
#: Itext.xml:2111
#, no-c-format
-msgid ""
-"<literal>color2</literal> — For gradient colors, this is the color "
-"that ends the gradient."
-msgstr ""
+msgid "<literal>color2</literal> — For gradient colors, this is the color that ends the gradient."
+msgstr "<literal>color2</literal> — Pour le dégradé, ceci ets la couleur de fin."
#. Tag: para
#: Itext.xml:2116
#, no-c-format
-msgid ""
-"<literal>point</literal> — The co-ordinates where the gradient color "
-"begins."
-msgstr ""
+msgid "<literal>point</literal> — The co-ordinates where the gradient color begins."
+msgstr "<literal>point</literal> — La coordonnée où le dégrradé de couleur commence."
#. Tag: para
#: Itext.xml:2121
#, no-c-format
-msgid ""
-"<literal>point2</literal> — The co-ordinates where the gradient color "
-"ends."
-msgstr ""
+msgid "<literal>point2</literal> — The co-ordinates where the gradient color ends."
+msgstr "<literal>point2</literal> — La coordonnées où le dégradé de couleur fini."
#. Tag: programlisting
#: Itext.xml:2129
@@ -2166,195 +2012,159 @@
"<p:color id=\"bar\" color=\"#ff00ff\" color2=\"#00ff00\" \n"
" point=\"50 50\" point2=\"300 300\"/>]]>"
msgstr ""
+"<![CDATA[<p:color id=\"foo\" color=\"#0ff00f\"/>\n"
+"<p:color id=\"bar\" color=\"#ff00ff\" color2=\"#00ff00\" \n"
+" point=\"50 50\" point2=\"300 300\"/>]]>"
#. Tag: literal
#: Itext.xml:2136
#, no-c-format
msgid "<p:stroke>"
-msgstr ""
+msgstr "<p:stroke>"
#. Tag: para
#: Itext.xml:2143
#, no-c-format
msgid "Describes a stroke used to draw lines in a chart."
-msgstr ""
+msgstr "Description d'un trait pour dessiner des lignes dans un diagramme."
#. Tag: para
#: Itext.xml:2151
#, no-c-format
msgid "<literal>width</literal> — The width of the stroke."
-msgstr ""
+msgstr "<literal>width</literal> — La largeur du trait."
#. Tag: para
#: Itext.xml:2156
#, no-c-format
-msgid ""
-"<literal>cap</literal> — The line cap type. Valid values are "
-"<literal>butt</literal>, <literal>round</literal> and <literal>square</"
-"literal>"
-msgstr ""
+msgid "<literal>cap</literal> — The line cap type. Valid values are <literal>butt</literal>, <literal>round</literal> and <literal>square</literal>"
+msgstr "<literal>cap</literal> — Le type de ligne. Les valeurs valident sont <literal>butt</literal>, <literal>round</literal> et <literal>square</literal>"
#. Tag: para
#: Itext.xml:2162
#, no-c-format
-msgid ""
-"<literal>join</literal> — The line join type. Valid values are "
-"<literal>miter</literal>, <literal>round</literal> and <literal>bevel</"
-"literal>"
-msgstr ""
+msgid "<literal>join</literal> — The line join type. Valid values are <literal>miter</literal>, <literal>round</literal> and <literal>bevel</literal>"
+msgstr "<literal>join</literal> — Le type de ligne de liaison. Les valeurs valident sont <literal>miter</literal>, <literal>round</literal> et <literal>bevel</literal>"
#. Tag: para
#: Itext.xml:2168
#, no-c-format
-msgid ""
-"<literal>miterLimit</literal> — For miter joins, this value is the "
-"limit of the size of the join."
-msgstr ""
+msgid "<literal>miterLimit</literal> — For miter joins, this value is the limit of the size of the join."
+msgstr "<literal>miterLimit</literal> — Pour une liaison en angle, cette valeur est la taille limite de la liaison."
#. Tag: para
#: Itext.xml:2174
#, no-c-format
-msgid ""
-"<literal>dash</literal> — The dash value sets the dash pattern to be "
-"used to draw the line. The space separated integers indicate the length of "
-"each alternating drawn and undrawn segments."
-msgstr ""
+msgid "<literal>dash</literal> — The dash value sets the dash pattern to be used to draw the line. The space separated integers indicate the length of each alternating drawn and undrawn segments."
+msgstr "<literal>dash</literal> — La valeur des tirets défini pour le patron de tirets à utiliser pour dessiner la ligne. Des entiers séparés par des espaces indique la longeur de chaque segments d'espacement, puis de tiret."
#. Tag: para
#: Itext.xml:2181
#, no-c-format
-msgid ""
-"<literal>dashPhase</literal> — The dash phase indicates the offset "
-"into the dash pattern that the line should be drawn with."
-msgstr ""
+msgid "<literal>dashPhase</literal> — The dash phase indicates the offset into the dash pattern that the line should be drawn with."
+msgstr "<literal>dashPhase</literal> — The dash phase indicates the offset into the dash pattern that the line should be drawn with."
#. Tag: programlisting
#: Itext.xml:2189
#, no-c-format
-msgid ""
-"<![CDATA[<p:stroke id=\"dot2\" width=\"2\" cap=\"round\" join=\"bevel\" dash="
-"\"2 3\" />]]>"
-msgstr ""
+msgid "<![CDATA[<p:stroke id=\"dot2\" width=\"2\" cap=\"round\" join=\"bevel\" dash=\"2 3\" />]]>"
+msgstr "<![CDATA[<p:stroke id=\"dot2\" width=\"2\" cap=\"round\" join=\"bevel\" dash=\"2 3\" />]]>"
#. Tag: title
#: Itext.xml:2203
#, no-c-format
msgid "Bar codes"
-msgstr ""
+msgstr "Les codes Bar."
#. Tag: para
#: Itext.xml:2204
#, no-c-format
-msgid ""
-"Seam can use iText to generate barcodes in a wide variety of formats. These "
-"barcodes can be embedded in a PDF document or displayed as an image on a web "
-"page. Note that when used with HTML images, barcodes can not currently "
-"display barcode text in the barcode."
-msgstr ""
+msgid "Seam can use iText to generate barcodes in a wide variety of formats. These barcodes can be embedded in a PDF document or displayed as an image on a web page. Note that when used with HTML images, barcodes can not currently display barcode text in the barcode."
+msgstr "Seam peut utiliser iText pour générer des codes barres dans une grande variété de formats. Ces codes barres peuvent être embarqués dans un document PDF ou affichés comme une image sur une page Web. Notez que quand on utilise comme une image en HTML, les codes barres ne peuvent pas afficher de texte dans le code barre."
#. Tag: literal
#: Itext.xml:2218
#, no-c-format
msgid "<p:barCode>"
-msgstr ""
+msgstr "<p:barCode>"
#. Tag: para
#: Itext.xml:2225
#, no-c-format
msgid "Displays a barcode image."
-msgstr ""
+msgstr "Affichage d'une image barcode."
#. Tag: para
#: Itext.xml:2234
#, no-c-format
-msgid ""
-"<literal>type</literal> — A barcode type supported by iText. Valid "
-"values include: <literal>EAN13</literal>, <literal>EAN8</literal>, "
-"<literal>UPCA</literal>, <literal>UPCE</literal>, <literal>SUPP2</literal>, "
-"<literal>SUPP5</literal>, <literal>POSTNET</literal>, <literal>PLANET</"
-"literal>, <literal>CODE128</literal>, <literal>CODE128_UCC</literal>, "
-"<literal>CODE128_RAW</literal> and <literal>CODABAR</literal>."
-msgstr ""
+msgid "<literal>type</literal> — A barcode type supported by iText. Valid values include: <literal>EAN13</literal>, <literal>EAN8</literal>, <literal>UPCA</literal>, <literal>UPCE</literal>, <literal>SUPP2</literal>, <literal>SUPP5</literal>, <literal>POSTNET</literal>, <literal>PLANET</literal>, <literal>CODE128</literal>, <literal>CODE128_UCC</literal>, <literal>CODE128_RAW</literal> and <literal>CODABAR</literal>."
+msgstr "<literal>type</literal> — Un type de code barre supporté par iText. Les valeurs valident sont : <literal>EAN13</literal>, <literal>EAN8</literal>, <literal>UPCA</literal>, <literal>UPCE</literal>, <literal>SUPP2</literal>, <literal>SUPP5</literal>, <literal>POSTNET</literal>, <literal>PLANET</literal>, <literal>CODE128</literal>, <literal>CODE128_UCC</literal>, <literal>CODE128_RAW</literal> et <literal>CODABAR</literal>."
#. Tag: para
#: Itext.xml:2244
#, no-c-format
msgid "<literal>code</literal> — The value to be encoded by the barcode."
-msgstr ""
+msgstr "<literal>code</literal> — La valeur a encodé comme un code barres."
#. Tag: para
#: Itext.xml:2249
#, no-c-format
-msgid ""
-"<literal>xpos</literal> — For PDFs, the absolute y position of the "
-"barcode on the page."
-msgstr ""
+msgid "<literal>xpos</literal> — For PDFs, the absolute y position of the barcode on the page."
+msgstr "<literal>xpos</literal> — Pour les PDFs, la position absolue en y du barre code dans la page ."
#. Tag: para
#: Itext.xml:2254
#, no-c-format
-msgid ""
-"<literal>ypos</literal> — For PDFs, the absolute y position of the "
-"barcode on the page."
-msgstr ""
+msgid "<literal>ypos</literal> — For PDFs, the absolute y position of the barcode on the page."
+msgstr "<literal>ypos</literal> — Pour les PDFs, la position absolue en y du code barre dans la page."
#. Tag: para
#: Itext.xml:2259
#, no-c-format
-msgid ""
-"<literal>rotDegrees</literal> — For PDFs, the rotation factor of the "
-"barcode in degrees."
-msgstr ""
+msgid "<literal>rotDegrees</literal> — For PDFs, the rotation factor of the barcode in degrees."
+msgstr "<literal>rotDegrees</literal> — Pour les PDFs, le facteur de rotation du code barre en degrée."
#. Tag: para
#: Itext.xml:2264
#, no-c-format
-msgid ""
-"<literal>barHeight</literal> — The height of the bars in the barCode"
-msgstr ""
+msgid "<literal>barHeight</literal> — The height of the bars in the barCode"
+msgstr "<literal>barHeight</literal> — La hauteur du code barre dans le barCode"
#. Tag: para
#: Itext.xml:2270
#, no-c-format
msgid "<literal>minBarWidth</literal> — The minimum bar width."
-msgstr ""
+msgstr "<literal>minBarWidth</literal> — La largeur minimale de la barre."
#. Tag: para
#: Itext.xml:2274
#, no-c-format
-msgid ""
-"<literal>barMultiplier</literal> — The bar multiplier for wide bars or "
-"the distance between bars for <literal>POSTNET</literal> and "
-"<literal>PLANET</literal> code."
-msgstr ""
+msgid "<literal>barMultiplier</literal> — The bar multiplier for wide bars or the distance between bars for <literal>POSTNET</literal> and <literal>PLANET</literal> code."
+msgstr "<literal>barMultiplier</literal> — Le facteur multiplicateur de la barre pour les barres larges ou la ditance entre les barres pour les codes <literal>POSTNET</literal> et<literal>PLANET</literal>."
#. Tag: para
#: Itext.xml:2280
#, no-c-format
msgid "<literal>barColor</literal> — The color to draw the bars."
-msgstr ""
+msgstr "<literal>barColor</literal> — La couleur pour déssiner les barres."
#. Tag: para
#: Itext.xml:2285
#, no-c-format
-msgid ""
-"<literal>textColor</literal> — The color of any text on the barcode."
-msgstr ""
+msgid "<literal>textColor</literal> — The color of any text on the barcode."
+msgstr "<literal>textColor</literal> — La couleur pour tout texte sur le code barres."
#. Tag: para
#: Itext.xml:2290
#, no-c-format
-msgid ""
-"<literal>textSize</literal> — The size of the barcode text, if any."
-msgstr ""
+msgid "<literal>textSize</literal> — The size of the barcode text, if any."
+msgstr "<literal>textSize</literal> — La taille du texte du code barres s'il y a du texte."
#. Tag: para
#: Itext.xml:2295
#, no-c-format
-msgid ""
-"<literal>altText</literal> — The <literal>alt</literal> text for HTML "
-"image links."
-msgstr ""
+msgid "<literal>altText</literal> — The <literal>alt</literal> text for HTML image links."
+msgstr "<literal>altText</literal> — Le texte <literal>alt</literal> pour les liens des images en HTML."
#. Tag: programlisting
#: Itext.xml:2305
@@ -2367,89 +2177,84 @@
" codeType=\"code128_ucc\" \n"
" altText=\"My BarCode\" />]]>"
msgstr ""
+"<![CDATA[<p:barCode type=\"code128\" \n"
+" barHeight=\"80\" \n"
+" textSize=\"20\" \n"
+" code=\"(10)45566(17)040301\" \n"
+" codeType=\"code128_ucc\" \n"
+" altText=\"My BarCode\" />]]>"
#. Tag: title
#: Itext.xml:2315
#, no-c-format
msgid "Fill-in-forms"
-msgstr ""
+msgstr "Remplissage de formulaires"
#. Tag: para
#: Itext.xml:2316
#, no-c-format
-msgid ""
-"If you have a complex, pre-generated PDF with named fields, you can easily "
-"fill in the values from your application and present it to the user."
-msgstr ""
+msgid "If you have a complex, pre-generated PDF with named fields, you can easily fill in the values from your application and present it to the user."
+msgstr "Si vous avez un PDF prégénéré et complexe avec des champs de formunaire, vous pouvez facillement remplir les valeurs depuis votre applicatio et le présenter aux utilisateurs."
#. Tag: literal
#: Itext.xml:2330
#, no-c-format
msgid "<p:form>"
-msgstr ""
+msgstr "<p:form>"
#. Tag: para
#: Itext.xml:2337
#, no-c-format
msgid "Defines a form template to populate"
-msgstr ""
+msgstr "Définissez un modèle de formulaire à remplir"
#. Tag: para
#: Itext.xml:2345
#, no-c-format
-msgid ""
-"<literal>URL</literal> — An URL pointing to the PDF file to use as a "
-"template. If the value has no protocol part (://), the file is read locally."
-msgstr ""
+msgid "<literal>URL</literal> — An URL pointing to the PDF file to use as a template. If the value has no protocol part (://), the file is read locally."
+msgstr "<literal>URL</literal> — Une URL indiquant où le fichier PDF est à utiliser comme modèle. Si la valeur n'a pas de partie avec un protocole(://), le fichier est lu localement."
#. Tag: para
#: Itext.xml:2352
#, no-c-format
-msgid ""
-"<literal>filename</literal> — The filename to use for the generated "
-"PDF file."
-msgstr ""
+msgid "<literal>filename</literal> — The filename to use for the generated PDF file."
+msgstr "<literal>filename</literal> — Le nom de fichier à utiliser pour générer le fichier PDDF "
#. Tag: para
#: Itext.xml:2358
#, no-c-format
-msgid ""
-"<literal>exportKey</literal> — Place the generated PDF file in a "
-"DocumentData object under the specified key in the event context. If set, no "
-"redirect will occur."
-msgstr ""
+msgid "<literal>exportKey</literal> — Place the generated PDF file in a DocumentData object under the specified key in the event context. If set, no redirect will occur."
+msgstr "<literal>exportKey</literal> — Placez le fichier PDF à générer dans un objet DocumentData sous la clé spécifiée dans le contexte evenementiel. Si défini, aucune redirection n'intervient."
#. Tag: literal
#: Itext.xml:2380
#, no-c-format
msgid "<p:field>"
-msgstr ""
+msgstr "<p:field>"
#. Tag: para
#: Itext.xml:2387
#, no-c-format
msgid "Connects a field name to its value"
-msgstr ""
+msgstr "Connectez le nom d'un champs à sa valeur"
#. Tag: para
#: Itext.xml:2396
#, no-c-format
msgid "<literal>name</literal> — The name of the field"
-msgstr ""
+msgstr "<literal>name</literal> — Le nom du champs."
#. Tag: para
#: Itext.xml:2402
#, no-c-format
msgid "<literal>value</literal> — The value of the field"
-msgstr ""
+msgstr "<literal>value</literal> — La valeur du champs"
#. Tag: para
#: Itext.xml:2408
#, no-c-format
-msgid ""
-"<literal>readOnly</literal> — Should the field be read-only? Defaults "
-"to true."
-msgstr ""
+msgid "<literal>readOnly</literal> — Should the field be read-only? Defaults to true."
+msgstr "<literal>readOnly</literal> — Le champ est-il en lecture seule? Par défaut à vrai."
#. Tag: programlisting
#: Itext.xml:2420
@@ -2457,98 +2262,85 @@
msgid ""
"<![CDATA[\n"
" <p:form\n"
-" xmlns:p=\"http://jboss.com/products/"
-"seam/pdf\"\n"
-" URL=\"http://localhost/Concept/form."
-"pdf\">\n"
-" <p:field name=\"person.name\" value="
-"\"Me, myself and I\"/>\n"
+" xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+" URL=\"http://localhost/Concept/form.pdf\">\n"
+" <p:field name=\"person.name\" value=\"Me, myself and I\"/>\n"
" </p:form>\n"
" ]]>"
msgstr ""
+"<![CDATA[\n"
+" <p:form\n"
+" xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+" URL=\"http://localhost/Concept/form.pdf\">\n"
+" <p:field name=\"person.name\" value=\"Me, myself and I\"/>\n"
+" </p:form>\n"
+" ]]>"
#. Tag: title
#: Itext.xml:2425
#, no-c-format
msgid "Rendering Swing/AWT components"
-msgstr ""
+msgstr "Le rendu des composants Swing/AWT"
#. Tag: para
#: Itext.xml:2426
#, no-c-format
-msgid ""
-"Seam now provides experimental support for rendering Swing components to "
-"into a PDF image. Some Swing look and feels supports, notably ones that use "
-"native widgets, will not render correctly."
-msgstr ""
+msgid "Seam now provides experimental support for rendering Swing components to into a PDF image. Some Swing look and feels supports, notably ones that use native widgets, will not render correctly."
+msgstr "Seam fourni maintenant un support expérimental pour le rendu des composants Swing dans une image PDF. Quelques supports de thème de Swing, notablement ce qui utilisent des widgets natifs, ne seront pas rendu correctement."
#. Tag: literal
#: Itext.xml:2440
#, no-c-format
msgid "<p:swing>"
-msgstr ""
+msgstr "<p:swing>"
#. Tag: para
#: Itext.xml:2448
#, no-c-format
msgid "Renders a Swing component into a PDF document."
-msgstr ""
+msgstr "Rendre un composant Swing dans un document PDF."
#. Tag: para
#: Itext.xml:2456
#, no-c-format
-msgid ""
-"<literal>width</literal> — The width of the component to be rendered."
-msgstr ""
+msgid "<literal>width</literal> — The width of the component to be rendered."
+msgstr "<literal>width</literal> — La largeur du document à rendre."
#. Tag: para
#: Itext.xml:2460
#, no-c-format
-msgid ""
-"<literal>height</literal> — The height of the component to be rendered."
-msgstr ""
+msgid "<literal>height</literal> — The height of the component to be rendered."
+msgstr "<literal>height</literal> — La hauteur du document à rendre."
#. Tag: para
#: Itext.xml:2464
#, no-c-format
-msgid ""
-"<literal>component</literal> — An expression whose value is a Swing or "
-"AWT component."
-msgstr ""
+msgid "<literal>component</literal> — An expression whose value is a Swing or AWT component."
+msgstr "<literal>component</literal> — Une expression dont la valeur est un composant Swing ou AWT."
#. Tag: programlisting
#: Itext.xml:2472
#, no-c-format
-msgid ""
-"<![CDATA[<p:swing width=\"310\" height=\"120\" component=\"#{aButton}\" />]]>"
-msgstr ""
+msgid "<![CDATA[<p:swing width=\"310\" height=\"120\" component=\"#{aButton}\" />]]>"
+msgstr "<![CDATA[<p:swing width=\"310\" height=\"120\" component=\"#{aButton}\" />]]>"
#. Tag: title
#: Itext.xml:2483
#, no-c-format
msgid "Configuring iText"
-msgstr ""
+msgstr "La configuration de iText"
#. Tag: para
#: Itext.xml:2485
#, no-c-format
-msgid ""
-"Document generation works out of the box with no additional configuration "
-"needed. However, there are a few points of configuration that are needed for "
-"more serious applications."
-msgstr ""
+msgid "Document generation works out of the box with no additional configuration needed. However, there are a few points of configuration that are needed for more serious applications."
+msgstr "La génération de document fonctionne tel quelle sans aucune configurationns additionnelles nécéssaire. Cependant, il y a quelques éléments de configuration qui sont écéssaire pour des applications plus importantes."
#. Tag: para
#: Itext.xml:2488
#, no-c-format
-msgid ""
-"The default implementation serves PDF documents from a generic URL, "
-"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
-"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
-"literal>. This capability requires some configuration. To serve PDF files, "
-"all <literal>*.pdf</literal> resources should be mapped to the "
-"DocumentStoreServlet:"
-msgstr ""
+msgid "The default implementation serves PDF documents from a generic URL, <literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to see URLs that contain the actual PDF name like <literal>/myDocument.pdf</literal>. This capability requires some configuration. To serve PDF files, all <literal>*.pdf</literal> resources should be mapped to the DocumentStoreServlet:"
+msgstr "L'implémentation par défaut délivre des documents PDF depuis une URL générique, <literal>/seam-doc.seam</literal>. Beaucoup de navigateurs (et d'utilisateurs) préfèrerons voir les URLs qui contienne un véritable nom de PDF comme <literal>/myDocument.pdf</literal>. Cette capacité nécéssite un peu de configuration. Pour délivrer des fichiers PDF , toutes les resources <literal>*.pdf</literal> devrait être liées au DocumentStoreServlet:"
#. Tag: programlisting
#: Itext.xml:2493
@@ -2556,8 +2348,7 @@
msgid ""
"<![CDATA[<servlet>\n"
" <servlet-name>Document Store Servlet</servlet-name>\n"
-" <servlet-class>org.jboss.seam.document.DocumentStoreServlet</servlet-"
-"class>\n"
+" <servlet-class>org.jboss.seam.document.DocumentStoreServlet</servlet-class>\n"
"</servlet>\n"
"\n"
"<servlet-mapping>\n"
@@ -2565,16 +2356,21 @@
" <url-pattern>*.pdf</url-pattern>\n"
"</servlet-mapping>]]>"
msgstr ""
+"<![CDATA[<servlet>\n"
+" <servlet-name>Document Store Servlet</servlet-name>\n"
+" <servlet-class>org.jboss.seam.document.DocumentStoreServlet</servlet-class>\n"
+"</servlet>\n"
+"\n"
+"<servlet-mapping>\n"
+" <servlet-name>Document Store Servlet</servlet-name>\n"
+" <url-pattern>*.pdf</url-pattern>\n"
+"</servlet-mapping>]]>"
#. Tag: para
#: Itext.xml:2495
#, no-c-format
-msgid ""
-"The <literal>use-extensions</literal> option on the document store component "
-"completes the functionality by instructing the document store to generate "
-"URLs with the correct filename extension for the document type being "
-"generated."
-msgstr ""
+msgid "The <literal>use-extensions</literal> option on the document store component completes the functionality by instructing the document store to generate URLs with the correct filename extension for the document type being generated."
+msgstr "L'option <literal>use-extensions</literal> sur le document stocke le composant complète la fonctionnalité en introduisant le document stocké en générant les URLs avec l'extension sur le nom de fichier correcte pour le document ayant été généré."
#. Tag: programlisting
#: Itext.xml:2499
@@ -2584,53 +2380,53 @@
" xmlns:document=\"http://jboss.com/products/seam/document\"\n"
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
" xsi:schemaLocation=\"\n"
-" http://jboss.com/products/seam/document http://jboss.com/products/"
-"seam/document-2.2.xsd\n"
-" http://jboss.com/products/seam/components http://jboss.com/products/"
-"seam/components-2.2.xsd\">\n"
+" http://jboss.com/products/seam/document http://jboss.com/products/seam/document-2.2.xsd\n"
+" http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.2.xsd\">\n"
" <document:document-store use-extensions=\"true\"/>\n"
"</components>]]>"
msgstr ""
+"<![CDATA[<components xmlns=\"http://jboss.com/products/seam/components\"\n"
+" xmlns:document=\"http://jboss.com/products/seam/document\"\n"
+" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+" xsi:schemaLocation=\"\n"
+" http://jboss.com/products/seam/document http://jboss.com/products/seam/document-2.2.xsd\n"
+" http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.2.xsd\">\n"
+" <document:document-store use-extensions=\"true\"/>\n"
+"</components>]]>"
#. Tag: para
#: Itext.xml:2501
#, no-c-format
-msgid ""
-"The document store stores documents in conversation scope, and documents "
-"will expire when the conversation ends. At that point, references to the "
-"document will be invalid. You can specify a default view to be shown when a "
-"document does not exist using the <literal>error-page</literal> property of "
-"the <literal>documentStore</literal>."
-msgstr ""
+msgid "The document store stores documents in conversation scope, and documents will expire when the conversation ends. At that point, references to the document will be invalid. You can specify a default view to be shown when a document does not exist using the <literal>error-page</literal> property of the <literal>documentStore</literal>."
+msgstr "Le porte-document stocke les documents dans l'étendue de conversation et les document vont expirés quand la conversation se terminera. A ce moment là, les références vers le document seront invalidées. Vous pouvez spécifier uen vue par défaut à afficher quand un document n'existe pas en utilisant la propriété <literal>error-page</literal> du <literal>documentStore</literal>."
#. Tag: programlisting
#: Itext.xml:2504
#, no-c-format
-msgid ""
-"<![CDATA[<document:document-store use-extensions=\"true\" error-page=\"/"
-"documentMissing.seam\" />]]>"
-msgstr ""
+msgid "<![CDATA[<document:document-store use-extensions=\"true\" error-page=\"/documentMissing.seam\" />]]>"
+msgstr "<![CDATA[<document:document-store use-extensions=\"true\" error-page=\"/documentMissing.seam\" />]]>"
#. Tag: title
#: Itext.xml:2508
#, no-c-format
msgid "Further documentation"
-msgstr ""
+msgstr "Pour plus de documentation"
#. Tag: para
#: Itext.xml:2510
#, no-c-format
msgid "For further information on iText, see:"
-msgstr ""
+msgstr "Pour plus d'informations sur iText, voir:"
#. Tag: ulink
#: Itext.xml:2515
#, no-c-format
msgid "iText Home Page"
-msgstr ""
+msgstr "Site Web de iText"
#. Tag: ulink
#: Itext.xml:2520
#, no-c-format
msgid "iText in Action"
-msgstr ""
+msgstr "iText en Action"
+
15 years
Seam SVN: r11698 - in modules/trunk/remoting: examples/helloworld/src/main/java/org/jboss/seam/remoting/examples/helloworld and 3 other directories.
by seam-commits@lists.jboss.org
Author: shane.bryzak(a)jboss.com
Date: 2009-11-29 13:01:34 -0500 (Sun, 29 Nov 2009)
New Revision: 11698
Added:
modules/trunk/remoting/docs/
modules/trunk/remoting/examples/helloworld/src/main/java/org/jboss/seam/remoting/examples/helloworld/HelloAction.java
modules/trunk/remoting/examples/helloworld/src/main/java/org/jboss/seam/remoting/examples/helloworld/HelloQualifier.java
modules/trunk/remoting/examples/helloworld/src/main/webapp/helloworld.xhtml
modules/trunk/remoting/examples/helloworld/src/main/webapp/index.html
modules/trunk/remoting/readme.txt
Modified:
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/Call.java
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/ExecutionHandler.java
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/InterfaceGenerator.java
modules/trunk/remoting/src/main/resources/org/jboss/seam/remoting/remote.js
Log:
support looking up the bean by bean type and qualifiers
Added: modules/trunk/remoting/examples/helloworld/src/main/java/org/jboss/seam/remoting/examples/helloworld/HelloAction.java
===================================================================
--- modules/trunk/remoting/examples/helloworld/src/main/java/org/jboss/seam/remoting/examples/helloworld/HelloAction.java (rev 0)
+++ modules/trunk/remoting/examples/helloworld/src/main/java/org/jboss/seam/remoting/examples/helloworld/HelloAction.java 2009-11-29 18:01:34 UTC (rev 11698)
@@ -0,0 +1,12 @@
+package org.jboss.seam.remoting.examples.helloworld;
+
+import org.jboss.seam.remoting.annotations.WebRemote;
+
+@HelloQualifier
+public class HelloAction {
+ @WebRemote
+ public String sayHello(String name) {
+ return "Hello, " + name;
+ }
+}
+
Added: modules/trunk/remoting/examples/helloworld/src/main/java/org/jboss/seam/remoting/examples/helloworld/HelloQualifier.java
===================================================================
--- modules/trunk/remoting/examples/helloworld/src/main/java/org/jboss/seam/remoting/examples/helloworld/HelloQualifier.java (rev 0)
+++ modules/trunk/remoting/examples/helloworld/src/main/java/org/jboss/seam/remoting/examples/helloworld/HelloQualifier.java 2009-11-29 18:01:34 UTC (rev 11698)
@@ -0,0 +1,16 @@
+package org.jboss.seam.remoting.examples.helloworld;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.TYPE;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.inject.Qualifier;
+
+@Retention(RUNTIME)
+@Target(TYPE)
+@Qualifier
+public @interface HelloQualifier {
+
+}
Added: modules/trunk/remoting/examples/helloworld/src/main/webapp/helloworld.xhtml
===================================================================
--- modules/trunk/remoting/examples/helloworld/src/main/webapp/helloworld.xhtml (rev 0)
+++ modules/trunk/remoting/examples/helloworld/src/main/webapp/helloworld.xhtml 2009-11-29 18:01:34 UTC (rev 11698)
@@ -0,0 +1,36 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:s="http://jboss.com/products/seam/taglib">
+
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <title>Seam Remoting - Hello World Example</title>
+</head>
+
+<body>
+
+ <h1>Seam Remoting - Hello World Example</h1>
+
+ <p>
+
+ </p>
+
+ <script type="text/javascript" src="seam/resource/remoting/resource/remote.js"></script>
+ <script type="text/javascript" src="seam/resource/remoting/interface.js?org.jboss.seam.remoting.examples.helloworld.HelloAction"></script>
+
+ <script type="text/javascript">
+ function sayHello() {
+ var name = prompt("What is your name?");
+ if (name == null) return;
+ var callback = function(result) { alert(result); };
+ Seam.Component.create("org.jboss.seam.remoting.examples.helloworld.HelloAction", "org.jboss.seam.remoting.examples.helloworld.HelloQualifier").sayHello(name, callback);
+ }
+ </script>
+
+ <button onclick="javascript:sayHello()">Say Hello</button>
+
+</body>
+</html>
+
Added: modules/trunk/remoting/examples/helloworld/src/main/webapp/index.html
===================================================================
--- modules/trunk/remoting/examples/helloworld/src/main/webapp/index.html (rev 0)
+++ modules/trunk/remoting/examples/helloworld/src/main/webapp/index.html 2009-11-29 18:01:34 UTC (rev 11698)
@@ -0,0 +1,6 @@
+<html>
+ <head>
+ <meta http-equiv="Refresh" content="0; URL=helloworld.jsf"/>
+ </head>
+</html>
+
Added: modules/trunk/remoting/readme.txt
===================================================================
--- modules/trunk/remoting/readme.txt (rev 0)
+++ modules/trunk/remoting/readme.txt 2009-11-29 18:01:34 UTC (rev 11698)
@@ -0,0 +1,4 @@
+Seam Remoting
+=============
+
+Seam Remoting is an AJAX remoting API for CDI-based applications.
Modified: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/Call.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/Call.java 2009-11-28 15:42:15 UTC (rev 11697)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/Call.java 2009-11-29 18:01:34 UTC (rev 11698)
@@ -1,5 +1,6 @@
package org.jboss.seam.remoting;
+import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
@@ -29,7 +30,8 @@
private BeanManager beanManager;
private String id;
- private String componentName;
+ private String beanName;
+ private Annotation[] qualifiers = null;
private String methodName;
// private String expression;
private Throwable exception;
@@ -41,18 +43,52 @@
private CallContext context;
private List<String> constraints = null;
+
+ private class AnnotationLiteral implements Annotation
+ {
+ private Class<? extends Annotation> annotationType;
+
+ public AnnotationLiteral(Class<? extends Annotation> annotationType)
+ {
+ this.annotationType = annotationType;
+ }
+
+ public Class<? extends Annotation> annotationType()
+ {
+ return annotationType;
+ }
+ }
/**
* Constructor.
*/
- public Call(BeanManager beanManager, String id, String componentName,
- String methodName)
+ public Call(BeanManager beanManager, String id, String beanName,
+ String qualifiers, String methodName)
{
this.beanManager = beanManager;
this.id = id;
- this.componentName = componentName;
+ this.beanName = beanName;
this.methodName = methodName;
this.context = new CallContext(beanManager);
+
+ if (qualifiers != null && !qualifiers.isEmpty())
+ {
+ String[] qs = qualifiers.split(",");
+ this.qualifiers = new Annotation[qs.length];
+
+ for (int i = 0; i < qs.length; i++)
+ {
+ try
+ {
+ this.qualifiers[i] = new AnnotationLiteral(
+ (Class<? extends Annotation>) Class.forName(qs[i]));
+ }
+ catch (ClassNotFoundException e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
}
/**
@@ -142,7 +178,7 @@
*/
public void execute() throws Exception
{
- if (componentName != null)
+ if (beanName != null)
{
processInvocation();
}
@@ -152,11 +188,19 @@
private void processInvocation() throws Exception
{
// Find the component we're calling
- Set<Bean<?>> beans = beanManager.getBeans(componentName);
+ Set<Bean<?>> beans = beanManager.getBeans(beanName);
if (beans.isEmpty())
{
- throw new RuntimeException("No such component: " + componentName);
+ // Can't find the bean by name, try looking it up by type and qualifiers
+ Type beanType = Class.forName(beanName);
+ beans = beanManager.getBeans(beanType, qualifiers);
+
+ }
+
+ if (beans.isEmpty())
+ {
+ throw new RuntimeException("No such component: " + beanName);
}
else
{
@@ -170,7 +214,7 @@
if (instance == null)
{
throw new RuntimeException(String.format(
- "Could not create instance of bean %s", componentName));
+ "Could not create instance of bean %s", beanName));
}
Class<?> type = null;
Modified: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/ExecutionHandler.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/ExecutionHandler.java 2009-11-28 15:42:15 UTC (rev 11697)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/ExecutionHandler.java 2009-11-29 18:01:34 UTC (rev 11698)
@@ -144,9 +144,11 @@
List<Element> callElements = env.element("body").elements("call");
for (Element e : callElements)
- {
- Call call = new Call(beanManager, e.attributeValue("id"), e
- .attributeValue("component"), e.attributeValue("method"));
+ {
+ Call call = new Call(beanManager, e.attributeValue("id"),
+ e.attributeValue("component"),
+ e.attributeValue("qualifiers"),
+ e.attributeValue("method"));
// First reconstruct all the references
Element refsNode = e.element("refs");
Modified: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/InterfaceGenerator.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/InterfaceGenerator.java 2009-11-28 15:42:15 UTC (rev 11697)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/InterfaceGenerator.java 2009-11-29 18:01:34 UTC (rev 11698)
@@ -19,8 +19,10 @@
import java.util.Map;
import java.util.Set;
+import javax.enterprise.inject.Any;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.util.AnnotationLiteral;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.ServletException;
@@ -51,6 +53,8 @@
* A cache of component interfaces, keyed by component name.
*/
private Map<Class<?>, byte[]> interfaceCache = new HashMap<Class<?>, byte[]>();
+
+ private final class AnyQualifier extends AnnotationLiteral<Any> implements Any {}
/**
*
@@ -79,6 +83,20 @@
String componentName = ((String) e.nextElement()).trim();
Set<Bean<?>> beans = beanManager.getBeans(componentName);
+
+ if (beans.isEmpty())
+ {
+ Type beanType = null;
+
+ try
+ {
+ beanType = Class.forName(componentName);
+ }
+ catch (ClassNotFoundException e1) {}
+
+ beans = beanManager.getBeans(beanType, new AnyQualifier());
+ }
+
Bean<?> bean = null;
if (!beans.isEmpty())
{
@@ -327,17 +345,17 @@
return;
}
- if (bean.getName().contains("."))
+ String beanName = bean.getName() != null ? bean.getName() : bean.getBeanClass().getName();
+ if (beanName.contains("."))
{
componentSrc.append("Seam.Remoting.createNamespace('");
- componentSrc.append(bean.getName().substring(0,
- bean.getName().lastIndexOf('.')));
+ componentSrc.append(beanName.substring(0, beanName.lastIndexOf('.')));
componentSrc.append("');\n");
}
componentSrc.append("Seam.Remoting.type.");
- componentSrc.append(bean.getName());
+ componentSrc.append(beanName);
componentSrc.append(" = function() {\n");
componentSrc.append(" this.__callback = new Object();\n");
@@ -360,7 +378,7 @@
appendTypeSource(out, m.getGenericReturnType(), types);
componentSrc.append(" Seam.Remoting.type.");
- componentSrc.append(bean.getName());
+ componentSrc.append(beanName);
componentSrc.append(".prototype.");
componentSrc.append(m.getName());
componentSrc.append(" = function(");
@@ -402,14 +420,14 @@
// Set the component name
componentSrc.append("Seam.Remoting.type.");
- componentSrc.append(bean.getName());
+ componentSrc.append(beanName);
componentSrc.append(".__name = \"");
- componentSrc.append(bean.getName());
+ componentSrc.append(beanName);
componentSrc.append("\";\n\n");
// Register the component
componentSrc.append("Seam.Component.register(Seam.Remoting.type.");
- componentSrc.append(bean.getName());
+ componentSrc.append(beanName);
componentSrc.append(");\n\n");
out.write(componentSrc.toString().getBytes());
@@ -485,6 +503,7 @@
// Determine whether this class is a component; if so, use its name
// otherwise use its class name.
Bean<?> bean = beanManager.getBeans(classType).iterator().next();
+
String componentName = bean.getName();
if (componentName == null)
componentName = classType.getName();
Modified: modules/trunk/remoting/src/main/resources/org/jboss/seam/remoting/remote.js
===================================================================
--- modules/trunk/remoting/src/main/resources/org/jboss/seam/remoting/remote.js 2009-11-28 15:42:15 UTC (rev 11697)
+++ modules/trunk/remoting/src/main/resources/org/jboss/seam/remoting/remote.js 2009-11-29 18:01:34 UTC (rev 11698)
@@ -8,24 +8,23 @@
Seam.Component.components = new Array();
Seam.Component.instances = new Array();
-Seam.Component.newInstance = function(name)
+Seam.Component.create = function(name)
{
for (var i = 0; i < Seam.Component.components.length; i++)
{
if (Seam.Component.components[i].__name == name)
- return new Seam.Component.components[i];
- }
-}
-
-Seam.Component.getInstance = function(name)
-{
- for (var i = 0; i < Seam.Component.components.length; i++)
- {
- if (Seam.Component.components[i].__name == name)
{
- if (Seam.Component.components[i].__instance == null)
- Seam.Component.components[i].__instance = new Seam.Component.components[i]();
- return Seam.Component.components[i].__instance;
+ var value = new Seam.Component.components[i];
+ if (arguments.length > 1)
+ {
+ value.__qualifiers = new Array();
+ for (var j = 1; j < arguments.length; j++)
+ {
+ value.__qualifiers.push(arguments[j]);
+ }
+ }
+
+ return value;
}
}
return null;
@@ -485,6 +484,18 @@
var data = "<call component=\"";
data += Seam.Component.getComponentType(component).__name;
+
+ if (component.__qualifiers != null)
+ {
+ data += "\" qualifiers=\"";
+
+ for (var i = 0; i < component.__qualifiers.length; i++)
+ {
+ data += component.__qualifiers[i];
+ if (i < component.__qualifiers.length - 1) data += ",";
+ }
+ }
+
data += "\" method=\"";
data += methodName;
data += "\" id=\"";
15 years
Seam SVN: r11697 - modules/trunk/remoting/src/main/java/org/jboss/seam/remoting.
by seam-commits@lists.jboss.org
Author: shane.bryzak(a)jboss.com
Date: 2009-11-28 10:42:15 -0500 (Sat, 28 Nov 2009)
New Revision: 11697
Removed:
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/BaseRequestHandler.java
Modified:
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/Call.java
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/CallContext.java
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/ExecutionHandler.java
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/InterfaceGenerator.java
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/PollHandler.java
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/Remoting.java
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/RequestHandler.java
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/SubscriptionHandler.java
Log:
got remoting example working, cleaned up code
Deleted: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/BaseRequestHandler.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/BaseRequestHandler.java 2009-11-28 14:03:05 UTC (rev 11696)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/BaseRequestHandler.java 2009-11-28 15:42:15 UTC (rev 11697)
@@ -1,18 +0,0 @@
-package org.jboss.seam.remoting;
-
-import javax.enterprise.inject.spi.BeanManager;
-import javax.servlet.ServletContext;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- *
- * @author Shane Bryzak
- */
-public abstract class BaseRequestHandler implements RequestHandler
-{
- protected static final Logger log = LoggerFactory.getLogger(BaseRequestHandler.class);
-
- public void setServletContext(ServletContext context) {}
-}
Modified: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/Call.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/Call.java 2009-11-28 14:03:05 UTC (rev 11696)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/Call.java 2009-11-28 15:42:15 UTC (rev 11697)
@@ -8,9 +8,10 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.Map.Entry;
-import javax.ejb.Local;
+import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
@@ -147,71 +148,82 @@
}
}
+ @SuppressWarnings("unchecked")
private void processInvocation() throws Exception
{
// Find the component we're calling
- Bean bean = beanManager.getBeans(componentName).iterator().next();
-
- if (bean == null)
+ Set<Bean<?>> beans = beanManager.getBeans(componentName);
+
+ if (beans.isEmpty())
{
- throw new RuntimeException("No such component: " + componentName);
+ throw new RuntimeException("No such component: " + componentName);
}
-
- // Create an instance of the component
- Object instance = bean.create(beanManager.createCreationalContext(bean));
-
- if (instance == null)
- {
- throw new RuntimeException(String.format(
- "Could not create instance of component %s", componentName));
- }
-
- Class type = null;
-
- if (true) //(component.getType().isSessionBean()
- //&& component.getBusinessInterfaces().size() > 0)
- {
- //for (Class c : component.getBusinessInterfaces())
+ else
+ {
+ Bean<?> bean = beans.iterator().next();
+
+ CreationalContext ctx = beanManager.createCreationalContext(bean);
+
+ // Create an instance of the component
+ Object instance = bean.create(ctx);
+
+ if (instance == null)
+ {
+ throw new RuntimeException(String.format(
+ "Could not create instance of bean %s", componentName));
+ }
+
+ Class<?> type = null;
+
+ //if (component.getType().isSessionBean()
+ //&& component.getBusinessInterfaces().size() > 0)
//{
- //if (c.isAnnotationPresent(Local.class))
+ //for (Class c : component.getBusinessInterfaces())
//{
- //type = c;
- //break;
+ //if (c.isAnnotationPresent(Local.class))
+ //{
+ //type = c;
+ //break;
+ //}
//}
+
+ //if (type == null)
+ //{
+ // throw new RuntimeException(String.format(
+ // "Type cannot be determined for bean [%s]. Please ensure that it has a local interface.",
+ // bean));
+ //}
//}
-
+
if (type == null)
{
- throw new RuntimeException(String.format(
- "Type cannot be determined for bean [%s]. Please ensure that it has a local interface.",
- bean));
+ type = bean.getBeanClass();
}
+
+ // Find the method according to the method name and the parameter classes
+ Method m = findMethod(methodName, type);
+ if (m == null)
+ {
+ throw new RuntimeException("No compatible method found.");
+ }
+
+ if (m.getAnnotation(WebRemote.class).exclude().length > 0)
+ {
+ constraints = Arrays.asList(m.getAnnotation(WebRemote.class).exclude());
+ }
+
+ Object[] params = convertParams(m.getGenericParameterTypes());
+
+ // Invoke!
+ try
+ {
+ result = m.invoke(instance, params);
+ }
+ catch (InvocationTargetException e)
+ {
+ this.exception = e.getCause();
+ }
}
-
- if (type == null)
- {
- type = bean.getBeanClass();
- }
-
- // Find the method according to the method name and the parameter classes
- Method m = findMethod(methodName, type);
- if (m == null)
- throw new RuntimeException("No compatible method found.");
-
- if (m.getAnnotation(WebRemote.class).exclude().length > 0)
- constraints = Arrays
- .asList(m.getAnnotation(WebRemote.class).exclude());
-
- Object[] params = convertParams(m.getGenericParameterTypes());
-
- // Invoke!
- try
- {
- result = m.invoke(instance, params);
- } catch (InvocationTargetException e)
- {
- this.exception = e.getCause();
- }
}
/**
@@ -245,7 +257,7 @@
* Class The Class to search in.
* @return Method The best matching method.
*/
- private Method findMethod(String name, Class cls)
+ private Method findMethod(String name, Class<?> cls)
{
Map<Method, Integer> candidates = new HashMap<Method, Integer>();
Modified: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/CallContext.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/CallContext.java 2009-11-28 14:03:05 UTC (rev 11696)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/CallContext.java 2009-11-28 15:42:15 UTC (rev 11697)
@@ -13,108 +13,114 @@
/**
* Represents the context of an individual call.
- *
+ *
* @author Shane Bryzak
*/
public class CallContext
{
private BeanManager beanManager;
-
+
public CallContext(BeanManager beanManager)
{
this.beanManager = beanManager;
}
-
- /**
- * Contains references to inbound bean objects identified by their ref.
- */
- private Map<String, Wrapper> inRefs = new HashMap<String, Wrapper>();
- /**
- * Contains references to outbound bean objects identified by their object.
- */
- private List<Wrapper> outRefs = new ArrayList<Wrapper>();
+ /**
+ * Contains references to inbound bean objects identified by their ref.
+ */
+ private Map<String, Wrapper> inRefs = new HashMap<String, Wrapper>();
- /**
- *
- * @param element Element
- * @return Wrapper
- */
- public Wrapper createWrapperFromElement(Element element)
- {
- if ("ref".equals(element.getQualifiedName()))
- {
- if (inRefs.containsKey(element.attributeValue("id")))
- return inRefs.get(element.attributeValue("id"));
+ /**
+ * Contains references to outbound bean objects identified by their object.
+ */
+ private List<Wrapper> outRefs = new ArrayList<Wrapper>();
+
+ /**
+ *
+ * @param element
+ * Element
+ * @return Wrapper
+ */
+ public Wrapper createWrapperFromElement(Element element)
+ {
+ if ("ref".equals(element.getQualifiedName()))
+ {
+ if (inRefs.containsKey(element.attributeValue("id")))
+ {
+ return inRefs.get(element.attributeValue("id"));
+ }
+ else
+ {
+ Element value = (Element) element.elements().get(0);
+
+ Wrapper w = WrapperFactory.getInstance().createWrapper(
+ value.getQualifiedName(), beanManager);
+ w.setElement(value);
+ w.setCallContext(this);
+ inRefs.put(element.attributeValue("id"), w);
+ return w;
+ }
+ }
else
{
- Element value = (Element) element.elements().get(0);
+ Wrapper w = WrapperFactory.getInstance().createWrapper(
+ element.getQualifiedName(), beanManager);
+ w.setElement(element);
+ w.setCallContext(this);
+ return w;
+ }
+ }
- Wrapper w = WrapperFactory.getInstance().createWrapper(
- value.getQualifiedName(), beanManager);
- w.setElement(value);
- w.setCallContext(this);
- inRefs.put(element.attributeValue("id"), w);
- return w;
+ /**
+ *
+ * @return Wrapper
+ */
+ public Wrapper createWrapperFromObject(Object value, String path)
+ {
+ // Not very efficient but has to be done - may implement something better
+ // later
+ for (Wrapper ref : outRefs)
+ {
+ if (ref.getValue().equals(value))
+ return ref;
}
- }
- else
- {
- Wrapper w = WrapperFactory.getInstance().createWrapper(
- element.getQualifiedName(), beanManager);
- w.setElement(element);
+
+ Wrapper w = WrapperFactory.getInstance().getWrapperForObject(value,
+ beanManager);
w.setCallContext(this);
+ w.setPath(path);
return w;
- }
- }
+ }
- /**
- *
- * @return Wrapper
- */
- public Wrapper createWrapperFromObject(Object value, String path)
- {
- // Not very efficient but has to be done - may implement something better later
- for (Wrapper ref : outRefs)
- {
- if (ref.getValue().equals(value))
- return ref;
- }
+ /**
+ * Returns the inbound object references
+ *
+ * @return Map
+ */
+ public Map<String, Wrapper> getInRefs()
+ {
+ return inRefs;
+ }
- Wrapper w = WrapperFactory.getInstance().getWrapperForObject(value, beanManager);
- w.setCallContext(this);
- w.setPath(path);
- return w;
- }
+ /**
+ * Returns the outbound object references
+ *
+ * @return List
+ */
+ public List<Wrapper> getOutRefs()
+ {
+ return outRefs;
+ }
- /**
- * Returns the inbound object references
- *
- * @return Map
- */
- public Map<String, Wrapper> getInRefs()
- {
- return inRefs;
- }
-
- /**
- * Returns the outbound object references
- *
- * @return List
- */
- public List<Wrapper> getOutRefs()
- {
- return outRefs;
- }
-
- /**
- * Add an outbound object reference
- *
- * @param w Wrapper
- */
- public void addOutRef(Wrapper w)
- {
- if (!outRefs.contains(w))
- outRefs.add(w);
- }
+ /**
+ * Add an outbound object reference
+ *
+ * @param w
+ * Wrapper
+ */
+ public void addOutRef(Wrapper w)
+ {
+ if (!outRefs.contains(w))
+ outRefs.add(w);
+ }
}
Modified: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/ExecutionHandler.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/ExecutionHandler.java 2009-11-28 14:03:05 UTC (rev 11696)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/ExecutionHandler.java 2009-11-28 15:42:15 UTC (rev 11697)
@@ -18,6 +18,8 @@
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.jboss.seam.remoting.wrapper.Wrapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Unmarshals the calls from an HttpServletRequest, executes them in order and
@@ -25,9 +27,11 @@
*
* @author Shane Bryzak
*/
-public class ExecutionHandler extends BaseRequestHandler implements
- RequestHandler
+public class ExecutionHandler implements RequestHandler
{
+ private static final Logger log = LoggerFactory
+ .getLogger(ExecutionHandler.class);
+
private static final byte[] HEADER_OPEN = "<header>".getBytes();
private static final byte[] HEADER_CLOSE = "</header>".getBytes();
private static final byte[] CONVERSATION_ID_TAG_OPEN = "<conversationId>"
@@ -38,9 +42,11 @@
private static final byte[] CONTEXT_TAG_OPEN = "<context>".getBytes();
private static final byte[] CONTEXT_TAG_CLOSE = "</context>".getBytes();
- @Inject BeanManager beanManager;
- @Inject Conversation conversation;
-
+ @Inject
+ BeanManager beanManager;
+ @Inject
+ Conversation conversation;
+
/**
* The entry point for handling a request.
*
@@ -128,6 +134,7 @@
* Element
* @throws Exception
*/
+ @SuppressWarnings("unchecked")
private List<Call> unmarshalCalls(Element env) throws Exception
{
try
@@ -173,7 +180,8 @@
}
return calls;
- } catch (Exception ex)
+ }
+ catch (Exception ex)
{
log.error("Error unmarshalling calls from request", ex);
throw ex;
Modified: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/InterfaceGenerator.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/InterfaceGenerator.java 2009-11-28 14:03:05 UTC (rev 11696)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/InterfaceGenerator.java 2009-11-28 15:42:15 UTC (rev 11697)
@@ -19,8 +19,6 @@
import java.util.Map;
import java.util.Set;
-import javax.ejb.Local;
-import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.inject.Inject;
@@ -29,7 +27,6 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.hibernate.type.ComponentType;
import org.jboss.seam.remoting.annotations.WebRemote;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -39,20 +36,21 @@
*
* @author Shane Bryzak
*/
-public class InterfaceGenerator extends BaseRequestHandler implements
- RequestHandler
-{
+public class InterfaceGenerator implements RequestHandler
+{
+ private static final Logger log = LoggerFactory.getLogger(InterfaceGenerator.class);
+
@Inject BeanManager beanManager;
/**
* Maintain a cache of the accessible fields
*/
- private static Map<Class, Set<String>> accessibleProperties = new HashMap<Class, Set<String>>();
+ private static Map<Class<?>, Set<String>> accessibleProperties = new HashMap<Class<?>, Set<String>>();
/**
* A cache of component interfaces, keyed by component name.
*/
- private Map<String, byte[]> interfaceCache = new HashMap<String, byte[]>();
+ private Map<Class<?>, byte[]> interfaceCache = new HashMap<Class<?>, byte[]>();
/**
*
@@ -91,16 +89,18 @@
{
try
{
- Class c = Class.forName(componentName);
+ Class<?> c = Class.forName(componentName);
appendClassSource(response.getOutputStream(), c, types);
- } catch (ClassNotFoundException ex)
+ }
+ catch (ClassNotFoundException ex)
{
log.error(String.format("Component not found: [%s]",
componentName));
throw new ServletException(
"Invalid request - component not found.");
}
- } else
+ }
+ else
{
beansCached.add(bean);
}
@@ -121,26 +121,27 @@
* @throws IOException
* Thrown if there is an error writing to the OutputStream
*/
- public void generateBeanInterface(Set<Bean<?>> beans,
- OutputStream out, Set<Type> types) throws IOException
+ public void generateBeanInterface(Set<Bean<?>> beans, OutputStream out,
+ Set<Type> types) throws IOException
{
for (Bean<?> bean : beans)
{
if (bean != null)
{
- if (!interfaceCache.containsKey(bean.getName()))
+ if (!interfaceCache.containsKey(bean.getBeanClass()))
{
synchronized (interfaceCache)
{
- if (!interfaceCache.containsKey(bean.getName()))
+ if (!interfaceCache.containsKey(bean.getBeanClass()))
{
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
appendBeanSource(bOut, bean, types);
- interfaceCache.put(bean.getName(), bOut.toByteArray());
+ interfaceCache
+ .put(bean.getBeanClass(), bOut.toByteArray());
}
}
}
- out.write(interfaceCache.get(bean.getName()));
+ out.write(interfaceCache.get(bean.getBeanClass()));
}
}
}
@@ -172,7 +173,7 @@
{
Set<String> properties = new HashSet<String>();
- Class c = cls;
+ Class<?> c = cls;
while (c != null && !c.equals(Object.class))
{
for (Field f : c.getDeclaredFields())
@@ -191,16 +192,19 @@
try
{
getMethod = c.getMethod(getterName);
- } catch (SecurityException ex)
+ }
+ catch (SecurityException ex)
{
- } catch (NoSuchMethodException ex)
+ }
+ catch (NoSuchMethodException ex)
{
// it might be an "is" method...
getterName = String.format("is%s", fieldName);
try
{
getMethod = c.getMethod(getterName);
- } catch (NoSuchMethodException ex2)
+ }
+ catch (NoSuchMethodException ex2)
{ /* don't care */
}
}
@@ -209,9 +213,11 @@
{
setMethod = c.getMethod(setterName, new Class[] { f
.getType() });
- } catch (SecurityException ex)
+ }
+ catch (SecurityException ex)
{
- } catch (NoSuchMethodException ex)
+ }
+ catch (NoSuchMethodException ex)
{ /* don't care */
}
@@ -238,7 +244,8 @@
{
c.getMethod(String.format("set%s", m.getName()
.substring(startIdx)), m.getReturnType());
- } catch (NoSuchMethodException ex)
+ }
+ catch (NoSuchMethodException ex)
{
continue;
}
@@ -248,7 +255,9 @@
.getName().substring(startIdx + 1));
if (!properties.contains(propertyName))
+ {
properties.add(propertyName);
+ }
}
}
@@ -278,68 +287,33 @@
* @throws IOException
* If there is an error writing to the OutputStream.
*/
- private void appendBeanSource(OutputStream out, Bean bean,
- Set<Type> types) throws IOException
+ private void appendBeanSource(OutputStream out, Bean<?> bean, Set<Type> types)
+ throws IOException
{
StringBuilder componentSrc = new StringBuilder();
- Set<Class> componentTypes = new HashSet<Class>();
+ Set<Class<?>> componentTypes = new HashSet<Class<?>>();
-// if (bean.getType().isSessionBean()
-// && bean.getBusinessInterfaces().size() > 0)
- if (true)
+ // Check if any of the methods are annotated with @WebRemote, and if so
+ // treat it as an "action" component instead of a type component
+ for (Method m : bean.getBeanClass().getDeclaredMethods())
{
- //for (Class c : bean.getBusinessInterfaces())
- //{
- // Use the Local interface
- // TODO remove dependency on javax.ejb - iterate through the annotations
- // instead and do a string comparison
- //if (c.isAnnotationPresent(Local.class))
- //{
- //componentTypes.add(c);
- //break;
- //}
- //}
+ if (m.getAnnotation(WebRemote.class) != null)
+ {
+ componentTypes.add(bean.getBeanClass());
+ break;
+ }
+ }
- if (componentTypes.isEmpty())
- throw new RuntimeException(
- String
- .format(
- "Type cannot be determined for component [%s]. Please ensure that it has a local interface.",
- bean));
- }
- else if (false) //(bean.getType().equals(ComponentType.ENTITY_BEAN))
+ if (componentTypes.isEmpty())
{
appendTypeSource(out, bean.getBeanClass(), types);
return;
- }
- else if (false) //(component.getType().equals(ComponentType.JAVA_BEAN))
- {
- // Check if any of the methods are annotated with @WebRemote, and if so
- // treat it as an "action" component instead of a type component
- for (Method m : bean.getBeanClass().getDeclaredMethods())
- {
- if (m.getAnnotation(WebRemote.class) != null)
- {
- componentTypes.add(bean.getBeanClass());
- break;
- }
- }
-
- if (componentTypes.isEmpty())
- {
- appendTypeSource(out, bean.getBeanClass(), types);
- return;
- }
- }
- else
- {
- componentTypes.add(bean.getBeanClass());
}
// If types already contains all the component types, then return
boolean foundNew = false;
- for (Class type : componentTypes)
+ for (Class<?> type : componentTypes)
{
if (!types.contains(type))
{
@@ -347,8 +321,11 @@
break;
}
}
+
if (!foundNew)
+ {
return;
+ }
if (bean.getName().contains("."))
{
@@ -364,12 +341,13 @@
componentSrc.append(" = function() {\n");
componentSrc.append(" this.__callback = new Object();\n");
- for (Class type : componentTypes)
+ for (Class<?> type : componentTypes)
{
if (types.contains(type))
{
break;
- } else
+ }
+ else
{
types.add(type);
@@ -393,15 +371,17 @@
appendTypeSource(out, m.getGenericParameterTypes()[i], types);
if (i > 0)
+ {
componentSrc.append(", ");
+ }
componentSrc.append("p");
componentSrc.append(i);
}
if (m.getGenericParameterTypes().length > 0)
componentSrc.append(", ");
+
componentSrc.append("callback, exceptionHandler) {\n");
-
componentSrc.append(" return Seam.Remoting.execute(this, \"");
componentSrc.append(m.getName());
componentSrc.append("\", [");
@@ -415,7 +395,6 @@
}
componentSrc.append("], callback, exceptionHandler);\n");
-
componentSrc.append(" }\n");
}
}
@@ -451,9 +430,9 @@
private void appendTypeSource(OutputStream out, Type type, Set<Type> types)
throws IOException
{
- if (type instanceof Class)
+ if (type instanceof Class<?>)
{
- Class classType = (Class) type;
+ Class<?> classType = (Class<?>) type;
if (classType.isArray())
{
@@ -463,16 +442,21 @@
if (classType.getName().startsWith("java.") || types.contains(type)
|| classType.isPrimitive())
+ {
return;
+ }
// Keep track of which types we've already added
types.add(type);
appendClassSource(out, classType, types);
- } else if (type instanceof ParameterizedType)
+ }
+ else if (type instanceof ParameterizedType)
{
for (Type t : ((ParameterizedType) type).getActualTypeArguments())
+ {
appendTypeSource(out, t, types);
+ }
}
}
@@ -487,19 +471,21 @@
* Set
* @throws IOException
*/
- private void appendClassSource(OutputStream out, Class classType,
+ private void appendClassSource(OutputStream out, Class<?> classType,
Set<Type> types) throws IOException
{
// Don't generate interfaces for enums
if (classType.isEnum())
+ {
return;
+ }
StringBuilder typeSource = new StringBuilder();
// Determine whether this class is a component; if so, use its name
// otherwise use its class name.
- Bean bean = beanManager.getBeans(classType).iterator().next();
- String componentName = bean.getName();
+ Bean<?> bean = beanManager.getBeans(classType).iterator().next();
+ String componentName = bean.getName();
if (componentName == null)
componentName = classType.getName();
@@ -526,7 +512,8 @@
{
f = classType.getDeclaredField(propertyName);
propertyType = f.getGenericType();
- } catch (NoSuchFieldException ex)
+ }
+ catch (NoSuchFieldException ex)
{
setMethodName = String.format("set%s%s", Character
.toUpperCase(propertyName.charAt(0)), propertyName
@@ -539,7 +526,8 @@
.substring(1));
propertyType = classType.getMethod(getMethodName)
.getGenericReturnType();
- } catch (NoSuchMethodException ex2)
+ }
+ catch (NoSuchMethodException ex2)
{
try
{
@@ -549,7 +537,8 @@
propertyType = classType.getMethod(getMethodName)
.getGenericReturnType();
- } catch (NoSuchMethodException ex3)
+ }
+ catch (NoSuchMethodException ex3)
{
// ???
continue;
@@ -565,8 +554,10 @@
for (Type t : ((ParameterizedType) propertyType)
.getActualTypeArguments())
{
- if (t instanceof Class)
+ if (t instanceof Class<?>)
+ {
appendTypeSource(out, t, types);
+ }
}
}
@@ -581,9 +572,11 @@
{
classType.getMethod(getterName);
getMethodName = getterName;
- } catch (SecurityException ex)
+ }
+ catch (SecurityException ex)
{
- } catch (NoSuchMethodException ex)
+ }
+ catch (NoSuchMethodException ex)
{
getterName = String.format("is%s", fieldName);
try
@@ -591,7 +584,8 @@
if (Modifier.isPublic(classType.getMethod(getterName)
.getModifiers()))
getMethodName = getterName;
- } catch (NoSuchMethodException ex2)
+ }
+ catch (NoSuchMethodException ex2)
{ /* don't care */
}
}
@@ -601,9 +595,11 @@
if (Modifier.isPublic(classType.getMethod(setterName,
f.getType()).getModifiers()))
setMethodName = setterName;
- } catch (SecurityException ex)
+ }
+ catch (SecurityException ex)
{
- } catch (NoSuchMethodException ex)
+ }
+ catch (NoSuchMethodException ex)
{ /* don't care */
}
}
@@ -686,9 +682,13 @@
// TODO fix this - a bean might not be named
if (classType.isAnnotationPresent(Named.class))
+ {
typeSource.append("Seam.Component.register(Seam.Remoting.type.");
+ }
else
+ {
typeSource.append("Seam.Remoting.registerType(Seam.Remoting.type.");
+ }
typeSource.append(typeName);
typeSource.append(");\n\n");
@@ -706,40 +706,59 @@
protected String getFieldType(Type type)
{
if (type.equals(String.class)
- || (type instanceof Class && ((Class) type).isEnum())
+ || (type instanceof Class<?> && ((Class<?>) type).isEnum())
|| type.equals(BigInteger.class) || type.equals(BigDecimal.class))
+ {
return "str";
+ }
else if (type.equals(Boolean.class) || type.equals(Boolean.TYPE))
+ {
return "bool";
+ }
else if (type.equals(Short.class) || type.equals(Short.TYPE)
|| type.equals(Integer.class) || type.equals(Integer.TYPE)
|| type.equals(Long.class) || type.equals(Long.TYPE)
|| type.equals(Float.class) || type.equals(Float.TYPE)
|| type.equals(Double.class) || type.equals(Double.TYPE)
|| type.equals(Byte.class) || type.equals(Byte.TYPE))
+ {
return "number";
- else if (type instanceof Class)
+ }
+ else if (type instanceof Class<?>)
{
- Class cls = (Class) type;
+ Class<?> cls = (Class<?>) type;
if (Date.class.isAssignableFrom(cls)
|| Calendar.class.isAssignableFrom(cls))
+ {
return "date";
+ }
else if (cls.isArray())
+ {
return "bag";
+ }
else if (cls.isAssignableFrom(Map.class))
+ {
return "map";
+ }
else if (cls.isAssignableFrom(Collection.class))
+ {
return "bag";
- } else if (type instanceof ParameterizedType)
+ }
+ }
+ else if (type instanceof ParameterizedType)
{
ParameterizedType pt = (ParameterizedType) type;
- if (pt.getRawType() instanceof Class
- && Map.class.isAssignableFrom((Class) pt.getRawType()))
+ if (pt.getRawType() instanceof Class<?>
+ && Map.class.isAssignableFrom((Class<?>) pt.getRawType()))
+ {
return "map";
- else if (pt.getRawType() instanceof Class
- && Collection.class.isAssignableFrom((Class) pt.getRawType()))
+ }
+ else if (pt.getRawType() instanceof Class<?>
+ && Collection.class.isAssignableFrom((Class<?>) pt.getRawType()))
+ {
return "bag";
+ }
}
return "bean";
Modified: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/PollHandler.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/PollHandler.java 2009-11-28 14:03:05 UTC (rev 11696)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/PollHandler.java 2009-11-28 15:42:15 UTC (rev 11697)
@@ -21,14 +21,18 @@
import org.jboss.seam.remoting.messaging.PollRequest;
import org.jboss.seam.remoting.messaging.SubscriptionRegistry;
import org.jboss.seam.remoting.wrapper.Wrapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Handles JMS Message poll requests.
*
* @author Shane Bryzak
*/
-public class PollHandler extends BaseRequestHandler implements RequestHandler
+public class PollHandler implements RequestHandler
{
+ private static final Logger log = LoggerFactory.getLogger(PollHandler.class);
+
private static final byte[] ERRORS_TAG_OPEN_START = "<errors token=\""
.getBytes();
private static final byte[] ERRORS_TAG_OPEN_END = "\">".getBytes();
@@ -51,9 +55,11 @@
private static final byte[] VALUE_TAG_OPEN = "<value>".getBytes();
private static final byte[] VALUE_TAG_CLOSE = "</value>".getBytes();
- @Inject BeanManager beanManager;
- @Inject SubscriptionRegistry registry;
-
+ @Inject
+ BeanManager beanManager;
+ @Inject
+ SubscriptionRegistry registry;
+
public void handle(HttpServletRequest request,
final HttpServletResponse response) throws Exception
{
@@ -77,6 +83,7 @@
marshalResponse(polls, response.getOutputStream());
}
+ @SuppressWarnings("unchecked")
private List<PollRequest> unmarshalRequests(Element env) throws Exception
{
try
@@ -86,12 +93,13 @@
List<Element> requestElements = env.element("body").elements("poll");
for (Element e : requestElements)
{
- requests.add(new PollRequest(e.attributeValue("token"),
- Integer.parseInt(e.attributeValue("timeout")), registry));
+ requests.add(new PollRequest(e.attributeValue("token"), Integer
+ .parseInt(e.attributeValue("timeout")), registry));
}
return requests;
- } catch (Exception ex)
+ }
+ catch (Exception ex)
{
log.error("Error unmarshalling subscriptions from request", ex);
throw ex;
@@ -115,7 +123,8 @@
{
writeError(err, out);
}
- } else if (req.getMessages() != null && req.getMessages().size() > 0)
+ }
+ else if (req.getMessages() != null && req.getMessages().size() > 0)
{
out.write(MESSAGES_TAG_OPEN_START);
out.write(req.getToken().getBytes());
@@ -125,9 +134,11 @@
try
{
writeMessage(m, out);
- } catch (JMSException ex)
+ }
+ catch (JMSException ex)
{
- } catch (IOException ex)
+ }
+ catch (IOException ex)
{
}
}
@@ -153,7 +164,8 @@
{
out.write("text".getBytes());
value = ((TextMessage) m).getText();
- } else if (m instanceof ObjectMessage)
+ }
+ else if (m instanceof ObjectMessage)
{
out.write("object".getBytes());
value = ((ObjectMessage) m).getObject();
Modified: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/Remoting.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/Remoting.java 2009-11-28 14:03:05 UTC (rev 11696)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/Remoting.java 2009-11-28 15:42:15 UTC (rev 11697)
@@ -27,9 +27,11 @@
*/
public class Remoting extends HttpServlet
{
+ private static final long serialVersionUID = -3911197516105313424L;
+
private static final String REQUEST_PATH_EXECUTE = "/execute";
- private static final String REQUEST_PATH_SUBSCRIPTION = "/subscription";
- private static final String REQUEST_PATH_POLL = "/poll";
+ //private static final String REQUEST_PATH_SUBSCRIPTION = "/subscription";
+ //private static final String REQUEST_PATH_POLL = "/poll";
private static final String REQUEST_PATH_INTERFACE = "/interface.js";
@Inject Instance<ExecutionHandler> executionHandlerInstance;
@@ -197,20 +199,24 @@
{
try
{
- // String pathInfo = request.getPathInfo().substring(
- // servletConfig.getServletContext().getContextPath().length());
+ String pathInfo = request.getPathInfo();
+
+ if (pathInfo.startsWith(servletConfig.getServletContext().getContextPath()))
+ {
+ pathInfo = pathInfo.substring(servletConfig.getServletContext().getContextPath().length());
+ }
- if (REQUEST_PATH_EXECUTE.equals(request.getPathInfo()))
+ if (REQUEST_PATH_EXECUTE.equals(pathInfo))
{
executionHandlerInstance.get().handle(request, response);
}
- else if (REQUEST_PATH_INTERFACE.equals(request.getPathInfo()))
+ else if (REQUEST_PATH_INTERFACE.equals(pathInfo))
{
interfaceHandlerInstance.get().handle(request, response);
}
else
{
- Matcher m = pathPattern.matcher(request.getPathInfo());
+ Matcher m = pathPattern.matcher(pathInfo);
if (m.matches())
{
String path = m.group(1);
Modified: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/RequestHandler.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/RequestHandler.java 2009-11-28 14:03:05 UTC (rev 11696)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/RequestHandler.java 2009-11-28 15:42:15 UTC (rev 11697)
@@ -1,6 +1,5 @@
package org.jboss.seam.remoting;
-import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -22,5 +21,4 @@
void handle(HttpServletRequest request, HttpServletResponse response)
throws Exception;
- void setServletContext(ServletContext context);
}
Modified: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/SubscriptionHandler.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/SubscriptionHandler.java 2009-11-28 14:03:05 UTC (rev 11696)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/SubscriptionHandler.java 2009-11-28 15:42:15 UTC (rev 11697)
@@ -20,11 +20,11 @@
*
* @author Shane Bryzak
*/
-public class SubscriptionHandler extends BaseRequestHandler implements
- RequestHandler
+public class SubscriptionHandler implements RequestHandler
{
- @Inject SubscriptionRegistry registry;
-
+ @Inject
+ SubscriptionRegistry registry;
+
/**
* The entry point for handling a request.
*
@@ -34,6 +34,7 @@
* HttpServletResponse
* @throws Exception
*/
+ @SuppressWarnings("unchecked")
public void handle(HttpServletRequest request, HttpServletResponse response)
throws Exception
{
@@ -54,7 +55,8 @@
List<Element> elements = body.elements("subscribe");
for (Element e : elements)
{
- requests.add(new SubscriptionRequest(e.attributeValue("topic"), registry));
+ requests.add(new SubscriptionRequest(e.attributeValue("topic"),
+ registry));
}
for (SubscriptionRequest req : requests)
15 years
Seam SVN: r11696 - in modules/trunk/remoting: examples/helloworld/src/main/webapp/WEB-INF and 8 other directories.
by seam-commits@lists.jboss.org
Author: shane.bryzak(a)jboss.com
Date: 2009-11-28 09:03:05 -0500 (Sat, 28 Nov 2009)
New Revision: 11696
Added:
modules/trunk/remoting/src/main/resources/META-INF/
modules/trunk/remoting/src/main/resources/META-INF/beans.xml
modules/trunk/remoting/src/main/resources/org/
modules/trunk/remoting/src/main/resources/org/jboss/
modules/trunk/remoting/src/main/resources/org/jboss/seam/
modules/trunk/remoting/src/main/resources/org/jboss/seam/remoting/
modules/trunk/remoting/src/main/resources/org/jboss/seam/remoting/remote.js
Modified:
modules/trunk/remoting/examples/helloworld/src/main/webapp/WEB-INF/web.xml
modules/trunk/remoting/pom.xml
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/InterfaceGenerator.java
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/Remoting.java
modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/messaging/SubscriptionRegistry.java
Log:
get example deploying, remoting servlet working
Modified: modules/trunk/remoting/examples/helloworld/src/main/webapp/WEB-INF/web.xml
===================================================================
--- modules/trunk/remoting/examples/helloworld/src/main/webapp/WEB-INF/web.xml 2009-11-28 10:59:01 UTC (rev 11695)
+++ modules/trunk/remoting/examples/helloworld/src/main/webapp/WEB-INF/web.xml 2009-11-28 14:03:05 UTC (rev 11696)
@@ -28,7 +28,7 @@
<servlet-mapping>
<servlet-name>Remoting Servlet</servlet-name>
- <url-pattern>/seam/resource/remoting</url-pattern>
+ <url-pattern>/seam/resource/remoting/*</url-pattern>
</servlet-mapping>
<context-param>
Modified: modules/trunk/remoting/pom.xml
===================================================================
--- modules/trunk/remoting/pom.xml 2009-11-28 10:59:01 UTC (rev 11695)
+++ modules/trunk/remoting/pom.xml 2009-11-28 14:03:05 UTC (rev 11696)
@@ -34,10 +34,11 @@
<scope>provided</scope>
</dependency>
- <dependency>
+ <!--dependency>
<groupId>${seam.groupId}</groupId>
<artifactId>seam-el</artifactId>
- </dependency>
+ <scope>provided</scope>
+ </dependency-->
<!--dependency>
<groupId>${seam.groupId}</groupId>
Modified: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/InterfaceGenerator.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/InterfaceGenerator.java 2009-11-28 10:59:01 UTC (rev 11695)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/InterfaceGenerator.java 2009-11-28 14:03:05 UTC (rev 11696)
@@ -70,17 +70,23 @@
throw new ServletException("Invalid request - no component specified");
}
- Set<Bean> beans = new HashSet<Bean>();
+ Set<Bean<?>> beansCached = new HashSet<Bean<?>>();
Set<Type> types = new HashSet<Type>();
response.setContentType("text/javascript");
- Enumeration e = request.getParameterNames();
+ Enumeration<?> e = request.getParameterNames();
while (e.hasMoreElements())
{
String componentName = ((String) e.nextElement()).trim();
- Bean bean = beanManager.getBeans(componentName).iterator().next();
+ Set<Bean<?>> beans = beanManager.getBeans(componentName);
+ Bean<?> bean = null;
+ if (!beans.isEmpty())
+ {
+ bean = beans.iterator().next();
+ }
+
if (bean == null)
{
try
@@ -96,11 +102,11 @@
}
} else
{
- beans.add(bean);
+ beansCached.add(bean);
}
}
- generateBeanInterface(beans, response.getOutputStream(), types);
+ generateBeanInterface(beansCached, response.getOutputStream(), types);
}
/**
@@ -115,10 +121,10 @@
* @throws IOException
* Thrown if there is an error writing to the OutputStream
*/
- public void generateBeanInterface(Set<Bean> beans,
+ public void generateBeanInterface(Set<Bean<?>> beans,
OutputStream out, Set<Type> types) throws IOException
{
- for (Bean bean : beans)
+ for (Bean<?> bean : beans)
{
if (bean != null)
{
@@ -149,7 +155,7 @@
* Class
* @return List
*/
- public static Set<String> getAccessibleProperties(Class cls)
+ public static Set<String> getAccessibleProperties(Class<?> cls)
{
/**
* @todo This is a hack to get the "real" class - find out if there is an
Modified: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/Remoting.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/Remoting.java 2009-11-28 10:59:01 UTC (rev 11695)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/Remoting.java 2009-11-28 14:03:05 UTC (rev 11696)
@@ -197,20 +197,20 @@
{
try
{
- String pathInfo = request.getPathInfo().substring(
- servletConfig.getServletContext().getContextPath().length());
+ // String pathInfo = request.getPathInfo().substring(
+ // servletConfig.getServletContext().getContextPath().length());
- if (REQUEST_PATH_EXECUTE.equals(pathInfo))
+ if (REQUEST_PATH_EXECUTE.equals(request.getPathInfo()))
{
executionHandlerInstance.get().handle(request, response);
}
- else if (REQUEST_PATH_INTERFACE.equals(pathInfo))
+ else if (REQUEST_PATH_INTERFACE.equals(request.getPathInfo()))
{
interfaceHandlerInstance.get().handle(request, response);
}
else
{
- Matcher m = pathPattern.matcher(pathInfo);
+ Matcher m = pathPattern.matcher(request.getPathInfo());
if (m.matches())
{
String path = m.group(1);
Modified: modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/messaging/SubscriptionRegistry.java
===================================================================
--- modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/messaging/SubscriptionRegistry.java 2009-11-28 10:59:01 UTC (rev 11695)
+++ modules/trunk/remoting/src/main/java/org/jboss/seam/remoting/messaging/SubscriptionRegistry.java 2009-11-28 14:03:05 UTC (rev 11696)
@@ -1,5 +1,6 @@
package org.jboss.seam.remoting.messaging;
+import java.io.Serializable;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -18,7 +19,7 @@
* @author Shane Bryzak
*/
@ApplicationScoped
-public class SubscriptionRegistry
+public class SubscriptionRegistry implements Serializable
{
private String connectionProvider;
Added: modules/trunk/remoting/src/main/resources/META-INF/beans.xml
===================================================================
Added: modules/trunk/remoting/src/main/resources/org/jboss/seam/remoting/remote.js
===================================================================
--- modules/trunk/remoting/src/main/resources/org/jboss/seam/remoting/remote.js (rev 0)
+++ modules/trunk/remoting/src/main/resources/org/jboss/seam/remoting/remote.js 2009-11-28 14:03:05 UTC (rev 11696)
@@ -0,0 +1,1235 @@
+// Init base-level objects
+var Seam = new Object();
+Seam.Remoting = new Object();
+Seam.Component = new Object();
+Seam.pageContext = new Object();
+
+// Components registered here
+Seam.Component.components = new Array();
+Seam.Component.instances = new Array();
+
+Seam.Component.newInstance = function(name)
+{
+ for (var i = 0; i < Seam.Component.components.length; i++)
+ {
+ if (Seam.Component.components[i].__name == name)
+ return new Seam.Component.components[i];
+ }
+}
+
+Seam.Component.getInstance = function(name)
+{
+ for (var i = 0; i < Seam.Component.components.length; i++)
+ {
+ if (Seam.Component.components[i].__name == name)
+ {
+ if (Seam.Component.components[i].__instance == null)
+ Seam.Component.components[i].__instance = new Seam.Component.components[i]();
+ return Seam.Component.components[i].__instance;
+ }
+ }
+ return null;
+}
+
+Seam.Component.getComponentType = function(obj)
+{
+ for (var i = 0; i < Seam.Component.components.length; i++)
+ {
+ if (obj instanceof Seam.Component.components[i])
+ return Seam.Component.components[i];
+ }
+ return null;
+}
+
+Seam.Component.getComponentName = function(obj)
+{
+ var componentType = Seam.Component.getComponentType(obj);
+ return componentType ? componentType.__name : null;
+}
+
+Seam.Component.register = function(component)
+{
+ for (var i = 0; i < Seam.Component.components.length; i++)
+ {
+ if (Seam.Component.components[i].__name == component.__name)
+ {
+ // Replace the existing component with the new one
+ Seam.Component.components[i] = component;
+ return;
+ }
+ }
+ Seam.Component.components.push(component);
+ component.__instance = null;
+}
+
+Seam.Component.isRegistered = function(name)
+{
+ for (var i = 0; i < Seam.Component.components.length; i++)
+ {
+ if (Seam.Component.components[i].__name == name)
+ return true;
+ }
+ return false;
+}
+
+Seam.Component.getMetadata = function(obj)
+{
+ for (var i = 0; i < Seam.Component.components.length; i++)
+ {
+ if (obj instanceof Seam.Component.components[i])
+ return Seam.Component.components[i].__metadata;
+ }
+ return null;
+}
+
+Seam.Remoting.extractEncodedSessionId = function(url)
+{
+ var sessionId = null;
+ if (url.indexOf(';jsessionid=') >= 0)
+ {
+ var qpos = url.indexOf('?');
+ sessionId = url.substring(url.indexOf(';jsessionid=') + 12, qpos >= 0 ? qpos : url.length);
+ }
+ return sessionId;
+}
+
+Seam.Remoting.PATH_EXECUTE = "/execute";
+Seam.Remoting.PATH_SUBSCRIPTION = "/subscription";
+Seam.Remoting.PATH_POLL = "/poll";
+
+Seam.Remoting.encodedSessionId = Seam.Remoting.extractEncodedSessionId(window.location.href);
+
+// Type declarations will live in this namespace
+Seam.Remoting.type = new Object();
+
+// Types are registered in an array
+Seam.Remoting.types = new Array();
+
+Seam.Remoting.debug = false;
+Seam.Remoting.debugWindow = null;
+
+Seam.Remoting.setDebug = function(val)
+{
+ Seam.Remoting.debug = val;
+}
+
+// Log a message to a popup debug window
+Seam.Remoting.log = function(msg)
+{
+ if (!Seam.Remoting.debug)
+ return;
+
+ if (!Seam.Remoting.debugWindow || Seam.Remoting.debugWindow.document == null)
+ {
+ var attr = "left=400,top=400,resizable=yes,scrollbars=yes,width=400,height=400";
+ Seam.Remoting.debugWindow = window.open("", "__seamDebugWindow", attr);
+ if (Seam.Remoting.debugWindow)
+ {
+ Seam.Remoting.debugWindow.document.write("<html><head><title>Seam Debug Window</title></head><body></body></html>");
+ var bodyTag = Seam.Remoting.debugWindow.document.getElementsByTagName("body").item(0);
+ bodyTag.style.fontFamily = "arial";
+ bodyTag.style.fontSize = "8pt";
+ }
+ }
+
+ if (Seam.Remoting.debugWindow)
+ {
+ msg = msg.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
+ Seam.Remoting.debugWindow.document.write("<pre>" + (new Date()) + ": " + msg + "</pre><br/>");
+ }
+}
+
+Seam.Remoting.createNamespace = function(namespace)
+{
+ var parts = namespace.split(".");
+ var base = Seam.Remoting.type;
+
+ for(var i = 0; i < parts.length; i++)
+ {
+ if (typeof base[parts[i]] == "undefined")
+ base[parts[i]] = new Object();
+ base = base[parts[i]];
+ }
+}
+
+Seam.Remoting.__Context = function()
+{
+ this.conversationId = null;
+
+ Seam.Remoting.__Context.prototype.setConversationId = function(conversationId)
+ {
+ this.conversationId = conversationId;
+ }
+
+ Seam.Remoting.__Context.prototype.getConversationId = function()
+ {
+ return this.conversationId;
+ }
+}
+
+Seam.Remoting.Exception = function(msg)
+{
+ this.message = msg;
+
+ Seam.Remoting.Exception.prototype.getMessage = function()
+ {
+ return this.message;
+ }
+}
+
+Seam.Remoting.context = new Seam.Remoting.__Context();
+
+Seam.Remoting.getContext = function()
+{
+ return Seam.Remoting.context;
+}
+
+Seam.Remoting.Map = function()
+{
+ this.elements = new Array();
+
+ Seam.Remoting.Map.prototype.size = function()
+ {
+ return this.elements.length;
+ }
+
+ Seam.Remoting.Map.prototype.isEmpty = function()
+ {
+ return this.elements.length == 0;
+ }
+
+ Seam.Remoting.Map.prototype.keySet = function()
+ {
+ var keySet = new Array();
+ for (var i = 0; i < this.elements.length; i++)
+ keySet[keySet.length] = this.elements[i].key;
+ return keySet;
+ }
+
+ Seam.Remoting.Map.prototype.values = function()
+ {
+ var values = new Array();
+ for (var i = 0; i < this.elements.length; i++)
+ values[values.length] = this.elements[i].value;
+ return values;
+ }
+
+ Seam.Remoting.Map.prototype.get = function(key)
+ {
+ for (var i = 0; i < this.elements.length; i++)
+ {
+ if (this.elements[i].key == key)
+ return this.elements[i].value;
+ }
+ return null;
+ }
+
+ Seam.Remoting.Map.prototype.put = function(key, value)
+ {
+ for (var i = 0; i < this.elements.length; i++)
+ {
+ if (this.elements[i].key == key)
+ {
+ this.elements[i].value = value;
+ return;
+ }
+ }
+ this.elements.push({key:key,value:value});
+ }
+
+ Seam.Remoting.Map.prototype.remove = function(key)
+ {
+ for (var i = 0; i < this.elements.length; i++)
+ {
+ if (this.elements[i].key == key)
+ this.elements.splice(i, 1);
+ }
+ }
+
+ Seam.Remoting.Map.prototype.contains = function(key)
+ {
+ for (var i = 0; i < this.elements.length; i++)
+ {
+ if (this.elements[i].key == key)
+ return true;
+ }
+ return false;
+ }
+}
+
+Seam.Remoting.registerType = function(type)
+{
+ for (var i = 0; i < Seam.Remoting.types.length; i++)
+ {
+ if (Seam.Remoting.types[i].__name == type.__name)
+ {
+ Seam.Remoting.types[i] = type;
+ return;
+ }
+ }
+ Seam.Remoting.types.push(type);
+}
+
+Seam.Remoting.createType = function(name)
+{
+ for (var i = 0; i < Seam.Remoting.types.length; i++)
+ {
+ if (Seam.Remoting.types[i].__name == name)
+ return new Seam.Remoting.types[i];
+ }
+}
+
+Seam.Remoting.getType = function(obj)
+{
+ for (var i = 0; i < Seam.Remoting.types.length; i++)
+ {
+ if (obj instanceof Seam.Remoting.types[i])
+ return Seam.Remoting.types[i];
+ }
+ return null;
+}
+
+Seam.Remoting.getTypeName = function(obj)
+{
+ var type = Seam.Remoting.getType(obj);
+ return type ? type.__name : null;
+}
+
+Seam.Remoting.getMetadata = function(obj)
+{
+ for (var i = 0; i < Seam.Remoting.types.length; i++)
+ {
+ if (obj instanceof Seam.Remoting.types[i])
+ return Seam.Remoting.types[i].__metadata;
+ }
+ return null;
+}
+
+Seam.Remoting.serializeValue = function(value, type, refs)
+{
+ if (value == null)
+ return "<null/>";
+ else if (type)
+ {
+ switch (type) {
+ // Boolean
+ case "bool": return "<bool>" + (value ? "true" : "false") + "</bool>";
+
+ // Numerical types
+ case "number": return "<number>" + value + "</number>";
+
+ // Date
+ case "date": return Seam.Remoting.serializeDate(value);
+ // Beans
+ case "bean": return Seam.Remoting.getTypeRef(value, refs);
+
+ // Collections
+ case "bag": return Seam.Remoting.serializeBag(value, refs);
+ case "map": return Seam.Remoting.serializeMap(value, refs);
+
+ default: return "<str>" + encodeURIComponent(value) + "</str>";
+ }
+ }
+ else // We don't know the type.. try to guess
+ {
+ switch (typeof(value)) {
+ case "number":
+ return "<number>" + value + "</number>";
+ case "boolean":
+ return "<bool>" + (value ? "true" : "false") + "</bool>";
+ case "object":
+ if (value instanceof Array)
+ return Seam.Remoting.serializeBag(value, refs);
+ else if (value instanceof Date)
+ return Seam.Remoting.serializeDate(value);
+ else if (value instanceof Seam.Remoting.Map)
+ return Seam.Remoting.serializeMap(value, refs);
+ else
+ return Seam.Remoting.getTypeRef(value, refs);
+ default:
+ return "<str>" + encodeURIComponent(value) + "</str>"; // Default to String
+ }
+ }
+}
+
+Seam.Remoting.serializeBag = function(value, refs)
+{
+ var data = "<bag>";
+
+ for (var i = 0; i < value.length; i++)
+ {
+ data += "<element>";
+ data += Seam.Remoting.serializeValue(value[i], null, refs);
+ data += "</element>";
+ }
+
+ data += "</bag>";
+ return data;
+}
+
+Seam.Remoting.serializeMap = function(value, refs)
+{
+ var data = "<map>";
+
+ var keyset = value.keySet();
+ for (var i = 0; i < keyset.length; i++)
+ {
+ data += "<element><k>";
+ data += Seam.Remoting.serializeValue(keyset[i], null, refs);
+ data += "</k><v>";
+ data += Seam.Remoting.serializeValue(value.get(keyset[i]), null, refs);
+ data += "</v></element>";
+ }
+
+ data += "</map>";
+ return data;
+}
+
+Seam.Remoting.serializeDate = function(value)
+{
+ var zeroPad = function(val, digits) { while (("" + val).length < digits) val = "0" + val; return val; };
+
+ var data = "<date>";
+ data += value.getFullYear();
+ data += zeroPad(value.getMonth() + 1, 2);
+ data += zeroPad(value.getDate(), 2);
+ data += zeroPad(value.getHours(), 2);
+ data += zeroPad(value.getMinutes(), 2);
+ data += zeroPad(value.getSeconds(), 2);
+ data += zeroPad(value.getMilliseconds(), 3);
+ data += "</date>";
+ return data;
+}
+
+Seam.Remoting.getTypeRef = function(obj, refs)
+{
+ var refId = -1;
+
+ for (var i = 0; i < refs.length; i++)
+ {
+ if (refs[i] == obj)
+ {
+ refId = i;
+ break;
+ }
+ }
+
+ if (refId == -1)
+ {
+ refId = refs.length;
+ refs[refId] = obj;
+ }
+
+ return "<ref id=\"" + refId + "\"/>";
+}
+
+Seam.Remoting.serializeType = function(obj, refs)
+{
+ var data = "<bean type=\"";
+
+ var objType = Seam.Component.getComponentType(obj);
+ var isComponent = objType != null;
+
+ if (!isComponent)
+ objType = Seam.Remoting.getType(obj);
+
+ if (!objType)
+ {
+ alert("Unknown Type error.");
+ return null;
+ }
+
+ data += objType.__name;
+ data += "\">\n";
+
+ var meta = isComponent ? Seam.Component.getMetadata(obj) : Seam.Remoting.getMetadata(obj);
+ for (var i = 0; i < meta.length; i++)
+ {
+ data += "<member name=\"";
+ data += meta[i].field;
+ data += "\">";
+ data += Seam.Remoting.serializeValue(obj[meta[i].field], meta[i].type, refs);
+ data += "</member>\n";
+ }
+
+ data += "</bean>";
+
+ return data;
+}
+
+Seam.Remoting.__callId = 0;
+
+// eval() disabled until security issues resolved.
+
+//Seam.Remoting.eval = function(expression, callback)
+//{
+// var callId = "" + Seam.Remoting.__callId++;
+// var data = "<eval expr=\"";
+// data += expression;
+// data += "\" id=\"";
+// data += callId;
+// data += "\"/>";
+// var call = {data: data, id: callId, callback: callback};
+
+// var envelope = Seam.Remoting.createEnvelope(Seam.Remoting.createHeader(), data);
+// Seam.Remoting.pendingCalls.put(call.id, call);
+
+// call.asyncReq = Seam.Remoting.sendAjaxRequest(envelope, Seam.Remoting.PATH_EXECUTE, Seam.Remoting.processResponse, false);
+//}
+
+Seam.Remoting.createCall = function(component, methodName, params, callback, exceptionHandler)
+{
+ var callId = "" + Seam.Remoting.__callId++;
+ if (!callback)
+ callback = component.__callback[methodName];
+
+ var data = "<call component=\"";
+ data += Seam.Component.getComponentType(component).__name;
+ data += "\" method=\"";
+ data += methodName;
+ data += "\" id=\"";
+ data += callId;
+ data += "\">\n";
+
+ // Add parameters
+ data += "<params>";
+
+ var refs = new Array();
+
+ for (var i = 0; i < params.length; i++)
+ {
+ data += "<param>";
+ data += Seam.Remoting.serializeValue(params[i], null, refs);
+ data += "</param>";
+ }
+
+ data += "</params>";
+
+ // Add refs
+ data += "<refs>";
+ for (var i = 0; i < refs.length; i++)
+ {
+ data += "<ref id=\"" + i + "\">";
+ data += Seam.Remoting.serializeType(refs[i], refs);
+ data += "</ref>";
+ }
+ data += "</refs>";
+
+ data += "</call>";
+
+ return {data: data, id: callId, callback: callback, exceptionHandler: exceptionHandler};
+}
+
+Seam.Remoting.createHeader = function()
+{
+ var header = "";
+
+ header += "<context>";
+ if (Seam.Remoting.getContext().getConversationId())
+ {
+ header += "<conversationId>";
+ header += Seam.Remoting.getContext().getConversationId();
+ header += "</conversationId>";
+ }
+ header += "</context>";
+
+ return header;
+}
+
+Seam.Remoting.createEnvelope = function(header, body)
+{
+ var data = "<envelope>";
+
+ if (header)
+ {
+ data += "<header>";
+ data += header;
+ data += "</header>";
+ }
+
+ if (body)
+ {
+ data += "<body>";
+ data += body;
+ data += "</body>";
+ }
+
+ data += "</envelope>";
+
+ return data;
+}
+
+Seam.Remoting.pendingCalls = new Seam.Remoting.Map();
+Seam.Remoting.inBatch = false;
+Seam.Remoting.batchedCalls = new Array();
+
+Seam.Remoting.startBatch = function()
+{
+ Seam.Remoting.inBatch = true;
+ Seam.Remoting.batchedCalls.length = 0;
+}
+
+Seam.Remoting.executeBatch = function()
+{
+ if (!Seam.Remoting.inBatch)
+ return;
+
+ var data = "";
+ for (var i = 0; i < Seam.Remoting.batchedCalls.length; i++)
+ {
+ Seam.Remoting.pendingCalls.put(Seam.Remoting.batchedCalls[i].id, Seam.Remoting.batchedCalls[i]);
+ data += Seam.Remoting.batchedCalls[i].data;
+ }
+
+ var envelope = Seam.Remoting.createEnvelope(Seam.Remoting.createHeader(), data);
+ Seam.Remoting.batchAsyncReq = Seam.Remoting.sendAjaxRequest(envelope, Seam.Remoting.PATH_EXECUTE, Seam.Remoting.processResponse, false);
+ Seam.Remoting.inBatch = false;
+}
+
+Seam.Remoting.cancelBatch = function()
+{
+ Seam.Remoting.inBatch = false;
+ for (var i = 0; i < Seam.Remoting.batchedCalls.length; i++)
+ Seam.Remoting.pendingCalls.remove(Seam.Remoting.batchedCalls[i].id);
+}
+
+Seam.Remoting.cancelCall = function(callId)
+{
+ var call = Seam.Remoting.pendingCalls.get(callId);
+ Seam.Remoting.pendingCalls.remove(callId);
+ if (call && call.asyncReq)
+ {
+ if (Seam.Remoting.pendingCalls.isEmpty())
+ Seam.Remoting.hideLoadingMessage();
+ window.setTimeout(function() {
+ call.asyncReq.onreadystatechange = function() {};
+ }, 0);
+ call.asyncReq.abort();
+ }
+}
+
+Seam.Remoting.execute = function(component, methodName, params, callback, exceptionHandler)
+{
+ var call = Seam.Remoting.createCall(component, methodName, params, callback, exceptionHandler);
+
+ if (Seam.Remoting.inBatch)
+ {
+ Seam.Remoting.batchedCalls[Seam.Remoting.batchedCalls.length] = call;
+ }
+ else
+ {
+ // Marshal the request
+ var envelope = Seam.Remoting.createEnvelope(Seam.Remoting.createHeader(), call.data);
+ Seam.Remoting.pendingCalls.put(call.id, call);
+ Seam.Remoting.sendAjaxRequest(envelope, Seam.Remoting.PATH_EXECUTE, Seam.Remoting.processResponse, false);
+ }
+
+ return call;
+}
+
+Seam.Remoting.sendAjaxRequest = function(envelope, path, callback, silent)
+{
+ Seam.Remoting.log("Request packet:\n" + envelope);
+
+ if (!silent)
+ Seam.Remoting.displayLoadingMessage();
+
+ var asyncReq;
+
+ if (window.XMLHttpRequest)
+ {
+ asyncReq = new XMLHttpRequest();
+ if (asyncReq.overrideMimeType)
+ asyncReq.overrideMimeType('text/xml');
+ }
+ else
+ {
+ asyncReq = new ActiveXObject("Microsoft.XMLHTTP");
+ }
+
+ asyncReq.onreadystatechange = function()
+ {
+ if (asyncReq.readyState == 4)
+ {
+ var inScope = typeof(Seam) == "undefined" ? false : true;
+
+ if (inScope) Seam.Remoting.hideLoadingMessage();
+
+ if (asyncReq.status == 200)
+ {
+ // We do this to avoid a memory leak
+ window.setTimeout(function() {
+ asyncReq.onreadystatechange = function() {};
+ }, 0);
+
+ if (inScope) Seam.Remoting.log("Response packet:\n" + asyncReq.responseText);
+
+ if (callback)
+ {
+ // The following code deals with a Firefox security issue. It reparses the XML
+ // response if accessing the documentElement throws an exception
+ try
+ {
+ asyncReq.responseXML.documentElement;
+ //Seam.Remoting.processResponse(asyncReq.responseXML);
+ callback(asyncReq.responseXML);
+ }
+ catch (ex)
+ {
+ try
+ {
+ // Try it the IE way first...
+ var doc = new ActiveXObject("Microsoft.XMLDOM");
+ doc.async = "false";
+ doc.loadXML(asyncReq.responseText);
+ callback(doc);
+ }
+ catch (e)
+ {
+ // If that fails, use standards
+ var parser = new DOMParser();
+ //Seam.Remoting.processResponse(parser.parseFromString(asyncReq.responseText, "text/xml"));
+ callback(parser.parseFromString(asyncReq.responseText, "text/xml"));
+ }
+ }
+ }
+ }
+ else
+ {
+ Seam.Remoting.displayError(asyncReq.status);
+ }
+ }
+ }
+
+ if (Seam.Remoting.encodedSessionId)
+ {
+ path += ';jsessionid=' + Seam.Remoting.encodedSessionId;
+ }
+
+ asyncReq.open("POST", Seam.Remoting.resourcePath + path, true);
+ asyncReq.send(envelope);
+}
+
+Seam.Remoting.displayError = function(code)
+{
+ alert("There was an error processing your request. Error code: " + code);
+}
+
+Seam.Remoting.setCallback = function(component, methodName, callback)
+{
+ component.__callback[methodName] = callback;
+}
+
+Seam.Remoting.processResponse = function(doc)
+{
+ var headerNode;
+ var bodyNode;
+
+ var inScope = typeof(Seam) == "undefined" ? false : true;
+ if (!inScope) return;
+
+ var context = new Seam.Remoting.__Context;
+
+ if (doc.documentElement)
+ {
+ for (var i = 0; i < doc.documentElement.childNodes.length; i++)
+ {
+ var node = doc.documentElement.childNodes.item(i);
+ if (node.tagName == "header")
+ headerNode = node;
+ else if (node.tagName == "body")
+ bodyNode = node;
+ }
+ }
+
+ if (headerNode)
+ {
+ var contextNode;
+ for (var i = 0; i < headerNode.childNodes.length; i++)
+ {
+ var node = headerNode.childNodes.item(i);
+ if (node.tagName == "context")
+ {
+ contextNode = node;
+ break;
+ }
+ }
+ if (contextNode && context)
+ {
+ Seam.Remoting.unmarshalContext(contextNode, context);
+ if (context.getConversationId() && Seam.Remoting.getContext().getConversationId() == null)
+ Seam.Remoting.getContext().setConversationId(context.getConversationId());
+ }
+ }
+
+ if (bodyNode)
+ {
+ for (var i = 0; i < bodyNode.childNodes.length; i++)
+ {
+ var node = bodyNode.childNodes.item(i);
+ if (node.tagName == "result")
+ Seam.Remoting.processResult(node, context);
+ }
+ }
+}
+
+Seam.Remoting.processResult = function(result, context)
+{
+ var callId = result.getAttribute("id");
+ var call = Seam.Remoting.pendingCalls.get(callId);
+ Seam.Remoting.pendingCalls.remove(callId);
+
+ if (call && (call.callback || call.exceptionHandler))
+ {
+ var valueNode = null;
+ var refsNode = null;
+ var exceptionNode = null;
+
+ var children = result.childNodes;
+ for (var i = 0; i < children.length; i++)
+ {
+ var tag = children.item(i).tagName;
+ if (tag == "value")
+ valueNode = children.item(i);
+ else if (tag == "refs")
+ refsNode = children.item(i);
+ else if (tag == "exception")
+ exceptionNode = children.item(i);
+ }
+
+ if (exceptionNode != null)
+ {
+ var msgNode = null;
+ var children = exceptionNode.childNodes;
+ for (var i = 0; i < children.length; i++)
+ {
+ var tag = children.item(i).tagName;
+ if (tag == "message")
+ msgNode = children.item(i);
+ }
+
+ var msg = Seam.Remoting.unmarshalValue(msgNode.firstChild);
+ var ex = new Seam.Remoting.Exception(msg);
+ call.exceptionHandler(ex);
+ }
+ else
+ {
+ var refs = new Array();
+ if (refsNode)
+ Seam.Remoting.unmarshalRefs(refsNode, refs);
+
+ var value = Seam.Remoting.unmarshalValue(valueNode.firstChild, refs);
+
+ call.callback(value, context, callId);
+ }
+ }
+}
+
+Seam.Remoting.unmarshalContext = function(ctxNode, context)
+{
+ for (var i = 0; i < ctxNode.childNodes.length; i++)
+ {
+ var tag = ctxNode.childNodes.item(i).tagName;
+ if (tag == "conversationId")
+ context.setConversationId(ctxNode.childNodes.item(i).firstChild.nodeValue);
+ }
+}
+
+Seam.Remoting.unmarshalRefs = function(refsNode, refs)
+{
+ var objs = new Array();
+
+ // Pass 1 - create the reference objects
+ for (var i = 0; i < refsNode.childNodes.length; i++)
+ {
+ if (refsNode.childNodes.item(i).tagName == "ref")
+ {
+ var refNode = refsNode.childNodes.item(i);
+ var refId = parseInt(refNode.getAttribute("id"));
+
+ var valueNode = refNode.firstChild;
+ if (valueNode.tagName == "bean")
+ {
+ var obj = null;
+ var typeName = valueNode.getAttribute("type");
+ if (Seam.Component.isRegistered(typeName))
+ obj = Seam.Component.newInstance(typeName);
+ else
+ obj = Seam.Remoting.createType(typeName);
+ if (obj)
+ {
+ refs[refId] = obj;
+ objs[objs.length] = {obj: obj, node: valueNode};
+ }
+ }
+ }
+ }
+
+ // Pass 2 - populate the object members
+ for (var i = 0; i < objs.length; i++)
+ {
+ for (var j = 0; j < objs[i].node.childNodes.length; j++)
+ {
+ var child = objs[i].node.childNodes.item(j);
+ if (child.tagName == "member")
+ {
+ var name = child.getAttribute("name");
+ objs[i].obj[name] = Seam.Remoting.unmarshalValue(child.firstChild, refs);
+ }
+ }
+ }
+}
+
+Seam.Remoting.unmarshalValue = function(element, refs)
+{
+ var tag = element.tagName;
+
+ switch (tag)
+ {
+ case "bool": return element.firstChild.nodeValue == "true";
+ case "number":
+ if (element.firstChild.nodeValue.indexOf(".") == -1)
+ return parseInt(element.firstChild.nodeValue);
+ else
+ return parseFloat(element.firstChild.nodeValue);
+ case "str":
+ var data = "";
+ for (var i = 0; i < element.childNodes.length; i++)
+ {
+ if (element.childNodes[i].nodeType == 3) // NODE_TEXT
+ data += element.childNodes[i].nodeValue;
+ }
+ return decodeURIComponent(data);
+ case "ref": return refs[parseInt(element.getAttribute("id"))];
+ case "bag":
+ var value = new Array();
+ for (var i = 0; i < element.childNodes.length; i++)
+ {
+ if (element.childNodes.item(i).tagName == "element")
+ value[value.length] = Seam.Remoting.unmarshalValue(element.childNodes.item(i).firstChild, refs);
+ }
+ return value;
+ case "map":
+ var map = new Seam.Remoting.Map();
+ for (var i = 0; i < element.childNodes.length; i++)
+ {
+ var childNode = element.childNodes.item(i);
+ if (childNode.tagName == "element")
+ {
+ var key = null
+ var value = null;
+
+ for (var j = 0; j < childNode.childNodes.length; j++)
+ {
+ if (key == null && childNode.childNodes.item(j).tagName == "k")
+ key = Seam.Remoting.unmarshalValue(childNode.childNodes.item(j).firstChild, refs);
+ else if (value == null && childNode.childNodes.item(j).tagName == "v")
+ value = Seam.Remoting.unmarshalValue(childNode.childNodes.item(j).firstChild, refs);
+ }
+
+ if (key != null)
+ map.put(key, value);
+ }
+ }
+ return map;
+ case "date": return Seam.Remoting.deserializeDate(element.firstChild.nodeValue);
+ default: return null;
+ }
+}
+
+Seam.Remoting.deserializeDate = function(val)
+{
+ var dte = new Date();
+ dte.setFullYear(parseInt(val.substring(0,4), 10),
+ parseInt(val.substring(4,6), 10) - 1,
+ parseInt(val.substring(6,8), 10));
+ dte.setHours(parseInt(val.substring(8,10), 10));
+ dte.setMinutes(parseInt(val.substring(10,12), 10));
+ dte.setSeconds(parseInt(val.substring(12,14), 10));
+ dte.setMilliseconds(parseInt(val.substring(14,17), 10));
+ return dte;
+}
+
+Seam.Remoting.loadingMsgDiv = null;
+Seam.Remoting.loadingMessage = "Please wait...";
+Seam.Remoting.displayLoadingMessage = function()
+{
+ if (!Seam.Remoting.loadingMsgDiv)
+ {
+ Seam.Remoting.loadingMsgDiv = document.createElement('div');
+ var msgDiv = Seam.Remoting.loadingMsgDiv;
+ msgDiv.setAttribute('id', 'loadingMsg');
+
+ msgDiv.style.position = "absolute";
+ msgDiv.style.top = "0px";
+ msgDiv.style.right = "0px";
+ msgDiv.style.background = "red";
+ msgDiv.style.color = "white";
+ msgDiv.style.fontFamily = "Verdana,Helvetica,Arial";
+ msgDiv.style.fontSize = "small";
+ msgDiv.style.padding = "2px";
+ msgDiv.style.border = "1px solid black";
+
+ document.body.appendChild(msgDiv);
+
+ var text = document.createTextNode(Seam.Remoting.loadingMessage);
+ msgDiv.appendChild(text);
+ }
+ else
+ {
+ Seam.Remoting.loadingMsgDiv.innerHTML = Seam.Remoting.loadingMessage;
+ Seam.Remoting.loadingMsgDiv.style.visibility = 'visible';
+ }
+}
+
+Seam.Remoting.hideLoadingMessage = function()
+{
+ if (Seam.Remoting.loadingMsgDiv)
+ Seam.Remoting.loadingMsgDiv.style.visibility = 'hidden';
+}
+
+/* Messaging API */
+
+Seam.Remoting.pollInterval = 10; // Default poll interval of 10 seconds
+Seam.Remoting.pollTimeout = 0; // Default timeout of 0 seconds
+Seam.Remoting.polling = false;
+
+Seam.Remoting.setPollInterval = function(interval)
+{
+ Seam.Remoting.pollInterval = interval;
+}
+
+Seam.Remoting.setPollTimeout = function(timeout)
+{
+ Seam.Remoting.pollTimeout = timeout;
+}
+
+Seam.Remoting.subscriptionRegistry = new Array();
+
+Seam.Remoting.subscribe = function(topicName, callback)
+{
+ for (var i = 0; i < Seam.Remoting.subscriptionRegistry.length; i++)
+ {
+ if (Seam.Remoting.subscriptionRegistry[i].topic == topicName)
+ return;
+ }
+
+ var body = "<subscribe topic=\"" + topicName + "\"/>";
+ var env = Seam.Remoting.createEnvelope(null, body);
+ Seam.Remoting.subscriptionRegistry.push({topic:topicName, callback:callback});
+ Seam.Remoting.sendAjaxRequest(env, Seam.Remoting.PATH_SUBSCRIPTION, Seam.Remoting.subscriptionCallback, false);
+}
+
+Seam.Remoting.unsubscribe = function(topicName)
+{
+ var token = null;
+
+ for (var i = 0; i < Seam.Remoting.subscriptionRegistry.length; i++)
+ {
+ if (Seam.Remoting.subscriptionRegistry[i].topic == topicName)
+ {
+ token = Seam.Remoting.subscriptionRegistry[i].token;
+ Seam.Remoting.subscriptionRegistry.splice(i, 1);
+ }
+ }
+
+ if (token)
+ {
+ var body = "<unsubscribe token=\"" + token + "\"/>";
+ var env = Seam.Remoting.createEnvelope(null, body);
+ Seam.Remoting.sendAjaxRequest(env, Seam.Remoting.PATH_SUBSCRIPTION, null, false);
+ }
+}
+
+Seam.Remoting.subscriptionCallback = function(doc)
+{
+ var body = doc.documentElement.firstChild;
+ for (var i = 0; i < body.childNodes.length; i++)
+ {
+ var node = body.childNodes.item(i);
+ if (node.tagName == "subscription")
+ {
+ var topic = node.getAttribute("topic");
+ var token = node.getAttribute("token");
+ for (var i = 0; i < Seam.Remoting.subscriptionRegistry.length; i++)
+ {
+ if (Seam.Remoting.subscriptionRegistry[i].topic == topic)
+ {
+ Seam.Remoting.subscriptionRegistry[i].token = token;
+ Seam.Remoting.poll();
+ break;
+ }
+ }
+ }
+ }
+}
+
+Seam.Remoting.pollTimeoutFunction = null;
+
+Seam.Remoting.poll = function()
+{
+ if (Seam.Remoting.polling)
+ return;
+
+ Seam.Remoting.polling = true;
+ clearTimeout(Seam.Remoting.pollTimeoutFunction);
+
+ var body = "";
+
+ if (Seam.Remoting.subscriptionRegistry.length == 0)
+ {
+ Seam.Remoting.polling = false;
+ return;
+ }
+
+ for (var i = 0; i < Seam.Remoting.subscriptionRegistry.length; i++)
+ {
+ body += "<poll token=\"" + Seam.Remoting.subscriptionRegistry[i].token + "\" ";
+ body += "timeout=\"" + Seam.Remoting.pollTimeout + "\"/>";
+ }
+
+ var env = Seam.Remoting.createEnvelope(null, body);
+ Seam.Remoting.sendAjaxRequest(env, Seam.Remoting.PATH_POLL, Seam.Remoting.pollCallback, true);
+}
+
+Seam.Remoting.pollCallback = function(doc)
+{
+ Seam.Remoting.polling = false;
+
+ var body = doc.documentElement.firstChild;
+ for (var i = 0; i < body.childNodes.length; i++)
+ {
+ var node = body.childNodes.item(i);
+ if (node.tagName == "messages")
+ Seam.Remoting.processMessages(node);
+ else if (node.tagName == "errors")
+ Seam.Remoting.processPollErrors(node);
+ }
+
+ Seam.Remoting.pollTimeoutFunction = setTimeout("Seam.Remoting.poll()", Math.max(Seam.Remoting.pollInterval * 1000, 1000));
+}
+
+Seam.Remoting.processMessages = function(messages)
+{
+ var token = messages.getAttribute("token");
+
+ var callback = null;
+ for (var i = 0; i < Seam.Remoting.subscriptionRegistry.length; i++)
+ {
+ if (Seam.Remoting.subscriptionRegistry[i].token == token)
+ {
+ callback = Seam.Remoting.subscriptionRegistry[i].callback;
+ break;
+ }
+ }
+
+ if (callback != null)
+ {
+ var messageNode = null;
+
+ var children = messages.childNodes;
+ for (var i = 0; i < children.length; i++)
+ {
+ if (children.item(i).tagName == "message")
+ {
+ messageNode = children.item(i);
+ var messageType = messageNode.getAttribute("type");
+
+ var valueNode = null;
+ var refsNode = null;
+ for (var j = 0; j < messageNode.childNodes.length; j++)
+ {
+ var node = messageNode.childNodes.item(j);
+ if (node.tagName == "value")
+ valueNode = node;
+ else if (node.tagName == "refs")
+ refsNode = node;
+ }
+
+ var refs = new Array();
+ if (refsNode)
+ Seam.Remoting.unmarshalRefs(refsNode, refs);
+
+ var value = Seam.Remoting.unmarshalValue(valueNode.firstChild, refs);
+
+ callback(Seam.Remoting.createMessage(messageType, value));
+ }
+ }
+ }
+}
+
+Seam.Remoting.processErrors = function(errors)
+{
+ var token = errors.getAttribute("token");
+
+ // Unsubscribe to the topic
+ for (var i = 0; i < Seam.Remoting.subscriptionRegistry.length; i++)
+ {
+ if (Seam.Remoting.subscriptionRegistry[i].token == token)
+ {
+ Seam.Remoting.subscriptionRegistry.splice(i, 1);
+ break;
+ }
+ }
+
+ for (var i = 0; i < errors.childNodes.length; i++)
+ {
+ if (errors.childNodes.item(i).tagName == "error")
+ {
+ var errorNode = errors.childNodes.item(i);
+ var code = errorNode.getAttribute("code");
+ var message = errorNode.firstChild.nodeValue;
+
+ if (Seam.Remoting.onPollError)
+ Seam.Remoting.onPollError(code, message);
+ else
+ alert("A polling error occurred: " + code + " " + message);
+ }
+ }
+}
+
+Seam.Remoting.ObjectMessage = function()
+{
+ this.value = null;
+
+ Seam.Remoting.ObjectMessage.prototype.getValue = function()
+ {
+ return this.value;
+ }
+
+ Seam.Remoting.ObjectMessage.prototype.setValue = function(value)
+ {
+ this.value = value;
+ }
+}
+
+Seam.Remoting.TextMessage = function()
+{
+ this.text = null;
+
+ Seam.Remoting.TextMessage.prototype.getText = function()
+ {
+ return this.text;
+ }
+
+ Seam.Remoting.TextMessage.prototype.setText = function(text)
+ {
+ this.text = text;
+ }
+}
+
+Seam.Remoting.createMessage = function(messageType, value)
+{
+ switch (messageType)
+ {
+ case "object":
+ var msg = new Seam.Remoting.ObjectMessage();
+ msg.setValue(value);
+ return msg;
+ case "text":
+ var msg = new Seam.Remoting.TextMessage();
+ msg.setText(value);
+ return msg;
+ }
+ return null;
+}
15 years
Seam SVN: r11695 - in modules/trunk/remoting/examples/helloworld: src/main/webapp/WEB-INF and 1 other directory.
by seam-commits@lists.jboss.org
Author: shane.bryzak(a)jboss.com
Date: 2009-11-28 05:59:01 -0500 (Sat, 28 Nov 2009)
New Revision: 11695
Modified:
modules/trunk/remoting/examples/helloworld/pom.xml
modules/trunk/remoting/examples/helloworld/src/main/webapp/WEB-INF/web.xml
Log:
fix deployment problems
Modified: modules/trunk/remoting/examples/helloworld/pom.xml
===================================================================
--- modules/trunk/remoting/examples/helloworld/pom.xml 2009-11-27 20:16:15 UTC (rev 11694)
+++ modules/trunk/remoting/examples/helloworld/pom.xml 2009-11-28 10:59:01 UTC (rev 11695)
@@ -49,7 +49,6 @@
<dependency>
<groupId>org.jboss.seam</groupId>
<artifactId>seam-remoting</artifactId>
- <scope>provided</scope>
<version>3.0.0-SNAPSHOT</version>
</dependency>
Modified: modules/trunk/remoting/examples/helloworld/src/main/webapp/WEB-INF/web.xml
===================================================================
--- modules/trunk/remoting/examples/helloworld/src/main/webapp/WEB-INF/web.xml 2009-11-27 20:16:15 UTC (rev 11694)
+++ modules/trunk/remoting/examples/helloworld/src/main/webapp/WEB-INF/web.xml 2009-11-28 10:59:01 UTC (rev 11695)
@@ -10,24 +10,35 @@
<!-- JSF -->
<servlet>
- <servlet-name>Faces Servlet</servlet-name>
- <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
+ <servlet-name>Faces Servlet</servlet-name>
+ <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
<servlet-mapping>
- <servlet-name>Faces Servlet</servlet-name>
- <url-pattern>*.jsf</url-pattern>
- </servlet-mapping>
-
+ <servlet-name>Faces Servlet</servlet-name>
+ <url-pattern>*.jsf</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <servlet-name>Remoting Servlet</servlet-name>
+ <servlet-class>org.jboss.seam.remoting.Remoting</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Remoting Servlet</servlet-name>
+ <url-pattern>/seam/resource/remoting</url-pattern>
+ </servlet-mapping>
+
<context-param>
- <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
- <param-value>.xhtml</param-value>
- </context-param>
+ <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+ <param-value>.xhtml</param-value>
+ </context-param>
<session-config>
- <session-timeout>10</session-timeout>
- </session-config>
+ <session-timeout>10</session-timeout>
+ </session-config>
</web-app>
15 years